openapi: 3.0.0
info:
  title: 'Virtual Infrastructure JSON API'
  version: 8.0.3.0

servers:
  - url: https://{vcenter-host}/sdk/vim25/{release}
    variables:
      vcenter-host:
        default: localhost
      release:
        default: 8.0.3.0
        description: The vSphere release schema. The current specification covers vSphere 8.0.3.0 APIs.

paths:
  /Alarm/{moId}/ReconfigureAlarm:
    post:
      tags: [Alarm]
      summary: |2
        Reconfigures the alarm properties.
      operationId: Alarm_ReconfigureAlarm
      description: |2
        Reconfigures the alarm properties.
        
        This operation requires access
        privileges on the entity with which the alarm is associated.
        
        In addition to the Alarm.Edit privilege, may also require the
        Global.ScriptAction if a RunScriptAction action is specified in
        the AlarmSpec.
        
        ***Required privileges:*** Alarm.Edit
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ReconfigureAlarmRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***InvalidName***: if the alarm name is empty or too long.
            
            ***DuplicateName***: if an alarm with the name already exists.
            
            ***InvalidArgument***: if the specification is invalid.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /Alarm/{moId}/RemoveAlarm:
    post:
      tags: [Alarm]
      summary: |2
        Removes the alarm.
      operationId: Alarm_RemoveAlarm
      description: |2
        Removes the alarm.
        
        ***Required privileges:*** Alarm.Delete
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '204':
          description: |2
            No Content

  /Alarm/{moId}/setCustomValue:
    post:
      tags: [Alarm]
      summary: |2
        Assigns a value to a custom field.
      operationId: Alarm_setCustomValue
      description: |2
        Assigns a value to a custom field.
        
        The setCustomValue method requires
        whichever updatePrivilege is defined as one of the
        *CustomFieldDef.fieldInstancePrivileges*
        for the CustomFieldDef whose value is being changed.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/setCustomValueRequestType'
      responses:
        '204':
          description: |2
            No Content

  /Alarm/{moId}/availableField:
    get:
      tags: [Alarm]
      summary: |2
        List of custom field definitions that are valid for the object's type.
      operationId: Alarm_getAvailableField
      description: |2
        List of custom field definitions that are valid for the object's type.
        
        The fields are sorted by *CustomFieldDef.name*.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/CustomFieldDef'

  /Alarm/{moId}/info:
    get:
      tags: [Alarm]
      summary: |2
        Information about this alarm.
      operationId: Alarm_getInfo
      description: |2
        Information about this alarm.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AlarmInfo'

  /Alarm/{moId}/value:
    get:
      tags: [Alarm]
      summary: |2
        List of custom field values.
      operationId: Alarm_getValue
      description: |2
        List of custom field values.
        
        Each value uses a key to associate
        an instance of a *CustomFieldStringValue* with
        a custom field definition.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/CustomFieldValue'

  /AlarmManager/{moId}/AcknowledgeAlarm:
    post:
      tags: [AlarmManager]
      summary: |2
        Acknowledge the alarm on a managed entity.
      operationId: AlarmManager_AcknowledgeAlarm
      description: |2
        Acknowledge the alarm on a managed entity.
        
        The actions associated
        with the alarm will not fire until the alarm's next distinct
        occurrence; that is, until after the alarm has entered the green
        or gray states at least once. Calling this method on an acknowledged
        or non-triggered alarm.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AcknowledgeAlarmRequestType'
      responses:
        '204':
          description: |2
            No Content

  /AlarmManager/{moId}/ClearTriggeredAlarms:
    post:
      tags: [AlarmManager]
      summary: |2
        Resets all triggered alarms to green.
      operationId: AlarmManager_ClearTriggeredAlarms
      description: |2
        Resets all triggered alarms to green.
        
        Should be used when mass alarm reset is needed.
        
        ***Required privileges:*** Alarm.SetStatus
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ClearTriggeredAlarmsRequestType'
      responses:
        '204':
          description: |2
            No Content

  /AlarmManager/{moId}/CreateAlarm:
    post:
      tags: [AlarmManager]
      summary: |2
        Creates an alarm.
      operationId: AlarmManager_CreateAlarm
      description: |2
        Creates an alarm.
        
        In addition to the Alarm.Create privilege, may also require the
        Global.ScriptAction if a RunScriptAction action is specified in
        the AlarmSpec.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateAlarmRequestType'
      responses:
        '200':
          description: |2
            A reference to the Alarm object created by the
            operation.
            
            Refers instance of *Alarm*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***InvalidName***: if the alarm name is empty or too long.
            
            ***DuplicateName***: if an alarm with the name already exists.
            
            ***InvalidArgument***: if the specification is invalid.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /AlarmManager/{moId}/DisableAlarm:
    post:
      tags: [AlarmManager]
      summary: |2
        Disables alarm for a specific entity.
      operationId: AlarmManager_DisableAlarm
      description: |2
        Disables alarm for a specific entity.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DisableAlarmRequestType'
      responses:
        '204':
          description: |2
            No Content

  /AlarmManager/{moId}/EnableAlarm:
    post:
      tags: [AlarmManager]
      summary: |2
        Enables alarm for a specific entity.
      operationId: AlarmManager_EnableAlarm
      description: |2
        Enables alarm for a specific entity.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EnableAlarmRequestType'
      responses:
        '204':
          description: |2
            No Content

  /AlarmManager/{moId}/GetAlarm:
    post:
      tags: [AlarmManager]
      summary: |2
        Available alarms defined on the entity.
      operationId: AlarmManager_GetAlarm
      description: |2
        Available alarms defined on the entity.
        
        These alarms do not include any inherited alarms; that is,
        alarms associated with parent entities.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GetAlarmRequestType'
      responses:
        '200':
          description: |2
            A reference to the Alarm objects returned by the
            operation.
            
            Refers instances of *Alarm*.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/ManagedObjectReference'

  /AlarmManager/{moId}/AreAlarmActionsEnabled:
    post:
      tags: [AlarmManager]
      summary: |2
        Returns true if alarm actions are enabled on the specified managed entity.
      operationId: AlarmManager_AreAlarmActionsEnabled
      description: |2
        Returns true if alarm actions are enabled on the specified managed entity.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AreAlarmActionsEnabledRequestType'
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                type: boolean

  /AlarmManager/{moId}/GetAlarmState:
    post:
      tags: [AlarmManager]
      summary: |2
        The state of instantiated alarms on the entity.
      operationId: AlarmManager_GetAlarmState
      description: |2
        The state of instantiated alarms on the entity.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GetAlarmStateRequestType'
      responses:
        '200':
          description: |2
            The state of instantiated alarms.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/AlarmState'

  /AlarmManager/{moId}/EnableAlarmActions:
    post:
      tags: [AlarmManager]
      summary: |2
        Enables or disables alarms on the specified managed entity.
      operationId: AlarmManager_EnableAlarmActions
      description: |2
        Enables or disables alarms on the specified managed entity.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EnableAlarmActionsRequestType'
      responses:
        '204':
          description: |2
            No Content

  /AlarmManager/{moId}/defaultExpression:
    get:
      tags: [AlarmManager]
      summary: |2
        The default setting for each alarm expression, used to populate the
        initial client wizard screen.
      operationId: AlarmManager_getDefaultExpression
      description: |2
        The default setting for each alarm expression, used to populate the
        initial client wizard screen.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/AlarmExpression'

  /AlarmManager/{moId}/description:
    get:
      tags: [AlarmManager]
      summary: |2
        The static descriptive strings used in alarms.
      operationId: AlarmManager_getDescription
      description: |2
        The static descriptive strings used in alarms.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AlarmDescription'

  /AuthorizationManager/{moId}/AddAuthorizationRole:
    post:
      tags: [AuthorizationManager]
      summary: |2
        Adds a new role.
      operationId: AuthorizationManager_AddAuthorizationRole
      description: |2
        Adds a new role.
        
        This method will add a user-defined role with given list of privileges
        and three system-defined privileges, "System.Anonymous", "System.View",
        and "System.Read".
        
        ***Required privileges:*** Authorization.ModifyRoles
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AddAuthorizationRoleRequestType'
      responses:
        '200':
          description: |2
            The roleId assigned to the new role.
          content:
            application/json:
              schema:
                type: integer
                format: int32
        '500':
          description: |2
            ***AlreadyExists***: if a role with the given name already exists.
            
            ***InvalidName***: if the role name is empty.
            
            ***InvalidArgument***: if privIds contains an unknown privilege.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /AuthorizationManager/{moId}/FetchUserPrivilegeOnEntities:
    post:
      tags: [AuthorizationManager]
      summary: |2
        Get the list of effective privileges for a user,
        either granted explicitly, or through group membership.
      operationId: AuthorizationManager_FetchUserPrivilegeOnEntities
      description: |2
        Get the list of effective privileges for a user,
        either granted explicitly, or through group membership.
        
        This API is implemented only by vCenter Server.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/FetchUserPrivilegeOnEntitiesRequestType'
      responses:
        '200':
          description: |2
            the privilege check result for each entity
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/UserPrivilegeResult'

  /AuthorizationManager/{moId}/HasPrivilegeOnEntities:
    post:
      tags: [AuthorizationManager]
      summary: |2
        Check whether a session holds a set of privileges on a set of managed entities.
      operationId: AuthorizationManager_HasPrivilegeOnEntities
      description: |2
        Check whether a session holds a set of privileges on a set of managed entities.
        
        If the session does not exist, false is returned for all privileges of
        all the entities.
        
        This API is implemented only by vCenter Server.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/HasPrivilegeOnEntitiesRequestType'
      responses:
        '200':
          description: |2
            The privilege check result.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/EntityPrivilege'

  /AuthorizationManager/{moId}/HasPrivilegeOnEntity:
    post:
      tags: [AuthorizationManager]
      summary: |2
        Check whether a session holds a set of privileges on a managed entity.
      operationId: AuthorizationManager_HasPrivilegeOnEntity
      description: |2
        Check whether a session holds a set of privileges on a managed entity.
        
        If the session does not exist, false is returned for all privileges.
        
        This API is implemented only by vCenter Server.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/HasPrivilegeOnEntityRequestType'
      responses:
        '200':
          description: |2
            a boolean value for each privilege indicating whether the session holds the
            privilege.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  type: boolean

  /AuthorizationManager/{moId}/HasUserPrivilegeOnEntities:
    post:
      tags: [AuthorizationManager]
      summary: |2
        Checks if a user holds a certain set of privileges on a number of
        managed entities.
      operationId: AuthorizationManager_HasUserPrivilegeOnEntities
      description: |2
        Checks if a user holds a certain set of privileges on a number of
        managed entities.
        
        Privileges may be granted to users through their
        respective group membership. If a privilege is granted to a group it is
        implicitly granted to its members.
        
        This API is implemented only by vCenter Server.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/HasUserPrivilegeOnEntitiesRequestType'
      responses:
        '200':
          description: |2
            the privilege check result
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/EntityPrivilege'

  /AuthorizationManager/{moId}/MergePermissions:
    post:
      tags: [AuthorizationManager]
      summary: |2
        Reassigns all permissions of a role to another role.
      operationId: AuthorizationManager_MergePermissions
      description: |2
        Reassigns all permissions of a role to another role.
        
        ***Required privileges:*** Authorization.ReassignRolePermissions
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MergePermissionsRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***NotFound***: if either the source or destination role does not exist.
            
            ***InvalidArgument***: if dstRoleId is the View or Anonymous role or if
            both role IDs are the same.
            
            ***AuthMinimumAdminPermission***: if srcRoleId is the Administrator role, meaning
            that applying the change would leave the system with
            no Administrator permission on the root node.
            
            ***NoPermission***: if current session does not have any privilege
            in the source or destination role or
            "Authorization.ReassignRolePermissions"
            privilege on the root folder.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /AuthorizationManager/{moId}/RemoveEntityPermission:
    post:
      tags: [AuthorizationManager]
      summary: |2
        Removes a permission rule from an entity.
      operationId: AuthorizationManager_RemoveEntityPermission
      description: |2
        Removes a permission rule from an entity.
        
        This will fail with an InvalidArgument fault if called on: the direct child
        folders of a datacenter managed object, the root resource pool of a
        ComputeResource or ClusterComputeResource, or a HostSystem that is part of
        a ComputeResource (Stand-alone Host). These objects always have the same
        permissions as their parent.
        
        This will fail with an InvalidArgument fault if called on a fault-tolerance (FT)
        secondary VirtualMachine. Such a VirtualMachine always has the same permissions
        as its FT primary VirtualMachine.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RemoveEntityPermissionRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***NotFound***: if a permission for this entity and user or group
            does not exist.
            
            ***AuthMinimumAdminPermission***: if this change would leave the system with
            no Administrator permission on the root node.
            
            ***InvalidArgument***: if one of the new role IDs is the View or
            Anonymous role, or the entity does not support
            removing permissions.
            
            ***NoPermission***: if current session does not have any privilege
            in the permission to be removed or
            "Authorization.ModifyPermissions" privilege
            on the entity.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /AuthorizationManager/{moId}/RemoveAuthorizationRole:
    post:
      tags: [AuthorizationManager]
      summary: |2
        Removes a role.
      operationId: AuthorizationManager_RemoveAuthorizationRole
      description: |2
        Removes a role.
        
        ***Required privileges:*** Authorization.ModifyRoles
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RemoveAuthorizationRoleRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***NotFound***: if the role does not exist.
            
            ***InvalidArgument***: if the role is a system role, meaning it cannot be
            changed.
            
            ***RemoveFailed***: if failIfUsed is true and the role has permissions.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /AuthorizationManager/{moId}/ResetEntityPermissions:
    post:
      tags: [AuthorizationManager]
      summary: |2
        Update the entire set of permissions defined on an entity.
      operationId: AuthorizationManager_ResetEntityPermissions
      description: |2
        Update the entire set of permissions defined on an entity.
        
        Any
        existing permissions on the entity are removed and replaced with the
        provided set.
        
        If a permission is specified multiple times for the same user or group, the
        last permission specified takes effect.
        
        The operation is transactional per permission and could partially fail. The
        updates are performed in the order of the permission array argument. The first
        failed update will abort the operation and throw the appropriate exception. When
        the operation aborts, any permissions that have not yet been removed are left in
        their original state.
        
        After updates are applied, original permissions that are not in the new set
        are removed. A failure to remove a permission, such as a violation of
        the minimum administrator permission rule, will abort the operation and could
        leave remaining original permissions still effective on the entity.
        
        This will fail with an InvalidArgument fault if called on: the direct child
        folders of a datacenter managed object, the root resource pool of a
        ComputeResource or ClusterComputeResource, or a HostSystem that is part of
        a ComputeResource (Stand-alone Host). These objects always have the same
        permissions as their parent.
        
        This will fail with an InvalidArgument fault if called on a fault-tolerance (FT)
        secondary VirtualMachine. Such a VirtualMachine always has the same permissions
        as its FT primary VirtualMachine.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ResetEntityPermissionsRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***ManagedObjectNotFound***: if the given entity does not exist.
            
            ***UserNotFound***: if one of the given users or groups does not exist.
            
            ***NotFound***: if a permission for this entity and user or group
            does not exist.
            
            ***AuthMinimumAdminPermission***: if this change would leave the system with
            no Administrator permission on the root node, or it
            would grant further permission to a user or group who
            already has Administrator permission on the root node.
            
            ***InvalidArgument***: if one of the new role IDs is the View or
            Anonymous role, or the entity does not support
            assigning permissions.
            
            ***NoPermission***: if current session does not have any privilege
            in the updated permission or
            "Authorization.ModifyPermissions" privilege on
            the entity.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /AuthorizationManager/{moId}/RetrieveAllPermissions:
    post:
      tags: [AuthorizationManager]
      summary: |2
        Finds all permissions defined in the system.
      operationId: AuthorizationManager_RetrieveAllPermissions
      description: |2
        Finds all permissions defined in the system.
        
        The result is restricted to the managed entities visible to the
        user making the call.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/Permission'

  /AuthorizationManager/{moId}/RetrieveEntityPermissions:
    post:
      tags: [AuthorizationManager]
      summary: |2
        Gets permissions defined on or effective on a managed entity.
      operationId: AuthorizationManager_RetrieveEntityPermissions
      description: |2
        Gets permissions defined on or effective on a managed entity.
        
        This returns the actual permission objects defined in the system for all
        users and groups relative to the managed entity. The inherited
        flag specifies whether or not to include permissions defined by the
        parents of this entity that propagate to this entity.
        
        For complex entities, the entity reported as defining the permission may
        be either the parent or a child entity belonging to the complex entity.
        
        The purpose of this method is to discover permissions
        for administration purposes, not to determine the current
        permissions. The current user's permissions are found on the *ManagedEntity.effectiveRole* property of the user's ManagedEntity.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RetrieveEntityPermissionsRequestType'
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/Permission'

  /AuthorizationManager/{moId}/RetrieveRolePermissions:
    post:
      tags: [AuthorizationManager]
      summary: |2
        Finds all the permissions that use a particular role.
      operationId: AuthorizationManager_RetrieveRolePermissions
      description: |2
        Finds all the permissions that use a particular role.
        
        The result is restricted to managed entities that are visible to the
        user making the call.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RetrieveRolePermissionsRequestType'
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/Permission'
        '500':
          description: |2
            ***NotFound***: if the role does not exist.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFound'

  /AuthorizationManager/{moId}/SetEntityPermissions:
    post:
      tags: [AuthorizationManager]
      summary: |2
        Defines one or more permission rules on an entity or updates rules if already
        present for the given user or group on the entity.
      operationId: AuthorizationManager_SetEntityPermissions
      description: |2
        Defines one or more permission rules on an entity or updates rules if already
        present for the given user or group on the entity.
        
        If a permission is specified multiple times for the same user or group, then the
        last permission specified takes effect.
        
        The operation is applied transactionally per permission and is applied to the
        entity following the order of the elements in the permission array argument. This
        means that if a failure occurs, the method terminates at that point in the
        permission array with an exception, leaving at least one and as many as all
        permissions unapplied.
        
        This will fail with an InvalidArgument fault if called on: the direct child
        folders of a datacenter managed object, the root resource pool of a
        ComputeResource or ClusterComputeResource, or a HostSystem that is part of
        a ComputeResource (Stand-alone Host). These objects always have the same
        permissions as their parent.
        
        This will fail with an InvalidArgument fault if called on a fault-tolerance (FT)
        secondary VirtualMachine. Such a VirtualMachine always has the same permissions
        as its FT primary VirtualMachine.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SetEntityPermissionsRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***ManagedObjectNotFound***: if the given entity does not exist.
            
            ***UserNotFound***: if a given user or group does not exist.
            
            ***AuthMinimumAdminPermission***: if this change would leave the system with
            no Administrator permission on the root node, or it
            would grant further permission to a user or group who
            already has Administrator permission on the root node.
            
            ***NotFound***: if a permission's roleId is not valid.
            
            ***InvalidArgument***: if one of the new role IDs is the View or
            Anonymous role, or the entity does not support assigning
            permissions.
            
            ***NoPermission***: if current session does not have any privilege
            in any permission that being set or
            "Authorization.ModifyPermissions" privilege on
            the entity.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /AuthorizationManager/{moId}/UpdateAuthorizationRole:
    post:
      tags: [AuthorizationManager]
      summary: |2
        Updates a role's name or privileges.
      operationId: AuthorizationManager_UpdateAuthorizationRole
      description: |2
        Updates a role's name or privileges.
        
        If the new set of privileges are assigned to the role, the
        system-defined privileges, "System.Anonymous", "System.View",
        and "System.Read" will be assigned to the role too.
        This operation might return before the new privileges are effective.
        A timeout of 100 ms is possible, but it might vary depending on
        the configuration and the load of the system.
        
        ***Required privileges:*** Authorization.ModifyRoles
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateAuthorizationRoleRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***NotFound***: if the role does not exist, or if a privilege
            in the list cannot be found.
            
            ***InvalidArgument***: if the role is a system role, meaning it cannot be
            changed.
            
            ***InvalidName***: if the new role name is empty.
            
            ***AlreadyExists***: if another role with the given name already exists.
            
            ***NoPermission***: if current session does not have any privilege
            that being updated in the new role or
            "Authorization.ModifyRoles" privilege on the
            root folder.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /AuthorizationManager/{moId}/description:
    get:
      tags: [AuthorizationManager]
      summary: |2
        Static, descriptive strings for system roles and privileges.
      operationId: AuthorizationManager_getDescription
      description: |2
        Static, descriptive strings for system roles and privileges.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuthorizationDescription'

  /AuthorizationManager/{moId}/privilegeList:
    get:
      tags: [AuthorizationManager]
      summary: |2
        The list of system-defined privileges.
      operationId: AuthorizationManager_getPrivilegeList
      description: |2
        The list of system-defined privileges.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/AuthorizationPrivilege'

  /AuthorizationManager/{moId}/roleList:
    get:
      tags: [AuthorizationManager]
      summary: |2
        The currently defined roles in the system, including
        static system-defined roles.
      operationId: AuthorizationManager_getRoleList
      description: |2
        The currently defined roles in the system, including
        static system-defined roles.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/AuthorizationRole'

  /CertificateManager/{moId}/CertMgrRefreshCACertificatesAndCRLs_Task:
    post:
      tags: [CertificateManager]
      summary: |2
        Re-fetches certificates of trusted CAs and the Certificate Revocation
        Lists (CRL) from the appropriate authoritative source and pushes them to
        the hosts.
      operationId: CertificateManager_CertMgrRefreshCACertificatesAndCRLs_Task
      description: |2
        Re-fetches certificates of trusted CAs and the Certificate Revocation
        Lists (CRL) from the appropriate authoritative source and pushes them to
        the hosts.
        
        ***Required privileges:*** Certificate.Manage
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CertMgrRefreshCACertificatesAndCRLsRequestType'
      responses:
        '200':
          description: |2
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'

  /CertificateManager/{moId}/CertMgrRefreshCertificates_Task:
    post:
      tags: [CertificateManager]
      summary: |2
        Gets CSRs from the hosts and then gets these certificates signed by the
        VMware Certificate Service and pushes them down to the hosts.
      operationId: CertificateManager_CertMgrRefreshCertificates_Task
      description: |2
        Gets CSRs from the hosts and then gets these certificates signed by the
        VMware Certificate Service and pushes them down to the hosts.
        
        ***Required privileges:*** Certificate.Manage
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CertMgrRefreshCertificatesRequestType'
      responses:
        '200':
          description: |2
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'

  /CertificateManager/{moId}/CertMgrRevokeCertificates_Task:
    post:
      tags: [CertificateManager]
      summary: |2
        Revokes the certificates of some hosts.
      operationId: CertificateManager_CertMgrRevokeCertificates_Task
      description: |2
        Revokes the certificates of some hosts.
        
        ***Required privileges:*** Certificate.Manage
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CertMgrRevokeCertificatesRequestType'
      responses:
        '200':
          description: |2
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'

  /ClusterComputeResource/{moId}/AbandonHciWorkflow:
    post:
      tags: [ClusterComputeResource]
      summary: |2
        Opt out of the HCI workflow.
      operationId: ClusterComputeResource_AbandonHciWorkflow
      description: |2
        Opt out of the HCI workflow.
        
        This operation is only allowed on a cluster
        that was created with the HCI workflow.
        When the cluster is created, but still unconfigured, the
        *workflowState*
        is "in\_progress". The AbandonHciWorkflow method may be called at any time before
        cluster configuration begins; it is not possible to abandon the workflow
        during the configuration procedure.
        
        ***Required privileges:*** Host.Inventory.EditCluster
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            Failure
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InvalidState'

  /ClusterComputeResource/{moId}/AddHost_Task:
    post:
      tags: [ClusterComputeResource]
      summary: |2
        Adds a host to the cluster.
      operationId: ClusterComputeResource_AddHost_Task
      description: |2
        Adds a host to the cluster.
        
        The hostname must be either an IP address, such as
        192.168.0.1, or a DNS resolvable name. DNS names may be fully qualified names,
        such as host1.domain1.com, or a short name such as host1, providing host1 resolves
        to host1.domain1.com. The system uses DNS to resolve short names to fully qualified
        names. If the cluster supports nested resource pools and the user specifies the
        optional ResourcePool argument, then the host's root resource pool becomes the
        specified resource pool. The stand-alone host resource hierarchy is imported into
        the new nested resource pool.
        
        If the cluster does not support nested resource pools, then the stand-alone host
        resource hierarchy is discarded and all virtual machines on the host are put
        under the cluster's root resource pool.
        
        In addition to the Host.Inventory.AddHostToCluster and
        Resource.AssignVMToPool privileges, it requires System.View privilege on
        the VM folder that the VMs of the host will be placed on.
        
        ***Required privileges:*** Host.Inventory.AddHostToCluster
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AddHostRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor the
            operation. The *info.result* property in the
            *Task* contains the newly added *HostSystem* upon
            success.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***InvalidLogin***: if "asConnected" is specified but authentication with the
            new host fails.
            
            ***HostConnectFault***: if an error occurred when connecting to a host.
            Typically, a more specific subclass, such as AlreadyBeingManaged,
            is thrown.
            
            ***AlreadyBeingManaged***: if the host is already being managed by a
            VirtualCenter server.
            
            ***NotEnoughLicenses***: if no licenses are available to add this host.
            
            ***NoHost***: if the host cannot be contacted.
            
            ***NotSupportedHost***: if the host is running a software version that does
            not support clustering features. It may still be possible to add
            the host as a stand-alone host.
            
            ***TooManyHosts***: if no additional hosts can be added to the cluster.
            
            ***AgentInstallFailed***: if there is an error installing the VirtualCenter agent
            on the host.
            
            ***AlreadyConnected***: if asConnected is true and the host is already
            connected to VirtualCenter.
            
            ***SSLVerifyFault***: if the host certificate could not be authenticated
            
            ***DuplicateName***: if another host in the same cluster has the name.
            
            ***NoPermission***: if there are crypto keys to be sent to the host,
            but the user does not have Cryptographer.RegisterHost privilege
            on the Cluster.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /ClusterComputeResource/{moId}/ApplyRecommendation:
    post:
      tags: [ClusterComputeResource]
      summary: |2
        Applies a recommendation from the drsRecommendation or the
        recommendation list.
      operationId: ClusterComputeResource_ApplyRecommendation
      description: |2
        Applies a recommendation from the drsRecommendation or the
        recommendation list.
        
        Each recommendation can be applied only
        once.
        
        resource.applyRecommendation privilege is required if the recommendation
        is DRS migration or power management recommendations.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ApplyRecommendationRequestType'
      responses:
        '204':
          description: |2
            No Content

  /ClusterComputeResource/{moId}/CancelRecommendation:
    post:
      tags: [ClusterComputeResource]
      summary: |2
        Cancels a recommendation.
      operationId: ClusterComputeResource_CancelRecommendation
      description: |2
        Cancels a recommendation.
        
        ***Required privileges:*** System.Read
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CancelRecommendationRequestType'
      responses:
        '204':
          description: |2
            No Content

  /ClusterComputeResource/{moId}/ConfigureHCI_Task:
    post:
      tags: [ClusterComputeResource]
      summary: |2
        Configures the cluster.
      operationId: ClusterComputeResource_ConfigureHCI_Task
      description: |2
        Configures the cluster.
        
        This API requires Host.Inventory.EditCluster privilege on the cluster
        and the hosts; additional privileges might be required depending on the
        inputs.
        This operation is only allowed on a cluster that was created
        with the HCI workflow.
        Before calling this method, it is recommended that
        *ClusterComputeResource.ValidateHCIConfiguration* is
        invoked with the DvsProfile objects listed in
        *ClusterComputeResourceHCIConfigSpec.dvsProf* along with the hosts listed in
        *ClusterComputeResourceHostConfigurationInput* to validate that
        the desired network settings can be applied correctly.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ConfigureHCIRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to
            monitor the operation. The *TaskInfo.result* property
            in the *Task* contains a *ClusterComputeResourceClusterConfigResult*
            object, which upon completion will contain a list of hosts which
            were successfully configured and a list of hosts
            which could not be configured.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'

  /ClusterComputeResource/{moId}/Destroy_Task:
    post:
      tags: [ClusterComputeResource]
      summary: |2
        Destroys this object, deleting its contents and removing it from its parent
        folder (if any).
      operationId: ClusterComputeResource_Destroy_Task
      description: |2
        Destroys this object, deleting its contents and removing it from its parent
        folder (if any).
        
        NOTE: The appropriate privilege must be held on the parent of the destroyed
        entity as well as the entity itself.
        This method can throw one of several exceptions. The exact set of exceptions
        depends on the kind of entity that is being removed. See comments for
        each entity for more information on destroy behavior.
        
        ***Required privileges:*** Host.Inventory.DeleteCluster
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor the
            operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            Failure
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /ClusterComputeResource/{moId}/ClusterEnterMaintenanceMode:
    post:
      tags: [ClusterComputeResource]
      summary: |2
        The API takes a list of hosts in the cluster as input, and
        returns a list of hosts in "ClusterMaintenanceResult" that the
        server can successfully evacuate given the existing
        constraints in the cluster, such as HA, FT, Vmotion
        compatibility, reservations, affinity rules, etc.
      operationId: ClusterComputeResource_ClusterEnterMaintenanceMode
      description: |2
        The API takes a list of hosts in the cluster as input, and
        returns a list of hosts in "ClusterMaintenanceResult" that the
        server can successfully evacuate given the existing
        constraints in the cluster, such as HA, FT, Vmotion
        compatibility, reservations, affinity rules, etc.
        
        The client is allowed to pass all hosts in the cluster to the
        API, even though all of them cannot enter maintenance mode at
        the same time. The list returned from the API contains the
        largest number of hosts that the server can evacuate
        simultaneously. The client can then request to enter each host
        in the returned list into maintenance mode.
        The client can specify an integer "DemandCapacityRatioTarget"
        option in the "option" parameter. The allowed values of the
        option range from 40 to 200, and the default value is 100. This
        option controls how much resource overcommitment the server
        should make in consolidating the VMs onto fewer hosts. A value
        of 100 means the server will keep the same amount of powered-on
        capacity as the current VM demands. A value less than 100 means
        undercommitted resources. A value greater than 100 means
        overcommitted resources.
        The hosts are recommended based on the inventory at the time of
        the API invocation. It is not guaranteed that the actual
        enter-maintenance tasks on the hosts will succeed, if the
        inventory changes after the API returns, or if vmotions fail
        due to unexpected conditions. For possible exceptions thrown
        by the necessary relocate operations, see
        *VirtualMachine.MigrateVM_Task*.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ClusterEnterMaintenanceModeRequestType'
      responses:
        '200':
          description: |2
            A *ClusterEnterMaintenanceResult* object,
            which consists of an array of recommendations for hosts that
            can be evacuated and an array of faults for hosts that cannot
            be evacuated.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClusterEnterMaintenanceResult'

  /ClusterComputeResource/{moId}/EvcManager:
    post:
      tags: [ClusterComputeResource]
      summary: |2
        A managed object that controls Enhanced vMotion Compatibility mode for
        this cluster.
      operationId: ClusterComputeResource_EvcManager
      description: |2
        A managed object that controls Enhanced vMotion Compatibility mode for
        this cluster.
        
        ***Required privileges:*** System.Read
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            Refers instance of *ClusterEVCManager*.
          content:
            application/json:
              schema:
                nullable: true
                $ref: '#/components/schemas/ManagedObjectReference'

  /ClusterComputeResource/{moId}/ExtendHCI_Task:
    post:
      tags: [ClusterComputeResource]
      summary: |2
        Extend an existing HCI cluster.
      operationId: ClusterComputeResource_ExtendHCI_Task
      description: |2
        Extend an existing HCI cluster.
        
        This API requires Host.Inventory.EditCluster privilege on the cluster
        and the hosts, additional privileges might be required depending on the
        inputs.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ExtendHCIRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to
            monitor the operation. The *TaskInfo.result* property
            in the *Task* contains a *ClusterComputeResourceClusterConfigResult*
            object, which upon successful completion would contain the list
            of hosts which couldn't be configured and a list of hosts which
            were successfully configured. This API can be called only after
            the cluster is configured using *ClusterComputeResource.ConfigureHCI_Task* and requires
            *ClusterComputeResourceHCIConfigInfo.workflowState* to be "done".
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'

  /ClusterComputeResource/{moId}/FindRulesForVm:
    post:
      tags: [ClusterComputeResource]
      summary: |2
        Finds all enabled and disabled VM-VM Affinity and Anti-Affinity rules,
        involving the given Virtual Machine.
      operationId: ClusterComputeResource_FindRulesForVm
      description: |2
        Finds all enabled and disabled VM-VM Affinity and Anti-Affinity rules,
        involving the given Virtual Machine.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/FindRulesForVmRequestType'
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/ClusterRuleInfo'

  /ClusterComputeResource/{moId}/GetResourceUsage:
    post:
      tags: [ClusterComputeResource]
      summary: |2
        This API can be invoked to get the current CPU, memory and storage usage
        in the cluster.
      operationId: ClusterComputeResource_GetResourceUsage
      description: |2
        This API can be invoked to get the current CPU, memory and storage usage
        in the cluster.
        
        ***Required privileges:*** System.Read
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            An instance of ResourceUsageSummary with following information:
            1. cpuCapacityMHz: Sum of CPU capacity of all the available hosts in the
               cluster in MHz.
            2. cpuUsedMHz: Sum of CPU consumed in all the available hosts in the cluster
               in MHz.
            3. memCapacityMB: Sum of memory capacity of all the available hosts in the
               cluster in MB.
            4. memUsedMB: Sum of memory consumed in all the available hosts in this
               cluster in MB.
            5. storageCapacityMB: Total storage capacity of all the accessible datastores
               in this cluster.
            6. storageUsedMB: Total storage consumed in all the accessible datastores in
               this cluster.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClusterResourceUsageSummary'

  /ClusterComputeResource/{moId}/GetSystemVMsRestrictedDatastores:
    post:
      tags: [ClusterComputeResource]
      summary: |2
        Retrieve all the datastores that are either listed in
        *ClusterSystemVMsConfigInfo.notAllowedDatastores* or are
        tagged with a category from
        *ClusterSystemVMsConfigInfo.dsTagCategoriesToExclude*.
      operationId: ClusterComputeResource_GetSystemVMsRestrictedDatastores
      description: |2
        Retrieve all the datastores that are either listed in
        *ClusterSystemVMsConfigInfo.notAllowedDatastores* or are
        tagged with a category from
        *ClusterSystemVMsConfigInfo.dsTagCategoriesToExclude*.
        
        ***Since:*** vSphere API Release 7.0.3.0
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            a list of restricted datastores.
            
            Refers instances of *Datastore*.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/ManagedObjectReference'

  /ClusterComputeResource/{moId}/MoveHostInto_Task:
    post:
      tags: [ClusterComputeResource]
      summary: |2
        Moves an existing host into a cluster.
      operationId: ClusterComputeResource_MoveHostInto_Task
      description: |2
        Moves an existing host into a cluster.
        
        The host must be part of the same
        datacenter, and if the host is part of a cluster, the host must be in maintenance
        mode.
        
        If the host is a stand-alone host, the stand-alone ComputeResource is removed
        as part of this operation.
        
        All virtual machines associated with the host, regardless of whether or not they
        are running, are moved with the host into the cluster. If there are virtual
        machines that should not be moved, then migrate those virtual machines off the
        host before initiating this operation.
        
        If the host is a stand-alone host, the cluster supports nested resource pools,
        and the user specifies the optional resourcePool argument, then the stand-alone
        host's root resource pool becomes the specified resource pool and the stand-alone
        host resource hierarchy is imported into the new nested resource pool. If the
        cluster does not support nested resource pools or the resourcePool argument is not
        specified, then the stand-alone host resource hierarchy is ignored.
        
        vSphere Lifecycle Manager baselines (previously called vSphere Update
        Manager VUM) is
        <a href="https://kb.vmware.com/s/article/89519">deprecated</a> in vCenter 8.0.
        You can instead manage the lifecycle of the hosts in your environment by using vSphere
        Lifecycle Manager images (vLCM). A host moved from image managed cluster to baseline
        managed cluster will become baseline managed.
        
        ***Required privileges:*** Host.Inventory.EditCluster
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MoveHostIntoRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor the
            operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***NotSupportedHost***: if the host is running a software version that does
            not support clustering.
            
            ***TooManyHosts***: if no additional hosts can be added to the cluster.
            
            ***InvalidArgument***: if the host is not a part of the same datacenter as
            the cluster or if the specified resource pool is not part of the cluster
            or if the source and destination clusters are the same.
            
            ***InvalidState***: if a host is already part of a cluster and is not in
            maintenance mode.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /ClusterComputeResource/{moId}/MoveInto_Task:
    post:
      tags: [ClusterComputeResource]
      summary: |2
        Moves an existing host into a cluster.
      operationId: ClusterComputeResource_MoveInto_Task
      description: |2
        Moves an existing host into a cluster.
        
        The host must be part of the same
        datacenter, and if the host is part of a cluster, the host must be in maintenance
        mode.
        
        If the host is part of a stand-alone ComputeResource, then the stand-alone
        ComputeResource is removed as part of this operation.
        
        All virtual machines associated with a host, regardless of whether or not they
        are running, are moved with the host into the cluster. If there are virtual
        machines that should not be moved, then migrate those virtual machines off the
        host before initiating this operation.
        
        For stand-alone hosts, the host resource pool hierarchy is discarded in this call.
        To preserve a host resource pools from a stand-alone host, call moveHostInt,
        specifying an optional resource pool. This operation is transactional only with
        respect to each individual host. Hosts in the set are moved sequentially and are
        committed, one at a time. If a failure is detected, then the method terminates
        with an exception. Since hosts are moved one at a time, if this operation fails
        while in the process of moving multiple hosts, some hosts are left unmoved.
        
        vSphere Lifecycle Manager baselines (previously called vSphere Update
        Manager VUM) is
        <a href="https://kb.vmware.com/s/article/89519">deprecated</a> in vCenter 8.0.
        You can instead manage the lifecycle of the hosts in your environment by using vSphere
        Lifecycle Manager images (vLCM). A host moved from image managed cluster to baseline
        managed cluster will become baseline managed.
        
        In addition to the privileges mentioned, the user must also hold
        Host.Inventory.EditCluster on the host's source ComputeResource object.
        
        ***Required privileges:*** Host.Inventory.EditCluster
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MoveIntoRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor the
            operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***NotSupportedHost***: if the host is running a software version that does
            not support clustering features.
            
            ***TooManyHosts***: if no additional hosts can be added to the cluster.
            
            ***InvalidArgument***: if one of the hosts is not part of the same datacenter
            as the cluster.
            
            ***InvalidState***: if a host is already part of a cluster and is not in
            maintenance mode.
            
            ***DuplicateName***: if the host is already in the cluster
            
            ***DisallowedOperationOnFailoverHost***: if the host is being moved
            from a cluster and was configured as a failover host in that
            cluster. See *ClusterFailoverHostAdmissionControlPolicy*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /ClusterComputeResource/{moId}/PlaceVm:
    post:
      tags: [ClusterComputeResource]
      summary: |2
        This method returns a *PlacementResult* object.
      operationId: ClusterComputeResource_PlaceVm
      description: |2
        This method returns a *PlacementResult* object.
        
        This API can be invoked to ask DRS for a set of recommendations
        for moving a virtual machine and its virtual disks into a cluster.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PlaceVmRequestType'
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PlacementResult'
        '500':
          description: |2
            ***InvalidState***: if invoked on a DRS disabled cluster.
            
            ***InvalidArgument***: in case of errors in the input "placementSpec".
            The API can be used for either intra-vCenter migration or
            cross-vCenter migration, with different requirements for the
            PlacementSpec.
              For intra-vCenter migration, the requirements for PlacementSpec are:
            - PlacementSpec.vm is required.
            - PlacementSpec.relocateSpec can be used to optionally specify the
              target host, target datastore, or target resource pool for the migration.
            - PlacementSpec.hosts can be used to optionally specify a list of
              compatible hosts for the incoming virtual machine. If this list is empty,
              all hosts in the cluster will be considered for placement.
            - PlacementSpec.datastores can be used to optionally specify a list of
              compatible datastores for the incoming virtual machine. If this list is
              empty, all datastores connected to the hosts in the cluster will be
              considered for placement.
            - PlacementSpec.storagePods can be used to optionally specify a list of
              compatible datastore clusters for the incoming virtual machine. If this
              list is empty, all datastores connected to the hosts in the cluster will
              be considered for placement.
            <!-- -->
              For cross-vCenter migration, the requirements for PlacementSpec are:
            - PlacementSpec.configSpec is required. Within the ConfigSpec, the
              following elements are required if PlacementSpec.relocateSpec.host is
              empty: version, cpuAllocation, memoryAllocation, numCPUs, memoryMB;
              additionally, the following elements of the ConfigSpec are required if
              PlacementSpec.relocateSpec.datastore is empty: files, swapPlacement,
              deviceChange.
            - PlacementSpec.relocateSpec can be used to optionally specify the
              target host, target datastore, or target resource pool for the migration.
            - PlacementSpec.hosts is required, if PlacementSpec.relocateSpec.host is
              empty; otherwise, the selected hosts in the PlacementResult are not
              guaranteed to be compatible with the incoming virtual machine.
            - PlacementSpec.datastores is required, if PlacementSpec.relocateSpec.datastore
              is empty; otherwise, the selected datastores in the PlacementResult are
              not guaranteed to be compatible with the incoming virtual machine.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InvalidState'

  /ClusterComputeResource/{moId}/RecommendHostsForVm:
    post:
      tags: [ClusterComputeResource]
      summary: |2
        Gets a recommendation for where to power on, resume, revert
        from powered-off state to powered on state, or to migrate a
        specific virtual machine.
      operationId: ClusterComputeResource_RecommendHostsForVm
      deprecated: true
      description: |2
        Deprecated as of VI API 2.5, use *Datacenter.PowerOnMultiVM_Task*.
        *ClusterComputeResource.RecommendHostsForVm* cannot make any recommendations if DRS cannot
        find the specified host in the cluster.
        With *Datacenter.PowerOnMultiVM_Task*, DRS attempts to migrate virtual machines
        and power on hosts in standby mode, given the same conditions.
        
        Gets a recommendation for where to power on, resume, revert
        from powered-off state to powered on state, or to migrate a
        specific virtual machine.
        
        If no host is found, an empty list is
        returned.
        
        The type of operation is implied by the state of the virtual machine. Returned
        hosts are intended for power-on or resume if the virtual machine is powered-off or
        suspended. However, if the virtual machine is powered-on, the request is assumed
        to be for migrating a virtual machine into a DRS enabled cluster. In that case,
        the ResourcePool argument should be specified and the ResourcePool and the virtual
        machine cannot be in the same cluster.
        
        ***Required privileges:*** System.Read
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RecommendHostsForVmRequestType'
      responses:
        '200':
          description: |2
            An array of HostRecommendation ordered by their rating.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/ClusterHostRecommendation'

  /ClusterComputeResource/{moId}/ReconfigureCluster_Task:
    post:
      tags: [ClusterComputeResource]
      summary: |2
        Reconfigures a cluster.
      operationId: ClusterComputeResource_ReconfigureCluster_Task
      deprecated: true
      description: |2
        Deprecated as of VI API 2.5, use *ComputeResource.ReconfigureComputeResource_Task*.
        
        Reconfigures a cluster.
        
        ***Required privileges:*** Host.Inventory.EditCluster
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ReconfigureClusterRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor the
            operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'

  /ClusterComputeResource/{moId}/ReconfigureComputeResource_Task:
    post:
      tags: [ClusterComputeResource]
      summary: |2
        Change the compute resource configuration.
      operationId: ClusterComputeResource_ReconfigureComputeResource_Task
      description: |2
        Change the compute resource configuration.
        
        ***Required privileges:*** Host.Inventory.EditCluster
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ReconfigureComputeResourceRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor
            the operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'

  /ClusterComputeResource/{moId}/RefreshRecommendation:
    post:
      tags: [ClusterComputeResource]
      summary: |2
        Make DRS invoke again and return a new list of recommendations.
      operationId: ClusterComputeResource_RefreshRecommendation
      description: |2
        Make DRS invoke again and return a new list of recommendations.
        
        Concurrent "refresh" requests may be combined together and trigger only
        one DRS invocation.
        
        The recommendations generated is stored at *ClusterComputeResource.recommendation*.
        
        ***Required privileges:*** Host.Inventory.EditCluster
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '204':
          description: |2
            No Content

  /ClusterComputeResource/{moId}/Reload:
    post:
      tags: [ClusterComputeResource]
      summary: |2
        Reload the entity state.
      operationId: ClusterComputeResource_Reload
      description: |2
        Reload the entity state.
        
        Clients only need to call this method
        if they changed some external state that affects the service
        without using the Web service interface to perform the change.
        For example, hand-editing a virtual machine configuration file
        affects the configuration of the associated virtual machine but
        the service managing the virtual machine might not monitor the
        file for changes. In this case, after such an edit, a client
        would call "reload" on the associated virtual machine to ensure
        the service and its clients have current data for the
        virtual machine.
        
        ***Required privileges:*** System.Read
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '204':
          description: |2
            No Content

  /ClusterComputeResource/{moId}/Rename_Task:
    post:
      tags: [ClusterComputeResource]
      summary: |2
        Renames this managed entity.
      operationId: ClusterComputeResource_Rename_Task
      description: |2
        Renames this managed entity.
        
        Any % (percent) character used in this name parameter
        must be escaped, unless it is used to start an escape
        sequence. Clients may also escape any other characters in
        this name parameter.
        
        See also *ManagedEntity.name*.
        
        ***Required privileges:*** Host.Inventory.RenameCluster
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RenameRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor the
            operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***DuplicateName***: If another object in the same folder has the target name.
            
            ***InvalidName***: If the new name is not a valid entity name.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /ClusterComputeResource/{moId}/RetrieveDasAdvancedRuntimeInfo:
    post:
      tags: [ClusterComputeResource]
      summary: |2
        Retrieve DAS advanced runtime info for this cluster.
      operationId: ClusterComputeResource_RetrieveDasAdvancedRuntimeInfo
      description: |2
        Retrieve DAS advanced runtime info for this cluster.
        
        ***Required privileges:*** System.Read
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                $ref: '#/components/schemas/ClusterDasAdvancedRuntimeInfo'

  /ClusterComputeResource/{moId}/SetCryptoMode:
    post:
      tags: [ClusterComputeResource]
      summary: |2
        Set the desired encryption mode and host key for the cluster.
      operationId: ClusterComputeResource_SetCryptoMode
      description: |2
        Set the desired encryption mode and host key for the cluster.
        
        The cryptoMode parameter can be used to set crypto mode policy for the
        cluster.
        
        The desired host key of the cluster can also be specified optionally
        using the policy parameter.
        
        ***Required privileges:*** Cryptographer.RegisterHost
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SetCryptoModeRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***InvalidRequest***: if the interface is not implemented.
            
            ***InvalidArgument***: if one of the parameters is invalid.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RuntimeFault'

  /ClusterComputeResource/{moId}/setCustomValue:
    post:
      tags: [ClusterComputeResource]
      summary: |2
        Assigns a value to a custom field.
      operationId: ClusterComputeResource_setCustomValue
      description: |2
        Assigns a value to a custom field.
        
        The setCustomValue method requires
        whichever updatePrivilege is defined as one of the
        *CustomFieldDef.fieldInstancePrivileges*
        for the CustomFieldDef whose value is being changed.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/setCustomValueRequestType'
      responses:
        '204':
          description: |2
            No Content

  /ClusterComputeResource/{moId}/StampAllRulesWithUuid_Task:
    post:
      tags: [ClusterComputeResource]
      summary: |2
        Stamp all rules in the cluster with ruleUuid.
      operationId: ClusterComputeResource_StampAllRulesWithUuid_Task
      description: |2
        Stamp all rules in the cluster with ruleUuid.
        
        If a rule has ruleUuid field set, and it has a value, leave it untouched.
        If rule's ruleUuid field is unset, generate a UUID and stamp the rule.
        
        ***Required privileges:*** Host.Inventory.EditCluster
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'

  /ClusterComputeResource/{moId}/ValidateHCIConfiguration:
    post:
      tags: [ClusterComputeResource]
      summary: |2
        Validate HCI configuration in pre-configure and post-configure use-cases.
      operationId: ClusterComputeResource_ValidateHCIConfiguration
      description: |2
        Validate HCI configuration in pre-configure and post-configure use-cases.
        1. pre-configure use-case: Validates the HCI configuration to be applied on
           the cluster. A successful validation in this case means the HCIConfigSpec
           can be applied without errors on the cluster using
           *ClusterComputeResource.ConfigureHCI_Task* or
           *ClusterComputeResource.ExtendHCI_Task*  
           These are the things the API validates:
           1. When providing a set of physical adapters in the
              *ClusterComputeResourceHCIConfigSpec.dvsProf* argument,
              the API validates that all the adapters should be present on all the
              hosts to be validated. The adapters should either be unmapped or mapped
              to the same vSwitch across hosts. In addition to this, if the adapters
              are connected to a *DistributedVirtualSwitch*, it should be
              exactly the same way as specified in the
              *ClusterComputeResourceHCIConfigSpec.dvsProf* or in the
              *ClusterComputeResourceHCIConfigInfo.dvsSetting*.
           2. The API will also validate that the ESXi versions of the hosts are
              compatible with the version of the *DistributedVirtualSwitch*
              being created.
        2. post-configure case: Validate the cluster has been configured correctly
           as per the *ClusterComputeResourceHCIConfigInfo* for the
           cluster. In this case, the API should be invoked with both params omitted
           as the intent is to validate all hosts in the cluster using the existing
           *ClusterComputeResourceHCIConfigInfo*
           
        ***Required privileges:*** System.Read
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ValidateHCIConfigurationRequestType'
      responses:
        '200':
          description: |2
            A list of configuration errors. A non-empty list indicates
            validation has failed.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/ClusterComputeResourceValidationResultBase'
        '500':
          description: |2
            Failure
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InvalidState'

  /ClusterComputeResource/{moId}/actionHistory:
    get:
      tags: [ClusterComputeResource]
      summary: |2
        The set of actions that have been performed recently.
      operationId: ClusterComputeResource_getActionHistory
      description: |2
        The set of actions that have been performed recently.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/ClusterActionHistory'

  /ClusterComputeResource/{moId}/alarmActionsEnabled:
    get:
      tags: [ClusterComputeResource]
      summary: |2
        Whether alarm actions are enabled for this entity.
      operationId: ClusterComputeResource_getAlarmActionsEnabled
      description: |2
        Whether alarm actions are enabled for this entity.
        
        True if enabled; false otherwise.
        
        ***Required privileges:*** System.Read
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: boolean

  /ClusterComputeResource/{moId}/availableField:
    get:
      tags: [ClusterComputeResource]
      summary: |2
        List of custom field definitions that are valid for the object's type.
      operationId: ClusterComputeResource_getAvailableField
      description: |2
        List of custom field definitions that are valid for the object's type.
        
        The fields are sorted by *CustomFieldDef.name*.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/CustomFieldDef'

  /ClusterComputeResource/{moId}/configIssue:
    get:
      tags: [ClusterComputeResource]
      summary: |2
        Current configuration issues that have been detected for this entity.
      operationId: ClusterComputeResource_getConfigIssue
      description: |2
        Current configuration issues that have been detected for this entity.
        
        Typically,
        these issues have already been logged as events. The entity stores these
        events as long as they are still current. The
        *configStatus* property provides an overall status
        based on these events.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/Event'

  /ClusterComputeResource/{moId}/configManagerEnabled:
    get:
      tags: [ClusterComputeResource]
      summary: |2
        Flag indicating whether or not desired configuration
        management platform is enabled on the compute resource.
      operationId: ClusterComputeResource_getConfigManagerEnabled
      description: |2
        Flag indicating whether or not desired configuration
        management platform is enabled on the compute resource.
        
        This property can be set only at the time of creation or through the
        *ComputeResource.EnableConfigurationManagement* method.
        
        ***Since:*** vSphere API Release 8.0.0.0
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: boolean

  /ClusterComputeResource/{moId}/configStatus:
    get:
      tags: [ClusterComputeResource]
      summary: |2
        The configStatus indicates whether or not the system has detected a configuration
        issue involving this entity.
      operationId: ClusterComputeResource_getConfigStatus
      description: |2
        The configStatus indicates whether or not the system has detected a configuration
        issue involving this entity.
        
        For example, it might have detected a
        duplicate IP address or MAC address, or a host in a cluster
        might be out of compliance. The meanings of the configStatus values are:
        - red: A problem has been detected involving the entity.
        - yellow: A problem is about to occur or a transient condition
          has occurred (For example, reconfigure fail-over policy).
        - green: No configuration issues have been detected.
        - gray: The configuration status of the entity is not being monitored.
          
        A green status indicates only that a problem has not been detected;
        it is not a guarantee that the entity is problem-free.
        
        The *configIssue* property contains a list of the
        problems that have been detected.
        In releases after vSphere API 5.0, vSphere Servers might not
        generate property collector update notifications for this property.
        To obtain the latest value of the property, you can use
        PropertyCollector methods RetrievePropertiesEx or WaitForUpdatesEx.
        If you use the PropertyCollector.WaitForUpdatesEx method, specify
        an empty string for the version parameter. Any other version value will not
        produce any property values as no updates are generated.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedEntityStatus_enum'

  /ClusterComputeResource/{moId}/configuration:
    get:
      tags: [ClusterComputeResource]
      summary: |2
        Configuration of the cluster.
      operationId: ClusterComputeResource_getConfiguration
      deprecated: true
      description: |2
        Deprecated as of VI API 2.5, use *ComputeResource.configurationEx*,
        which is a *ClusterConfigInfoEx* data object..
        
        Configuration of the cluster.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClusterConfigInfo'

  /ClusterComputeResource/{moId}/configurationEx:
    get:
      tags: [ClusterComputeResource]
      summary: |2
        Configuration of the compute resource; applies to both standalone hosts
        and clusters.
      operationId: ClusterComputeResource_getConfigurationEx
      description: |2
        Configuration of the compute resource; applies to both standalone hosts
        and clusters.
        
        For a cluster this property will return a
        *ClusterConfigInfoEx* object.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ComputeResourceConfigInfo'

  /ClusterComputeResource/{moId}/customValue:
    get:
      tags: [ClusterComputeResource]
      summary: |2
        Custom field values.
      operationId: ClusterComputeResource_getCustomValue
      description: |2
        Custom field values.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/CustomFieldValue'

  /ClusterComputeResource/{moId}/datastore:
    get:
      tags: [ClusterComputeResource]
      summary: |2
        The datastore property is the subset of datastore objects in the datacenter
        available in this ComputeResource.
      operationId: ClusterComputeResource_getDatastore
      description: |2
        The datastore property is the subset of datastore objects in the datacenter
        available in this ComputeResource.
        
        This property is computed as the aggregate set of datastores available from all
        the hosts that are part of this compute resource.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            Refers instances of *Datastore*.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/ManagedObjectReference'

  /ClusterComputeResource/{moId}/declaredAlarmState:
    get:
      tags: [ClusterComputeResource]
      summary: |2
        A set of alarm states for alarms that apply to this managed entity.
      operationId: ClusterComputeResource_getDeclaredAlarmState
      description: |2
        A set of alarm states for alarms that apply to this managed entity.
        
        The set includes alarms defined on this entity
        and alarms inherited from the parent entity,
        or from any ancestors in the inventory hierarchy.
        
        Alarms are inherited if they can be triggered by this entity or its descendants.
        This set does not include alarms that are defined on descendants of this entity.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/AlarmState'

  /ClusterComputeResource/{moId}/disabledMethod:
    get:
      tags: [ClusterComputeResource]
      summary: |2
        List of operations that are disabled, given the current runtime
        state of the entity.
      operationId: ClusterComputeResource_getDisabledMethod
      description: |2
        List of operations that are disabled, given the current runtime
        state of the entity.
        
        For example, a power-on operation always fails if a
        virtual machine is already powered on. This list can be used by clients to
        enable or disable operations in a graphical user interface.
        
        Note: This list is determined by the current runtime state of an entity,
        not by its permissions.
        
        This list may include the following operations for a HostSystem:
        - *HostSystem.EnterMaintenanceMode_Task*
        - *HostSystem.ExitMaintenanceMode_Task*
        - *HostSystem.RebootHost_Task*
        - *HostSystem.ShutdownHost_Task*
        - *HostSystem.ReconnectHost_Task*
        - *HostSystem.DisconnectHost_Task*
          
        This list may include the following operations for a VirtualMachine:
        - *VirtualMachine.AnswerVM*
        - *ManagedEntity.Rename_Task*
        - *VirtualMachine.CloneVM_Task*
        - *VirtualMachine.PowerOffVM_Task*
        - *VirtualMachine.PowerOnVM_Task*
        - *VirtualMachine.SuspendVM_Task*
        - *VirtualMachine.ResetVM_Task*
        - *VirtualMachine.ReconfigVM_Task*
        - *VirtualMachine.RelocateVM_Task*
        - *VirtualMachine.MigrateVM_Task*
        - *VirtualMachine.CustomizeVM_Task*
        - *VirtualMachine.ShutdownGuest*
        - *VirtualMachine.StandbyGuest*
        - *VirtualMachine.RebootGuest*
        - *VirtualMachine.CreateSnapshot_Task*
        - *VirtualMachine.RemoveAllSnapshots_Task*
        - *VirtualMachine.RevertToCurrentSnapshot_Task*
        - *VirtualMachine.MarkAsTemplate*
        - *VirtualMachine.MarkAsVirtualMachine*
        - *VirtualMachine.ResetGuestInformation*
        - *VirtualMachine.MountToolsInstaller*
        - *VirtualMachine.UnmountToolsInstaller*
        - *ManagedEntity.Destroy_Task*
        - *VirtualMachine.UpgradeVM_Task*
        - *VirtualMachine.ExportVm*
          
        This list may include the following operations for a ResourcePool:
        - *ResourcePool.ImportVApp*
        - *ResourcePool.CreateChildVM_Task*
        - *ResourcePool.UpdateConfig*
        - *Folder.CreateVM_Task*
        - *ManagedEntity.Destroy_Task*
        - *ManagedEntity.Rename_Task*
          
        This list may include the following operations for a VirtualApp:
        - *ManagedEntity.Destroy_Task*
        - *VirtualApp.CloneVApp_Task*
        - *VirtualApp.unregisterVApp_Task*
        - *VirtualApp.ExportVApp*
        - *VirtualApp.PowerOnVApp_Task*
        - *VirtualApp.PowerOffVApp_Task*
        - *VirtualApp.UpdateVAppConfig*
          
        In releases after vSphere API 5.0, vSphere Servers might not
        generate property collector update notifications for this property.
        To obtain the latest value of the property, you can use
        PropertyCollector methods RetrievePropertiesEx or WaitForUpdatesEx.
        If you use the PropertyCollector.WaitForUpdatesEx method, specify
        an empty string for the version parameter. Any other version value will not
        produce any property values as no updates are generated.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  type: string

  /ClusterComputeResource/{moId}/drsFault:
    get:
      tags: [ClusterComputeResource]
      summary: |2
        A collection of the DRS faults generated in the last DRS invocation.
      operationId: ClusterComputeResource_getDrsFault
      description: |2
        A collection of the DRS faults generated in the last DRS invocation.
        
        Each element of the collection is the set of faults generated in one
        recommendation.
        DRS faults are generated when DRS tries to make recommendations
        for rule enforcement, power management, etc., and indexed in a tree
        structure with reason for recommendations and VM to migrate (optional)
        as the index keys.
        In releases after vSphere API 5.0, vSphere Servers might not
        generate property collector update notifications for this property.
        To obtain the latest value of the property, you can use
        PropertyCollector methods RetrievePropertiesEx or WaitForUpdatesEx.
        If you use the PropertyCollector.WaitForUpdatesEx method, specify
        an empty string for the version parameter. Any other version value will not
        produce any property values as no updates are generated.
        
        ***Required privileges:*** System.Read
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/ClusterDrsFaults'

  /ClusterComputeResource/{moId}/drsRecommendation:
    get:
      tags: [ClusterComputeResource]
      summary: |2
        If DRS is enabled, this returns the set of recommended
        migrations from the DRS module.
      operationId: ClusterComputeResource_getDrsRecommendation
      deprecated: true
      description: |2
        Deprecated as of VI API 2.5, use
        *ClusterComputeResource.recommendation*.
        vSphere 6.5 is the last version where this property is populated.
        Later versions of vSphere no longer populate this property.
        
        If DRS is enabled, this returns the set of recommended
        migrations from the DRS module.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/ClusterDrsRecommendation'

  /ClusterComputeResource/{moId}/effectiveRole:
    get:
      tags: [ClusterComputeResource]
      summary: |2
        Access rights the current session has to this entity.
      operationId: ClusterComputeResource_getEffectiveRole
      description: |2
        Access rights the current session has to this entity.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  type: integer
                  format: int32

  /ClusterComputeResource/{moId}/environmentBrowser:
    get:
      tags: [ClusterComputeResource]
      summary: |2
        The environment browser object that identifies the environments that are supported
        on this compute resource.
      operationId: ClusterComputeResource_getEnvironmentBrowser
      description: |2
        The environment browser object that identifies the environments that are supported
        on this compute resource.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            Refers instance of *EnvironmentBrowser*.
          content:
            application/json:
              schema:
                nullable: true
                $ref: '#/components/schemas/ManagedObjectReference'

  /ClusterComputeResource/{moId}/hciConfig:
    get:
      tags: [ClusterComputeResource]
      summary: |2
        This is applicable to clusters which are configured using the HCI
        workflow and contains data related to the workflow and specification.
      operationId: ClusterComputeResource_getHciConfig
      description: |2
        This is applicable to clusters which are configured using the HCI
        workflow and contains data related to the workflow and specification.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                $ref: '#/components/schemas/ClusterComputeResourceHCIConfigInfo'

  /ClusterComputeResource/{moId}/host:
    get:
      tags: [ClusterComputeResource]
      summary: |2
        List of hosts that are part of this compute resource.
      operationId: ClusterComputeResource_getHost
      description: |2
        List of hosts that are part of this compute resource.
        
        If the compute resource is a
        standalone type, then this list contains just one element.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            Refers instances of *HostSystem*.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/ManagedObjectReference'

  /ClusterComputeResource/{moId}/lifecycleManaged:
    get:
      tags: [ClusterComputeResource]
      summary: |2
        Flag indicating whether or not the lifecycle of the compute resource is
        managed.
      operationId: ClusterComputeResource_getLifecycleManaged
      description: |2
        Flag indicating whether or not the lifecycle of the compute resource is
        managed.
        
        Once it is enabled, it cannot be disabled.
        This property can be set only at the time of creation or through the
        *ComputeResource.EnableLifecycleManagement* method.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: boolean

  /ClusterComputeResource/{moId}/migrationHistory:
    get:
      tags: [ClusterComputeResource]
      summary: |2
        The set of migration decisions that have recently been performed.
      operationId: ClusterComputeResource_getMigrationHistory
      description: |2
        The set of migration decisions that have recently been performed.
        
        This list is populated only when DRS is in automatic mode.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/ClusterDrsMigration'

  /ClusterComputeResource/{moId}/name:
    get:
      tags: [ClusterComputeResource]
      summary: |2
        Name of this entity, unique relative to its parent.
      operationId: ClusterComputeResource_getName
      description: |2
        Name of this entity, unique relative to its parent.
        
        Any / (slash), \\ (backslash), character used in this
        name element will be escaped. Similarly, any % (percent) character used in
        this name element will be escaped, unless it is used to start an escape
        sequence. A slash is escaped as %2F or %2f. A backslash is escaped as %5C or
        %5c, and a percent is escaped as %25.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                type: string

  /ClusterComputeResource/{moId}/network:
    get:
      tags: [ClusterComputeResource]
      summary: |2
        The subset of network objects available in the datacenter that is available in
        this ComputeResource.
      operationId: ClusterComputeResource_getNetwork
      description: |2
        The subset of network objects available in the datacenter that is available in
        this ComputeResource.
        
        This property is computed as the aggregate set of networks available from all the
        hosts that are part of this compute resource.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            Refers instances of *Network*.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/ManagedObjectReference'

  /ClusterComputeResource/{moId}/overallStatus:
    get:
      tags: [ClusterComputeResource]
      summary: |2
        General health of this managed entity.
      operationId: ClusterComputeResource_getOverallStatus
      description: |2
        General health of this managed entity.
        
        The overall status of the managed entity is computed as the worst status
        among its alarms and the configuration issues detected on the entity.
        The status is reported as one of the following values:
        - red: The entity has alarms or configuration issues with a red status.
        - yellow: The entity does not have alarms or configuration issues with a
          red status, and has at least one with a yellow status.
        - green: The entity does not have alarms or configuration issues with a
          red or yellow status, and has at least one with a green status.
        - gray: All of the entity's alarms have a gray status and the
          configuration status of the entity is not being monitored.
          
        In releases after vSphere API 5.0, vSphere Servers might not
        generate property collector update notifications for this property.
        To obtain the latest value of the property, you can use
        PropertyCollector methods RetrievePropertiesEx or WaitForUpdatesEx.
        If you use the PropertyCollector.WaitForUpdatesEx method, specify
        an empty string for the version parameter. Any other version value will not
        produce any property values as no updates are generated.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedEntityStatus_enum'

  /ClusterComputeResource/{moId}/parent:
    get:
      tags: [ClusterComputeResource]
      summary: |2
        Parent of this entity.
      operationId: ClusterComputeResource_getParent
      description: |2
        Parent of this entity.
        
        This value is null for the root object and for
        *VirtualMachine* objects that are part of
        a *VirtualApp*.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            Refers instance of *ManagedEntity*.
          content:
            application/json:
              schema:
                nullable: true
                $ref: '#/components/schemas/ManagedObjectReference'

  /ClusterComputeResource/{moId}/permission:
    get:
      tags: [ClusterComputeResource]
      summary: |2
        List of permissions defined for this entity.
      operationId: ClusterComputeResource_getPermission
      description: |2
        List of permissions defined for this entity.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/Permission'

  /ClusterComputeResource/{moId}/recentTask:
    get:
      tags: [ClusterComputeResource]
      summary: |2
        The set of recent tasks operating on this managed entity.
      operationId: ClusterComputeResource_getRecentTask
      description: |2
        The set of recent tasks operating on this managed entity.
        
        This is a subset
        of *TaskManager.recentTask* belong to this entity. A task in this
        list could be in one of the four states: pending, running, success or error.
        
        This property can be used to deduce intermediate power states for
        a virtual machine entity. For example, if the current powerState is "poweredOn"
        and there is a running task performing the "suspend" operation, then the virtual
        machine's intermediate state might be described as "suspending."
        
        Most tasks (such as power operations) obtain exclusive access to the virtual
        machine, so it is unusual for this list to contain more than one running task.
        One exception, however, is the task of cloning a virtual machine.
        In releases after vSphere API 5.0, vSphere Servers might not
        generate property collector update notifications for this property.
        To obtain the latest value of the property, you can use
        PropertyCollector methods RetrievePropertiesEx or WaitForUpdatesEx.
        If you use the PropertyCollector.WaitForUpdatesEx method, specify
        an empty string for the version parameter. Any other version value will not
        produce any property values as no updates are generated.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            Refers instances of *Task*.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/ManagedObjectReference'

  /ClusterComputeResource/{moId}/recommendation:
    get:
      tags: [ClusterComputeResource]
      summary: |2
        List of recommended actions for the cluster.
      operationId: ClusterComputeResource_getRecommendation
      description: |2
        List of recommended actions for the cluster.
        
        It is
        possible that the current set of recommendations may be empty,
        either due to not having any running dynamic recommendation
        generation module, or since there may be no recommended actions
        at this time.
        
        ***Required privileges:*** System.Read
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            An array of recommendations, with each of them having
            one or more actions.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/ClusterRecommendation'

  /ClusterComputeResource/{moId}/resourcePool:
    get:
      tags: [ClusterComputeResource]
      summary: |2
        Reference to root resource pool.
      operationId: ClusterComputeResource_getResourcePool
      description: |2
        Reference to root resource pool.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            Refers instance of *ResourcePool*.
          content:
            application/json:
              schema:
                nullable: true
                $ref: '#/components/schemas/ManagedObjectReference'

  /ClusterComputeResource/{moId}/summary:
    get:
      tags: [ClusterComputeResource]
      summary: |2
        Basic runtime information about a compute resource.
      operationId: ClusterComputeResource_getSummary
      description: |2
        Basic runtime information about a compute resource.
        
        This information is used on
        summary screens and in list views.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ComputeResourceSummary'

  /ClusterComputeResource/{moId}/summaryEx:
    get:
      tags: [ClusterComputeResource]
      summary: |2
        The cluster summary.
      operationId: ClusterComputeResource_getSummaryEx
      deprecated: true
      description: |2
        Deprecated do not use this property.
        The same information could be obtained via
        *ComputeResource.summary*.
        
        The cluster summary.
        
        ***Since:*** vSphere API Release 7.0.1.1
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClusterComputeResourceSummary'

  /ClusterComputeResource/{moId}/tag:
    get:
      tags: [ClusterComputeResource]
      summary: |2
        The set of tags associated with this managed entity.
      operationId: ClusterComputeResource_getTag
      description: |2
        The set of tags associated with this managed entity.
        
        Experimental. Subject to change.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/Tag'

  /ClusterComputeResource/{moId}/triggeredAlarmState:
    get:
      tags: [ClusterComputeResource]
      summary: |2
        A set of alarm states for alarms triggered by this entity
        or by its descendants.
      operationId: ClusterComputeResource_getTriggeredAlarmState
      description: |2
        A set of alarm states for alarms triggered by this entity
        or by its descendants.
        
        Triggered alarms are propagated up the inventory hierarchy
        so that a user can readily tell when a descendant has triggered an alarm.
        In releases after vSphere API 5.0, vSphere Servers might not
        generate property collector update notifications for this property.
        To obtain the latest value of the property, you can use
        PropertyCollector methods RetrievePropertiesEx or WaitForUpdatesEx.
        If you use the PropertyCollector.WaitForUpdatesEx method, specify
        an empty string for the version parameter. Any other version value will not
        produce any property values as no updates are generated.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/AlarmState'

  /ClusterComputeResource/{moId}/value:
    get:
      tags: [ClusterComputeResource]
      summary: |2
        List of custom field values.
      operationId: ClusterComputeResource_getValue
      description: |2
        List of custom field values.
        
        Each value uses a key to associate
        an instance of a *CustomFieldStringValue* with
        a custom field definition.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/CustomFieldValue'

  /ClusterEVCManager/{moId}/CheckAddHostEvc_Task:
    post:
      tags: [ClusterEVCManager]
      summary: |2
        Test the validity of adding a host into the managed cluster.
      operationId: ClusterEVCManager_CheckAddHostEvc_Task
      description: |2
        Test the validity of adding a host into the managed cluster.
        
        Note that
        this method only tests EVC admission control; host-add may fail for
        other reasons.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CheckAddHostEvcRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to
            monitor the operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***InvalidLogin***: if authentication with the host fails.
            
            ***HostConnectFault***: if an error occurred when attempting to connect
            to the host. Typically, a more specific subclass is thrown.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /ClusterEVCManager/{moId}/CheckConfigureEvcMode_Task:
    post:
      tags: [ClusterEVCManager]
      summary: |2
        Test the validity of configuring an EVC mode on the managed cluster.
      operationId: ClusterEVCManager_CheckConfigureEvcMode_Task
      description: |2
        Test the validity of configuring an EVC mode on the managed cluster.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CheckConfigureEvcModeRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to
            monitor the operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'

  /ClusterEVCManager/{moId}/ConfigureEvcMode_Task:
    post:
      tags: [ClusterEVCManager]
      summary: |2
        Set the EVC mode.
      operationId: ClusterEVCManager_ConfigureEvcMode_Task
      description: |2
        Set the EVC mode.
        
        If EVC is currently disabled, then this will enable
        EVC. The parameter must specify a key to one of the EVC modes listed in
        the *ClusterEVCManagerEVCState.supportedEVCMode* array
        property. If there are no modes listed there,
        then EVC may not currently be enabled; reference the other properties
        in *ClusterEVCManagerEVCState* to determine what conditions are blocking EVC.
        
        ***Required privileges:*** Host.Inventory.EditCluster
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ConfigureEvcModeRequestType'
      responses:
        '200':
          description: |2
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***EVCConfigFault***: if configuring EVC failed. Typically, a more
            specific subclass is thrown.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EVCConfigFault'

  /ClusterEVCManager/{moId}/DisableEvcMode_Task:
    post:
      tags: [ClusterEVCManager]
      summary: |2
        Disable EVC.
      operationId: ClusterEVCManager_DisableEvcMode_Task
      description: |2
        Disable EVC.
        
        EVC may be disabled at any time.
        
        ***Required privileges:*** Host.Inventory.EditCluster
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'

  /ClusterEVCManager/{moId}/setCustomValue:
    post:
      tags: [ClusterEVCManager]
      summary: |2
        Assigns a value to a custom field.
      operationId: ClusterEVCManager_setCustomValue
      description: |2
        Assigns a value to a custom field.
        
        The setCustomValue method requires
        whichever updatePrivilege is defined as one of the
        *CustomFieldDef.fieldInstancePrivileges*
        for the CustomFieldDef whose value is being changed.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/setCustomValueRequestType'
      responses:
        '204':
          description: |2
            No Content

  /ClusterEVCManager/{moId}/availableField:
    get:
      tags: [ClusterEVCManager]
      summary: |2
        List of custom field definitions that are valid for the object's type.
      operationId: ClusterEVCManager_getAvailableField
      description: |2
        List of custom field definitions that are valid for the object's type.
        
        The fields are sorted by *CustomFieldDef.name*.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/CustomFieldDef'

  /ClusterEVCManager/{moId}/evcState:
    get:
      tags: [ClusterEVCManager]
      summary: |2
        EVC-related state of the managed cluster.
      operationId: ClusterEVCManager_getEvcState
      description: |2
        EVC-related state of the managed cluster.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClusterEVCManagerEVCState'

  /ClusterEVCManager/{moId}/managedCluster:
    get:
      tags: [ClusterEVCManager]
      summary: |2
        Cluster associated with this manager object.
      operationId: ClusterEVCManager_getManagedCluster
      description: |2
        Cluster associated with this manager object.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            Refers instance of *ClusterComputeResource*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'

  /ClusterEVCManager/{moId}/value:
    get:
      tags: [ClusterEVCManager]
      summary: |2
        List of custom field values.
      operationId: ClusterEVCManager_getValue
      description: |2
        List of custom field values.
        
        Each value uses a key to associate
        an instance of a *CustomFieldStringValue* with
        a custom field definition.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/CustomFieldValue'

  /ClusterProfile/{moId}/AssociateProfile:
    post:
      tags: [ClusterProfile]
      summary: |2
        Associate a profile with a managed entity.
      operationId: ClusterProfile_AssociateProfile
      description: |2
        Associate a profile with a managed entity.
        
        You can check the compliance of
        entities associated with a profile by calling the
        *Profile.CheckProfileCompliance_Task* method.
        
        ***Required privileges:*** Profile.Edit
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AssociateProfileRequestType'
      responses:
        '204':
          description: |2
            No Content

  /ClusterProfile/{moId}/CheckProfileCompliance_Task:
    post:
      tags: [ClusterProfile]
      summary: |2
        Check compliance of an entity against a Profile.
      operationId: ClusterProfile_CheckProfileCompliance_Task
      description: |2
        Check compliance of an entity against a Profile.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CheckProfileComplianceRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor the
            operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'

  /ClusterProfile/{moId}/DestroyProfile:
    post:
      tags: [ClusterProfile]
      summary: |2
        Destroy the profile.
      operationId: ClusterProfile_DestroyProfile
      description: |2
        Destroy the profile.
        
        ***Required privileges:*** Profile.Delete
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '204':
          description: |2
            No Content

  /ClusterProfile/{moId}/DissociateProfile:
    post:
      tags: [ClusterProfile]
      summary: |2
        Remove the association between a profile and a managed entity.
      operationId: ClusterProfile_DissociateProfile
      description: |2
        Remove the association between a profile and a managed entity.
        
        ***Required privileges:*** Profile.Edit
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DissociateProfileRequestType'
      responses:
        '204':
          description: |2
            No Content

  /ClusterProfile/{moId}/ExportProfile:
    post:
      tags: [ClusterProfile]
      summary: |2
        Export the profile in a serialized form.
      operationId: ClusterProfile_ExportProfile
      description: |2
        Export the profile in a serialized form.
        
        To use the serialized string to create a profile,
        specify a *ProfileSerializedCreateSpec* when you call the
        *HostProfileManager*.*ProfileManager.CreateProfile*
        method.
        
        ***Required privileges:*** Profile.Export
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            Serialized form of the profile.
          content:
            application/json:
              schema:
                type: string

  /ClusterProfile/{moId}/RetrieveDescription:
    post:
      tags: [ClusterProfile]
      summary: |2
        Returns the localizable description for the profile.
      operationId: ClusterProfile_RetrieveDescription
      description: |2
        Returns the localizable description for the profile.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            Profile divided into sections containing element descriptions and messages.
          content:
            application/json:
              schema:
                nullable: true
                $ref: '#/components/schemas/ProfileDescription'

  /ClusterProfile/{moId}/UpdateClusterProfile:
    post:
      tags: [ClusterProfile]
      summary: |2
        Update the ClusterProfile with the specified config.
      operationId: ClusterProfile_UpdateClusterProfile
      description: |2
        Update the ClusterProfile with the specified config.
        
        ***Required privileges:*** Profile.Edit
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateClusterProfileRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***DuplicateName***: If the profile with the new name already exists.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DuplicateName'

  /ClusterProfile/{moId}/complianceStatus:
    get:
      tags: [ClusterProfile]
      summary: |2
        Overall compliance of entities associated with this profile.
      operationId: ClusterProfile_getComplianceStatus
      description: |2
        Overall compliance of entities associated with this profile.
        
        If one of the entities is out of compliance, the profile is <code>nonCompliant</code>.
        If all entities are in compliance, the profile is <code>compliant</code>.
        If the compliance status of one of the entities is not known, compliance status
        of the profile is <code>unknown</code>.
        See *ComplianceResultStatus_enum*.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                type: string

  /ClusterProfile/{moId}/config:
    get:
      tags: [ClusterProfile]
      summary: |2
        Configuration data for the profile.
      operationId: ClusterProfile_getConfig
      description: |2
        Configuration data for the profile.
        
        ***Required privileges:*** Profile.Edit
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProfileConfigInfo'

  /ClusterProfile/{moId}/createdTime:
    get:
      tags: [ClusterProfile]
      summary: |2
        Time at which the profile was created.
      operationId: ClusterProfile_getCreatedTime
      description: |2
        Time at which the profile was created.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                type: string
                format: date-time

  /ClusterProfile/{moId}/description:
    get:
      tags: [ClusterProfile]
      summary: |2
        Localizable description of the profile
      operationId: ClusterProfile_getDescription
      deprecated: true
      description: |2
        Deprecated as of vSphere API 5.0. use *Profile.RetrieveDescription* instead.
        
        Localizable description of the profile
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                $ref: '#/components/schemas/ProfileDescription'

  /ClusterProfile/{moId}/entity:
    get:
      tags: [ClusterProfile]
      summary: |2
        List of managed entities associated with the profile.
      operationId: ClusterProfile_getEntity
      description: |2
        List of managed entities associated with the profile.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            Refers instances of *ManagedEntity*.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/ManagedObjectReference'

  /ClusterProfile/{moId}/modifiedTime:
    get:
      tags: [ClusterProfile]
      summary: |2
        Time at which the profile was last modified.
      operationId: ClusterProfile_getModifiedTime
      description: |2
        Time at which the profile was last modified.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                type: string
                format: date-time

  /ClusterProfile/{moId}/name:
    get:
      tags: [ClusterProfile]
      summary: |2
        Name of the profile.
      operationId: ClusterProfile_getName
      description: |2
        Name of the profile.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                type: string

  /ClusterProfileManager/{moId}/CreateProfile:
    post:
      tags: [ClusterProfileManager]
      summary: |2
        Create a profile from the specified CreateSpec.
      operationId: ClusterProfileManager_CreateProfile
      description: |2
        Create a profile from the specified CreateSpec.
        
        ***Required privileges:*** Profile.Create
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateProfileRequestType'
      responses:
        '200':
          description: |2
            Profile created from the specified createSpec.
            
            Refers instance of *Profile*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***DuplicateName***: If a profile with the specified name already
            exists.
            
            ***InvalidProfileReferenceHost***: if the specified reference host is
            incompatible or no reference host has been specified.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DuplicateName'

  /ClusterProfileManager/{moId}/FindAssociatedProfile:
    post:
      tags: [ClusterProfileManager]
      summary: |2
        Get the profile(s) to which this entity is associated.
      operationId: ClusterProfileManager_FindAssociatedProfile
      description: |2
        Get the profile(s) to which this entity is associated.
        
        The list of profiles will only include profiles known to this
        profileManager.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/FindAssociatedProfileRequestType'
      responses:
        '200':
          description: |2
            Refers instances of *Profile*.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/ManagedObjectReference'

  /ClusterProfileManager/{moId}/QueryPolicyMetadata:
    post:
      tags: [ClusterProfileManager]
      summary: |2
        Get the Metadata information for the policyNames.
      operationId: ClusterProfileManager_QueryPolicyMetadata
      description: |2
        Get the Metadata information for the policyNames.
        
        PolicyNames are available with the defaultProfile obtained by invoking the
        method createDefaultProfile.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QueryPolicyMetadataRequestType'
      responses:
        '200':
          description: |2
            The metadata information for the policy.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/ProfilePolicyMetadata'

  /ClusterProfileManager/{moId}/profile:
    get:
      tags: [ClusterProfileManager]
      summary: |2
        A list of profiles known to this ProfileManager.
      operationId: ClusterProfileManager_getProfile
      description: |2
        A list of profiles known to this ProfileManager.
        
        ***Required privileges:*** Profile.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            Refers instances of *Profile*.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/ManagedObjectReference'

  /ComputeResource/{moId}/Destroy_Task:
    post:
      tags: [ComputeResource]
      summary: |2
        Destroys this object, deleting its contents and removing it from its parent
        folder (if any).
      operationId: ComputeResource_Destroy_Task
      description: |2
        Destroys this object, deleting its contents and removing it from its parent
        folder (if any).
        
        NOTE: The appropriate privilege must be held on the parent of the destroyed
        entity as well as the entity itself.
        This method can throw one of several exceptions. The exact set of exceptions
        depends on the kind of entity that is being removed. See comments for
        each entity for more information on destroy behavior.
        
        ***Required privileges:*** Host.Inventory.RemoveHostFromCluster
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor the
            operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            Failure
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /ComputeResource/{moId}/ReconfigureComputeResource_Task:
    post:
      tags: [ComputeResource]
      summary: |2
        Change the compute resource configuration.
      operationId: ComputeResource_ReconfigureComputeResource_Task
      description: |2
        Change the compute resource configuration.
        
        ***Required privileges:*** Host.Inventory.EditCluster
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ReconfigureComputeResourceRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor
            the operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'

  /ComputeResource/{moId}/Reload:
    post:
      tags: [ComputeResource]
      summary: |2
        Reload the entity state.
      operationId: ComputeResource_Reload
      description: |2
        Reload the entity state.
        
        Clients only need to call this method
        if they changed some external state that affects the service
        without using the Web service interface to perform the change.
        For example, hand-editing a virtual machine configuration file
        affects the configuration of the associated virtual machine but
        the service managing the virtual machine might not monitor the
        file for changes. In this case, after such an edit, a client
        would call "reload" on the associated virtual machine to ensure
        the service and its clients have current data for the
        virtual machine.
        
        ***Required privileges:*** System.Read
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '204':
          description: |2
            No Content

  /ComputeResource/{moId}/Rename_Task:
    post:
      tags: [ComputeResource]
      summary: |2
        Renames this managed entity.
      operationId: ComputeResource_Rename_Task
      description: |2
        Renames this managed entity.
        
        Any % (percent) character used in this name parameter
        must be escaped, unless it is used to start an escape
        sequence. Clients may also escape any other characters in
        this name parameter.
        
        See also *ManagedEntity.name*.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RenameRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor the
            operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***DuplicateName***: If another object in the same folder has the target name.
            
            ***InvalidName***: If the new name is not a valid entity name.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /ComputeResource/{moId}/setCustomValue:
    post:
      tags: [ComputeResource]
      summary: |2
        Assigns a value to a custom field.
      operationId: ComputeResource_setCustomValue
      description: |2
        Assigns a value to a custom field.
        
        The setCustomValue method requires
        whichever updatePrivilege is defined as one of the
        *CustomFieldDef.fieldInstancePrivileges*
        for the CustomFieldDef whose value is being changed.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/setCustomValueRequestType'
      responses:
        '204':
          description: |2
            No Content

  /ComputeResource/{moId}/alarmActionsEnabled:
    get:
      tags: [ComputeResource]
      summary: |2
        Whether alarm actions are enabled for this entity.
      operationId: ComputeResource_getAlarmActionsEnabled
      description: |2
        Whether alarm actions are enabled for this entity.
        
        True if enabled; false otherwise.
        
        ***Required privileges:*** System.Read
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: boolean

  /ComputeResource/{moId}/availableField:
    get:
      tags: [ComputeResource]
      summary: |2
        List of custom field definitions that are valid for the object's type.
      operationId: ComputeResource_getAvailableField
      description: |2
        List of custom field definitions that are valid for the object's type.
        
        The fields are sorted by *CustomFieldDef.name*.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/CustomFieldDef'

  /ComputeResource/{moId}/configIssue:
    get:
      tags: [ComputeResource]
      summary: |2
        Current configuration issues that have been detected for this entity.
      operationId: ComputeResource_getConfigIssue
      description: |2
        Current configuration issues that have been detected for this entity.
        
        Typically,
        these issues have already been logged as events. The entity stores these
        events as long as they are still current. The
        *configStatus* property provides an overall status
        based on these events.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/Event'

  /ComputeResource/{moId}/configManagerEnabled:
    get:
      tags: [ComputeResource]
      summary: |2
        Flag indicating whether or not desired configuration
        management platform is enabled on the compute resource.
      operationId: ComputeResource_getConfigManagerEnabled
      description: |2
        Flag indicating whether or not desired configuration
        management platform is enabled on the compute resource.
        
        This property can be set only at the time of creation or through the
        *ComputeResource.EnableConfigurationManagement* method.
        
        ***Since:*** vSphere API Release 8.0.0.0
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: boolean

  /ComputeResource/{moId}/configStatus:
    get:
      tags: [ComputeResource]
      summary: |2
        The configStatus indicates whether or not the system has detected a configuration
        issue involving this entity.
      operationId: ComputeResource_getConfigStatus
      description: |2
        The configStatus indicates whether or not the system has detected a configuration
        issue involving this entity.
        
        For example, it might have detected a
        duplicate IP address or MAC address, or a host in a cluster
        might be out of compliance. The meanings of the configStatus values are:
        - red: A problem has been detected involving the entity.
        - yellow: A problem is about to occur or a transient condition
          has occurred (For example, reconfigure fail-over policy).
        - green: No configuration issues have been detected.
        - gray: The configuration status of the entity is not being monitored.
          
        A green status indicates only that a problem has not been detected;
        it is not a guarantee that the entity is problem-free.
        
        The *configIssue* property contains a list of the
        problems that have been detected.
        In releases after vSphere API 5.0, vSphere Servers might not
        generate property collector update notifications for this property.
        To obtain the latest value of the property, you can use
        PropertyCollector methods RetrievePropertiesEx or WaitForUpdatesEx.
        If you use the PropertyCollector.WaitForUpdatesEx method, specify
        an empty string for the version parameter. Any other version value will not
        produce any property values as no updates are generated.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedEntityStatus_enum'

  /ComputeResource/{moId}/configurationEx:
    get:
      tags: [ComputeResource]
      summary: |2
        Configuration of the compute resource; applies to both standalone hosts
        and clusters.
      operationId: ComputeResource_getConfigurationEx
      description: |2
        Configuration of the compute resource; applies to both standalone hosts
        and clusters.
        
        For a cluster this property will return a
        *ClusterConfigInfoEx* object.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ComputeResourceConfigInfo'

  /ComputeResource/{moId}/customValue:
    get:
      tags: [ComputeResource]
      summary: |2
        Custom field values.
      operationId: ComputeResource_getCustomValue
      description: |2
        Custom field values.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/CustomFieldValue'

  /ComputeResource/{moId}/datastore:
    get:
      tags: [ComputeResource]
      summary: |2
        The datastore property is the subset of datastore objects in the datacenter
        available in this ComputeResource.
      operationId: ComputeResource_getDatastore
      description: |2
        The datastore property is the subset of datastore objects in the datacenter
        available in this ComputeResource.
        
        This property is computed as the aggregate set of datastores available from all
        the hosts that are part of this compute resource.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            Refers instances of *Datastore*.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/ManagedObjectReference'

  /ComputeResource/{moId}/declaredAlarmState:
    get:
      tags: [ComputeResource]
      summary: |2
        A set of alarm states for alarms that apply to this managed entity.
      operationId: ComputeResource_getDeclaredAlarmState
      description: |2
        A set of alarm states for alarms that apply to this managed entity.
        
        The set includes alarms defined on this entity
        and alarms inherited from the parent entity,
        or from any ancestors in the inventory hierarchy.
        
        Alarms are inherited if they can be triggered by this entity or its descendants.
        This set does not include alarms that are defined on descendants of this entity.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/AlarmState'

  /ComputeResource/{moId}/disabledMethod:
    get:
      tags: [ComputeResource]
      summary: |2
        List of operations that are disabled, given the current runtime
        state of the entity.
      operationId: ComputeResource_getDisabledMethod
      description: |2
        List of operations that are disabled, given the current runtime
        state of the entity.
        
        For example, a power-on operation always fails if a
        virtual machine is already powered on. This list can be used by clients to
        enable or disable operations in a graphical user interface.
        
        Note: This list is determined by the current runtime state of an entity,
        not by its permissions.
        
        This list may include the following operations for a HostSystem:
        - *HostSystem.EnterMaintenanceMode_Task*
        - *HostSystem.ExitMaintenanceMode_Task*
        - *HostSystem.RebootHost_Task*
        - *HostSystem.ShutdownHost_Task*
        - *HostSystem.ReconnectHost_Task*
        - *HostSystem.DisconnectHost_Task*
          
        This list may include the following operations for a VirtualMachine:
        - *VirtualMachine.AnswerVM*
        - *ManagedEntity.Rename_Task*
        - *VirtualMachine.CloneVM_Task*
        - *VirtualMachine.PowerOffVM_Task*
        - *VirtualMachine.PowerOnVM_Task*
        - *VirtualMachine.SuspendVM_Task*
        - *VirtualMachine.ResetVM_Task*
        - *VirtualMachine.ReconfigVM_Task*
        - *VirtualMachine.RelocateVM_Task*
        - *VirtualMachine.MigrateVM_Task*
        - *VirtualMachine.CustomizeVM_Task*
        - *VirtualMachine.ShutdownGuest*
        - *VirtualMachine.StandbyGuest*
        - *VirtualMachine.RebootGuest*
        - *VirtualMachine.CreateSnapshot_Task*
        - *VirtualMachine.RemoveAllSnapshots_Task*
        - *VirtualMachine.RevertToCurrentSnapshot_Task*
        - *VirtualMachine.MarkAsTemplate*
        - *VirtualMachine.MarkAsVirtualMachine*
        - *VirtualMachine.ResetGuestInformation*
        - *VirtualMachine.MountToolsInstaller*
        - *VirtualMachine.UnmountToolsInstaller*
        - *ManagedEntity.Destroy_Task*
        - *VirtualMachine.UpgradeVM_Task*
        - *VirtualMachine.ExportVm*
          
        This list may include the following operations for a ResourcePool:
        - *ResourcePool.ImportVApp*
        - *ResourcePool.CreateChildVM_Task*
        - *ResourcePool.UpdateConfig*
        - *Folder.CreateVM_Task*
        - *ManagedEntity.Destroy_Task*
        - *ManagedEntity.Rename_Task*
          
        This list may include the following operations for a VirtualApp:
        - *ManagedEntity.Destroy_Task*
        - *VirtualApp.CloneVApp_Task*
        - *VirtualApp.unregisterVApp_Task*
        - *VirtualApp.ExportVApp*
        - *VirtualApp.PowerOnVApp_Task*
        - *VirtualApp.PowerOffVApp_Task*
        - *VirtualApp.UpdateVAppConfig*
          
        In releases after vSphere API 5.0, vSphere Servers might not
        generate property collector update notifications for this property.
        To obtain the latest value of the property, you can use
        PropertyCollector methods RetrievePropertiesEx or WaitForUpdatesEx.
        If you use the PropertyCollector.WaitForUpdatesEx method, specify
        an empty string for the version parameter. Any other version value will not
        produce any property values as no updates are generated.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  type: string

  /ComputeResource/{moId}/effectiveRole:
    get:
      tags: [ComputeResource]
      summary: |2
        Access rights the current session has to this entity.
      operationId: ComputeResource_getEffectiveRole
      description: |2
        Access rights the current session has to this entity.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  type: integer
                  format: int32

  /ComputeResource/{moId}/environmentBrowser:
    get:
      tags: [ComputeResource]
      summary: |2
        The environment browser object that identifies the environments that are supported
        on this compute resource.
      operationId: ComputeResource_getEnvironmentBrowser
      description: |2
        The environment browser object that identifies the environments that are supported
        on this compute resource.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            Refers instance of *EnvironmentBrowser*.
          content:
            application/json:
              schema:
                nullable: true
                $ref: '#/components/schemas/ManagedObjectReference'

  /ComputeResource/{moId}/host:
    get:
      tags: [ComputeResource]
      summary: |2
        List of hosts that are part of this compute resource.
      operationId: ComputeResource_getHost
      description: |2
        List of hosts that are part of this compute resource.
        
        If the compute resource is a
        standalone type, then this list contains just one element.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            Refers instances of *HostSystem*.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/ManagedObjectReference'

  /ComputeResource/{moId}/lifecycleManaged:
    get:
      tags: [ComputeResource]
      summary: |2
        Flag indicating whether or not the lifecycle of the compute resource is
        managed.
      operationId: ComputeResource_getLifecycleManaged
      description: |2
        Flag indicating whether or not the lifecycle of the compute resource is
        managed.
        
        Once it is enabled, it cannot be disabled.
        This property can be set only at the time of creation or through the
        *ComputeResource.EnableLifecycleManagement* method.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: boolean

  /ComputeResource/{moId}/name:
    get:
      tags: [ComputeResource]
      summary: |2
        Name of this entity, unique relative to its parent.
      operationId: ComputeResource_getName
      description: |2
        Name of this entity, unique relative to its parent.
        
        Any / (slash), \\ (backslash), character used in this
        name element will be escaped. Similarly, any % (percent) character used in
        this name element will be escaped, unless it is used to start an escape
        sequence. A slash is escaped as %2F or %2f. A backslash is escaped as %5C or
        %5c, and a percent is escaped as %25.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                type: string

  /ComputeResource/{moId}/network:
    get:
      tags: [ComputeResource]
      summary: |2
        The subset of network objects available in the datacenter that is available in
        this ComputeResource.
      operationId: ComputeResource_getNetwork
      description: |2
        The subset of network objects available in the datacenter that is available in
        this ComputeResource.
        
        This property is computed as the aggregate set of networks available from all the
        hosts that are part of this compute resource.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            Refers instances of *Network*.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/ManagedObjectReference'

  /ComputeResource/{moId}/overallStatus:
    get:
      tags: [ComputeResource]
      summary: |2
        General health of this managed entity.
      operationId: ComputeResource_getOverallStatus
      description: |2
        General health of this managed entity.
        
        The overall status of the managed entity is computed as the worst status
        among its alarms and the configuration issues detected on the entity.
        The status is reported as one of the following values:
        - red: The entity has alarms or configuration issues with a red status.
        - yellow: The entity does not have alarms or configuration issues with a
          red status, and has at least one with a yellow status.
        - green: The entity does not have alarms or configuration issues with a
          red or yellow status, and has at least one with a green status.
        - gray: All of the entity's alarms have a gray status and the
          configuration status of the entity is not being monitored.
          
        In releases after vSphere API 5.0, vSphere Servers might not
        generate property collector update notifications for this property.
        To obtain the latest value of the property, you can use
        PropertyCollector methods RetrievePropertiesEx or WaitForUpdatesEx.
        If you use the PropertyCollector.WaitForUpdatesEx method, specify
        an empty string for the version parameter. Any other version value will not
        produce any property values as no updates are generated.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedEntityStatus_enum'

  /ComputeResource/{moId}/parent:
    get:
      tags: [ComputeResource]
      summary: |2
        Parent of this entity.
      operationId: ComputeResource_getParent
      description: |2
        Parent of this entity.
        
        This value is null for the root object and for
        *VirtualMachine* objects that are part of
        a *VirtualApp*.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            Refers instance of *ManagedEntity*.
          content:
            application/json:
              schema:
                nullable: true
                $ref: '#/components/schemas/ManagedObjectReference'

  /ComputeResource/{moId}/permission:
    get:
      tags: [ComputeResource]
      summary: |2
        List of permissions defined for this entity.
      operationId: ComputeResource_getPermission
      description: |2
        List of permissions defined for this entity.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/Permission'

  /ComputeResource/{moId}/recentTask:
    get:
      tags: [ComputeResource]
      summary: |2
        The set of recent tasks operating on this managed entity.
      operationId: ComputeResource_getRecentTask
      description: |2
        The set of recent tasks operating on this managed entity.
        
        This is a subset
        of *TaskManager.recentTask* belong to this entity. A task in this
        list could be in one of the four states: pending, running, success or error.
        
        This property can be used to deduce intermediate power states for
        a virtual machine entity. For example, if the current powerState is "poweredOn"
        and there is a running task performing the "suspend" operation, then the virtual
        machine's intermediate state might be described as "suspending."
        
        Most tasks (such as power operations) obtain exclusive access to the virtual
        machine, so it is unusual for this list to contain more than one running task.
        One exception, however, is the task of cloning a virtual machine.
        In releases after vSphere API 5.0, vSphere Servers might not
        generate property collector update notifications for this property.
        To obtain the latest value of the property, you can use
        PropertyCollector methods RetrievePropertiesEx or WaitForUpdatesEx.
        If you use the PropertyCollector.WaitForUpdatesEx method, specify
        an empty string for the version parameter. Any other version value will not
        produce any property values as no updates are generated.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            Refers instances of *Task*.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/ManagedObjectReference'

  /ComputeResource/{moId}/resourcePool:
    get:
      tags: [ComputeResource]
      summary: |2
        Reference to root resource pool.
      operationId: ComputeResource_getResourcePool
      description: |2
        Reference to root resource pool.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            Refers instance of *ResourcePool*.
          content:
            application/json:
              schema:
                nullable: true
                $ref: '#/components/schemas/ManagedObjectReference'

  /ComputeResource/{moId}/summary:
    get:
      tags: [ComputeResource]
      summary: |2
        Basic runtime information about a compute resource.
      operationId: ComputeResource_getSummary
      description: |2
        Basic runtime information about a compute resource.
        
        This information is used on
        summary screens and in list views.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ComputeResourceSummary'

  /ComputeResource/{moId}/tag:
    get:
      tags: [ComputeResource]
      summary: |2
        The set of tags associated with this managed entity.
      operationId: ComputeResource_getTag
      description: |2
        The set of tags associated with this managed entity.
        
        Experimental. Subject to change.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/Tag'

  /ComputeResource/{moId}/triggeredAlarmState:
    get:
      tags: [ComputeResource]
      summary: |2
        A set of alarm states for alarms triggered by this entity
        or by its descendants.
      operationId: ComputeResource_getTriggeredAlarmState
      description: |2
        A set of alarm states for alarms triggered by this entity
        or by its descendants.
        
        Triggered alarms are propagated up the inventory hierarchy
        so that a user can readily tell when a descendant has triggered an alarm.
        In releases after vSphere API 5.0, vSphere Servers might not
        generate property collector update notifications for this property.
        To obtain the latest value of the property, you can use
        PropertyCollector methods RetrievePropertiesEx or WaitForUpdatesEx.
        If you use the PropertyCollector.WaitForUpdatesEx method, specify
        an empty string for the version parameter. Any other version value will not
        produce any property values as no updates are generated.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/AlarmState'

  /ComputeResource/{moId}/value:
    get:
      tags: [ComputeResource]
      summary: |2
        List of custom field values.
      operationId: ComputeResource_getValue
      description: |2
        List of custom field values.
        
        Each value uses a key to associate
        an instance of a *CustomFieldStringValue* with
        a custom field definition.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/CustomFieldValue'

  /ContainerView/{moId}/DestroyView:
    post:
      tags: [ContainerView]
      summary: |2
        Destroy this view.
      operationId: ContainerView_DestroyView
      description: |2
        Destroy this view.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '204':
          description: |2
            No Content

  /ContainerView/{moId}/container:
    get:
      tags: [ContainerView]
      summary: |2
        The Folder, Datacenter, ComputeResource, ResourcePool, or HostSystem instance
        that provides the objects that the view presents.
      operationId: ContainerView_getContainer
      description: |2
        The Folder, Datacenter, ComputeResource, ResourcePool, or HostSystem instance
        that provides the objects that the view presents.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            Refers instance of *ManagedEntity*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'

  /ContainerView/{moId}/recursive:
    get:
      tags: [ContainerView]
      summary: |2
        Whether to include only the immediate children of the container instance,
        or to include additional objects by following the paths beyond the
        immediate children.
      operationId: ContainerView_getRecursive
      description: |2
        Whether to include only the immediate children of the container instance,
        or to include additional objects by following the paths beyond the
        immediate children.
        
        For information about recursive behavior, see the description of
        *ViewManager.CreateContainerView*.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                type: boolean

  /ContainerView/{moId}/type:
    get:
      tags: [ContainerView]
      summary: |2
        An optional list of types to be applied to the set of objects in the view.
      operationId: ContainerView_getType
      description: |2
        An optional list of types to be applied to the set of objects in the view.
        
        The list of types indicates objects that are included in the view.
        If empty, all types are included.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  type: string

  /ContainerView/{moId}/view:
    get:
      tags: [ContainerView]
      summary: |2
        The list of references to objects mapped by this view.
      operationId: ContainerView_getView
      description: |2
        The list of references to objects mapped by this view.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/ManagedObjectReference'

  /CryptoManager/{moId}/AddKey:
    post:
      tags: [CryptoManager]
      summary: |2
        Add an existing key.
      operationId: CryptoManager_AddKey
      description: |2
        Add an existing key.
        
        ***Required privileges:*** Cryptographer.ManageKeys
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AddKeyRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***AlreadyExists***: in case the key is already in the key cache
            
            ***InvalidState***: in case the host is not Crypto Safe
            
            ***InvalidArgument***: in case the keyID is duplicated or key properties
            are incorrect.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /CryptoManager/{moId}/AddKeys:
    post:
      tags: [CryptoManager]
      summary: |2
        Add multiple existing keys.
      operationId: CryptoManager_AddKeys
      description: |2
        Add multiple existing keys.
        
        ***Required privileges:*** Cryptographer.ManageKeys
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AddKeysRequestType'
      responses:
        '200':
          description: |2
            the result for each key operation.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/CryptoKeyResult'
        '500':
          description: |2
            ***InvalidState***: in case the host is not Crypto Safe
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InvalidState'

  /CryptoManager/{moId}/ListKeys:
    post:
      tags: [CryptoManager]
      summary: |2
        List keys.
      operationId: CryptoManager_ListKeys
      description: |2
        List keys.
        
        \* When executed against the host, lists all the keys
        added to the host's key cache by *CryptoManager.AddKey*/*CryptoManager.AddKeys*.
        \* When executed against the VC, lists all the keys used by
        the correctly registered VMs, and the host key.
        
        ***Required privileges:*** Cryptographer.ManageKeys
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ListKeysRequestType'
      responses:
        '200':
          description: |2
            List of known keys.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/CryptoKeyId'

  /CryptoManager/{moId}/RemoveKey:
    post:
      tags: [CryptoManager]
      summary: |2
        Remove a key (only the UUID is needed to remove).
      operationId: CryptoManager_RemoveKey
      description: |2
        Remove a key (only the UUID is needed to remove).
        
        If "force" is set, removal will happen even if the key is in use.
        
        ***Required privileges:*** Cryptographer.ManageKeys
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RemoveKeyRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***InvalidArgument***: in case the keyID is not found
            and "force" is false.
            
            ***ResourceInUse***: if the key is used to encrypt any object
            and "force" is false.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResourceInUse'

  /CryptoManager/{moId}/RemoveKeys:
    post:
      tags: [CryptoManager]
      summary: |2
        Remove multiple keys (only the UUID is needed to remove).
      operationId: CryptoManager_RemoveKeys
      description: |2
        Remove multiple keys (only the UUID is needed to remove).
        
        If "force" is set, removal will happen even if they are in use.
        
        ***Required privileges:*** Cryptographer.ManageKeys
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RemoveKeysRequestType'
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/CryptoKeyResult'

  /CryptoManager/{moId}/enabled:
    get:
      tags: [CryptoManager]
      summary: |2
        Indicate if the encryption feature is enabled.
      operationId: CryptoManager_getEnabled
      description: |2
        Indicate if the encryption feature is enabled.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                type: boolean

  /CryptoManagerHost/{moId}/AddKey:
    post:
      tags: [CryptoManagerHost]
      summary: |2
        Add an existing key.
      operationId: CryptoManagerHost_AddKey
      description: |2
        Add an existing key.
        
        ***Required privileges:*** Cryptographer.ManageKeys
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AddKeyRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***AlreadyExists***: in case the key is already in the key cache
            
            ***InvalidState***: in case the host is not Crypto Safe
            
            ***InvalidArgument***: in case the keyID is duplicated or key properties
            are incorrect.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /CryptoManagerHost/{moId}/AddKeys:
    post:
      tags: [CryptoManagerHost]
      summary: |2
        Add multiple existing keys.
      operationId: CryptoManagerHost_AddKeys
      description: |2
        Add multiple existing keys.
        
        ***Required privileges:*** Cryptographer.ManageKeys
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AddKeysRequestType'
      responses:
        '200':
          description: |2
            the result for each key operation.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/CryptoKeyResult'
        '500':
          description: |2
            ***InvalidState***: in case the host is not Crypto Safe
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InvalidState'

  /CryptoManagerHost/{moId}/ChangeKey_Task:
    post:
      tags: [CryptoManagerHost]
      summary: |2
        Change the key used for core dump encryption
        Note: *CryptoManagerHost.CryptoManagerHostEnable* must be called first
        If successful, a "best effort" will be made to "in place" shallow recrypt
        any core dumps found in /var/core to use the new key.
      operationId: CryptoManagerHost_ChangeKey_Task
      description: |2
        Change the key used for core dump encryption
        Note: *CryptoManagerHost.CryptoManagerHostEnable* must be called first
        If successful, a "best effort" will be made to "in place" shallow recrypt
        any core dumps found in /var/core to use the new key.
        
        ***Required privileges:*** Cryptographer.RegisterHost
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ChangeKeyRequestType'
      responses:
        '200':
          description: |2
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***InvalidState***: if the host is not in
            *safe* state
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InvalidState'

  /CryptoManagerHost/{moId}/CryptoManagerHostDisable:
    post:
      tags: [CryptoManagerHost]
      summary: |2
        Disable encryption on host, if host was in crypto safe mode, put it in
        pendingIncapable state and host will be crypto incapable after a reboot
        Note: A reboot is expected from user after successfully invoking this API
        Note: Do not call this API if the host is in vSAN encrypted cluster
      operationId: CryptoManagerHost_CryptoManagerHostDisable
      description: |2
        Disable encryption on host, if host was in crypto safe mode, put it in
        pendingIncapable state and host will be crypto incapable after a reboot
        Note: A reboot is expected from user after successfully invoking this API
        Note: Do not call this API if the host is in vSAN encrypted cluster
        
        ***Required privileges:*** Cryptographer.RegisterHost
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***InvalidState***: if the host is already crypto disabled.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InvalidState'

  /CryptoManagerHost/{moId}/CryptoManagerHostEnable:
    post:
      tags: [CryptoManagerHost]
      summary: |2
        Begin core dump encryption by specifying the encryption key and put
        the host in *safe* state
        Note: *CryptoManagerHost.CryptoManagerHostPrepare* must be called first
      operationId: CryptoManagerHost_CryptoManagerHostEnable
      description: |2
        Begin core dump encryption by specifying the encryption key and put
        the host in *safe* state
        Note: *CryptoManagerHost.CryptoManagerHostPrepare* must be called first
        
        ***Required privileges:*** Cryptographer.RegisterHost
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CryptoManagerHostEnableRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***InvalidState***: if the host is in
            *incapable* state
            
            ***AlreadyExists***: if the host is in
            *safe* state and initialKey differs
            from the existing core dump
            encryption key
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /CryptoManagerHost/{moId}/GetCryptoKeyStatus:
    post:
      tags: [CryptoManagerHost]
      summary: |2
        Get the key status on the host.
      operationId: CryptoManagerHost_GetCryptoKeyStatus
      description: |2
        Get the key status on the host.
        
        ***Since:*** vSphere API Release 8.0.1.0
        
        ***Required privileges:*** Cryptographer.ManageKeys
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GetCryptoKeyStatusRequestType'
      responses:
        '200':
          description: |2
            the key status.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/CryptoManagerHostKeyStatus'

  /CryptoManagerHost/{moId}/ListKeys:
    post:
      tags: [CryptoManagerHost]
      summary: |2
        List keys.
      operationId: CryptoManagerHost_ListKeys
      description: |2
        List keys.
        
        \* When executed against the host, lists all the keys
        added to the host's key cache by *CryptoManager.AddKey*/*CryptoManager.AddKeys*.
        \* When executed against the VC, lists all the keys used by
        the correctly registered VMs, and the host key.
        
        ***Required privileges:*** Cryptographer.ManageKeys
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ListKeysRequestType'
      responses:
        '200':
          description: |2
            List of known keys.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/CryptoKeyId'

  /CryptoManagerHost/{moId}/CryptoManagerHostPrepare:
    post:
      tags: [CryptoManagerHost]
      summary: |2
        Prime the host to receive sensitive information and put the host
        in *prepared* state
      operationId: CryptoManagerHost_CryptoManagerHostPrepare
      description: |2
        Prime the host to receive sensitive information and put the host
        in *prepared* state
        
        ***Required privileges:*** Cryptographer.RegisterHost
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***InvalidState***: if the host is not in
            *incapable* state
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InvalidState'

  /CryptoManagerHost/{moId}/RemoveKey:
    post:
      tags: [CryptoManagerHost]
      summary: |2
        Remove a key (only the UUID is needed to remove).
      operationId: CryptoManagerHost_RemoveKey
      description: |2
        Remove a key (only the UUID is needed to remove).
        
        If "force" is set, removal will happen even if the key is in use.
        
        ***Required privileges:*** Cryptographer.ManageKeys
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RemoveKeyRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***InvalidArgument***: in case the keyID is not found
            and "force" is false.
            
            ***ResourceInUse***: if the key is used to encrypt any object
            and "force" is false.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResourceInUse'

  /CryptoManagerHost/{moId}/RemoveKeys:
    post:
      tags: [CryptoManagerHost]
      summary: |2
        Remove multiple keys (only the UUID is needed to remove).
      operationId: CryptoManagerHost_RemoveKeys
      description: |2
        Remove multiple keys (only the UUID is needed to remove).
        
        If "force" is set, removal will happen even if they are in use.
        
        ***Required privileges:*** Cryptographer.ManageKeys
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RemoveKeysRequestType'
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/CryptoKeyResult'

  /CryptoManagerHost/{moId}/enabled:
    get:
      tags: [CryptoManagerHost]
      summary: |2
        Indicate if the encryption feature is enabled.
      operationId: CryptoManagerHost_getEnabled
      description: |2
        Indicate if the encryption feature is enabled.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                type: boolean

  /CryptoManagerHostKMS/{moId}/AddKey:
    post:
      tags: [CryptoManagerHostKMS]
      summary: |2
        Add an existing key.
      operationId: CryptoManagerHostKMS_AddKey
      description: |2
        Add an existing key.
        
        ***Required privileges:*** Cryptographer.ManageKeys
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AddKeyRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***AlreadyExists***: in case the key is already in the key cache
            
            ***InvalidState***: in case the host is not Crypto Safe
            
            ***InvalidArgument***: in case the keyID is duplicated or key properties
            are incorrect.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /CryptoManagerHostKMS/{moId}/AddKeys:
    post:
      tags: [CryptoManagerHostKMS]
      summary: |2
        Add multiple existing keys.
      operationId: CryptoManagerHostKMS_AddKeys
      description: |2
        Add multiple existing keys.
        
        ***Required privileges:*** Cryptographer.ManageKeys
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AddKeysRequestType'
      responses:
        '200':
          description: |2
            the result for each key operation.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/CryptoKeyResult'
        '500':
          description: |2
            ***InvalidState***: in case the host is not Crypto Safe
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InvalidState'

  /CryptoManagerHostKMS/{moId}/ChangeKey_Task:
    post:
      tags: [CryptoManagerHostKMS]
      summary: |2
        Change the key used for core dump encryption
        Note: *CryptoManagerHost.CryptoManagerHostEnable* must be called first
        If successful, a "best effort" will be made to "in place" shallow recrypt
        any core dumps found in /var/core to use the new key.
      operationId: CryptoManagerHostKMS_ChangeKey_Task
      description: |2
        Change the key used for core dump encryption
        Note: *CryptoManagerHost.CryptoManagerHostEnable* must be called first
        If successful, a "best effort" will be made to "in place" shallow recrypt
        any core dumps found in /var/core to use the new key.
        
        ***Required privileges:*** Cryptographer.RegisterHost
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ChangeKeyRequestType'
      responses:
        '200':
          description: |2
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***InvalidState***: if the host is not in
            *safe* state
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InvalidState'

  /CryptoManagerHostKMS/{moId}/CryptoManagerHostDisable:
    post:
      tags: [CryptoManagerHostKMS]
      summary: |2
        Disable encryption on host, if host was in crypto safe mode, put it in
        pendingIncapable state and host will be crypto incapable after a reboot
        Note: A reboot is expected from user after successfully invoking this API
        Note: Do not call this API if the host is in vSAN encrypted cluster
      operationId: CryptoManagerHostKMS_CryptoManagerHostDisable
      description: |2
        Disable encryption on host, if host was in crypto safe mode, put it in
        pendingIncapable state and host will be crypto incapable after a reboot
        Note: A reboot is expected from user after successfully invoking this API
        Note: Do not call this API if the host is in vSAN encrypted cluster
        
        ***Required privileges:*** Cryptographer.RegisterHost
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***InvalidState***: if the host is already crypto disabled.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InvalidState'

  /CryptoManagerHostKMS/{moId}/CryptoManagerHostEnable:
    post:
      tags: [CryptoManagerHostKMS]
      summary: |2
        Begin core dump encryption by specifying the encryption key and put
        the host in *safe* state
        Note: *CryptoManagerHost.CryptoManagerHostPrepare* must be called first
      operationId: CryptoManagerHostKMS_CryptoManagerHostEnable
      description: |2
        Begin core dump encryption by specifying the encryption key and put
        the host in *safe* state
        Note: *CryptoManagerHost.CryptoManagerHostPrepare* must be called first
        
        ***Required privileges:*** Cryptographer.RegisterHost
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CryptoManagerHostEnableRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***InvalidState***: if the host is in
            *incapable* state
            
            ***AlreadyExists***: if the host is in
            *safe* state and initialKey differs
            from the existing core dump
            encryption key
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /CryptoManagerHostKMS/{moId}/GetCryptoKeyStatus:
    post:
      tags: [CryptoManagerHostKMS]
      summary: |2
        Get the key status on the host.
      operationId: CryptoManagerHostKMS_GetCryptoKeyStatus
      description: |2
        Get the key status on the host.
        
        ***Since:*** vSphere API Release 8.0.1.0
        
        ***Required privileges:*** Cryptographer.ManageKeys
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GetCryptoKeyStatusRequestType'
      responses:
        '200':
          description: |2
            the key status.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/CryptoManagerHostKeyStatus'

  /CryptoManagerHostKMS/{moId}/ListKeys:
    post:
      tags: [CryptoManagerHostKMS]
      summary: |2
        List keys.
      operationId: CryptoManagerHostKMS_ListKeys
      description: |2
        List keys.
        
        \* When executed against the host, lists all the keys
        added to the host's key cache by *CryptoManager.AddKey*/*CryptoManager.AddKeys*.
        \* When executed against the VC, lists all the keys used by
        the correctly registered VMs, and the host key.
        
        ***Required privileges:*** Cryptographer.ManageKeys
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ListKeysRequestType'
      responses:
        '200':
          description: |2
            List of known keys.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/CryptoKeyId'

  /CryptoManagerHostKMS/{moId}/CryptoManagerHostPrepare:
    post:
      tags: [CryptoManagerHostKMS]
      summary: |2
        Prime the host to receive sensitive information and put the host
        in *prepared* state
      operationId: CryptoManagerHostKMS_CryptoManagerHostPrepare
      description: |2
        Prime the host to receive sensitive information and put the host
        in *prepared* state
        
        ***Required privileges:*** Cryptographer.RegisterHost
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***InvalidState***: if the host is not in
            *incapable* state
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InvalidState'

  /CryptoManagerHostKMS/{moId}/RemoveKey:
    post:
      tags: [CryptoManagerHostKMS]
      summary: |2
        Remove a key (only the UUID is needed to remove).
      operationId: CryptoManagerHostKMS_RemoveKey
      description: |2
        Remove a key (only the UUID is needed to remove).
        
        If "force" is set, removal will happen even if the key is in use.
        
        ***Required privileges:*** Cryptographer.ManageKeys
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RemoveKeyRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***InvalidArgument***: in case the keyID is not found
            and "force" is false.
            
            ***ResourceInUse***: if the key is used to encrypt any object
            and "force" is false.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResourceInUse'

  /CryptoManagerHostKMS/{moId}/RemoveKeys:
    post:
      tags: [CryptoManagerHostKMS]
      summary: |2
        Remove multiple keys (only the UUID is needed to remove).
      operationId: CryptoManagerHostKMS_RemoveKeys
      description: |2
        Remove multiple keys (only the UUID is needed to remove).
        
        If "force" is set, removal will happen even if they are in use.
        
        ***Required privileges:*** Cryptographer.ManageKeys
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RemoveKeysRequestType'
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/CryptoKeyResult'

  /CryptoManagerHostKMS/{moId}/enabled:
    get:
      tags: [CryptoManagerHostKMS]
      summary: |2
        Indicate if the encryption feature is enabled.
      operationId: CryptoManagerHostKMS_getEnabled
      description: |2
        Indicate if the encryption feature is enabled.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                type: boolean

  /CryptoManagerKmip/{moId}/IsKmsClusterActive:
    post:
      tags: [CryptoManagerKmip]
      summary: |2
        Check whether an active KMS exists in cluster.
      operationId: CryptoManagerKmip_IsKmsClusterActive
      description: |2
        Check whether an active KMS exists in cluster.
        
        ***Required privileges:*** Cryptographer.ManageKeyServers
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/IsKmsClusterActiveRequestType'
      responses:
        '200':
          description: |2
            true if active KMS exists in cluster, false otherwise.
          content:
            application/json:
              schema:
                type: boolean
        '500':
          description: |2
            ***InvalidArgument***: in case the cluster is not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InvalidArgument'

  /CryptoManagerKmip/{moId}/AddKey:
    post:
      tags: [CryptoManagerKmip]
      summary: |2
        Add an existing key.
      operationId: CryptoManagerKmip_AddKey
      description: |2
        Add an existing key.
        
        ***Required privileges:*** Cryptographer.ManageKeys
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AddKeyRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***AlreadyExists***: in case the key is already in the key cache
            
            ***InvalidState***: in case the host is not Crypto Safe
            
            ***InvalidArgument***: in case the keyID is duplicated or key properties
            are incorrect.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /CryptoManagerKmip/{moId}/AddKeys:
    post:
      tags: [CryptoManagerKmip]
      summary: |2
        Add multiple existing keys.
      operationId: CryptoManagerKmip_AddKeys
      description: |2
        Add multiple existing keys.
        
        ***Required privileges:*** Cryptographer.ManageKeys
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AddKeysRequestType'
      responses:
        '200':
          description: |2
            the result for each key operation.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/CryptoKeyResult'
        '500':
          description: |2
            ***InvalidState***: in case the host is not Crypto Safe
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InvalidState'

  /CryptoManagerKmip/{moId}/GenerateClientCsr:
    post:
      tags: [CryptoManagerKmip]
      summary: |2
        Generate a certificate signing request with its private key.
      operationId: CryptoManagerKmip_GenerateClientCsr
      description: |2
        Generate a certificate signing request with its private key.
        
        This generates a CSR request as well as its private key. The private key
        will not be returned to caller for security protection. If this method
        is called again, the CSR and private key generated in the new invocation
        will overwrite the old ones.
        After the CSR is signed by KMS into a certificate, it should be updated
        by calling *CryptoManagerKmip.UpdateKmsSignedCsrClientCert*. The generated CSR
        can be later retrieved by calling *CryptoManagerKmip.RetrieveClientCsr*.
        
        ***Required privileges:*** Cryptographer.ManageKeyServers
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GenerateClientCsrRequestType'
      responses:
        '200':
          description: |2
            A newly generated CSR.
          content:
            application/json:
              schema:
                type: string

  /CryptoManagerKmip/{moId}/GenerateKey:
    post:
      tags: [CryptoManagerKmip]
      summary: |2
        Generate new encryption key.
      operationId: CryptoManagerKmip_GenerateKey
      description: |2
        Generate new encryption key.
        
        ***Required privileges:*** Cryptographer.ManageKeys
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GenerateKeyRequestType'
      responses:
        '200':
          description: |2
            the generated key.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CryptoKeyResult'

  /CryptoManagerKmip/{moId}/GenerateSelfSignedClientCert:
    post:
      tags: [CryptoManagerKmip]
      summary: |2
        Generate a self-signed client certificate with its private key.
      operationId: CryptoManagerKmip_GenerateSelfSignedClientCert
      description: |2
        Generate a self-signed client certificate with its private key.
        
        This generates a self signed certificate as well as its private key.
        The private key will not be returned to caller for security protection.
        If this method is called again, the certificate and private key
        generated in the new invocation will overwrite the old ones.
        The generated certificate will not replace current working certificate
        until *CryptoManagerKmip.UpdateSelfSignedClientCert* is called. The generated self
        signed certificate can be later retrieved by calling
        *CryptoManagerKmip.RetrieveSelfSignedClientCert*.
        
        ***Required privileges:*** Cryptographer.ManageKeyServers
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GenerateSelfSignedClientCertRequestType'
      responses:
        '200':
          description: |2
            A new self-signed client certificate.
          content:
            application/json:
              schema:
                type: string

  /CryptoManagerKmip/{moId}/GetDefaultKmsCluster:
    post:
      tags: [CryptoManagerKmip]
      summary: |2
        Get the default KMS cluster of the specified managed entity.
      operationId: CryptoManagerKmip_GetDefaultKmsCluster
      description: |2
        Get the default KMS cluster of the specified managed entity.
        
        ***Required privileges:*** Cryptographer.ManageKeyServers
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GetDefaultKmsClusterRequestType'
      responses:
        '200':
          description: |2
            The default kms cluster of the entity, if any.
          content:
            application/json:
              schema:
                nullable: true
                $ref: '#/components/schemas/KeyProviderId'

  /CryptoManagerKmip/{moId}/ListKeys:
    post:
      tags: [CryptoManagerKmip]
      summary: |2
        List keys.
      operationId: CryptoManagerKmip_ListKeys
      description: |2
        List keys.
        
        \* When executed against the host, lists all the keys
        added to the host's key cache by *CryptoManager.AddKey*/*CryptoManager.AddKeys*.
        \* When executed against the VC, lists all the keys used by
        the correctly registered VMs, and the host key.
        
        ***Required privileges:*** Cryptographer.ManageKeys
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ListKeysRequestType'
      responses:
        '200':
          description: |2
            List of known keys.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/CryptoKeyId'

  /CryptoManagerKmip/{moId}/ListKmipServers:
    post:
      tags: [CryptoManagerKmip]
      summary: |2
        List the registered KMIP servers.
      operationId: CryptoManagerKmip_ListKmipServers
      description: |2
        List the registered KMIP servers.
        
        ***Required privileges:*** Cryptographer.ManageKeyServers
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ListKmipServersRequestType'
      responses:
        '200':
          description: |2
            List of known KMIP servers grouped in clusters.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/KmipClusterInfo'

  /CryptoManagerKmip/{moId}/ListKmsClusters:
    post:
      tags: [CryptoManagerKmip]
      summary: |2
        List the KMS clusters information.
      operationId: CryptoManagerKmip_ListKmsClusters
      description: |2
        List the KMS clusters information.
        
        ***Required privileges:*** Cryptographer.ManageKeyServers
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ListKmsClustersRequestType'
      responses:
        '200':
          description: |2
            List of Key Providers.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/KmipClusterInfo'

  /CryptoManagerKmip/{moId}/MarkDefault:
    post:
      tags: [CryptoManagerKmip]
      summary: |2
        Set the default KMIP cluster.
      operationId: CryptoManagerKmip_MarkDefault
      description: |2
        Set the default KMIP cluster.
        
        ***Required privileges:*** Cryptographer.ManageKeyServers
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MarkDefaultRequestType'
      responses:
        '204':
          description: |2
            No Content

  /CryptoManagerKmip/{moId}/QueryCryptoKeyStatus:
    post:
      tags: [CryptoManagerKmip]
      summary: |2
        Check CryptoKey status, such as if VC can access the key, if the key is
        used by some VMs or as host key.
      operationId: CryptoManagerKmip_QueryCryptoKeyStatus
      description: |2
        Check CryptoKey status, such as if VC can access the key, if the key is
        used by some VMs or as host key.
        
        ***Required privileges:*** Cryptographer.ManageKeys
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QueryCryptoKeyStatusRequestType'
      responses:
        '200':
          description: |2
            The structure combined with key status. If bit in parameter
            is not set when invoke, the returned data in related
            CryptoKeyStatus will be unknown.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/CryptoManagerKmipCryptoKeyStatus'

  /CryptoManagerKmip/{moId}/RegisterKmipServer:
    post:
      tags: [CryptoManagerKmip]
      summary: |2
        Register a KMIP server.
      operationId: CryptoManagerKmip_RegisterKmipServer
      description: |2
        Register a KMIP server.
        
        ***Required privileges:*** Cryptographer.ManageKeyServers
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RegisterKmipServerRequestType'
      responses:
        '204':
          description: |2
            No Content

  /CryptoManagerKmip/{moId}/RegisterKmsCluster:
    post:
      tags: [CryptoManagerKmip]
      summary: |2
        Register the specified KMS cluster to the CryptoManager.
      operationId: CryptoManagerKmip_RegisterKmsCluster
      description: |2
        Register the specified KMS cluster to the CryptoManager.
        
        ***Required privileges:*** Cryptographer.ManageKeyServers
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RegisterKmsClusterRequestType'
      responses:
        '204':
          description: |2
            No Content

  /CryptoManagerKmip/{moId}/RemoveKey:
    post:
      tags: [CryptoManagerKmip]
      summary: |2
        Remove a key (only the UUID is needed to remove).
      operationId: CryptoManagerKmip_RemoveKey
      description: |2
        Remove a key (only the UUID is needed to remove).
        
        If "force" is set, removal will happen even if the key is in use.
        
        ***Required privileges:*** Cryptographer.ManageKeys
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RemoveKeyRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***InvalidArgument***: in case the keyID is not found
            and "force" is false.
            
            ***ResourceInUse***: if the key is used to encrypt any object
            and "force" is false.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResourceInUse'

  /CryptoManagerKmip/{moId}/RemoveKeys:
    post:
      tags: [CryptoManagerKmip]
      summary: |2
        Remove multiple keys (only the UUID is needed to remove).
      operationId: CryptoManagerKmip_RemoveKeys
      description: |2
        Remove multiple keys (only the UUID is needed to remove).
        
        If "force" is set, removal will happen even if they are in use.
        
        ***Required privileges:*** Cryptographer.ManageKeys
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RemoveKeysRequestType'
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/CryptoKeyResult'

  /CryptoManagerKmip/{moId}/RemoveKmipServer:
    post:
      tags: [CryptoManagerKmip]
      summary: |2
        Remove a KMIP server, even if in use.
      operationId: CryptoManagerKmip_RemoveKmipServer
      description: |2
        Remove a KMIP server, even if in use.
        
        ***Required privileges:*** Cryptographer.ManageKeyServers
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RemoveKmipServerRequestType'
      responses:
        '204':
          description: |2
            No Content

  /CryptoManagerKmip/{moId}/RetrieveClientCert:
    post:
      tags: [CryptoManagerKmip]
      summary: |2
        Get the client certificate of the KMIP cluster.
      operationId: CryptoManagerKmip_RetrieveClientCert
      description: |2
        Get the client certificate of the KMIP cluster.
        
        ***Required privileges:*** Cryptographer.ManageKeyServers
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RetrieveClientCertRequestType'
      responses:
        '200':
          description: |2
            The client certificate.
          content:
            application/json:
              schema:
                type: string

  /CryptoManagerKmip/{moId}/RetrieveClientCsr:
    post:
      tags: [CryptoManagerKmip]
      summary: |2
        Get the generated client certificate signing request.
      operationId: CryptoManagerKmip_RetrieveClientCsr
      description: |2
        Get the generated client certificate signing request.
        
        If *CryptoManagerKmip.GenerateClientCsr* is called previously, this will return
        the generated certificate signing request; otherwise return empty string.
        
        ***Required privileges:*** Cryptographer.ManageKeyServers
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RetrieveClientCsrRequestType'
      responses:
        '200':
          description: |2
            The CSR generated previously, if any.
          content:
            application/json:
              schema:
                type: string

  /CryptoManagerKmip/{moId}/RetrieveKmipServerCert:
    post:
      tags: [CryptoManagerKmip]
      summary: |2
        Get the server certficate.
      operationId: CryptoManagerKmip_RetrieveKmipServerCert
      description: |2
        Get the server certficate.
        
        In the case of error, an empty
        certificate string is returned.
        
        ***Required privileges:*** Cryptographer.ManageKeyServers
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RetrieveKmipServerCertRequestType'
      responses:
        '200':
          description: |2
            Information about the server certificate.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CryptoManagerKmipServerCertInfo'

  /CryptoManagerKmip/{moId}/RetrieveKmipServersStatus_Task:
    post:
      tags: [CryptoManagerKmip]
      summary: |2
        Get the status of the KMIP servers.
      operationId: CryptoManagerKmip_RetrieveKmipServersStatus_Task
      description: |2
        Get the status of the KMIP servers.
        
        ***Required privileges:*** Cryptographer.ManageKeyServers
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RetrieveKmipServersStatusRequestType'
      responses:
        '200':
          description: |2
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'

  /CryptoManagerKmip/{moId}/RetrieveSelfSignedClientCert:
    post:
      tags: [CryptoManagerKmip]
      summary: |2
        Get the generated self signed client certificate.
      operationId: CryptoManagerKmip_RetrieveSelfSignedClientCert
      description: |2
        Get the generated self signed client certificate.
        
        If *CryptoManagerKmip.GenerateSelfSignedClientCert* is called previously, this
        will return the generated certificate; otherwise return empty string.
        
        ***Required privileges:*** Cryptographer.ManageKeyServers
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RetrieveSelfSignedClientCertRequestType'
      responses:
        '200':
          description: |2
            The self signed certificate generated previously, if any.
          content:
            application/json:
              schema:
                type: string

  /CryptoManagerKmip/{moId}/SetDefaultKmsCluster:
    post:
      tags: [CryptoManagerKmip]
      summary: |2
        Set the default KMS cluster for the specified managed entity.
      operationId: CryptoManagerKmip_SetDefaultKmsCluster
      description: |2
        Set the default KMS cluster for the specified managed entity.
        
        ***Required privileges:*** Cryptographer.ManageKeyServers
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SetDefaultKmsClusterRequestType'
      responses:
        '204':
          description: |2
            No Content

  /CryptoManagerKmip/{moId}/SetKeyCustomAttributes:
    post:
      tags: [CryptoManagerKmip]
      summary: |2
        Set crypto key's custom attributes.
      operationId: CryptoManagerKmip_SetKeyCustomAttributes
      description: |2
        Set crypto key's custom attributes.
        
        ***Since:*** vSphere API Release 8.0.1.0
        
        ***Required privileges:*** Cryptographer.ManageKeys
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SetKeyCustomAttributesRequestType'
      responses:
        '200':
          description: |2
            The structure combined with status and fail reason.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CryptoKeyResult'

  /CryptoManagerKmip/{moId}/UnregisterKmsCluster:
    post:
      tags: [CryptoManagerKmip]
      summary: |2
        Unregister the specified KMS cluster from the CryptoManager.
      operationId: CryptoManagerKmip_UnregisterKmsCluster
      description: |2
        Unregister the specified KMS cluster from the CryptoManager.
        
        ***Required privileges:*** Cryptographer.ManageKeyServers
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UnregisterKmsClusterRequestType'
      responses:
        '204':
          description: |2
            No Content

  /CryptoManagerKmip/{moId}/UpdateKmipServer:
    post:
      tags: [CryptoManagerKmip]
      summary: |2
        Update a KMIP server.
      operationId: CryptoManagerKmip_UpdateKmipServer
      description: |2
        Update a KMIP server.
        
        ***Required privileges:*** Cryptographer.ManageKeyServers
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateKmipServerRequestType'
      responses:
        '204':
          description: |2
            No Content

  /CryptoManagerKmip/{moId}/UpdateKmsSignedCsrClientCert:
    post:
      tags: [CryptoManagerKmip]
      summary: |2
        Set KMS server signed certificate as KMIP client certificate for the KMS
        cluster.
      operationId: CryptoManagerKmip_UpdateKmsSignedCsrClientCert
      description: |2
        Set KMS server signed certificate as KMIP client certificate for the KMS
        cluster.
        
        This method should be called to update the certificate signed by KMS
        server from a CSR that is generated by calling *CryptoManagerKmip.GenerateClientCsr*.
        If *CryptoManagerKmip.GenerateClientCsr* is called more than once, the CSR that is
        generated last time should be used; otherwise the certificate will be
        rejected because the private key from last time won't match the public
        key in the certificate.
        
        ***Required privileges:*** Cryptographer.ManageKeyServers
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateKmsSignedCsrClientCertRequestType'
      responses:
        '204':
          description: |2
            No Content

  /CryptoManagerKmip/{moId}/UpdateSelfSignedClientCert:
    post:
      tags: [CryptoManagerKmip]
      summary: |2
        Set a self-signed certificate as KMIP client certificate for the KMS
        cluster.
      operationId: CryptoManagerKmip_UpdateSelfSignedClientCert
      description: |2
        Set a self-signed certificate as KMIP client certificate for the KMS
        cluster.
        
        This method should be called to update the certificate which is generated
        by calling *CryptoManagerKmip.GenerateSelfSignedClientCert*. If
        *CryptoManagerKmip.GenerateSelfSignedClientCert* is called more than once, the self
        signed certificate that is generated last time should be used; otherwise
        the certificate will be rejected because the private key from last time
        won't match the public key in the certificate.
        
        ***Required privileges:*** Cryptographer.ManageKeyServers
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateSelfSignedClientCertRequestType'
      responses:
        '204':
          description: |2
            No Content

  /CryptoManagerKmip/{moId}/UploadClientCert:
    post:
      tags: [CryptoManagerKmip]
      summary: |2
        Set a client certificate with private key for the KMIP cluster.
      operationId: CryptoManagerKmip_UploadClientCert
      description: |2
        Set a client certificate with private key for the KMIP cluster.
        
        The certificate and private key can be assigned by a KMS server and the
        certificate might be already trusted by the KMS server.
        
        ***Required privileges:*** Cryptographer.ManageKeyServers
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UploadClientCertRequestType'
      responses:
        '204':
          description: |2
            No Content

  /CryptoManagerKmip/{moId}/UploadKmipServerCert:
    post:
      tags: [CryptoManagerKmip]
      summary: |2
        Upload a server certficate.
      operationId: CryptoManagerKmip_UploadKmipServerCert
      description: |2
        Upload a server certficate.
        
        ***Required privileges:*** Cryptographer.ManageKeyServers
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UploadKmipServerCertRequestType'
      responses:
        '204':
          description: |2
            No Content

  /CryptoManagerKmip/{moId}/enabled:
    get:
      tags: [CryptoManagerKmip]
      summary: |2
        Indicate if the encryption feature is enabled.
      operationId: CryptoManagerKmip_getEnabled
      description: |2
        Indicate if the encryption feature is enabled.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                type: boolean

  /CryptoManagerKmip/{moId}/kmipServers:
    get:
      tags: [CryptoManagerKmip]
      summary: |2
        A list of registered KMIP servers, grouped by clusters.
      operationId: CryptoManagerKmip_getKmipServers
      description: |2
        A list of registered KMIP servers, grouped by clusters.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/KmipClusterInfo'

  /CustomFieldsManager/{moId}/AddCustomFieldDef:
    post:
      tags: [CustomFieldsManager]
      summary: |2
        Creates a new custom field.
      operationId: CustomFieldsManager_AddCustomFieldDef
      description: |2
        Creates a new custom field.
        
        If the moType is specified, the
        field will only be available for that type of managed object.
        
        ***Required privileges:*** Global.ManageCustomFields
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AddCustomFieldDefRequestType'
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomFieldDef'
        '500':
          description: |2
            ***DuplicateName***: if a custom field with the name already exists.
            
            ***InvalidPrivilege***: if a specified privilege is not defined.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /CustomFieldsManager/{moId}/RemoveCustomFieldDef:
    post:
      tags: [CustomFieldsManager]
      summary: |2
        Removes a custom field.
      operationId: CustomFieldsManager_RemoveCustomFieldDef
      description: |2
        Removes a custom field.
        
        This also removes all values assigned
        to this custom field.
        
        ***Required privileges:*** Global.ManageCustomFields
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RemoveCustomFieldDefRequestType'
      responses:
        '204':
          description: |2
            No Content

  /CustomFieldsManager/{moId}/RenameCustomFieldDef:
    post:
      tags: [CustomFieldsManager]
      summary: |2
        Renames a custom field.
      operationId: CustomFieldsManager_RenameCustomFieldDef
      description: |2
        Renames a custom field.
        
        ***Required privileges:*** Global.ManageCustomFields
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RenameCustomFieldDefRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***InvalidArgument***: if no custom field with that key exists.
            
            ***DuplicateName***: if a custom field with the name already exists.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DuplicateName'

  /CustomFieldsManager/{moId}/SetField:
    post:
      tags: [CustomFieldsManager]
      summary: |2
        Assigns a value to a custom field on an entity.
      operationId: CustomFieldsManager_SetField
      description: |2
        Assigns a value to a custom field on an entity.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SetFieldRequestType'
      responses:
        '204':
          description: |2
            No Content

  /CustomFieldsManager/{moId}/field:
    get:
      tags: [CustomFieldsManager]
      summary: |2
        List of custom fields defined on this server.
      operationId: CustomFieldsManager_getField
      description: |2
        List of custom fields defined on this server.
        
        The fields are
        sorted by name.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/CustomFieldDef'

  /CustomizationSpecManager/{moId}/CheckCustomizationResources:
    post:
      tags: [CustomizationSpecManager]
      summary: |2
        Validate that required resources are available on the server to customize a
        particular guest operating system.
      operationId: CustomizationSpecManager_CheckCustomizationResources
      description: |2
        Validate that required resources are available on the server to customize a
        particular guest operating system.
        
        These would include sysprep for Windows
        and the debugfs and changefs volume editors for Linux guests.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CheckCustomizationResourcesRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***MissingLinuxCustResources***: 
            
            ***MissingWindowsCustResources***: 
            
            ***UncustomizableGuest***:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomizationFault'

  /CustomizationSpecManager/{moId}/CreateCustomizationSpec:
    post:
      tags: [CustomizationSpecManager]
      summary: |2
        Creates a new specification.
      operationId: CustomizationSpecManager_CreateCustomizationSpec
      description: |2
        Creates a new specification.
        
        ***Required privileges:*** VirtualMachine.Provisioning.ModifyCustSpecs
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateCustomizationSpecRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***AlreadyExists***: 
            
            ***CannotDecryptPasswords***:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /CustomizationSpecManager/{moId}/DeleteCustomizationSpec:
    post:
      tags: [CustomizationSpecManager]
      summary: |2
        Deletes a specification.
      operationId: CustomizationSpecManager_DeleteCustomizationSpec
      description: |2
        Deletes a specification.
        
        ***Required privileges:*** VirtualMachine.Provisioning.ModifyCustSpecs
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DeleteCustomizationSpecRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***NotFound***:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFound'

  /CustomizationSpecManager/{moId}/DuplicateCustomizationSpec:
    post:
      tags: [CustomizationSpecManager]
      summary: |2
        Duplicates a specification.
      operationId: CustomizationSpecManager_DuplicateCustomizationSpec
      description: |2
        Duplicates a specification.
        
        ***Required privileges:*** VirtualMachine.Provisioning.ModifyCustSpecs
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DuplicateCustomizationSpecRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***NotFound***: 
            
            ***AlreadyExists***:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /CustomizationSpecManager/{moId}/DoesCustomizationSpecExist:
    post:
      tags: [CustomizationSpecManager]
      summary: |2
        Whether or not a specification exists.
      operationId: CustomizationSpecManager_DoesCustomizationSpecExist
      description: |2
        Whether or not a specification exists.
        
        ***Required privileges:*** VirtualMachine.Provisioning.ReadCustSpecs
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DoesCustomizationSpecExistRequestType'
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                type: boolean

  /CustomizationSpecManager/{moId}/GetCustomizationSpec:
    post:
      tags: [CustomizationSpecManager]
      summary: |2
        Obtains a specification for the given name.
      operationId: CustomizationSpecManager_GetCustomizationSpec
      description: |2
        Obtains a specification for the given name.
        
        ***Required privileges:*** VirtualMachine.Provisioning.ReadCustSpecs
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GetCustomizationSpecRequestType'
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomizationSpecItem'
        '500':
          description: |2
            ***NotFound***:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFound'

  /CustomizationSpecManager/{moId}/OverwriteCustomizationSpec:
    post:
      tags: [CustomizationSpecManager]
      summary: |2
        Overwrites an existing specification, possibly after retrieving
        (by using 'get') and editing it.
      operationId: CustomizationSpecManager_OverwriteCustomizationSpec
      description: |2
        Overwrites an existing specification, possibly after retrieving
        (by using 'get') and editing it.
        
        If, based on the item's changeVersion
        value, the overwrite process detects that the specification has changed
        since its retrieval, then the API uses the SpecModified exception to
        warn clients that they might overwrite another client's change.
        
        ***Required privileges:*** VirtualMachine.Provisioning.ModifyCustSpecs
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OverwriteCustomizationSpecRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***NotFound***: 
            
            ***ConcurrentAccess***: 
            
            ***CannotDecryptPasswords***:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /CustomizationSpecManager/{moId}/RenameCustomizationSpec:
    post:
      tags: [CustomizationSpecManager]
      summary: |2
        Renames a specification.
      operationId: CustomizationSpecManager_RenameCustomizationSpec
      description: |2
        Renames a specification.
        
        ***Required privileges:*** VirtualMachine.Provisioning.ModifyCustSpecs
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RenameCustomizationSpecRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***NotFound***: 
            
            ***AlreadyExists***:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /CustomizationSpecManager/{moId}/CustomizationSpecItemToXml:
    post:
      tags: [CustomizationSpecManager]
      summary: |2
        Converts a specification item to XML text
      operationId: CustomizationSpecManager_CustomizationSpecItemToXml
      description: |2
        Converts a specification item to XML text
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CustomizationSpecItemToXmlRequestType'
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                type: string

  /CustomizationSpecManager/{moId}/XmlToCustomizationSpecItem:
    post:
      tags: [CustomizationSpecManager]
      summary: |2
        Converts an XML string to a specification item
      operationId: CustomizationSpecManager_XmlToCustomizationSpecItem
      description: |2
        Converts an XML string to a specification item
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/XmlToCustomizationSpecItemRequestType'
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomizationSpecItem'
        '500':
          description: |2
            Failure
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomizationFault'

  /CustomizationSpecManager/{moId}/encryptionKey:
    get:
      tags: [CustomizationSpecManager]
      summary: |2
        Gets a binary public encryption key that can be used to encrypt
        passwords in stored specifications.
      operationId: CustomizationSpecManager_getEncryptionKey
      description: |2
        Gets a binary public encryption key that can be used to encrypt
        passwords in stored specifications.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  type: integer
                  minimum: -128
                  maximum: 127

  /CustomizationSpecManager/{moId}/info:
    get:
      tags: [CustomizationSpecManager]
      summary: |2
        Gets a list of information on available specifications.
      operationId: CustomizationSpecManager_getInfo
      description: |2
        Gets a list of information on available specifications.
        
        ***Required privileges:*** VirtualMachine.Provisioning.ReadCustSpecs
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/CustomizationSpecInfo'

  /Datacenter/{moId}/BatchQueryConnectInfo:
    post:
      tags: [Datacenter]
      summary: |2
        This interface returns a list of information about the specified hosts
        without adding them to the vCenter inventory.
      operationId: Datacenter_BatchQueryConnectInfo
      description: |2
        This interface returns a list of information about the specified hosts
        without adding them to the vCenter inventory.
        
        It does so by calling
        *Datacenter.QueryConnectionInfoViaSpec*.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BatchQueryConnectInfoRequestType'
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/DatacenterBasicConnectInfo'

  /Datacenter/{moId}/Destroy_Task:
    post:
      tags: [Datacenter]
      summary: |2
        Destroys this object, deleting its contents and removing it from its parent
        folder (if any).
      operationId: Datacenter_Destroy_Task
      description: |2
        Destroys this object, deleting its contents and removing it from its parent
        folder (if any).
        
        NOTE: The appropriate privilege must be held on the parent of the destroyed
        entity as well as the entity itself.
        This method can throw one of several exceptions. The exact set of exceptions
        depends on the kind of entity that is being removed. See comments for
        each entity for more information on destroy behavior.
        
        ***Required privileges:*** Datacenter.Delete
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor the
            operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            Failure
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /Datacenter/{moId}/PowerOnMultiVM_Task:
    post:
      tags: [Datacenter]
      summary: |2
        Powers on multiple virtual machines in a data center.
      operationId: Datacenter_PowerOnMultiVM_Task
      description: |2
        Powers on multiple virtual machines in a data center.
        
        If the virtual
        machines are suspended, this method resumes execution from the suspend
        point.
        The virtual machines can belong to different clusters in the data center.
        
        If any virtual machine in the list is manually managed by DRS, or DRS
        has to migrate any manually managed virtual machine or power on any manually
        managed host in order to power on these virtual machines, a DRS recommendation
        will be generated, and the users need to manually apply the recommendation
        for actually powering on these virtual machines.
        Otherwise, all the virtual machine will be automatically powered on. The
        virtual machines on stand alone hosts or DRS disabled will be powered-on
        on the current host. The DRS automatically managed virtual machines will
        be powered-on on the recommended hosts.
        
        When powering on a virtual machine in a cluster, the system
        might do an implicit relocation of the virtual machine to
        another host.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PowerOnMultiVMRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor
            the operation, and also a *ClusterPowerOnVmResult* object.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'

  /Datacenter/{moId}/queryDatacenterConfigOptionDescriptor:
    post:
      tags: [Datacenter]
      summary: |2
        The list of possible choices for
        *DatacenterConfigSpec.defaultHardwareVersionKey*.
      operationId: Datacenter_queryDatacenterConfigOptionDescriptor
      description: |2
        The list of possible choices for
        *DatacenterConfigSpec.defaultHardwareVersionKey*.
        
        Descriptors returned by the vCenter implementation do not have
        *VirtualMachineConfigOptionDescriptor.host* field populated.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/VirtualMachineConfigOptionDescriptor'

  /Datacenter/{moId}/QueryConnectionInfo:
    post:
      tags: [Datacenter]
      summary: |2
        This method provides a way of getting basic information about a host without
        adding it to a datacenter.
      operationId: Datacenter_QueryConnectionInfo
      description: |2
        This method provides a way of getting basic information about a host without
        adding it to a datacenter.
        
        Connection wizards typically use this method to show
        information about a host so a user can confirm a set of changes before applying
        them.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QueryConnectionInfoRequestType'
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HostConnectInfo'
        '500':
          description: |2
            ***NotSupported***: if called directly on a host.
            
            ***NoHost***: if unable to contact the host.
            
            ***InvalidLogin***: if unable to authenticate with the host.
            
            ***NotSupportedHost***: if the software version on the host is not supported.
            
            ***AlreadyConnected***: if the host is already being managed by this server.
            
            ***HostConnectFault***: if an error occurred when querying about a host.
            Typically, a more specific subclass, such as AlreadyBeingManaged,
            is thrown.
            
            ***SSLDisabledFault***: if the host has SSL access disabled
            
            ***SSLVerifyFault***: if the host certificate could not be authenticated
            
            ***InvalidArgument***: if both arguments `sslThumbprint`
            and `sslCertificate` are set, or if only the `sslThumbprint`
            argument is set, but the SHA-1 hashing algorithm is currently disabled
            for computing certificate thumbprints.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /Datacenter/{moId}/QueryConnectionInfoViaSpec:
    post:
      tags: [Datacenter]
      summary: |2
        This method provides a way of getting basic information about a host
        without adding it to a datacenter.
      operationId: Datacenter_QueryConnectionInfoViaSpec
      description: |2
        This method provides a way of getting basic information about a host
        without adding it to a datacenter.
        
        This method is similar to
        *Datacenter.QueryConnectionInfo*, but it takes a *HostConnectSpec*
        as argument, instead of list of parameters.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QueryConnectionInfoViaSpecRequestType'
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HostConnectInfo'
        '500':
          description: |2
            ***InvalidArgument***: if the spec argument does not provide values for
            all needed connection parameters.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /Datacenter/{moId}/ReconfigureDatacenter_Task:
    post:
      tags: [Datacenter]
      summary: |2
        Change the datacenter configuration.
      operationId: Datacenter_ReconfigureDatacenter_Task
      description: |2
        Change the datacenter configuration.
        
        ***Required privileges:*** Datacenter.Reconfigure
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ReconfigureDatacenterRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor
            the operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'

  /Datacenter/{moId}/Reload:
    post:
      tags: [Datacenter]
      summary: |2
        Reload the entity state.
      operationId: Datacenter_Reload
      description: |2
        Reload the entity state.
        
        Clients only need to call this method
        if they changed some external state that affects the service
        without using the Web service interface to perform the change.
        For example, hand-editing a virtual machine configuration file
        affects the configuration of the associated virtual machine but
        the service managing the virtual machine might not monitor the
        file for changes. In this case, after such an edit, a client
        would call "reload" on the associated virtual machine to ensure
        the service and its clients have current data for the
        virtual machine.
        
        ***Required privileges:*** System.Read
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '204':
          description: |2
            No Content

  /Datacenter/{moId}/Rename_Task:
    post:
      tags: [Datacenter]
      summary: |2
        Renames this managed entity.
      operationId: Datacenter_Rename_Task
      description: |2
        Renames this managed entity.
        
        Any % (percent) character used in this name parameter
        must be escaped, unless it is used to start an escape
        sequence. Clients may also escape any other characters in
        this name parameter.
        
        See also *ManagedEntity.name*.
        
        ***Required privileges:*** Datacenter.Rename
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RenameRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor the
            operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***DuplicateName***: If another object in the same folder has the target name.
            
            ***InvalidName***: If the new name is not a valid entity name.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /Datacenter/{moId}/setCustomValue:
    post:
      tags: [Datacenter]
      summary: |2
        Assigns a value to a custom field.
      operationId: Datacenter_setCustomValue
      description: |2
        Assigns a value to a custom field.
        
        The setCustomValue method requires
        whichever updatePrivilege is defined as one of the
        *CustomFieldDef.fieldInstancePrivileges*
        for the CustomFieldDef whose value is being changed.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/setCustomValueRequestType'
      responses:
        '204':
          description: |2
            No Content

  /Datacenter/{moId}/alarmActionsEnabled:
    get:
      tags: [Datacenter]
      summary: |2
        Whether alarm actions are enabled for this entity.
      operationId: Datacenter_getAlarmActionsEnabled
      description: |2
        Whether alarm actions are enabled for this entity.
        
        True if enabled; false otherwise.
        
        ***Required privileges:*** System.Read
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: boolean

  /Datacenter/{moId}/availableField:
    get:
      tags: [Datacenter]
      summary: |2
        List of custom field definitions that are valid for the object's type.
      operationId: Datacenter_getAvailableField
      description: |2
        List of custom field definitions that are valid for the object's type.
        
        The fields are sorted by *CustomFieldDef.name*.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/CustomFieldDef'

  /Datacenter/{moId}/configIssue:
    get:
      tags: [Datacenter]
      summary: |2
        Current configuration issues that have been detected for this entity.
      operationId: Datacenter_getConfigIssue
      description: |2
        Current configuration issues that have been detected for this entity.
        
        Typically,
        these issues have already been logged as events. The entity stores these
        events as long as they are still current. The
        *configStatus* property provides an overall status
        based on these events.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/Event'

  /Datacenter/{moId}/configStatus:
    get:
      tags: [Datacenter]
      summary: |2
        The configStatus indicates whether or not the system has detected a configuration
        issue involving this entity.
      operationId: Datacenter_getConfigStatus
      description: |2
        The configStatus indicates whether or not the system has detected a configuration
        issue involving this entity.
        
        For example, it might have detected a
        duplicate IP address or MAC address, or a host in a cluster
        might be out of compliance. The meanings of the configStatus values are:
        - red: A problem has been detected involving the entity.
        - yellow: A problem is about to occur or a transient condition
          has occurred (For example, reconfigure fail-over policy).
        - green: No configuration issues have been detected.
        - gray: The configuration status of the entity is not being monitored.
          
        A green status indicates only that a problem has not been detected;
        it is not a guarantee that the entity is problem-free.
        
        The *configIssue* property contains a list of the
        problems that have been detected.
        In releases after vSphere API 5.0, vSphere Servers might not
        generate property collector update notifications for this property.
        To obtain the latest value of the property, you can use
        PropertyCollector methods RetrievePropertiesEx or WaitForUpdatesEx.
        If you use the PropertyCollector.WaitForUpdatesEx method, specify
        an empty string for the version parameter. Any other version value will not
        produce any property values as no updates are generated.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedEntityStatus_enum'

  /Datacenter/{moId}/configuration:
    get:
      tags: [Datacenter]
      summary: |2
        Configuration of the datacenter.
      operationId: Datacenter_getConfiguration
      description: |2
        Configuration of the datacenter.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DatacenterConfigInfo'

  /Datacenter/{moId}/customValue:
    get:
      tags: [Datacenter]
      summary: |2
        Custom field values.
      operationId: Datacenter_getCustomValue
      description: |2
        Custom field values.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/CustomFieldValue'

  /Datacenter/{moId}/datastore:
    get:
      tags: [Datacenter]
      summary: |2
        A collection of references to the datastore objects
        available in this datacenter.
      operationId: Datacenter_getDatastore
      description: |2
        A collection of references to the datastore objects
        available in this datacenter.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            Refers instances of *Datastore*.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/ManagedObjectReference'

  /Datacenter/{moId}/datastoreFolder:
    get:
      tags: [Datacenter]
      summary: |2
        A reference to the folder hierarchy that contains
        the datastores for this datacenter.
      operationId: Datacenter_getDatastoreFolder
      description: |2
        A reference to the folder hierarchy that contains
        the datastores for this datacenter.
        
        This folder is guaranteed to exist.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            Refers instance of *Folder*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'

  /Datacenter/{moId}/declaredAlarmState:
    get:
      tags: [Datacenter]
      summary: |2
        A set of alarm states for alarms that apply to this managed entity.
      operationId: Datacenter_getDeclaredAlarmState
      description: |2
        A set of alarm states for alarms that apply to this managed entity.
        
        The set includes alarms defined on this entity
        and alarms inherited from the parent entity,
        or from any ancestors in the inventory hierarchy.
        
        Alarms are inherited if they can be triggered by this entity or its descendants.
        This set does not include alarms that are defined on descendants of this entity.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/AlarmState'

  /Datacenter/{moId}/disabledMethod:
    get:
      tags: [Datacenter]
      summary: |2
        List of operations that are disabled, given the current runtime
        state of the entity.
      operationId: Datacenter_getDisabledMethod
      description: |2
        List of operations that are disabled, given the current runtime
        state of the entity.
        
        For example, a power-on operation always fails if a
        virtual machine is already powered on. This list can be used by clients to
        enable or disable operations in a graphical user interface.
        
        Note: This list is determined by the current runtime state of an entity,
        not by its permissions.
        
        This list may include the following operations for a HostSystem:
        - *HostSystem.EnterMaintenanceMode_Task*
        - *HostSystem.ExitMaintenanceMode_Task*
        - *HostSystem.RebootHost_Task*
        - *HostSystem.ShutdownHost_Task*
        - *HostSystem.ReconnectHost_Task*
        - *HostSystem.DisconnectHost_Task*
          
        This list may include the following operations for a VirtualMachine:
        - *VirtualMachine.AnswerVM*
        - *ManagedEntity.Rename_Task*
        - *VirtualMachine.CloneVM_Task*
        - *VirtualMachine.PowerOffVM_Task*
        - *VirtualMachine.PowerOnVM_Task*
        - *VirtualMachine.SuspendVM_Task*
        - *VirtualMachine.ResetVM_Task*
        - *VirtualMachine.ReconfigVM_Task*
        - *VirtualMachine.RelocateVM_Task*
        - *VirtualMachine.MigrateVM_Task*
        - *VirtualMachine.CustomizeVM_Task*
        - *VirtualMachine.ShutdownGuest*
        - *VirtualMachine.StandbyGuest*
        - *VirtualMachine.RebootGuest*
        - *VirtualMachine.CreateSnapshot_Task*
        - *VirtualMachine.RemoveAllSnapshots_Task*
        - *VirtualMachine.RevertToCurrentSnapshot_Task*
        - *VirtualMachine.MarkAsTemplate*
        - *VirtualMachine.MarkAsVirtualMachine*
        - *VirtualMachine.ResetGuestInformation*
        - *VirtualMachine.MountToolsInstaller*
        - *VirtualMachine.UnmountToolsInstaller*
        - *ManagedEntity.Destroy_Task*
        - *VirtualMachine.UpgradeVM_Task*
        - *VirtualMachine.ExportVm*
          
        This list may include the following operations for a ResourcePool:
        - *ResourcePool.ImportVApp*
        - *ResourcePool.CreateChildVM_Task*
        - *ResourcePool.UpdateConfig*
        - *Folder.CreateVM_Task*
        - *ManagedEntity.Destroy_Task*
        - *ManagedEntity.Rename_Task*
          
        This list may include the following operations for a VirtualApp:
        - *ManagedEntity.Destroy_Task*
        - *VirtualApp.CloneVApp_Task*
        - *VirtualApp.unregisterVApp_Task*
        - *VirtualApp.ExportVApp*
        - *VirtualApp.PowerOnVApp_Task*
        - *VirtualApp.PowerOffVApp_Task*
        - *VirtualApp.UpdateVAppConfig*
          
        In releases after vSphere API 5.0, vSphere Servers might not
        generate property collector update notifications for this property.
        To obtain the latest value of the property, you can use
        PropertyCollector methods RetrievePropertiesEx or WaitForUpdatesEx.
        If you use the PropertyCollector.WaitForUpdatesEx method, specify
        an empty string for the version parameter. Any other version value will not
        produce any property values as no updates are generated.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  type: string

  /Datacenter/{moId}/effectiveRole:
    get:
      tags: [Datacenter]
      summary: |2
        Access rights the current session has to this entity.
      operationId: Datacenter_getEffectiveRole
      description: |2
        Access rights the current session has to this entity.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  type: integer
                  format: int32

  /Datacenter/{moId}/hostFolder:
    get:
      tags: [Datacenter]
      summary: |2
        A reference to the folder hierarchy that contains
        the compute resources, including hosts and clusters, for this datacenter.
      operationId: Datacenter_getHostFolder
      description: |2
        A reference to the folder hierarchy that contains
        the compute resources, including hosts and clusters, for this datacenter.
        
        This folder is guaranteed to exist.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            Refers instance of *Folder*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'

  /Datacenter/{moId}/name:
    get:
      tags: [Datacenter]
      summary: |2
        Name of this entity, unique relative to its parent.
      operationId: Datacenter_getName
      description: |2
        Name of this entity, unique relative to its parent.
        
        Any / (slash), \\ (backslash), character used in this
        name element will be escaped. Similarly, any % (percent) character used in
        this name element will be escaped, unless it is used to start an escape
        sequence. A slash is escaped as %2F or %2f. A backslash is escaped as %5C or
        %5c, and a percent is escaped as %25.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                type: string

  /Datacenter/{moId}/network:
    get:
      tags: [Datacenter]
      summary: |2
        A collection of references to the network objects
        available in this datacenter.
      operationId: Datacenter_getNetwork
      description: |2
        A collection of references to the network objects
        available in this datacenter.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            Refers instances of *Network*.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/ManagedObjectReference'

  /Datacenter/{moId}/networkFolder:
    get:
      tags: [Datacenter]
      summary: |2
        A reference to the folder hierarchy that contains the network entities
        for this datacenter.
      operationId: Datacenter_getNetworkFolder
      description: |2
        A reference to the folder hierarchy that contains the network entities
        for this datacenter.
        
        The folder can include *Network*,
        *DistributedVirtualSwitch*, and
        *DistributedVirtualPortgroup* objects.
        
        This folder is guaranteed to exist.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            Refers instance of *Folder*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'

  /Datacenter/{moId}/overallStatus:
    get:
      tags: [Datacenter]
      summary: |2
        General health of this managed entity.
      operationId: Datacenter_getOverallStatus
      description: |2
        General health of this managed entity.
        
        The overall status of the managed entity is computed as the worst status
        among its alarms and the configuration issues detected on the entity.
        The status is reported as one of the following values:
        - red: The entity has alarms or configuration issues with a red status.
        - yellow: The entity does not have alarms or configuration issues with a
          red status, and has at least one with a yellow status.
        - green: The entity does not have alarms or configuration issues with a
          red or yellow status, and has at least one with a green status.
        - gray: All of the entity's alarms have a gray status and the
          configuration status of the entity is not being monitored.
          
        In releases after vSphere API 5.0, vSphere Servers might not
        generate property collector update notifications for this property.
        To obtain the latest value of the property, you can use
        PropertyCollector methods RetrievePropertiesEx or WaitForUpdatesEx.
        If you use the PropertyCollector.WaitForUpdatesEx method, specify
        an empty string for the version parameter. Any other version value will not
        produce any property values as no updates are generated.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedEntityStatus_enum'

  /Datacenter/{moId}/parent:
    get:
      tags: [Datacenter]
      summary: |2
        Parent of this entity.
      operationId: Datacenter_getParent
      description: |2
        Parent of this entity.
        
        This value is null for the root object and for
        *VirtualMachine* objects that are part of
        a *VirtualApp*.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            Refers instance of *ManagedEntity*.
          content:
            application/json:
              schema:
                nullable: true
                $ref: '#/components/schemas/ManagedObjectReference'

  /Datacenter/{moId}/permission:
    get:
      tags: [Datacenter]
      summary: |2
        List of permissions defined for this entity.
      operationId: Datacenter_getPermission
      description: |2
        List of permissions defined for this entity.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/Permission'

  /Datacenter/{moId}/recentTask:
    get:
      tags: [Datacenter]
      summary: |2
        The set of recent tasks operating on this managed entity.
      operationId: Datacenter_getRecentTask
      description: |2
        The set of recent tasks operating on this managed entity.
        
        This is a subset
        of *TaskManager.recentTask* belong to this entity. A task in this
        list could be in one of the four states: pending, running, success or error.
        
        This property can be used to deduce intermediate power states for
        a virtual machine entity. For example, if the current powerState is "poweredOn"
        and there is a running task performing the "suspend" operation, then the virtual
        machine's intermediate state might be described as "suspending."
        
        Most tasks (such as power operations) obtain exclusive access to the virtual
        machine, so it is unusual for this list to contain more than one running task.
        One exception, however, is the task of cloning a virtual machine.
        In releases after vSphere API 5.0, vSphere Servers might not
        generate property collector update notifications for this property.
        To obtain the latest value of the property, you can use
        PropertyCollector methods RetrievePropertiesEx or WaitForUpdatesEx.
        If you use the PropertyCollector.WaitForUpdatesEx method, specify
        an empty string for the version parameter. Any other version value will not
        produce any property values as no updates are generated.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            Refers instances of *Task*.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/ManagedObjectReference'

  /Datacenter/{moId}/tag:
    get:
      tags: [Datacenter]
      summary: |2
        The set of tags associated with this managed entity.
      operationId: Datacenter_getTag
      description: |2
        The set of tags associated with this managed entity.
        
        Experimental. Subject to change.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/Tag'

  /Datacenter/{moId}/triggeredAlarmState:
    get:
      tags: [Datacenter]
      summary: |2
        A set of alarm states for alarms triggered by this entity
        or by its descendants.
      operationId: Datacenter_getTriggeredAlarmState
      description: |2
        A set of alarm states for alarms triggered by this entity
        or by its descendants.
        
        Triggered alarms are propagated up the inventory hierarchy
        so that a user can readily tell when a descendant has triggered an alarm.
        In releases after vSphere API 5.0, vSphere Servers might not
        generate property collector update notifications for this property.
        To obtain the latest value of the property, you can use
        PropertyCollector methods RetrievePropertiesEx or WaitForUpdatesEx.
        If you use the PropertyCollector.WaitForUpdatesEx method, specify
        an empty string for the version parameter. Any other version value will not
        produce any property values as no updates are generated.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/AlarmState'

  /Datacenter/{moId}/value:
    get:
      tags: [Datacenter]
      summary: |2
        List of custom field values.
      operationId: Datacenter_getValue
      description: |2
        List of custom field values.
        
        Each value uses a key to associate
        an instance of a *CustomFieldStringValue* with
        a custom field definition.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/CustomFieldValue'

  /Datacenter/{moId}/vmFolder:
    get:
      tags: [Datacenter]
      summary: |2
        A reference to the folder hierarchy that contains *VirtualMachine*
        virtual machine templates (identified by the *VirtualMachineConfigInfo.template*
        property, and *VirtualApp* objects for this datacenter.
      operationId: Datacenter_getVmFolder
      description: |2
        A reference to the folder hierarchy that contains *VirtualMachine*
        virtual machine templates (identified by the *VirtualMachineConfigInfo.template*
        property, and *VirtualApp* objects for this datacenter.
        
        Note that a VirtualApp that is a child of a *ResourcePool*
        may also be visible in this folder. VirtualApp objects can be nested,
        but only the parent VirtualApp can be visible in the folder.
        
        This folder is guaranteed to exist.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            Refers instance of *Folder*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'

  /Datastore/{moId}/Destroy_Task:
    post:
      tags: [Datastore]
      summary: |2
        Destroys this object, deleting its contents and removing it from its parent
        folder (if any).
      operationId: Datastore_Destroy_Task
      description: |2
        Destroys this object, deleting its contents and removing it from its parent
        folder (if any).
        
        NOTE: The appropriate privilege must be held on the parent of the destroyed
        entity as well as the entity itself.
        This method can throw one of several exceptions. The exact set of exceptions
        depends on the kind of entity that is being removed. See comments for
        each entity for more information on destroy behavior.
        
        ***Required privileges:*** System.Read
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor the
            operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            Failure
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /Datastore/{moId}/DestroyDatastore:
    post:
      tags: [Datastore]
      summary: |2
        Removes a datastore.
      operationId: Datastore_DestroyDatastore
      deprecated: true
      description: |2
        Deprecated as of VI API 2.5 do not use this method. This method throws
        *ResourceInUse*. Datastores are automatically
        removed when no longer in use, so this method is unnecessary.
        
        Removes a datastore.
        
        A datastore can be removed only if it is not currently used
        by any host or virtual machine.
        
        ***Required privileges:*** Datastore.Delete
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***ResourceInUse***: if one or more hosts or virtual machines are configured
            to use the datastore.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResourceInUse'

  /Datastore/{moId}/DatastoreEnterMaintenanceMode:
    post:
      tags: [Datastore]
      summary: |2
        Puts the datastore in maintenance mode.
      operationId: Datastore_DatastoreEnterMaintenanceMode
      description: |2
        Puts the datastore in maintenance mode.
        
        While this task is running and when the
        datastore is in maintenance mode, no virtual machines can be powered on and no
        provisioning operations can be performed on the datastore. Once the call
        completes, it is safe to remove datastore without disrupting any virtual machines.
        
        The task completes once there are no virtual machines on the datastore
        and no provisioning operations in progress on the datastore. The operation does not
        directly initiate any operations to evacuate or power-down powered-on virtual machines.
        However, if the datastore is part of a storage pod with VMware Storage DRS enabled,
        Storage DRS provides migration recommendations to evacuate the virtual
        machines. If Storage DRS is in fully-automatic mode, these are automatically scheduled.
        The task is cancellable.
        This method returns a *StoragePlacementResult* object, which includes
        a *Task* object with which to monitor the operation, and a list of recommendations
        and faults generated by Storage DRS when it tries to evacuate the virtual machines
        on the datastore. The recommendations and faults fields are set only if the datastore is
        a part of a storage pod with Storage DRS enabled.
        
        ***Required privileges:*** Datastore.Config
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StoragePlacementResult'
        '500':
          description: |2
            ***InvalidState***: if the datastore is already in maintenance mode.
            
            ***RequestCanceled***: if the operation is canceled.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InvalidState'

  /Datastore/{moId}/DatastoreExitMaintenanceMode_Task:
    post:
      tags: [Datastore]
      summary: |2
        Takes the datastore out of maintenance mode.
      operationId: Datastore_DatastoreExitMaintenanceMode_Task
      description: |2
        Takes the datastore out of maintenance mode.
        
        The task is cancellable.
        
        ***Required privileges:*** Datastore.Config
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor the
            operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***InvalidState***: if the datastore is not in maintenance mode.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InvalidState'

  /Datastore/{moId}/IsClusteredVmdkEnabled:
    post:
      tags: [Datastore]
      summary: |2
        Check whether clustered VMDK feature is enabled on this datastore.
      operationId: Datastore_IsClusteredVmdkEnabled
      description: |2
        Check whether clustered VMDK feature is enabled on this datastore.
        
        ***Required privileges:*** System.Read
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            true if clustered VMDK feature is enabled. false otherwise.
          content:
            application/json:
              schema:
                type: boolean
        '500':
          description: |2
            ***InvalidDatastore***: if the given datastore is not valid.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InvalidDatastore'

  /Datastore/{moId}/RefreshDatastore:
    post:
      tags: [Datastore]
      summary: |2
        Explicitly refreshes free-space and capacity values in *Datastore.summary*
        and *Datastore.info*.
      operationId: Datastore_RefreshDatastore
      description: |2
        Explicitly refreshes free-space and capacity values in *Datastore.summary*
        and *Datastore.info*.
        
        ***Required privileges:*** System.Read
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***NotFound***: if the datastore or its underlying volume is not found.
            
            ***HostConfigFault***: if unable to get the current system information
            for the datastore.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /Datastore/{moId}/RefreshDatastoreStorageInfo:
    post:
      tags: [Datastore]
      summary: |2
        Refreshes all storage related information including free-space, capacity,
        and detailed usage of virtual machines.
      operationId: Datastore_RefreshDatastoreStorageInfo
      description: |2
        Refreshes all storage related information including free-space, capacity,
        and detailed usage of virtual machines.
        
        Updated values are available
        in *Datastore.summary* and *Datastore.info*.
        
        ***Required privileges:*** System.Read
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '204':
          description: |2
            No Content

  /Datastore/{moId}/Reload:
    post:
      tags: [Datastore]
      summary: |2
        Reload the entity state.
      operationId: Datastore_Reload
      description: |2
        Reload the entity state.
        
        Clients only need to call this method
        if they changed some external state that affects the service
        without using the Web service interface to perform the change.
        For example, hand-editing a virtual machine configuration file
        affects the configuration of the associated virtual machine but
        the service managing the virtual machine might not monitor the
        file for changes. In this case, after such an edit, a client
        would call "reload" on the associated virtual machine to ensure
        the service and its clients have current data for the
        virtual machine.
        
        ***Required privileges:*** System.Read
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '204':
          description: |2
            No Content

  /Datastore/{moId}/Rename_Task:
    post:
      tags: [Datastore]
      summary: |2
        Renames this managed entity.
      operationId: Datastore_Rename_Task
      description: |2
        Renames this managed entity.
        
        Any % (percent) character used in this name parameter
        must be escaped, unless it is used to start an escape
        sequence. Clients may also escape any other characters in
        this name parameter.
        
        See also *ManagedEntity.name*.
        
        ***Required privileges:*** Datastore.Rename
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RenameRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor the
            operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***DuplicateName***: If another object in the same folder has the target name.
            
            ***InvalidName***: If the new name is not a valid entity name.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /Datastore/{moId}/RenameDatastore:
    post:
      tags: [Datastore]
      summary: |2
        Renames a datastore.
      operationId: Datastore_RenameDatastore
      deprecated: true
      description: |2
        Deprecated as of vSphere API 4.0, use *ManagedEntity.Rename_Task*.
        
        Renames a datastore.
        
        ***Required privileges:*** Datastore.Rename
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RenameDatastoreRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***DuplicateName***: if another datastore in this datacenter already
            has the same name.
            
            ***InvalidName***: if the name is not a valid datastore name.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /Datastore/{moId}/setCustomValue:
    post:
      tags: [Datastore]
      summary: |2
        Assigns a value to a custom field.
      operationId: Datastore_setCustomValue
      description: |2
        Assigns a value to a custom field.
        
        The setCustomValue method requires
        whichever updatePrivilege is defined as one of the
        *CustomFieldDef.fieldInstancePrivileges*
        for the CustomFieldDef whose value is being changed.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/setCustomValueRequestType'
      responses:
        '204':
          description: |2
            No Content

  /Datastore/{moId}/UpdateVVolVirtualMachineFiles_Task:
    post:
      tags: [Datastore]
      summary: |2
        Scan a VVol storage container to update file paths and objectID pointers
        embedded in virtual machine files on a given storage container.
      operationId: Datastore_UpdateVVolVirtualMachineFiles_Task
      description: |2
        Scan a VVol storage container to update file paths and objectID pointers
        embedded in virtual machine files on a given storage container.
        
        ***Required privileges:*** Datastore.UpdateVirtualMachineFiles
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateVVolVirtualMachineFilesRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor
            the operation. The *TaskInfo.result* property in the
            *Task* contains a
            *VVolVmConfigFileUpdateResult* object, which
            provides a list of successfully updated virtual machine
            config files and a list of virtual machine config files
            that failed to update, for all virtual machine config files
            failed over onto the VVol storage container from the source
            containers in the failover pair.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***NotSupported***: if all hosts attached to this datastore do not
            support updating VVol Virtual Machine Files.
            
            ***PlatformConfigFault***: if any error related to platform
            occurs during the operation.
            
            ***TaskInProgress***: if the datastore is busy, for example, while
            another task is updating the datastore.
            
            ***InvalidDatastore***: if the operation cannot be performed due to
            some error with the datastore.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MethodFault'

  /Datastore/{moId}/UpdateVirtualMachineFiles_Task:
    post:
      tags: [Datastore]
      summary: |2
        Update file paths embedded in virtual machine files on the datastore.
      operationId: Datastore_UpdateVirtualMachineFiles_Task
      description: |2
        Update file paths embedded in virtual machine files on the datastore.
        
        This can be called after the file system corresponding to the datastore
        has been resignatured or remounted. Any MountPathDatastorePairs
        where the new path is the same as the original file path will be ignored.
        
        This method is only supported by vCenter server. Also, this method requires
        that the datastore is *accessible* from
        at least one host (ESX version 4.1 or above) in vCenter server.
        
        While this operation is in progress, it is important that users do not
        initiate any operations that might read or write to any files on the
        datastore, such as registering a virtual machine with files residing
        on the datastore, or performing any virtual disk operations on any files
        in the datastore. These operations can potentially cause spurious file
        update failures, while at the same time they can prevent virtual machine
        files from being updated correctly.
        
        If users intend to update multiple datastores using this method, it is
        strongly advised that the users do not initiate any operations that
        might read or write to files on any of the datastores, until all of
        them have been updated. The files of a single virtual machine can
        reside on multiple datastores, and thus all the involved datastores
        should be updated, before the virtual machine is considered updated
        completely.
        
        ***Required privileges:*** Datastore.UpdateVirtualMachineFiles
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateVirtualMachineFilesRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor the
            operation. The *TaskInfo.result* property in the
            *Task* contains an *UpdateVirtualMachineFilesResult*
            object, upon success, which is a list of virtual machines files the
            server has attempted to update but failed to update. When there are too
            many failed files, only a subset of failed files will be returned.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***InvalidArgument***: if old mount path is mapped to more than one datastores,
            or if any of the datastore being mapped can not be found.
            
            ***NotSupported***: if all hosts attached to this datastore do not support
            updating virtual machine files.
            
            ***ResourceInUse***: if there exists a registered virtual machine in the volume.
            
            ***PlatformConfigFault***: if any error related to platform
            occurs during the operation.
            
            ***TaskInProgress***: if the datastore is busy, for example, while another task
            is updating the datastore after volume resignaturing
            or remounting.
            
            ***InvalidDatastore***: if the operation cannot be performed due to some error
            with the datastore; typically a specific subclass
            of the fault is reported.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /Datastore/{moId}/alarmActionsEnabled:
    get:
      tags: [Datastore]
      summary: |2
        Whether alarm actions are enabled for this entity.
      operationId: Datastore_getAlarmActionsEnabled
      description: |2
        Whether alarm actions are enabled for this entity.
        
        True if enabled; false otherwise.
        
        ***Required privileges:*** System.Read
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: boolean

  /Datastore/{moId}/availableField:
    get:
      tags: [Datastore]
      summary: |2
        List of custom field definitions that are valid for the object's type.
      operationId: Datastore_getAvailableField
      description: |2
        List of custom field definitions that are valid for the object's type.
        
        The fields are sorted by *CustomFieldDef.name*.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/CustomFieldDef'

  /Datastore/{moId}/browser:
    get:
      tags: [Datastore]
      summary: |2
        DatastoreBrowser used to browse this datastore.
      operationId: Datastore_getBrowser
      description: |2
        DatastoreBrowser used to browse this datastore.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            Refers instance of *HostDatastoreBrowser*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'

  /Datastore/{moId}/capability:
    get:
      tags: [Datastore]
      summary: |2
        Capabilities of this datastore.
      operationId: Datastore_getCapability
      description: |2
        Capabilities of this datastore.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DatastoreCapability'

  /Datastore/{moId}/configIssue:
    get:
      tags: [Datastore]
      summary: |2
        Current configuration issues that have been detected for this entity.
      operationId: Datastore_getConfigIssue
      description: |2
        Current configuration issues that have been detected for this entity.
        
        Typically,
        these issues have already been logged as events. The entity stores these
        events as long as they are still current. The
        *configStatus* property provides an overall status
        based on these events.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/Event'

  /Datastore/{moId}/configStatus:
    get:
      tags: [Datastore]
      summary: |2
        The configStatus indicates whether or not the system has detected a configuration
        issue involving this entity.
      operationId: Datastore_getConfigStatus
      description: |2
        The configStatus indicates whether or not the system has detected a configuration
        issue involving this entity.
        
        For example, it might have detected a
        duplicate IP address or MAC address, or a host in a cluster
        might be out of compliance. The meanings of the configStatus values are:
        - red: A problem has been detected involving the entity.
        - yellow: A problem is about to occur or a transient condition
          has occurred (For example, reconfigure fail-over policy).
        - green: No configuration issues have been detected.
        - gray: The configuration status of the entity is not being monitored.
          
        A green status indicates only that a problem has not been detected;
        it is not a guarantee that the entity is problem-free.
        
        The *configIssue* property contains a list of the
        problems that have been detected.
        In releases after vSphere API 5.0, vSphere Servers might not
        generate property collector update notifications for this property.
        To obtain the latest value of the property, you can use
        PropertyCollector methods RetrievePropertiesEx or WaitForUpdatesEx.
        If you use the PropertyCollector.WaitForUpdatesEx method, specify
        an empty string for the version parameter. Any other version value will not
        produce any property values as no updates are generated.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedEntityStatus_enum'

  /Datastore/{moId}/customValue:
    get:
      tags: [Datastore]
      summary: |2
        Custom field values.
      operationId: Datastore_getCustomValue
      description: |2
        Custom field values.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/CustomFieldValue'

  /Datastore/{moId}/declaredAlarmState:
    get:
      tags: [Datastore]
      summary: |2
        A set of alarm states for alarms that apply to this managed entity.
      operationId: Datastore_getDeclaredAlarmState
      description: |2
        A set of alarm states for alarms that apply to this managed entity.
        
        The set includes alarms defined on this entity
        and alarms inherited from the parent entity,
        or from any ancestors in the inventory hierarchy.
        
        Alarms are inherited if they can be triggered by this entity or its descendants.
        This set does not include alarms that are defined on descendants of this entity.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/AlarmState'

  /Datastore/{moId}/disabledMethod:
    get:
      tags: [Datastore]
      summary: |2
        List of operations that are disabled, given the current runtime
        state of the entity.
      operationId: Datastore_getDisabledMethod
      description: |2
        List of operations that are disabled, given the current runtime
        state of the entity.
        
        For example, a power-on operation always fails if a
        virtual machine is already powered on. This list can be used by clients to
        enable or disable operations in a graphical user interface.
        
        Note: This list is determined by the current runtime state of an entity,
        not by its permissions.
        
        This list may include the following operations for a HostSystem:
        - *HostSystem.EnterMaintenanceMode_Task*
        - *HostSystem.ExitMaintenanceMode_Task*
        - *HostSystem.RebootHost_Task*
        - *HostSystem.ShutdownHost_Task*
        - *HostSystem.ReconnectHost_Task*
        - *HostSystem.DisconnectHost_Task*
          
        This list may include the following operations for a VirtualMachine:
        - *VirtualMachine.AnswerVM*
        - *ManagedEntity.Rename_Task*
        - *VirtualMachine.CloneVM_Task*
        - *VirtualMachine.PowerOffVM_Task*
        - *VirtualMachine.PowerOnVM_Task*
        - *VirtualMachine.SuspendVM_Task*
        - *VirtualMachine.ResetVM_Task*
        - *VirtualMachine.ReconfigVM_Task*
        - *VirtualMachine.RelocateVM_Task*
        - *VirtualMachine.MigrateVM_Task*
        - *VirtualMachine.CustomizeVM_Task*
        - *VirtualMachine.ShutdownGuest*
        - *VirtualMachine.StandbyGuest*
        - *VirtualMachine.RebootGuest*
        - *VirtualMachine.CreateSnapshot_Task*
        - *VirtualMachine.RemoveAllSnapshots_Task*
        - *VirtualMachine.RevertToCurrentSnapshot_Task*
        - *VirtualMachine.MarkAsTemplate*
        - *VirtualMachine.MarkAsVirtualMachine*
        - *VirtualMachine.ResetGuestInformation*
        - *VirtualMachine.MountToolsInstaller*
        - *VirtualMachine.UnmountToolsInstaller*
        - *ManagedEntity.Destroy_Task*
        - *VirtualMachine.UpgradeVM_Task*
        - *VirtualMachine.ExportVm*
          
        This list may include the following operations for a ResourcePool:
        - *ResourcePool.ImportVApp*
        - *ResourcePool.CreateChildVM_Task*
        - *ResourcePool.UpdateConfig*
        - *Folder.CreateVM_Task*
        - *ManagedEntity.Destroy_Task*
        - *ManagedEntity.Rename_Task*
          
        This list may include the following operations for a VirtualApp:
        - *ManagedEntity.Destroy_Task*
        - *VirtualApp.CloneVApp_Task*
        - *VirtualApp.unregisterVApp_Task*
        - *VirtualApp.ExportVApp*
        - *VirtualApp.PowerOnVApp_Task*
        - *VirtualApp.PowerOffVApp_Task*
        - *VirtualApp.UpdateVAppConfig*
          
        In releases after vSphere API 5.0, vSphere Servers might not
        generate property collector update notifications for this property.
        To obtain the latest value of the property, you can use
        PropertyCollector methods RetrievePropertiesEx or WaitForUpdatesEx.
        If you use the PropertyCollector.WaitForUpdatesEx method, specify
        an empty string for the version parameter. Any other version value will not
        produce any property values as no updates are generated.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  type: string

  /Datastore/{moId}/effectiveRole:
    get:
      tags: [Datastore]
      summary: |2
        Access rights the current session has to this entity.
      operationId: Datastore_getEffectiveRole
      description: |2
        Access rights the current session has to this entity.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  type: integer
                  format: int32

  /Datastore/{moId}/host:
    get:
      tags: [Datastore]
      summary: |2
        Hosts attached to this datastore.
      operationId: Datastore_getHost
      description: |2
        Hosts attached to this datastore.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/DatastoreHostMount'

  /Datastore/{moId}/info:
    get:
      tags: [Datastore]
      summary: |2
        Specific information about the datastore.
      operationId: Datastore_getInfo
      description: |2
        Specific information about the datastore.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DatastoreInfo'

  /Datastore/{moId}/iormConfiguration:
    get:
      tags: [Datastore]
      summary: |2
        Configuration of storage I/O resource management for the datastore.
      operationId: Datastore_getIormConfiguration
      deprecated: true
      description: |2
        Deprecated as of vSphere8.0 U3, and there is no replacement for it.
        
        Configuration of storage I/O resource management for the datastore.
        
        Currently we only support storage I/O resource management on VMFS volumes
        of a datastore.
        
        This configuration may not be available if the datastore is not accessible
        from any host, or if the datastore does not have VMFS volume.
        The configuration can be modified using the method
        *StorageResourceManager.ConfigureDatastoreIORM_Task*
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                $ref: '#/components/schemas/StorageIORMInfo'

  /Datastore/{moId}/name:
    get:
      tags: [Datastore]
      summary: |2
        Name of this entity, unique relative to its parent.
      operationId: Datastore_getName
      description: |2
        Name of this entity, unique relative to its parent.
        
        Any / (slash), \\ (backslash), character used in this
        name element will be escaped. Similarly, any % (percent) character used in
        this name element will be escaped, unless it is used to start an escape
        sequence. A slash is escaped as %2F or %2f. A backslash is escaped as %5C or
        %5c, and a percent is escaped as %25.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                type: string

  /Datastore/{moId}/overallStatus:
    get:
      tags: [Datastore]
      summary: |2
        General health of this managed entity.
      operationId: Datastore_getOverallStatus
      description: |2
        General health of this managed entity.
        
        The overall status of the managed entity is computed as the worst status
        among its alarms and the configuration issues detected on the entity.
        The status is reported as one of the following values:
        - red: The entity has alarms or configuration issues with a red status.
        - yellow: The entity does not have alarms or configuration issues with a
          red status, and has at least one with a yellow status.
        - green: The entity does not have alarms or configuration issues with a
          red or yellow status, and has at least one with a green status.
        - gray: All of the entity's alarms have a gray status and the
          configuration status of the entity is not being monitored.
          
        In releases after vSphere API 5.0, vSphere Servers might not
        generate property collector update notifications for this property.
        To obtain the latest value of the property, you can use
        PropertyCollector methods RetrievePropertiesEx or WaitForUpdatesEx.
        If you use the PropertyCollector.WaitForUpdatesEx method, specify
        an empty string for the version parameter. Any other version value will not
        produce any property values as no updates are generated.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedEntityStatus_enum'

  /Datastore/{moId}/parent:
    get:
      tags: [Datastore]
      summary: |2
        Parent of this entity.
      operationId: Datastore_getParent
      description: |2
        Parent of this entity.
        
        This value is null for the root object and for
        *VirtualMachine* objects that are part of
        a *VirtualApp*.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            Refers instance of *ManagedEntity*.
          content:
            application/json:
              schema:
                nullable: true
                $ref: '#/components/schemas/ManagedObjectReference'

  /Datastore/{moId}/permission:
    get:
      tags: [Datastore]
      summary: |2
        List of permissions defined for this entity.
      operationId: Datastore_getPermission
      description: |2
        List of permissions defined for this entity.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/Permission'

  /Datastore/{moId}/recentTask:
    get:
      tags: [Datastore]
      summary: |2
        The set of recent tasks operating on this managed entity.
      operationId: Datastore_getRecentTask
      description: |2
        The set of recent tasks operating on this managed entity.
        
        This is a subset
        of *TaskManager.recentTask* belong to this entity. A task in this
        list could be in one of the four states: pending, running, success or error.
        
        This property can be used to deduce intermediate power states for
        a virtual machine entity. For example, if the current powerState is "poweredOn"
        and there is a running task performing the "suspend" operation, then the virtual
        machine's intermediate state might be described as "suspending."
        
        Most tasks (such as power operations) obtain exclusive access to the virtual
        machine, so it is unusual for this list to contain more than one running task.
        One exception, however, is the task of cloning a virtual machine.
        In releases after vSphere API 5.0, vSphere Servers might not
        generate property collector update notifications for this property.
        To obtain the latest value of the property, you can use
        PropertyCollector methods RetrievePropertiesEx or WaitForUpdatesEx.
        If you use the PropertyCollector.WaitForUpdatesEx method, specify
        an empty string for the version parameter. Any other version value will not
        produce any property values as no updates are generated.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            Refers instances of *Task*.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/ManagedObjectReference'

  /Datastore/{moId}/summary:
    get:
      tags: [Datastore]
      summary: |2
        Global properties of the datastore.
      operationId: Datastore_getSummary
      description: |2
        Global properties of the datastore.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DatastoreSummary'

  /Datastore/{moId}/tag:
    get:
      tags: [Datastore]
      summary: |2
        The set of tags associated with this managed entity.
      operationId: Datastore_getTag
      description: |2
        The set of tags associated with this managed entity.
        
        Experimental. Subject to change.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/Tag'

  /Datastore/{moId}/triggeredAlarmState:
    get:
      tags: [Datastore]
      summary: |2
        A set of alarm states for alarms triggered by this entity
        or by its descendants.
      operationId: Datastore_getTriggeredAlarmState
      description: |2
        A set of alarm states for alarms triggered by this entity
        or by its descendants.
        
        Triggered alarms are propagated up the inventory hierarchy
        so that a user can readily tell when a descendant has triggered an alarm.
        In releases after vSphere API 5.0, vSphere Servers might not
        generate property collector update notifications for this property.
        To obtain the latest value of the property, you can use
        PropertyCollector methods RetrievePropertiesEx or WaitForUpdatesEx.
        If you use the PropertyCollector.WaitForUpdatesEx method, specify
        an empty string for the version parameter. Any other version value will not
        produce any property values as no updates are generated.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/AlarmState'

  /Datastore/{moId}/value:
    get:
      tags: [Datastore]
      summary: |2
        List of custom field values.
      operationId: Datastore_getValue
      description: |2
        List of custom field values.
        
        Each value uses a key to associate
        an instance of a *CustomFieldStringValue* with
        a custom field definition.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/CustomFieldValue'

  /Datastore/{moId}/vm:
    get:
      tags: [Datastore]
      summary: |2
        Virtual machines stored on this datastore.
      operationId: Datastore_getVm
      description: |2
        Virtual machines stored on this datastore.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            Refers instances of *VirtualMachine*.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/ManagedObjectReference'

  /DatastoreNamespaceManager/{moId}/ConvertNamespacePathToUuidPath:
    post:
      tags: [DatastoreNamespaceManager]
      summary: |2
        Convert the namespace path to the namespace UUID path.
      operationId: DatastoreNamespaceManager_ConvertNamespacePathToUuidPath
      description: |2
        Convert the namespace path to the namespace UUID path.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ConvertNamespacePathToUuidPathRequestType'
      responses:
        '200':
          description: |2
            the URL path with namespace object UUID, of the form
            > \[ds://\]/vmfs/volumes/\[_datastore-uuid_\]/\[_directory-uuid_\]/...
            >
          content:
            application/json:
              schema:
                type: string
        '500':
          description: |2
            ***InvalidDatastore***: if the given datastore is not supported by
            the DatastoreNamespaceManager
            
            ***InvalidDatastorePath***: if the given path is not a top-level
            directory
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InvalidDatastore'

  /DatastoreNamespaceManager/{moId}/CreateDirectory:
    post:
      tags: [DatastoreNamespaceManager]
      summary: |2
        Creates a top-level directory on the given datastore, using the given
        user display name hint and opaque storage policy.
      operationId: DatastoreNamespaceManager_CreateDirectory
      description: |2
        Creates a top-level directory on the given datastore, using the given
        user display name hint and opaque storage policy.
        
        The optional given display name hint may be used by the underlying
        storage system for user display purposes, but it may not be relied
        upon for future directory references.
        
        Clients must use the returned stable path for future directory
        references.
        
        See also *DatastoreNamespaceManager.DeleteDirectory*.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateDirectoryRequestType'
      responses:
        '200':
          description: |2
            a stable vmfs path which may be used for future
            reference of the created directory, of the form
            > /vmfs/volumes/\[_datastore-uuid_\]/\[_directory-uuid_\]
            >
          content:
            application/json:
              schema:
                type: string
        '500':
          description: |2
            ***CannotCreateFile***: if a general system error occurred while creating
            directory on the datastore
            
            ***FileAlreadyExists***: if the given directory already exists
            
            ***InvalidDatastore***: if the given datastore is not supported by
            the DatastoreNamespaceManage
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /DatastoreNamespaceManager/{moId}/DeleteDirectory:
    post:
      tags: [DatastoreNamespaceManager]
      summary: |2
        Deletes the given top-level directory from a datastore.
      operationId: DatastoreNamespaceManager_DeleteDirectory
      description: |2
        Deletes the given top-level directory from a datastore.
        
        The top-level directory must be a full path of the form
        > /vmfs/volumes/\[_datastore-uuid_\]/\[_directory-uuid_\]
        > 
        
        as returned by
        *DatastoreNamespaceManager.CreateDirectory*.
        
        Requires Datastore.Config privilege on the datastore.
        
        See also *DatastoreNamespaceManager.CreateDirectory*.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DeleteDirectoryRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***FileNotFound***: if the given directory can not be found
            
            ***FileFault***: if a generic system error happened.
            
            ***InvalidDatastore***: if the given datastore is not supported by
            the DatastoreNamespaceManager
            
            ***InvalidDatastorePath***: if the given path is not a top-level directory
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /DatastoreNamespaceManager/{moId}/IncreaseDirectorySize:
    post:
      tags: [DatastoreNamespaceManager]
      summary: |2
        Increase size of the given top-level directory to the given size on
        vSAN backed object storage.
      operationId: DatastoreNamespaceManager_IncreaseDirectorySize
      description: |2
        Increase size of the given top-level directory to the given size on
        vSAN backed object storage.
        
        The top-level directory must be a full path in the form
        > /vmfs/volumes/\[_datastore-uuid_\]/\[_directory-uuid_\]
        > 
        
        as returned by
        *DatastoreNamespaceManager.CreateDirectory*.
        
        Requires Datastore.Config privilege on the datastore.
        
        See also *DatastoreNamespaceManager.CreateDirectory*.
        
        ***Since:*** vSphere API Release 8.0.1.0
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/IncreaseDirectorySizeRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***FileFault***: if a generic system error happened
            
            ***FileNotFound***: if the given directory can not be found
            
            ***InvalidDatastore***: if the given datastore is not supported by
            the DatastoreNamespaceManager
            
            ***NotSupported***: if resize is not supported on the directory
            
            ***InvalidArgument***: if passed size is not valid
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MethodFault'

  /DatastoreNamespaceManager/{moId}/QueryDirectoryInfo:
    post:
      tags: [DatastoreNamespaceManager]
      summary: |2
        Query directory information of the given top-level directory on vSAN
        backed object storage.
      operationId: DatastoreNamespaceManager_QueryDirectoryInfo
      description: |2
        Query directory information of the given top-level directory on vSAN
        backed object storage.
        
        The top-level directory must be a full path in the form
        > /vmfs/volumes/\[_datastore-uuid_\]/\[_directory-uuid_\]
        > 
        
        as returned by
        *DatastoreNamespaceManager.CreateDirectory*.
        
        See also *DatastoreNamespaceManager.CreateDirectory*.
        
        ***Since:*** vSphere API Release 8.0.1.0
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QueryDirectoryInfoRequestType'
      responses:
        '200':
          description: |2
            directory information defined by *DatastoreNamespaceManagerDirectoryInfo*
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DatastoreNamespaceManagerDirectoryInfo'
        '500':
          description: |2
            ***FileFault***: if a generic system error happened
            
            ***FileNotFound***: if the given directory can not be found
            
            ***InvalidDatastore***: if the given datastore is not supported by
            the DatastoreNamespaceManager
            
            ***NotSupported***: if query is not supported on the directory
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MethodFault'

  /DiagnosticManager/{moId}/EmitSyslogMark:
    post:
      tags: [DiagnosticManager]
      summary: |2
        Issue a "mark" to syslog and the audit trail.
      operationId: DiagnosticManager_EmitSyslogMark
      description: |2
        Issue a "mark" to syslog and the audit trail.
        
        The specified message string will be written to syslog and the audit
        trail. The "mark" audit record will contain the message string in
        its comment parameter.
        
        ***Since:*** vSphere API Release 8.0.0.2
        
        ***Required privileges:*** Global.Diagnostics
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EmitSyslogMarkRequestType'
      responses:
        '204':
          description: |2
            No Content

  /DiagnosticManager/{moId}/FetchAuditRecords:
    post:
      tags: [DiagnosticManager]
      summary: |2
        Retrieve audit records from their storage on the specified host.
      operationId: DiagnosticManager_FetchAuditRecords
      description: |2
        Retrieve audit records from their storage on the specified host.
        
        Audit records are stored on the host in a (large) FIFO. The FIFO is
        continuously being written to due to system activities. It is the
        responsibility of the caller to issue reads fast enough to keep ahead
        of the write traffic.
        
        ***Since:*** vSphere API Release 7.0.3.0
        
        ***Required privileges:*** Global.Diagnostics
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/FetchAuditRecordsRequestType'
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DiagnosticManagerAuditRecordResult'
        '500':
          description: |2
            ***InvalidState***: The reader has failed to keep up with the write
            data rate. Data has been lost. It is up to the
            caller to decide how to react to this. One
            possibility is to "start again from the beginning"
            with a call with no token.
            
            ***SystemError***: One more more errors (on the host) have occurred.
            One or more error strings are available to detail
            the issues.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MethodFault'

  /DiagnosticManager/{moId}/BrowseDiagnosticLog:
    post:
      tags: [DiagnosticManager]
      summary: |2
        Returns part of a log file.
      operationId: DiagnosticManager_BrowseDiagnosticLog
      description: |2
        Returns part of a log file.
        
        Log entries are always returned chronologically, typically with the
        newest event last.
        
        ***Required privileges:*** Global.Diagnostics
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BrowseDiagnosticLogRequestType'
      responses:
        '200':
          description: |2
            A LogHeader that includes the log lines. Sometimes fewer log
            lines are returned than were requested. For example, fewer lines
            are returned than expected if the client requests lines that do
            not exist or if the server limits the number of lines that it
            returns. If zero lines are returned, then the end of the log
            file may have been reached.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DiagnosticManagerLogHeader'
        '500':
          description: |2
            ***InvalidArgument***: if the key refers to a nonexistent log file or
            the log file is not of type "plain".
            
            ***CannotAccessFile***: if the key refers to a file that cannot be
            accessed at the present time.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CannotAccessFile'

  /DiagnosticManager/{moId}/GenerateLogBundles_Task:
    post:
      tags: [DiagnosticManager]
      summary: |2
        Instructs the server to generate diagnostic bundles.
      operationId: DiagnosticManager_GenerateLogBundles_Task
      deprecated: true
      description: |2
        Deprecated since version 5.0 M/N it is recommended to use the CGI
        interface for the host bundles, use the address instead:
        `https://<<ESX_name>>/cgi-bin/vm-support.cgi`
        for the VC bundles, use
        `https://<<VC_name>>/appliance/support-bundle`
        
        The caller can download the bundles using an HTTP GET operation
        for each returned URL. Bundles are usually available for at least 24
        hours, but the caller should not assume that the returned URLs are
        valid indefinitely. Servers often automatically delete generated
        diagnostic bundles after some given period of time.
        
        Instructs the server to generate diagnostic bundles.
        
        A diagnostic bundle includes log files and other configuration
        information that can be used to investigate potential server issues.
        Virtual machine and guest operation system state is excluded from
        diagnostic bundles.
        
        ***Required privileges:*** Global.Diagnostics
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GenerateLogBundlesRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to
            monitor the operation. Upon success, the
            *info.result* property in the
            *Task* contains a list of
            *DiagnosticManagerBundleInfo* objects for each
            diagnostic bundle that has been generated.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***LogBundlingFailed***: if generation of support bundle failed.
            
            ***TaskInProgress***: if there is a pending request to generate a
            support bundle.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /DiagnosticManager/{moId}/QueryDescriptions:
    post:
      tags: [DiagnosticManager]
      summary: |2
        Returns a list of diagnostic files for a given system.
      operationId: DiagnosticManager_QueryDescriptions
      description: |2
        Returns a list of diagnostic files for a given system.
        
        ***Required privileges:*** Global.Diagnostics
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QueryDescriptionsRequestType'
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/DiagnosticManagerLogDescriptor'

  /DistributedVirtualPortgroup/{moId}/Destroy_Task:
    post:
      tags: [DistributedVirtualPortgroup]
      summary: |2
        Destroys this object, deleting its contents and removing it from its parent
        folder (if any).
      operationId: DistributedVirtualPortgroup_Destroy_Task
      description: |2
        Destroys this object, deleting its contents and removing it from its parent
        folder (if any).
        
        NOTE: The appropriate privilege must be held on the parent of the destroyed
        entity as well as the entity itself.
        This method can throw one of several exceptions. The exact set of exceptions
        depends on the kind of entity that is being removed. See comments for
        each entity for more information on destroy behavior.
        
        ***Required privileges:*** DVPortgroup.Delete
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor the
            operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            Failure
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /DistributedVirtualPortgroup/{moId}/DestroyNetwork:
    post:
      tags: [DistributedVirtualPortgroup]
      summary: |2
        Removes a network.
      operationId: DistributedVirtualPortgroup_DestroyNetwork
      deprecated: true
      description: |2
        Deprecated as of VI API 2.5 do not use this method. This method throws
        *ResourceInUse*. Networks are automatically
        removed when no longer in use, so this method is unnecessary.
        
        Removes a network.
        
        A network can be removed only if it is not used by any host or
        virtual machine.
        
        ***Required privileges:*** Network.Delete
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***ResourceInUse***: if one or more hosts or virtual machines are configured
            to use the network.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResourceInUse'

  /DistributedVirtualPortgroup/{moId}/ReconfigureDVPortgroup_Task:
    post:
      tags: [DistributedVirtualPortgroup]
      summary: |2
        Reconfigures one or more distributed virtual portgroups.
      operationId: DistributedVirtualPortgroup_ReconfigureDVPortgroup_Task
      description: |2
        Reconfigures one or more distributed virtual portgroups.
        
        You can use this method to set portgroup properties or
        to reset the portgroup to a previous state.
        
        **Reconfiguring a Standard Distributed Virtual Portgroup**
        
        To reconfigure a *DistributedVirtualPortgroup*,
        use a *DVPortgroupConfigSpec*
        to set the portgroup properties.
        
        **Reconfiguring a Portgroup Associated With a VMware Distributed Virtual Switch**
        
        If you use a *VmwareDistributedVirtualSwitch*,
        you can perform the following portgroup reconfiguration:
        - Use a *DVPortgroupConfigSpec*
          to set the portgroup properties.
        - Use the *DVPortgroupConfigSpec*
          returned by *DistributedVirtualPortgroup.DVPortgroupRollback_Task*
          to reset the portgroup to a previous state.
          
        The following privileges are required to reconfigure a portgroup.
        - DVPortgroup.PolicyOp if you are changing the policy of the portgroup.
        - DVPortgroup.ScopeOp if you are changing the scope of the portgroup.
        - DVPortgroup.Modify for anything else.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ReconfigureDVPortgroupRequestType'
      responses:
        '200':
          description: |2
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***DvsFault***: if spec is not valid.
            
            ***NotSupported***: if the spec includes settings for any VDS feature
            that is not supported on this switch.
            
            ***DvsNotAuthorized***: if login-session's extension key does not match
            the switch's configured
            *DVSConfigInfo.extensionKey*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /DistributedVirtualPortgroup/{moId}/Reload:
    post:
      tags: [DistributedVirtualPortgroup]
      summary: |2
        Reload the entity state.
      operationId: DistributedVirtualPortgroup_Reload
      description: |2
        Reload the entity state.
        
        Clients only need to call this method
        if they changed some external state that affects the service
        without using the Web service interface to perform the change.
        For example, hand-editing a virtual machine configuration file
        affects the configuration of the associated virtual machine but
        the service managing the virtual machine might not monitor the
        file for changes. In this case, after such an edit, a client
        would call "reload" on the associated virtual machine to ensure
        the service and its clients have current data for the
        virtual machine.
        
        ***Required privileges:*** System.Read
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '204':
          description: |2
            No Content

  /DistributedVirtualPortgroup/{moId}/Rename_Task:
    post:
      tags: [DistributedVirtualPortgroup]
      summary: |2
        Renames this managed entity.
      operationId: DistributedVirtualPortgroup_Rename_Task
      description: |2
        Renames this managed entity.
        
        Any % (percent) character used in this name parameter
        must be escaped, unless it is used to start an escape
        sequence. Clients may also escape any other characters in
        this name parameter.
        
        See also *ManagedEntity.name*.
        
        ***Required privileges:*** DVPortgroup.Modify
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RenameRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor the
            operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***DuplicateName***: If another object in the same folder has the target name.
            
            ***InvalidName***: If the new name is not a valid entity name.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /DistributedVirtualPortgroup/{moId}/DVPortgroupRollback_Task:
    post:
      tags: [DistributedVirtualPortgroup]
      summary: |2
        This method determines if the portgroup configuration has changed.
      operationId: DistributedVirtualPortgroup_DVPortgroupRollback_Task
      description: |2
        This method determines if the portgroup configuration has changed.
        
        If it has changed, the method returns a
        *DVPortgroupConfigSpec*.
        Use the *DistributedVirtualPortgroup.ReconfigureDVPortgroup_Task* method
        to apply the rollback configuration to the portgroup. You can use the
        rollback method only on a portgroup that is associated with a
        *VmwareDistributedVirtualSwitch*.
        - If you specify the <code>entityBackup</code> parameter, the returned
          configuration specification represents the exported portgroup configuration.
          If the <code>entityBackup</code> matches the current portgroup
          configuration, the method does not return a configuration specification.
        - If <code>entityBackup</code> is not specified, the returned configuration
          specification represents a previous state of the portgroup, if available.
          When you use a VMware distributed virtual switch, each time you reconfigure
          the switch, the Server saves the switch configuration before applying the updates.
          If the vCenter Server is restarted, the saved configuration is not preserved
          and the method does not return a configuration specification.
          
        To use the rollback method, you must have the DVPortgroup.Read privilege.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DVPortgroupRollbackRequestType'
      responses:
        '200':
          description: |2
            Returns a *Task* object with which to monitor the operation.
            If the distributed virtual portgroup configuration has changed, the
            *Task*.*Task.info*.*TaskInfo.result*
            property contains the *DVPortgroupConfigSpec* object.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***RollbackFailure***: if there is no configuration specified in entityBackup and
            the previous configuration does not exist either
            
            ***DvsFault***: if operation fails.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DvsFault'

  /DistributedVirtualPortgroup/{moId}/setCustomValue:
    post:
      tags: [DistributedVirtualPortgroup]
      summary: |2
        Assigns a value to a custom field.
      operationId: DistributedVirtualPortgroup_setCustomValue
      description: |2
        Assigns a value to a custom field.
        
        The setCustomValue method requires
        whichever updatePrivilege is defined as one of the
        *CustomFieldDef.fieldInstancePrivileges*
        for the CustomFieldDef whose value is being changed.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/setCustomValueRequestType'
      responses:
        '204':
          description: |2
            No Content

  /DistributedVirtualPortgroup/{moId}/alarmActionsEnabled:
    get:
      tags: [DistributedVirtualPortgroup]
      summary: |2
        Whether alarm actions are enabled for this entity.
      operationId: DistributedVirtualPortgroup_getAlarmActionsEnabled
      description: |2
        Whether alarm actions are enabled for this entity.
        
        True if enabled; false otherwise.
        
        ***Required privileges:*** System.Read
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: boolean

  /DistributedVirtualPortgroup/{moId}/availableField:
    get:
      tags: [DistributedVirtualPortgroup]
      summary: |2
        List of custom field definitions that are valid for the object's type.
      operationId: DistributedVirtualPortgroup_getAvailableField
      description: |2
        List of custom field definitions that are valid for the object's type.
        
        The fields are sorted by *CustomFieldDef.name*.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/CustomFieldDef'

  /DistributedVirtualPortgroup/{moId}/config:
    get:
      tags: [DistributedVirtualPortgroup]
      summary: |2
        Configuration of the portgroup.
      operationId: DistributedVirtualPortgroup_getConfig
      description: |2
        Configuration of the portgroup.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DVPortgroupConfigInfo'

  /DistributedVirtualPortgroup/{moId}/configIssue:
    get:
      tags: [DistributedVirtualPortgroup]
      summary: |2
        Current configuration issues that have been detected for this entity.
      operationId: DistributedVirtualPortgroup_getConfigIssue
      description: |2
        Current configuration issues that have been detected for this entity.
        
        Typically,
        these issues have already been logged as events. The entity stores these
        events as long as they are still current. The
        *configStatus* property provides an overall status
        based on these events.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/Event'

  /DistributedVirtualPortgroup/{moId}/configStatus:
    get:
      tags: [DistributedVirtualPortgroup]
      summary: |2
        The configStatus indicates whether or not the system has detected a configuration
        issue involving this entity.
      operationId: DistributedVirtualPortgroup_getConfigStatus
      description: |2
        The configStatus indicates whether or not the system has detected a configuration
        issue involving this entity.
        
        For example, it might have detected a
        duplicate IP address or MAC address, or a host in a cluster
        might be out of compliance. The meanings of the configStatus values are:
        - red: A problem has been detected involving the entity.
        - yellow: A problem is about to occur or a transient condition
          has occurred (For example, reconfigure fail-over policy).
        - green: No configuration issues have been detected.
        - gray: The configuration status of the entity is not being monitored.
          
        A green status indicates only that a problem has not been detected;
        it is not a guarantee that the entity is problem-free.
        
        The *configIssue* property contains a list of the
        problems that have been detected.
        In releases after vSphere API 5.0, vSphere Servers might not
        generate property collector update notifications for this property.
        To obtain the latest value of the property, you can use
        PropertyCollector methods RetrievePropertiesEx or WaitForUpdatesEx.
        If you use the PropertyCollector.WaitForUpdatesEx method, specify
        an empty string for the version parameter. Any other version value will not
        produce any property values as no updates are generated.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedEntityStatus_enum'

  /DistributedVirtualPortgroup/{moId}/customValue:
    get:
      tags: [DistributedVirtualPortgroup]
      summary: |2
        Custom field values.
      operationId: DistributedVirtualPortgroup_getCustomValue
      description: |2
        Custom field values.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/CustomFieldValue'

  /DistributedVirtualPortgroup/{moId}/declaredAlarmState:
    get:
      tags: [DistributedVirtualPortgroup]
      summary: |2
        A set of alarm states for alarms that apply to this managed entity.
      operationId: DistributedVirtualPortgroup_getDeclaredAlarmState
      description: |2
        A set of alarm states for alarms that apply to this managed entity.
        
        The set includes alarms defined on this entity
        and alarms inherited from the parent entity,
        or from any ancestors in the inventory hierarchy.
        
        Alarms are inherited if they can be triggered by this entity or its descendants.
        This set does not include alarms that are defined on descendants of this entity.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/AlarmState'

  /DistributedVirtualPortgroup/{moId}/disabledMethod:
    get:
      tags: [DistributedVirtualPortgroup]
      summary: |2
        List of operations that are disabled, given the current runtime
        state of the entity.
      operationId: DistributedVirtualPortgroup_getDisabledMethod
      description: |2
        List of operations that are disabled, given the current runtime
        state of the entity.
        
        For example, a power-on operation always fails if a
        virtual machine is already powered on. This list can be used by clients to
        enable or disable operations in a graphical user interface.
        
        Note: This list is determined by the current runtime state of an entity,
        not by its permissions.
        
        This list may include the following operations for a HostSystem:
        - *HostSystem.EnterMaintenanceMode_Task*
        - *HostSystem.ExitMaintenanceMode_Task*
        - *HostSystem.RebootHost_Task*
        - *HostSystem.ShutdownHost_Task*
        - *HostSystem.ReconnectHost_Task*
        - *HostSystem.DisconnectHost_Task*
          
        This list may include the following operations for a VirtualMachine:
        - *VirtualMachine.AnswerVM*
        - *ManagedEntity.Rename_Task*
        - *VirtualMachine.CloneVM_Task*
        - *VirtualMachine.PowerOffVM_Task*
        - *VirtualMachine.PowerOnVM_Task*
        - *VirtualMachine.SuspendVM_Task*
        - *VirtualMachine.ResetVM_Task*
        - *VirtualMachine.ReconfigVM_Task*
        - *VirtualMachine.RelocateVM_Task*
        - *VirtualMachine.MigrateVM_Task*
        - *VirtualMachine.CustomizeVM_Task*
        - *VirtualMachine.ShutdownGuest*
        - *VirtualMachine.StandbyGuest*
        - *VirtualMachine.RebootGuest*
        - *VirtualMachine.CreateSnapshot_Task*
        - *VirtualMachine.RemoveAllSnapshots_Task*
        - *VirtualMachine.RevertToCurrentSnapshot_Task*
        - *VirtualMachine.MarkAsTemplate*
        - *VirtualMachine.MarkAsVirtualMachine*
        - *VirtualMachine.ResetGuestInformation*
        - *VirtualMachine.MountToolsInstaller*
        - *VirtualMachine.UnmountToolsInstaller*
        - *ManagedEntity.Destroy_Task*
        - *VirtualMachine.UpgradeVM_Task*
        - *VirtualMachine.ExportVm*
          
        This list may include the following operations for a ResourcePool:
        - *ResourcePool.ImportVApp*
        - *ResourcePool.CreateChildVM_Task*
        - *ResourcePool.UpdateConfig*
        - *Folder.CreateVM_Task*
        - *ManagedEntity.Destroy_Task*
        - *ManagedEntity.Rename_Task*
          
        This list may include the following operations for a VirtualApp:
        - *ManagedEntity.Destroy_Task*
        - *VirtualApp.CloneVApp_Task*
        - *VirtualApp.unregisterVApp_Task*
        - *VirtualApp.ExportVApp*
        - *VirtualApp.PowerOnVApp_Task*
        - *VirtualApp.PowerOffVApp_Task*
        - *VirtualApp.UpdateVAppConfig*
          
        In releases after vSphere API 5.0, vSphere Servers might not
        generate property collector update notifications for this property.
        To obtain the latest value of the property, you can use
        PropertyCollector methods RetrievePropertiesEx or WaitForUpdatesEx.
        If you use the PropertyCollector.WaitForUpdatesEx method, specify
        an empty string for the version parameter. Any other version value will not
        produce any property values as no updates are generated.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  type: string

  /DistributedVirtualPortgroup/{moId}/effectiveRole:
    get:
      tags: [DistributedVirtualPortgroup]
      summary: |2
        Access rights the current session has to this entity.
      operationId: DistributedVirtualPortgroup_getEffectiveRole
      description: |2
        Access rights the current session has to this entity.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  type: integer
                  format: int32

  /DistributedVirtualPortgroup/{moId}/host:
    get:
      tags: [DistributedVirtualPortgroup]
      summary: |2
        Hosts attached to this network.
      operationId: DistributedVirtualPortgroup_getHost
      description: |2
        Hosts attached to this network.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            Refers instances of *HostSystem*.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/ManagedObjectReference'

  /DistributedVirtualPortgroup/{moId}/key:
    get:
      tags: [DistributedVirtualPortgroup]
      summary: |2
        Generated UUID of the portgroup.
      operationId: DistributedVirtualPortgroup_getKey
      description: |2
        Generated UUID of the portgroup.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                type: string

  /DistributedVirtualPortgroup/{moId}/name:
    get:
      tags: [DistributedVirtualPortgroup]
      summary: |2
        Name of this entity, unique relative to its parent.
      operationId: DistributedVirtualPortgroup_getName
      description: |2
        Name of this entity, unique relative to its parent.
        
        Any / (slash), \\ (backslash), character used in this
        name element will be escaped. Similarly, any % (percent) character used in
        this name element will be escaped, unless it is used to start an escape
        sequence. A slash is escaped as %2F or %2f. A backslash is escaped as %5C or
        %5c, and a percent is escaped as %25.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                type: string

  /DistributedVirtualPortgroup/{moId}/overallStatus:
    get:
      tags: [DistributedVirtualPortgroup]
      summary: |2
        General health of this managed entity.
      operationId: DistributedVirtualPortgroup_getOverallStatus
      description: |2
        General health of this managed entity.
        
        The overall status of the managed entity is computed as the worst status
        among its alarms and the configuration issues detected on the entity.
        The status is reported as one of the following values:
        - red: The entity has alarms or configuration issues with a red status.
        - yellow: The entity does not have alarms or configuration issues with a
          red status, and has at least one with a yellow status.
        - green: The entity does not have alarms or configuration issues with a
          red or yellow status, and has at least one with a green status.
        - gray: All of the entity's alarms have a gray status and the
          configuration status of the entity is not being monitored.
          
        In releases after vSphere API 5.0, vSphere Servers might not
        generate property collector update notifications for this property.
        To obtain the latest value of the property, you can use
        PropertyCollector methods RetrievePropertiesEx or WaitForUpdatesEx.
        If you use the PropertyCollector.WaitForUpdatesEx method, specify
        an empty string for the version parameter. Any other version value will not
        produce any property values as no updates are generated.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedEntityStatus_enum'

  /DistributedVirtualPortgroup/{moId}/parent:
    get:
      tags: [DistributedVirtualPortgroup]
      summary: |2
        Parent of this entity.
      operationId: DistributedVirtualPortgroup_getParent
      description: |2
        Parent of this entity.
        
        This value is null for the root object and for
        *VirtualMachine* objects that are part of
        a *VirtualApp*.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            Refers instance of *ManagedEntity*.
          content:
            application/json:
              schema:
                nullable: true
                $ref: '#/components/schemas/ManagedObjectReference'

  /DistributedVirtualPortgroup/{moId}/permission:
    get:
      tags: [DistributedVirtualPortgroup]
      summary: |2
        List of permissions defined for this entity.
      operationId: DistributedVirtualPortgroup_getPermission
      description: |2
        List of permissions defined for this entity.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/Permission'

  /DistributedVirtualPortgroup/{moId}/portKeys:
    get:
      tags: [DistributedVirtualPortgroup]
      summary: |2
        Port keys for the set of ports in the portgroup.
      operationId: DistributedVirtualPortgroup_getPortKeys
      description: |2
        Port keys for the set of ports in the portgroup.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  type: string

  /DistributedVirtualPortgroup/{moId}/recentTask:
    get:
      tags: [DistributedVirtualPortgroup]
      summary: |2
        The set of recent tasks operating on this managed entity.
      operationId: DistributedVirtualPortgroup_getRecentTask
      description: |2
        The set of recent tasks operating on this managed entity.
        
        This is a subset
        of *TaskManager.recentTask* belong to this entity. A task in this
        list could be in one of the four states: pending, running, success or error.
        
        This property can be used to deduce intermediate power states for
        a virtual machine entity. For example, if the current powerState is "poweredOn"
        and there is a running task performing the "suspend" operation, then the virtual
        machine's intermediate state might be described as "suspending."
        
        Most tasks (such as power operations) obtain exclusive access to the virtual
        machine, so it is unusual for this list to contain more than one running task.
        One exception, however, is the task of cloning a virtual machine.
        In releases after vSphere API 5.0, vSphere Servers might not
        generate property collector update notifications for this property.
        To obtain the latest value of the property, you can use
        PropertyCollector methods RetrievePropertiesEx or WaitForUpdatesEx.
        If you use the PropertyCollector.WaitForUpdatesEx method, specify
        an empty string for the version parameter. Any other version value will not
        produce any property values as no updates are generated.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            Refers instances of *Task*.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/ManagedObjectReference'

  /DistributedVirtualPortgroup/{moId}/summary:
    get:
      tags: [DistributedVirtualPortgroup]
      summary: |2
        Properties of a network.
      operationId: DistributedVirtualPortgroup_getSummary
      description: |2
        Properties of a network.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NetworkSummary'

  /DistributedVirtualPortgroup/{moId}/tag:
    get:
      tags: [DistributedVirtualPortgroup]
      summary: |2
        The set of tags associated with this managed entity.
      operationId: DistributedVirtualPortgroup_getTag
      description: |2
        The set of tags associated with this managed entity.
        
        Experimental. Subject to change.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/Tag'

  /DistributedVirtualPortgroup/{moId}/triggeredAlarmState:
    get:
      tags: [DistributedVirtualPortgroup]
      summary: |2
        A set of alarm states for alarms triggered by this entity
        or by its descendants.
      operationId: DistributedVirtualPortgroup_getTriggeredAlarmState
      description: |2
        A set of alarm states for alarms triggered by this entity
        or by its descendants.
        
        Triggered alarms are propagated up the inventory hierarchy
        so that a user can readily tell when a descendant has triggered an alarm.
        In releases after vSphere API 5.0, vSphere Servers might not
        generate property collector update notifications for this property.
        To obtain the latest value of the property, you can use
        PropertyCollector methods RetrievePropertiesEx or WaitForUpdatesEx.
        If you use the PropertyCollector.WaitForUpdatesEx method, specify
        an empty string for the version parameter. Any other version value will not
        produce any property values as no updates are generated.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/AlarmState'

  /DistributedVirtualPortgroup/{moId}/value:
    get:
      tags: [DistributedVirtualPortgroup]
      summary: |2
        List of custom field values.
      operationId: DistributedVirtualPortgroup_getValue
      description: |2
        List of custom field values.
        
        Each value uses a key to associate
        an instance of a *CustomFieldStringValue* with
        a custom field definition.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/CustomFieldValue'

  /DistributedVirtualPortgroup/{moId}/vm:
    get:
      tags: [DistributedVirtualPortgroup]
      summary: |2
        Virtual machines using this network.
      operationId: DistributedVirtualPortgroup_getVm
      description: |2
        Virtual machines using this network.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            Refers instances of *VirtualMachine*.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/ManagedObjectReference'

  /DistributedVirtualSwitch/{moId}/AddNetworkResourcePool:
    post:
      tags: [DistributedVirtualSwitch]
      summary: |2
        Add a network resource pool.
      operationId: DistributedVirtualSwitch_AddNetworkResourcePool
      deprecated: true
      description: |2
        Deprecated as of vSphere API 6.0
        Use *DistributedVirtualSwitch.DvsReconfigureVmVnicNetworkResourcePool_Task* instead
        to add a Virtual NIC network resource pool.
        
        Add a network resource pool.
        
        ***Required privileges:*** DVSwitch.ResourceManagement
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AddNetworkResourcePoolRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***DvsFault***: if operation fails on any host or if there are other update failures.
            
            ***NotSupported***: if network I/O control is not supported on
            the vSphere Distributed Switch.
            
            ***DvsNotAuthorized***: if login-session's extension key does not match
            the switch's configured
            *extensionKey*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /DistributedVirtualSwitch/{moId}/CreateDVPortgroup_Task:
    post:
      tags: [DistributedVirtualSwitch]
      summary: |2
        Creates a single *DistributedVirtualPortgroup* and adds it
        to the distributed virtual switch.
      operationId: DistributedVirtualSwitch_CreateDVPortgroup_Task
      description: |2
        Creates a single *DistributedVirtualPortgroup* and adds it
        to the distributed virtual switch.
        
        ***Required privileges:*** DVPortgroup.Create
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateDVPortgroupRequestType'
      responses:
        '200':
          description: |2
            Returns a *Task* object. The
            *Task*.*Task.info*.*TaskInfo.result* property
            contains a managed object reference to the new portgroup.
            The *DistributedVirtualSwitch.portgroup* property also contains
            the reference.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***DuplicateName***: if a portgroup with the same name already exists
            
            ***DvsFault***: if operation fails on any host or if there are other update failures.
            
            ***InvalidName***: if name of the portgroup is invalid
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /DistributedVirtualSwitch/{moId}/AddDVPortgroup_Task:
    post:
      tags: [DistributedVirtualSwitch]
      summary: |2
        Creates one or more *DistributedVirtualPortgroup*s and adds them to
        the distributed virtual switch.
      operationId: DistributedVirtualSwitch_AddDVPortgroup_Task
      description: |2
        Creates one or more *DistributedVirtualPortgroup*s and adds them to
        the distributed virtual switch.
        
        ***Required privileges:*** DVPortgroup.Create
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AddDVPortgroupRequestType'
      responses:
        '200':
          description: |2
            Returns a *Task* object with which to monitor the operation.
            The method does not return a value in the
            *Task*.*Task.info*.*TaskInfo.result* property.
            Use the *DistributedVirtualSwitch.portgroup* property to obtain
            managed object references to the new portgroups.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***NotSupported***: If called directly on a host.
            
            ***DvsFault***: if operation fails on any host or if there are other update failures.
            
            ***DvsNotAuthorized***: if login-session's extension key does not match
            the switch's configured
            *extensionKey*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /DistributedVirtualSwitch/{moId}/Destroy_Task:
    post:
      tags: [DistributedVirtualSwitch]
      summary: |2
        Destroys this object, deleting its contents and removing it from its parent
        folder (if any).
      operationId: DistributedVirtualSwitch_Destroy_Task
      description: |2
        Destroys this object, deleting its contents and removing it from its parent
        folder (if any).
        
        NOTE: The appropriate privilege must be held on the parent of the destroyed
        entity as well as the entity itself.
        This method can throw one of several exceptions. The exact set of exceptions
        depends on the kind of entity that is being removed. See comments for
        each entity for more information on destroy behavior.
        
        ***Required privileges:*** DVSwitch.Delete
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor the
            operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            Failure
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /DistributedVirtualSwitch/{moId}/EnableNetworkResourceManagement:
    post:
      tags: [DistributedVirtualSwitch]
      summary: |2
        Enable/Disable network I/O control on the vSphere Distributed Switch.
      operationId: DistributedVirtualSwitch_EnableNetworkResourceManagement
      description: |2
        Enable/Disable network I/O control on the vSphere Distributed Switch.
        
        ***Required privileges:*** DVSwitch.ResourceManagement
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EnableNetworkResourceManagementRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***DvsFault***: if the enabling/disabling fails.
            
            ***NotSupported***: if network I/O control is not supported on
            the vSphere Distributed Switch.
            
            ***DvsNotAuthorized***: if login-session's extension key does not match
            the switch's configured
            *extensionKey*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DvsFault'

  /DistributedVirtualSwitch/{moId}/FetchDVPortKeys:
    post:
      tags: [DistributedVirtualSwitch]
      summary: |2
        Return the keys of ports that meet the criteria.
      operationId: DistributedVirtualSwitch_FetchDVPortKeys
      description: |2
        Return the keys of ports that meet the criteria.
        
        On an ESXi host,
        the property shows only the connected ports currently on the host.
        
        ***Required privileges:*** System.Read
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/FetchDVPortKeysRequestType'
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  type: string

  /DistributedVirtualSwitch/{moId}/FetchDVPorts:
    post:
      tags: [DistributedVirtualSwitch]
      summary: |2
        Return the ports that meet the criteria.
      operationId: DistributedVirtualSwitch_FetchDVPorts
      description: |2
        Return the ports that meet the criteria.
        
        ***Required privileges:*** System.Read
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/FetchDVPortsRequestType'
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/DistributedVirtualPort'

  /DistributedVirtualSwitch/{moId}/LookupDvPortGroup:
    post:
      tags: [DistributedVirtualSwitch]
      summary: |2
        Returns the portgroup identified by the key within this VDS.
      operationId: DistributedVirtualSwitch_LookupDvPortGroup
      description: |2
        Returns the portgroup identified by the key within this VDS.
        
        ***Required privileges:*** System.Read
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LookupDvPortGroupRequestType'
      responses:
        '200':
          description: |2
            Refers instance of *DistributedVirtualPortgroup*.
          content:
            application/json:
              schema:
                nullable: true
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***NotFound***: If the portgroup for the specified key is not found.
            
            ***NotSupported***: If the operation is not supported.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFound'

  /DistributedVirtualSwitch/{moId}/MergeDvs_Task:
    post:
      tags: [DistributedVirtualSwitch]
      summary: |2
        Merge an existing DistributedVirtualSwitch (source) to this switch
        (destination).
      operationId: DistributedVirtualSwitch_MergeDvs_Task
      deprecated: true
      description: |2
        Deprecated as of vSphere API 5.5.
        
        Merge an existing DistributedVirtualSwitch (source) to this switch
        (destination).
        
        The host members and the connected entity of the source
        switch will be transferred to the destination switch. This operation
        disconnects the entities from the source switch, tears down its host
        proxy switches, creates new proxies for the destination switch,
        and reconnects the entities to the destination switch.
        
        In summary, this operation does the following:
        - Adds the
          <code>config</code>.*DVSConfigInfo.maxPorts*
          of the source switch to the <code>maxPorts</code> of the
          destination switch.
        - The host members of the source switch leave the source switch
          and join the destination switch with the same Physical NIC and
          VirtualSwitch (if applicable). A set of new uplink ports,
          compliant with the
          *DVSConfigSpec.uplinkPortPolicy*,
          is created as the hosts join the destination switch.
        - The portgroups on the source switch are copied over to destination
          switch, by calculating the effective default port config and
          creating a portgroup of the same name in the destination switch. If
          the name already exists, the copied portgroup uses names following a
          "Copy of switch-portgroup-name" scheme to avoid conflict. The same
          number of ports are created inside each copied portgroup.
        - The standalone distributed virtual ports are not copied,
          unless there is a virtual
          machine or host virtual NIC connecting to it. In that case, the
          operation calculates the effective port config and creates a port
          in the destination switch with the same name. Name conflict is
          resolved using numbers like "original-port-name(1)". The uplink ports
          are not copied over.
        - The virtual machine and host virtual NICs are disconnected from the source
          switch and reconnected with the destination switch, to the
          copied standalone port or portgroup.
        - If you are using a *VmwareDistributedVirtualSwitch* -
          Unless the PVLAN map contains exactly the same entries between
          the source and destination VMware distributed virtual switches,
          the method raises a fault if
          *VmwareDistributedVirtualSwitchPvlanSpec.pvlanId*
          is set in any port, portgroup, or switch that will be copied.
          
        ***Required privileges:*** DVSwitch.Modify
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MergeDvsRequestType'
      responses:
        '200':
          description: |2
            Returns a *Task* object with which to monitor the operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***NotSupported***: If called directly on a host.
            
            ***ResourceInUse***: If failed to delete the source switch
            
            ***DvsFault***: if operation fails on any host or if there are other update failures.
            
            ***DvsNotAuthorized***: if login-session's extension key does not match
            the switch's configured
            *extensionKey*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /DistributedVirtualSwitch/{moId}/MoveDVPort_Task:
    post:
      tags: [DistributedVirtualSwitch]
      summary: |2
        Move the ports out of their current portgroup into the specified portgroup.
      operationId: DistributedVirtualSwitch_MoveDVPort_Task
      deprecated: true
      description: |2
        Deprecated as of vSphere API 6.0.
        
        Move the ports out of their current portgroup into the specified portgroup.
        
        If the moving of any of the ports results in a violation of the portgroup
        policy, or type of the source or destination portgroup, the operation
        raises a fault. A conflict port cannot be moved.
        
        ***Required privileges:*** DVSwitch.Modify
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MoveDVPortRequestType'
      responses:
        '200':
          description: |2
            Returns a *Task* object with which to monitor the operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***NotSupported***: If called directly on a host.
            
            ***DvsFault***: if operation fails on any host or if there are other update failures.
            
            ***DvsNotAuthorized***: if login-session's extension key does not match
            the switch's configured
            *extensionKey*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /DistributedVirtualSwitch/{moId}/PerformDvsProductSpecOperation_Task:
    post:
      tags: [DistributedVirtualSwitch]
      summary: |2
        This method updates the *DistributedVirtualSwitch* product specifications.
      operationId: DistributedVirtualSwitch_PerformDvsProductSpecOperation_Task
      description: |2
        This method updates the *DistributedVirtualSwitch* product specifications.
        
        ***Required privileges:*** DVSwitch.Modify
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PerformDvsProductSpecOperationRequestType'
      responses:
        '200':
          description: |2
            Returns a *Task* object with which to monitor the operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***NotSupported***: If called directly on a host.
            
            ***DvsFault***: if operation fails on any host or if there are other update failures.
            
            ***DvsNotAuthorized***: if login-session's extension key does not match
            the switch's configured
            *extensionKey*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /DistributedVirtualSwitch/{moId}/QueryUsedVlanIdInDvs:
    post:
      tags: [DistributedVirtualSwitch]
      summary: |2
        Return the used VLAN ID (PVLAN excluded) in the switch.
      operationId: DistributedVirtualSwitch_QueryUsedVlanIdInDvs
      description: |2
        Return the used VLAN ID (PVLAN excluded) in the switch.
        
        ***Required privileges:*** System.Read
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  type: integer
                  format: int32

  /DistributedVirtualSwitch/{moId}/ReconfigureDvs_Task:
    post:
      tags: [DistributedVirtualSwitch]
      summary: |2
        Reconfigures a distributed virtual switch.
      operationId: DistributedVirtualSwitch_ReconfigureDvs_Task
      description: |2
        Reconfigures a distributed virtual switch.
        
        You can use this method
        to set switch properties or to reset the switch to a previous state.
        
        **Reconfiguring a Standard Distributed Virtual Switch**
        
        To reconfigure a *DistributedVirtualSwitch*,
        use a *DVSConfigSpec*
        to set the switch properties.
        
        **Reconfiguring a VMware Distributed Virtual Switch**
        
        If you use a *VmwareDistributedVirtualSwitch*,
        you can perform the following switch reconfiguration:
        - Use a *VMwareDVSConfigSpec*
          to set the switch properties.
        - Use the *VMwareDVSConfigSpec*
          returned by *DistributedVirtualSwitch.DVSRollback_Task*
          to reset the switch to a previous state.
          
        Reconfiguring the switch may require any of the following privileges,
        depending on what is being changed:
        - DVSwitch.PolicyOp if *DVSConfigSpec.policy*
          is set.
        - DVSwitch.PortSetting if *DVSConfigSpec.defaultPortConfig*
          is set.
        - DVSwitch.HostOp if *DVSConfigSpec.policy*
          is set. The
          user will also need the Host.Config.Network
          privilege on the host.
        - DVSwitch.Vspan if *VMwareDVSConfigSpec.vspanConfigSpec*
          is set.
        - DVSwitch.Modify for anything else.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ReconfigureDvsRequestType'
      responses:
        '200':
          description: |2
            Returns a *Task* object with which to monitor the operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***NotSupported***: if called directly on a host or if the spec
            includes settings for any vNetwork Distributed
            Switch feature that is not supported on this
            switch.
            
            ***DvsFault***: if operation fails on any host or if there are other update failures.
            
            ***DvsNotAuthorized***: if login-session's extension key does not match
            the switch's configured
            *DVSConfigInfo.extensionKey*.
            
            ***ResourceNotAvailable***: If there is no port available in the portgroup
            
            ***VspanPortConflict***: if dvPort is used as both the transmitted source and destination ports in Distributed Port Mirroring sessions.
            
            ***VspanPromiscuousPortNotSupported***: if a promiscuous port is used as transmitted source or destination in the Distributed Port Mirroring sessions.
            
            ***VspanSameSessionPortConflict***: if a dvPort is used as both the source and destination in the same Distributed Port Mirroring session.
            
            ***VspanDestPortConflict***: if a dvPort is used as desination ports in multiple Distributed Port Mirroring sessions.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /DistributedVirtualSwitch/{moId}/ReconfigureDVPort_Task:
    post:
      tags: [DistributedVirtualSwitch]
      summary: |2
        Reconfigure individual ports.
      operationId: DistributedVirtualSwitch_ReconfigureDVPort_Task
      description: |2
        Reconfigure individual ports.
        
        ***Required privileges:*** DVSwitch.PortConfig
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ReconfigureDVPortRequestType'
      responses:
        '200':
          description: |2
            Returns a *Task* object with which to monitor the operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***NotSupported***: If called directly on a host or if the switch
            implementation doesn't support this API or if the spec
            includes settings for any vSphere Distributed Switch
            feature that is not supported on this switch.
            
            ***InvalidArgument***: If the array have different elements for the
            same port.
            
            ***DvsFault***: if operation fails on any host or if there are other update failures.
            
            ***DvsNotAuthorized***: if login-session's extension key does not match
            the switch's configured
            *extensionKey*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /DistributedVirtualSwitch/{moId}/DvsReconfigureVmVnicNetworkResourcePool_Task:
    post:
      tags: [DistributedVirtualSwitch]
      summary: |2
        reconfigure the Virtual NIC network resource pool configuration.
      operationId: DistributedVirtualSwitch_DvsReconfigureVmVnicNetworkResourcePool_Task
      description: |2
        reconfigure the Virtual NIC network resource pool configuration.
        
        ***Required privileges:*** DVSwitch.ResourceManagement
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DvsReconfigureVmVnicNetworkResourcePoolRequestType'
      responses:
        '200':
          description: |2
            Returns a *Task* object with which to monitor the operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***DvsFault***: if operation fails on any host or if there are other reconfigure failures.
            
            ***NotFound***: if the resource pool does not exist on the dvs.
            
            ***DuplicateName***: if a virtual NIC network resource pool with the same name already exists.
            
            ***ConcurrentAccess***: if a Virtual NIC network resource pool is modified by
            two or more clients at the same time.
            
            ***ResourceInUse***: If Virtual NIC network resource pool being removed
            is associated with a network entity
            
            ***NotSupported***: if network I/O control is not supported on
            the vSphere Distributed Switch.
            
            ***DvsNotAuthorized***: if login-session's extension key does not match
            the switch's configured
            *extensionKey*.
            
            ***ConflictingConfiguration***: if the any property being set is in conflict.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /DistributedVirtualSwitch/{moId}/RectifyDvsHost_Task:
    post:
      tags: [DistributedVirtualSwitch]
      summary: |2
        Update the switch configuration on the host to bring them in sync with the
        current configuration in vCenter Server.
      operationId: DistributedVirtualSwitch_RectifyDvsHost_Task
      deprecated: true
      description: |2
        Deprecated as of vSphere API 5.0.
        Use
        *DistributedVirtualSwitchManager*.*DistributedVirtualSwitchManager.RectifyDvsOnHost_Task* instead.
        
        Update the switch configuration on the host to bring them in sync with the
        current configuration in vCenter Server.
        
        ***Required privileges:*** System.Read
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RectifyDvsHostRequestType'
      responses:
        '200':
          description: |2
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***DvsFault***: if operation fails on any host or if there are other update failures.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /DistributedVirtualSwitch/{moId}/RefreshDVPortState:
    post:
      tags: [DistributedVirtualSwitch]
      summary: |2
        Refresh port states.
      operationId: DistributedVirtualSwitch_RefreshDVPortState
      description: |2
        Refresh port states.
        
        ***Required privileges:*** System.Read
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RefreshDVPortStateRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***DvsFault***: if operation fails on any host or if there are other update failures.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /DistributedVirtualSwitch/{moId}/Reload:
    post:
      tags: [DistributedVirtualSwitch]
      summary: |2
        Reload the entity state.
      operationId: DistributedVirtualSwitch_Reload
      description: |2
        Reload the entity state.
        
        Clients only need to call this method
        if they changed some external state that affects the service
        without using the Web service interface to perform the change.
        For example, hand-editing a virtual machine configuration file
        affects the configuration of the associated virtual machine but
        the service managing the virtual machine might not monitor the
        file for changes. In this case, after such an edit, a client
        would call "reload" on the associated virtual machine to ensure
        the service and its clients have current data for the
        virtual machine.
        
        ***Required privileges:*** System.Read
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '204':
          description: |2
            No Content

  /DistributedVirtualSwitch/{moId}/RemoveNetworkResourcePool:
    post:
      tags: [DistributedVirtualSwitch]
      summary: |2
        Remove a network resource pool.
      operationId: DistributedVirtualSwitch_RemoveNetworkResourcePool
      deprecated: true
      description: |2
        Deprecated as of vSphere API 6.0
        Use *DistributedVirtualSwitch.DvsReconfigureVmVnicNetworkResourcePool_Task* instead
        to remove a Virtual NIC network resource pool.
        
        Remove a network resource pool.
        
        ***Required privileges:*** DVSwitch.ResourceManagement
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RemoveNetworkResourcePoolRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***DvsFault***: if operation fails on any host or if there are other update failures.
            
            ***NotFound***: if the resource pool does not exist on the dvs.
            
            ***InvalidName***: if the name of the resource pool is invalid.
            
            ***ResourceInUse***: If network resource pool is associated with a network entity
            
            ***NotSupported***: if network I/O control is not supported on
            the vSphere Distributed Switch.
            
            ***DvsNotAuthorized***: if login-session's extension key does not match
            the switch's configured
            *extensionKey*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /DistributedVirtualSwitch/{moId}/Rename_Task:
    post:
      tags: [DistributedVirtualSwitch]
      summary: |2
        Renames this managed entity.
      operationId: DistributedVirtualSwitch_Rename_Task
      description: |2
        Renames this managed entity.
        
        Any % (percent) character used in this name parameter
        must be escaped, unless it is used to start an escape
        sequence. Clients may also escape any other characters in
        this name parameter.
        
        See also *ManagedEntity.name*.
        
        ***Required privileges:*** DVSwitch.Modify
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RenameRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor the
            operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***DuplicateName***: If another object in the same folder has the target name.
            
            ***InvalidName***: If the new name is not a valid entity name.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /DistributedVirtualSwitch/{moId}/DVSRollback_Task:
    post:
      tags: [DistributedVirtualSwitch]
      summary: |2
        This method determines if the distributed virtual switch configuration
        has changed.
      operationId: DistributedVirtualSwitch_DVSRollback_Task
      description: |2
        This method determines if the distributed virtual switch configuration
        has changed.
        
        If it has changed, the method returns a
        *VMwareDVSConfigSpec*.
        Use the *DistributedVirtualSwitch.ReconfigureDvs_Task* method to apply
        the rollback configuration to the switch.
        You can use the rollback method only on a *VmwareDistributedVirtualSwitch*.
        - If you specify the <code>entityBackup</code> parameter, the returned
          configuration specification represents the exported switch configuration.
          If the <code>entityBackup</code> matches the current switch
          configuration, the method does not return a configuration specification.
        - If <code>entityBackup</code> is not specified, the returned configuration
          specification represents a previous state of the switch, if available.
          When you use a VMware distributed virtual switch, each time you reconfigure
          the switch, the Server saves the switch configuration before applying the updates.
          If the vCenter Server is restarted, the saved configuration is not preserved
          and the method does not return a configuration specification.
          
        To use the rollback method, you must have the DVSwitch.Read privilege.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DVSRollbackRequestType'
      responses:
        '200':
          description: |2
            Returns a *Task* object with which to monitor the operation.
            If the distributed virtual switch configuration has changed, the
            *Task*.*Task.info*.*TaskInfo.result*
            property contains the *DVSConfigSpec* object.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***RollbackFailure***: if there is no configuration specified in entityBackup and
            the previous configuration does not exist either.
            
            ***DvsFault***: if operation fails.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DvsFault'

  /DistributedVirtualSwitch/{moId}/setCustomValue:
    post:
      tags: [DistributedVirtualSwitch]
      summary: |2
        Assigns a value to a custom field.
      operationId: DistributedVirtualSwitch_setCustomValue
      description: |2
        Assigns a value to a custom field.
        
        The setCustomValue method requires
        whichever updatePrivilege is defined as one of the
        *CustomFieldDef.fieldInstancePrivileges*
        for the CustomFieldDef whose value is being changed.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/setCustomValueRequestType'
      responses:
        '204':
          description: |2
            No Content

  /DistributedVirtualSwitch/{moId}/UpdateDvsCapability:
    post:
      tags: [DistributedVirtualSwitch]
      summary: |2
        Set the capability of the switch.
      operationId: DistributedVirtualSwitch_UpdateDvsCapability
      description: |2
        Set the capability of the switch.
        
        ***Required privileges:*** DVSwitch.Modify
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateDvsCapabilityRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***NotSupported***: If called directly on a host or if the switch
            implementation doesn't support this API.
            
            ***DvsFault***: if operation fails on any host or if there are other update failures.
            
            ***DvsNotAuthorized***: if login-session's extension key does not match
            the switch's configured
            *extensionKey*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DvsFault'

  /DistributedVirtualSwitch/{moId}/UpdateDVSHealthCheckConfig_Task:
    post:
      tags: [DistributedVirtualSwitch]
      summary: |2
        Update health check configuration.
      operationId: DistributedVirtualSwitch_UpdateDVSHealthCheckConfig_Task
      description: |2
        Update health check configuration.
        
        ***Required privileges:*** DVSwitch.Modify
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateDVSHealthCheckConfigRequestType'
      responses:
        '200':
          description: |2
            Returns a *Task* object with which to monitor the operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***DvsFault***: if operation fails on any host or if there are other update failures.
            
            ***NotSupported***: if health check is not supported on the switch.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DvsFault'

  /DistributedVirtualSwitch/{moId}/UpdateNetworkResourcePool:
    post:
      tags: [DistributedVirtualSwitch]
      summary: |2
        Update the network resource pool configuration.
      operationId: DistributedVirtualSwitch_UpdateNetworkResourcePool
      deprecated: true
      description: |2
        Deprecated as of vSphere API 6.0
        Use *DistributedVirtualSwitch.DvsReconfigureVmVnicNetworkResourcePool_Task* instead
        to update the Virtual NIC network resource pool.
        
        Update the network resource pool configuration.
        
        ***Required privileges:*** DVSwitch.ResourceManagement
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateNetworkResourcePoolRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***DvsFault***: if operation fails on any host or if there are other update failures.
            
            ***NotFound***: if the resource pool does not exist on the dvs.
            
            ***InvalidName***: if the name of the resource pool is invalid.
            
            ***ConcurrentAccess***: if a network resource pool is modified by
            two or more clients at the same time.
            
            ***NotSupported***: if network I/O control is not supported on
            the vSphere Distributed Switch.
            
            ***DvsNotAuthorized***: if login-session's extension key does not match
            the switch's configured
            *extensionKey*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /DistributedVirtualSwitch/{moId}/alarmActionsEnabled:
    get:
      tags: [DistributedVirtualSwitch]
      summary: |2
        Whether alarm actions are enabled for this entity.
      operationId: DistributedVirtualSwitch_getAlarmActionsEnabled
      description: |2
        Whether alarm actions are enabled for this entity.
        
        True if enabled; false otherwise.
        
        ***Required privileges:*** System.Read
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: boolean

  /DistributedVirtualSwitch/{moId}/availableField:
    get:
      tags: [DistributedVirtualSwitch]
      summary: |2
        List of custom field definitions that are valid for the object's type.
      operationId: DistributedVirtualSwitch_getAvailableField
      description: |2
        List of custom field definitions that are valid for the object's type.
        
        The fields are sorted by *CustomFieldDef.name*.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/CustomFieldDef'

  /DistributedVirtualSwitch/{moId}/capability:
    get:
      tags: [DistributedVirtualSwitch]
      summary: |2
        Capability of the switch.
      operationId: DistributedVirtualSwitch_getCapability
      description: |2
        Capability of the switch.
        
        Capabilities are indicated at the port,
        portgroup and switch levels, and for version-specific features.
        When you retrieve this property from an ESXi host,
        *DistributedVirtualSwitch.capability*.*DVSCapability.dvsOperationSupported*
        should always be set to false.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DVSCapability'

  /DistributedVirtualSwitch/{moId}/config:
    get:
      tags: [DistributedVirtualSwitch]
      summary: |2
        Switch configuration data.
      operationId: DistributedVirtualSwitch_getConfig
      description: |2
        Switch configuration data.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DVSConfigInfo'

  /DistributedVirtualSwitch/{moId}/configIssue:
    get:
      tags: [DistributedVirtualSwitch]
      summary: |2
        Current configuration issues that have been detected for this entity.
      operationId: DistributedVirtualSwitch_getConfigIssue
      description: |2
        Current configuration issues that have been detected for this entity.
        
        Typically,
        these issues have already been logged as events. The entity stores these
        events as long as they are still current. The
        *configStatus* property provides an overall status
        based on these events.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/Event'

  /DistributedVirtualSwitch/{moId}/configStatus:
    get:
      tags: [DistributedVirtualSwitch]
      summary: |2
        The configStatus indicates whether or not the system has detected a configuration
        issue involving this entity.
      operationId: DistributedVirtualSwitch_getConfigStatus
      description: |2
        The configStatus indicates whether or not the system has detected a configuration
        issue involving this entity.
        
        For example, it might have detected a
        duplicate IP address or MAC address, or a host in a cluster
        might be out of compliance. The meanings of the configStatus values are:
        - red: A problem has been detected involving the entity.
        - yellow: A problem is about to occur or a transient condition
          has occurred (For example, reconfigure fail-over policy).
        - green: No configuration issues have been detected.
        - gray: The configuration status of the entity is not being monitored.
          
        A green status indicates only that a problem has not been detected;
        it is not a guarantee that the entity is problem-free.
        
        The *configIssue* property contains a list of the
        problems that have been detected.
        In releases after vSphere API 5.0, vSphere Servers might not
        generate property collector update notifications for this property.
        To obtain the latest value of the property, you can use
        PropertyCollector methods RetrievePropertiesEx or WaitForUpdatesEx.
        If you use the PropertyCollector.WaitForUpdatesEx method, specify
        an empty string for the version parameter. Any other version value will not
        produce any property values as no updates are generated.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedEntityStatus_enum'

  /DistributedVirtualSwitch/{moId}/customValue:
    get:
      tags: [DistributedVirtualSwitch]
      summary: |2
        Custom field values.
      operationId: DistributedVirtualSwitch_getCustomValue
      description: |2
        Custom field values.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/CustomFieldValue'

  /DistributedVirtualSwitch/{moId}/declaredAlarmState:
    get:
      tags: [DistributedVirtualSwitch]
      summary: |2
        A set of alarm states for alarms that apply to this managed entity.
      operationId: DistributedVirtualSwitch_getDeclaredAlarmState
      description: |2
        A set of alarm states for alarms that apply to this managed entity.
        
        The set includes alarms defined on this entity
        and alarms inherited from the parent entity,
        or from any ancestors in the inventory hierarchy.
        
        Alarms are inherited if they can be triggered by this entity or its descendants.
        This set does not include alarms that are defined on descendants of this entity.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/AlarmState'

  /DistributedVirtualSwitch/{moId}/disabledMethod:
    get:
      tags: [DistributedVirtualSwitch]
      summary: |2
        List of operations that are disabled, given the current runtime
        state of the entity.
      operationId: DistributedVirtualSwitch_getDisabledMethod
      description: |2
        List of operations that are disabled, given the current runtime
        state of the entity.
        
        For example, a power-on operation always fails if a
        virtual machine is already powered on. This list can be used by clients to
        enable or disable operations in a graphical user interface.
        
        Note: This list is determined by the current runtime state of an entity,
        not by its permissions.
        
        This list may include the following operations for a HostSystem:
        - *HostSystem.EnterMaintenanceMode_Task*
        - *HostSystem.ExitMaintenanceMode_Task*
        - *HostSystem.RebootHost_Task*
        - *HostSystem.ShutdownHost_Task*
        - *HostSystem.ReconnectHost_Task*
        - *HostSystem.DisconnectHost_Task*
          
        This list may include the following operations for a VirtualMachine:
        - *VirtualMachine.AnswerVM*
        - *ManagedEntity.Rename_Task*
        - *VirtualMachine.CloneVM_Task*
        - *VirtualMachine.PowerOffVM_Task*
        - *VirtualMachine.PowerOnVM_Task*
        - *VirtualMachine.SuspendVM_Task*
        - *VirtualMachine.ResetVM_Task*
        - *VirtualMachine.ReconfigVM_Task*
        - *VirtualMachine.RelocateVM_Task*
        - *VirtualMachine.MigrateVM_Task*
        - *VirtualMachine.CustomizeVM_Task*
        - *VirtualMachine.ShutdownGuest*
        - *VirtualMachine.StandbyGuest*
        - *VirtualMachine.RebootGuest*
        - *VirtualMachine.CreateSnapshot_Task*
        - *VirtualMachine.RemoveAllSnapshots_Task*
        - *VirtualMachine.RevertToCurrentSnapshot_Task*
        - *VirtualMachine.MarkAsTemplate*
        - *VirtualMachine.MarkAsVirtualMachine*
        - *VirtualMachine.ResetGuestInformation*
        - *VirtualMachine.MountToolsInstaller*
        - *VirtualMachine.UnmountToolsInstaller*
        - *ManagedEntity.Destroy_Task*
        - *VirtualMachine.UpgradeVM_Task*
        - *VirtualMachine.ExportVm*
          
        This list may include the following operations for a ResourcePool:
        - *ResourcePool.ImportVApp*
        - *ResourcePool.CreateChildVM_Task*
        - *ResourcePool.UpdateConfig*
        - *Folder.CreateVM_Task*
        - *ManagedEntity.Destroy_Task*
        - *ManagedEntity.Rename_Task*
          
        This list may include the following operations for a VirtualApp:
        - *ManagedEntity.Destroy_Task*
        - *VirtualApp.CloneVApp_Task*
        - *VirtualApp.unregisterVApp_Task*
        - *VirtualApp.ExportVApp*
        - *VirtualApp.PowerOnVApp_Task*
        - *VirtualApp.PowerOffVApp_Task*
        - *VirtualApp.UpdateVAppConfig*
          
        In releases after vSphere API 5.0, vSphere Servers might not
        generate property collector update notifications for this property.
        To obtain the latest value of the property, you can use
        PropertyCollector methods RetrievePropertiesEx or WaitForUpdatesEx.
        If you use the PropertyCollector.WaitForUpdatesEx method, specify
        an empty string for the version parameter. Any other version value will not
        produce any property values as no updates are generated.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  type: string

  /DistributedVirtualSwitch/{moId}/effectiveRole:
    get:
      tags: [DistributedVirtualSwitch]
      summary: |2
        Access rights the current session has to this entity.
      operationId: DistributedVirtualSwitch_getEffectiveRole
      description: |2
        Access rights the current session has to this entity.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  type: integer
                  format: int32

  /DistributedVirtualSwitch/{moId}/name:
    get:
      tags: [DistributedVirtualSwitch]
      summary: |2
        Name of this entity, unique relative to its parent.
      operationId: DistributedVirtualSwitch_getName
      description: |2
        Name of this entity, unique relative to its parent.
        
        Any / (slash), \\ (backslash), character used in this
        name element will be escaped. Similarly, any % (percent) character used in
        this name element will be escaped, unless it is used to start an escape
        sequence. A slash is escaped as %2F or %2f. A backslash is escaped as %5C or
        %5c, and a percent is escaped as %25.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                type: string

  /DistributedVirtualSwitch/{moId}/networkResourcePool:
    get:
      tags: [DistributedVirtualSwitch]
      summary: |2
        Network resource pool information for the switch.
      operationId: DistributedVirtualSwitch_getNetworkResourcePool
      deprecated: true
      description: |2
        Deprecated as of vSphere API 6.0
        Use *DVSConfigInfo.vmVnicNetworkResourcePool*
        to get the Virtual NIC resource pool information.
        Use *DVSConfigInfo.infrastructureTrafficResourceConfig*
        to get the host infrastructure resource information.
        
        Network resource pool information for the switch.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/DVSNetworkResourcePool'

  /DistributedVirtualSwitch/{moId}/overallStatus:
    get:
      tags: [DistributedVirtualSwitch]
      summary: |2
        General health of this managed entity.
      operationId: DistributedVirtualSwitch_getOverallStatus
      description: |2
        General health of this managed entity.
        
        The overall status of the managed entity is computed as the worst status
        among its alarms and the configuration issues detected on the entity.
        The status is reported as one of the following values:
        - red: The entity has alarms or configuration issues with a red status.
        - yellow: The entity does not have alarms or configuration issues with a
          red status, and has at least one with a yellow status.
        - green: The entity does not have alarms or configuration issues with a
          red or yellow status, and has at least one with a green status.
        - gray: All of the entity's alarms have a gray status and the
          configuration status of the entity is not being monitored.
          
        In releases after vSphere API 5.0, vSphere Servers might not
        generate property collector update notifications for this property.
        To obtain the latest value of the property, you can use
        PropertyCollector methods RetrievePropertiesEx or WaitForUpdatesEx.
        If you use the PropertyCollector.WaitForUpdatesEx method, specify
        an empty string for the version parameter. Any other version value will not
        produce any property values as no updates are generated.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedEntityStatus_enum'

  /DistributedVirtualSwitch/{moId}/parent:
    get:
      tags: [DistributedVirtualSwitch]
      summary: |2
        Parent of this entity.
      operationId: DistributedVirtualSwitch_getParent
      description: |2
        Parent of this entity.
        
        This value is null for the root object and for
        *VirtualMachine* objects that are part of
        a *VirtualApp*.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            Refers instance of *ManagedEntity*.
          content:
            application/json:
              schema:
                nullable: true
                $ref: '#/components/schemas/ManagedObjectReference'

  /DistributedVirtualSwitch/{moId}/permission:
    get:
      tags: [DistributedVirtualSwitch]
      summary: |2
        List of permissions defined for this entity.
      operationId: DistributedVirtualSwitch_getPermission
      description: |2
        List of permissions defined for this entity.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/Permission'

  /DistributedVirtualSwitch/{moId}/portgroup:
    get:
      tags: [DistributedVirtualSwitch]
      summary: |2
        Portgroups that are defined on the switch.
      operationId: DistributedVirtualSwitch_getPortgroup
      description: |2
        Portgroups that are defined on the switch.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            Refers instances of *DistributedVirtualPortgroup*.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/ManagedObjectReference'

  /DistributedVirtualSwitch/{moId}/recentTask:
    get:
      tags: [DistributedVirtualSwitch]
      summary: |2
        The set of recent tasks operating on this managed entity.
      operationId: DistributedVirtualSwitch_getRecentTask
      description: |2
        The set of recent tasks operating on this managed entity.
        
        This is a subset
        of *TaskManager.recentTask* belong to this entity. A task in this
        list could be in one of the four states: pending, running, success or error.
        
        This property can be used to deduce intermediate power states for
        a virtual machine entity. For example, if the current powerState is "poweredOn"
        and there is a running task performing the "suspend" operation, then the virtual
        machine's intermediate state might be described as "suspending."
        
        Most tasks (such as power operations) obtain exclusive access to the virtual
        machine, so it is unusual for this list to contain more than one running task.
        One exception, however, is the task of cloning a virtual machine.
        In releases after vSphere API 5.0, vSphere Servers might not
        generate property collector update notifications for this property.
        To obtain the latest value of the property, you can use
        PropertyCollector methods RetrievePropertiesEx or WaitForUpdatesEx.
        If you use the PropertyCollector.WaitForUpdatesEx method, specify
        an empty string for the version parameter. Any other version value will not
        produce any property values as no updates are generated.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            Refers instances of *Task*.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/ManagedObjectReference'

  /DistributedVirtualSwitch/{moId}/runtime:
    get:
      tags: [DistributedVirtualSwitch]
      summary: |2
        Runtime information of the distributed virtual switch.
      operationId: DistributedVirtualSwitch_getRuntime
      description: |2
        Runtime information of the distributed virtual switch.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                $ref: '#/components/schemas/DVSRuntimeInfo'

  /DistributedVirtualSwitch/{moId}/summary:
    get:
      tags: [DistributedVirtualSwitch]
      summary: |2
        Summary of the switch.
      operationId: DistributedVirtualSwitch_getSummary
      description: |2
        Summary of the switch.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DVSSummary'

  /DistributedVirtualSwitch/{moId}/tag:
    get:
      tags: [DistributedVirtualSwitch]
      summary: |2
        The set of tags associated with this managed entity.
      operationId: DistributedVirtualSwitch_getTag
      description: |2
        The set of tags associated with this managed entity.
        
        Experimental. Subject to change.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/Tag'

  /DistributedVirtualSwitch/{moId}/triggeredAlarmState:
    get:
      tags: [DistributedVirtualSwitch]
      summary: |2
        A set of alarm states for alarms triggered by this entity
        or by its descendants.
      operationId: DistributedVirtualSwitch_getTriggeredAlarmState
      description: |2
        A set of alarm states for alarms triggered by this entity
        or by its descendants.
        
        Triggered alarms are propagated up the inventory hierarchy
        so that a user can readily tell when a descendant has triggered an alarm.
        In releases after vSphere API 5.0, vSphere Servers might not
        generate property collector update notifications for this property.
        To obtain the latest value of the property, you can use
        PropertyCollector methods RetrievePropertiesEx or WaitForUpdatesEx.
        If you use the PropertyCollector.WaitForUpdatesEx method, specify
        an empty string for the version parameter. Any other version value will not
        produce any property values as no updates are generated.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/AlarmState'

  /DistributedVirtualSwitch/{moId}/uuid:
    get:
      tags: [DistributedVirtualSwitch]
      summary: |2
        Generated UUID of the switch.
      operationId: DistributedVirtualSwitch_getUuid
      description: |2
        Generated UUID of the switch.
        
        Unique across vCenter Server
        inventory and instances.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                type: string

  /DistributedVirtualSwitch/{moId}/value:
    get:
      tags: [DistributedVirtualSwitch]
      summary: |2
        List of custom field values.
      operationId: DistributedVirtualSwitch_getValue
      description: |2
        List of custom field values.
        
        Each value uses a key to associate
        an instance of a *CustomFieldStringValue* with
        a custom field definition.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/CustomFieldValue'

  /DistributedVirtualSwitchManager/{moId}/QueryDvsCheckCompatibility:
    post:
      tags: [DistributedVirtualSwitchManager]
      summary: |2
        This operation returns a list of compatibility results.
      operationId: DistributedVirtualSwitchManager_QueryDvsCheckCompatibility
      description: |2
        This operation returns a list of compatibility results.
        
        Each compatibility result
        is an object that has a host property and optionally a fault which would
        be populated only if that host is not compatible with a given dvsProductSpec.
        All filters in hostFilerSpecs are ANDed to derive the intersection of hosts against
        which compatibility is checked. If caller did not have view privileges on the
        host entity in an element of the CompatibilityResult array, then that entire
        element would be removed from the CompatibilityResult array.
        Typical uses:
        - For the createDVS situation, hostFilterSpec is of type HostDvsFilterSpec and DvsProductSpec
          will have newSwitchProductSpec set.
        - For the Add-Host-To-DVS situation, you can use either HostDvsFilterSpec or
          HostDvsMembershipFilter with inclusive being false, and pass the DVS in DvsProductSpec.
        - For the Upgrade-DVS situation, you can use either HostDvsFilterSpec or
          HostDvsMembershipFilter with inclusive being true, and pass the new desired ProductSpec
          for DVS in newSwitchProductSpec.
          
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QueryDvsCheckCompatibilityRequestType'
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/DistributedVirtualSwitchManagerCompatibilityResult'

  /DistributedVirtualSwitchManager/{moId}/DVSManagerExportEntity_Task:
    post:
      tags: [DistributedVirtualSwitchManager]
      summary: |2
        Export the configuration for entities specified in the
        <code>selectionSet</code> parameter.
      operationId: DistributedVirtualSwitchManager_DVSManagerExportEntity_Task
      description: |2
        Export the configuration for entities specified in the
        <code>selectionSet</code> parameter.
        
        You can use this method only
        for a *VmwareDistributedVirtualSwitch* and its
        associated *DistributedVirtualPortgroup* objects.
        
        Use the *DistributedVirtualSwitchManager.DVSManagerImportEntity_Task* method to restore the entity
        to the state represented by the exported configuration.
        You can also use the exported configuration to create
        a new switch or portgroup.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DVSManagerExportEntityRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which
            to monitor the operation. After successful completion, the
            *Task*.*Task.info*.*TaskInfo.result*
            property contains the *EntityBackupConfig* object.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***NotFound***: If entity in selectionSet doesn't exist.
            
            ***BackupBlobWriteFailure***: if failed to create backup config blob.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /DistributedVirtualSwitchManager/{moId}/DVSManagerImportEntity_Task:
    post:
      tags: [DistributedVirtualSwitchManager]
      summary: |2
        Import the configuration of entities specified in
        *EntityBackupConfig*.
      operationId: DistributedVirtualSwitchManager_DVSManagerImportEntity_Task
      description: |2
        Import the configuration of entities specified in
        *EntityBackupConfig*.
        
        You can restore the
        existing configuration to the state represented by the
        backup configuration. You can also use the backup
        configuration to create a new switch or portgroup.
        See *EntityImportType_enum*.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DVSManagerImportEntityRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which
            to monitor the operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***NotFound***: If entity in *EntityBackupConfig.key* doesn't exist.
            
            ***DvsFault***: if operation fails on any host.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /DistributedVirtualSwitchManager/{moId}/DVSManagerLookupDvPortGroup:
    post:
      tags: [DistributedVirtualSwitchManager]
      summary: |2
        Returns the portgroup identified by the key within the specified VDS
        identified by its UUID.
      operationId: DistributedVirtualSwitchManager_DVSManagerLookupDvPortGroup
      description: |2
        Returns the portgroup identified by the key within the specified VDS
        identified by its UUID.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DVSManagerLookupDvPortGroupRequestType'
      responses:
        '200':
          description: |2
            Refers instance of *DistributedVirtualPortgroup*.
          content:
            application/json:
              schema:
                nullable: true
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***NotFound***: If the portgroup for the specified inputs was not found.
            
            ***NotSupported***: If the operation is not supported.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFound'

  /DistributedVirtualSwitchManager/{moId}/QueryCompatibleHostForExistingDvs:
    post:
      tags: [DistributedVirtualSwitchManager]
      summary: |2
        This operation returns a list of hosts that are compatible with
        the given DistributedVirtualSwitch product specification.
      operationId: DistributedVirtualSwitchManager_QueryCompatibleHostForExistingDvs
      description: |2
        This operation returns a list of hosts that are compatible with
        the given DistributedVirtualSwitch product specification.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QueryCompatibleHostForExistingDvsRequestType'
      responses:
        '200':
          description: |2
            Refers instances of *HostSystem*.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/ManagedObjectReference'

  /DistributedVirtualSwitchManager/{moId}/QueryCompatibleHostForNewDvs:
    post:
      tags: [DistributedVirtualSwitchManager]
      summary: |2
        This operation returns a list of hosts that are compatible with
        the given DistributedVirtualSwitch product specification.
      operationId: DistributedVirtualSwitchManager_QueryCompatibleHostForNewDvs
      description: |2
        This operation returns a list of hosts that are compatible with
        the given DistributedVirtualSwitch product specification.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QueryCompatibleHostForNewDvsRequestType'
      responses:
        '200':
          description: |2
            Refers instances of *HostSystem*.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/ManagedObjectReference'

  /DistributedVirtualSwitchManager/{moId}/QueryDvsCompatibleHostSpec:
    post:
      tags: [DistributedVirtualSwitchManager]
      summary: |2
        This operation returns a list of host product specifications that
        are compatible with the given DistributedVirtualSwitch product
        specification.
      operationId: DistributedVirtualSwitchManager_QueryDvsCompatibleHostSpec
      description: |2
        This operation returns a list of host product specifications that
        are compatible with the given DistributedVirtualSwitch product
        specification.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QueryDvsCompatibleHostSpecRequestType'
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/DistributedVirtualSwitchHostProductSpec'

  /DistributedVirtualSwitchManager/{moId}/QueryCompatibleVmnicsFromHosts:
    post:
      tags: [DistributedVirtualSwitchManager]
      summary: |2
        This operation returns a list of vmnics which are compatible
        with the given DistributedVirtualSwitch product specification.
      operationId: DistributedVirtualSwitchManager_QueryCompatibleVmnicsFromHosts
      description: |2
        This operation returns a list of vmnics which are compatible
        with the given DistributedVirtualSwitch product specification.
        
        ***Since:*** vSphere API Release 8.0.0.1
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QueryCompatibleVmnicsFromHostsRequestType'
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/DVSManagerPhysicalNicsList'

  /DistributedVirtualSwitchManager/{moId}/QueryDvsConfigTarget:
    post:
      tags: [DistributedVirtualSwitchManager]
      summary: |2
        This operation returns the DistributedVirtualSwitch or
        DistributedVirtualPortgroup configuration target on a host.
      operationId: DistributedVirtualSwitchManager_QueryDvsConfigTarget
      description: |2
        This operation returns the DistributedVirtualSwitch or
        DistributedVirtualPortgroup configuration target on a host.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QueryDvsConfigTargetRequestType'
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DVSManagerDvsConfigTarget'

  /DistributedVirtualSwitchManager/{moId}/QueryDvsFeatureCapability:
    post:
      tags: [DistributedVirtualSwitchManager]
      summary: |2
        This operation indicates which version-specific DVS features are
        available for the given DistributedVirtualSwitch product specification.
      operationId: DistributedVirtualSwitchManager_QueryDvsFeatureCapability
      description: |2
        This operation indicates which version-specific DVS features are
        available for the given DistributedVirtualSwitch product specification.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QueryDvsFeatureCapabilityRequestType'
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                $ref: '#/components/schemas/DVSFeatureCapability'

  /DistributedVirtualSwitchManager/{moId}/QuerySupportedNetworkOffloadSpec:
    post:
      tags: [DistributedVirtualSwitchManager]
      summary: |2
        This operation returns a list of network offload specifications that are
        compatible with the given DistributedVirtualSwitch product specification.
      operationId: DistributedVirtualSwitchManager_QuerySupportedNetworkOffloadSpec
      description: |2
        This operation returns a list of network offload specifications that are
        compatible with the given DistributedVirtualSwitch product specification.
        
        ***Since:*** vSphere API Release 8.0.0.1
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QuerySupportedNetworkOffloadSpecRequestType'
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/DistributedVirtualSwitchNetworkOffloadSpec'

  /DistributedVirtualSwitchManager/{moId}/QueryAvailableDvsSpec:
    post:
      tags: [DistributedVirtualSwitchManager]
      summary: |2
        This operation returns a list of switch product specifications that
        are supported by the vCenter Server.
      operationId: DistributedVirtualSwitchManager_QueryAvailableDvsSpec
      description: |2
        This operation returns a list of switch product specifications that
        are supported by the vCenter Server.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QueryAvailableDvsSpecRequestType'
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/DistributedVirtualSwitchProductSpec'

  /DistributedVirtualSwitchManager/{moId}/QueryDvsByUuid:
    post:
      tags: [DistributedVirtualSwitchManager]
      summary: |2
        This operation returns a DistributedVirtualSwitch given a UUID.
      operationId: DistributedVirtualSwitchManager_QueryDvsByUuid
      description: |2
        This operation returns a DistributedVirtualSwitch given a UUID.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QueryDvsByUuidRequestType'
      responses:
        '200':
          description: |2
            Refers instance of *DistributedVirtualSwitch*.
          content:
            application/json:
              schema:
                nullable: true
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***NotFound***: If a switch with the UUID doesn't exist.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFound'

  /DistributedVirtualSwitchManager/{moId}/RectifyDvsOnHost_Task:
    post:
      tags: [DistributedVirtualSwitchManager]
      summary: |2
        Update the Distributed Switch configuration on the hosts to bring them in sync with the
        current configuration in vCenter Server.
      operationId: DistributedVirtualSwitchManager_RectifyDvsOnHost_Task
      description: |2
        Update the Distributed Switch configuration on the hosts to bring them in sync with the
        current configuration in vCenter Server.
        
        ***Required privileges:*** System.Read
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RectifyDvsOnHostRequestType'
      responses:
        '200':
          description: |2
            Returns a *Task* object with which to monitor the operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***DvsFault***: if operation fails on any host or if there are other update failures.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DvsFault'

  /EnvironmentBrowser/{moId}/QueryConfigOption:
    post:
      tags: [EnvironmentBrowser]
      summary: |2
        Query for a specific virtual machine configuration option (the ConfigOption).
      operationId: EnvironmentBrowser_QueryConfigOption
      description: |2
        Query for a specific virtual machine configuration option (the ConfigOption).
        
        If the EnvironmentBrowser is from a ComputeResource or ClusterComputeResource,
        the key or host, or both arguments can be used to return the required config
        options. If a key is specified, then the ConfigOption corresponding to that key
        value is returned. If a host is specified, then the default ConfigOption for
        that host is returned. If key and host both are specified, the ConfigOption
        corresponding to the given key for that host is returned. If neither is specified,
        then the default ConfigOption for this environment browser is returned. Typically,
        the default contains the options for the most recent virtual hardware
        supported.
        
        If the EnvironmentBrowser is from a VirtualMachine neither a host nor a
        key should be specified.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QueryConfigOptionRequestType'
      responses:
        '200':
          description: |2
            Returns the ConfigOption object. If invoked on a cluster with no hosts, or
            if the ConfigOption with given key is not found for the given host, null
            is returned.
          content:
            application/json:
              schema:
                nullable: true
                $ref: '#/components/schemas/VirtualMachineConfigOption'

  /EnvironmentBrowser/{moId}/QueryConfigOptionDescriptor:
    post:
      tags: [EnvironmentBrowser]
      summary: |2
        The list of ConfigOption keys available on this entity.
      operationId: EnvironmentBrowser_QueryConfigOptionDescriptor
      description: |2
        The list of ConfigOption keys available on this entity.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/VirtualMachineConfigOptionDescriptor'

  /EnvironmentBrowser/{moId}/QueryConfigOptionEx:
    post:
      tags: [EnvironmentBrowser]
      summary: |2
        Query for a virtual machine configuration *option*
        matching the key or host or both given in the
        *EnvironmentBrowserConfigOptionQuerySpec*.
      operationId: EnvironmentBrowser_QueryConfigOptionEx
      description: |2
        Query for a virtual machine configuration *option*
        matching the key or host or both given in the
        *EnvironmentBrowserConfigOptionQuerySpec*.
        
        For more details see
        *EnvironmentBrowser.QueryConfigOption*
        
        If the Environment Browser belongs to a virtual machine and the spec argument
        is omitted, the method returns the ConfigOption object corresponding to the
        vmx version of the virutal machine and the
        *guestOSDescriptor* list contains
        only the guestId of the virutal machine.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QueryConfigOptionExRequestType'
      responses:
        '200':
          description: |2
            Returns the *VirtualMachineConfigOption* object. If invoked on a cluster
            with no hosts, or if the *VirtualMachineConfigOption* with given key is
            not found for the given host, null is returned.
          content:
            application/json:
              schema:
                nullable: true
                $ref: '#/components/schemas/VirtualMachineConfigOption'

  /EnvironmentBrowser/{moId}/QueryConfigTarget:
    post:
      tags: [EnvironmentBrowser]
      summary: |2
        Queries for information about a specific target, a "physical" device that
        can be used to back virtual devices.
      operationId: EnvironmentBrowser_QueryConfigTarget
      description: |2
        Queries for information about a specific target, a "physical" device that
        can be used to back virtual devices.
        
        The ConfigTarget that is returned specifies
        the set of values that can be used in the device backings to connect the virtual
        machine to physical (or logical) host devices.
        
        If the EnvironmentBrowser is from a ComputeResource or ClusterComputeResource,
        the host argument can be used to return the ConfigTarget provided by a particular
        host in the compute resource or cluster. If host is not specified and the
        EnvironmentBrowser is from a ComputeResource or ClusterComputeResource,
        then the union of all the devices is returned and the
        vim.vm.TargetInfo.configurationTag field indicates how widely the device is
        available across the compute resource or cluster.
        
        If the EnvironmentBrowser is from a VirtualMachine a host should not be specified.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QueryConfigTargetRequestType'
      responses:
        '200':
          description: |2
            Returns the ConfigTarget object. If invoked on a cluster with no hosts,
            null is returned.
          content:
            application/json:
              schema:
                nullable: true
                $ref: '#/components/schemas/ConfigTarget'

  /EnvironmentBrowser/{moId}/QueryTargetCapabilities:
    post:
      tags: [EnvironmentBrowser]
      summary: |2
        Queries for information on the capabilities supported by the ComputeResource
        associated with the EnvironmentBrowser.
      operationId: EnvironmentBrowser_QueryTargetCapabilities
      description: |2
        Queries for information on the capabilities supported by the ComputeResource
        associated with the EnvironmentBrowser.
        
        If the EnvironmentBrowser is from a ComputeResource or ClusterComputeResource,
        the host argument can be used to return the capabilities associated with a
        specific host in the compute resource or cluster. If the host argument is not
        specified and the EnvironmentBrowser is from a ComputeResource or
        ClusterComputeResource, then the intersection of the capabilities supported by
        all the hosts in the cluster is returned. If the EnvironmentBrowser is from
        a VirtualMachine, the compute resource associated with the virtual machine
        will be queried for its capabilities.
        
        If the EnvironmentBrowser is from a VirtualMachine a host should not be specified.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QueryTargetCapabilitiesRequestType'
      responses:
        '200':
          description: |2
            Returns the set of capabilities supported by the ComputeResource
            associated with the EnvironmentBrowser. If invoked on a cluster with
            no hosts, null is returned.
          content:
            application/json:
              schema:
                nullable: true
                $ref: '#/components/schemas/HostCapability'

  /EnvironmentBrowser/{moId}/datastoreBrowser:
    get:
      tags: [EnvironmentBrowser]
      summary: |2
        DatastoreBrowser to browse datastores that are available on this entity.
      operationId: EnvironmentBrowser_getDatastoreBrowser
      description: |2
        DatastoreBrowser to browse datastores that are available on this entity.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            Refers instance of *HostDatastoreBrowser*.
          content:
            application/json:
              schema:
                nullable: true
                $ref: '#/components/schemas/ManagedObjectReference'

  /EventHistoryCollector/{moId}/ReadNextEvents:
    post:
      tags: [EventHistoryCollector]
      summary: |2
        Reads the 'scrollable view' from the current position.
      operationId: EventHistoryCollector_ReadNextEvents
      description: |2
        Reads the 'scrollable view' from the current position.
        
        The scrollable
        position is moved to the next newer page after the read. No item is
        returned when the end of the collector is reached.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ReadNextEventsRequestType'
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/Event'

  /EventHistoryCollector/{moId}/ReadPreviousEvents:
    post:
      tags: [EventHistoryCollector]
      summary: |2
        Reads the 'scrollable view' from the current position.
      operationId: EventHistoryCollector_ReadPreviousEvents
      description: |2
        Reads the 'scrollable view' from the current position.
        
        The scrollable
        position is moved to the next older page after the read. No item is
        returned when the head of the collector is reached.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ReadPreviousEventsRequestType'
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/Event'

  /EventHistoryCollector/{moId}/DestroyCollector:
    post:
      tags: [EventHistoryCollector]
      summary: |2
        Destroys this collector.
      operationId: EventHistoryCollector_DestroyCollector
      description: |2
        Destroys this collector.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '204':
          description: |2
            No Content

  /EventHistoryCollector/{moId}/ResetCollector:
    post:
      tags: [EventHistoryCollector]
      summary: |2
        Moves the "scrollable view" to the item immediately preceding the
        "viewable latest page".
      operationId: EventHistoryCollector_ResetCollector
      description: |2
        Moves the "scrollable view" to the item immediately preceding the
        "viewable latest page".
        
        If you use "readPrev",
        *ReadPreviousTasks* or
        *ReadPreviousEvents*,
        all items
        are retrieved from the newest item to the oldest item.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '204':
          description: |2
            No Content

  /EventHistoryCollector/{moId}/RewindCollector:
    post:
      tags: [EventHistoryCollector]
      summary: |2
        Moves the "scrollable view" to the oldest item.
      operationId: EventHistoryCollector_RewindCollector
      description: |2
        Moves the "scrollable view" to the oldest item.
        
        If you use
        *ReadNextTasks* or
        *ReadNextEvents*,
        all items are retrieved from the oldest item to the newest item. This
        is the default setting when the collector is created.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '204':
          description: |2
            No Content

  /EventHistoryCollector/{moId}/SetCollectorPageSize:
    post:
      tags: [EventHistoryCollector]
      summary: |2
        Sets the "viewable latest page" size to contain at most the
        number of items specified by the maxCount parameter).
      operationId: EventHistoryCollector_SetCollectorPageSize
      description: |2
        Sets the "viewable latest page" size to contain at most the
        number of items specified by the maxCount parameter).
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SetCollectorPageSizeRequestType'
      responses:
        '204':
          description: |2
            No Content

  /EventHistoryCollector/{moId}/filter:
    get:
      tags: [EventHistoryCollector]
      summary: |2
        The filter used to create this collector.
      operationId: EventHistoryCollector_getFilter
      description: |2
        The filter used to create this collector.
        
        The type of the returned filter is determined by the managed object
        for which the collector is created.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Any'

  /EventHistoryCollector/{moId}/initialized:
    get:
      tags: [EventHistoryCollector]
      summary: |2
        Indicates whether the *EventHistoryCollector.latestPage* is initialized.
      operationId: EventHistoryCollector_getInitialized
      description: |2
        Indicates whether the *EventHistoryCollector.latestPage* is initialized.
        
        If the
        *EventFilterSpec.delayedInit* is `false` or unset this property is always true.
        
        ***Since:*** vSphere API Release 8.0.3.0
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: boolean

  /EventHistoryCollector/{moId}/latestPage:
    get:
      tags: [EventHistoryCollector]
      summary: |2
        The items in the 'viewable latest page'.
      operationId: EventHistoryCollector_getLatestPage
      description: |2
        The items in the 'viewable latest page'.
        
        As new events that match the
        collector's *EventFilterSpec* are created, they are added to this
        page, and the oldest events are removed from the collector to keep the
        size of the page to that allowed by
        *HistoryCollector.SetCollectorPageSize*.
        
        The "oldest event" is the one with the smallest key (event ID). The
        events in the returned page are unordered.
        While `initialized` is `false` this property will remain empty and once the Collector is initialized it will be populated.
        While `initialized` is `true` this property is populated immediately.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/Event'

  /EventManager/{moId}/QueryEvents:
    post:
      tags: [EventManager]
      summary: |2
        Returns the events in specified filter.
      operationId: EventManager_QueryEvents
      description: |2
        Returns the events in specified filter.
        
        Returns empty array when there are not any events qualified.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QueryEventsRequestType'
      responses:
        '200':
          description: |2
            The events matching the filter.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/Event'

  /EventManager/{moId}/CreateCollectorForEvents:
    post:
      tags: [EventManager]
      summary: |2
        Creates an event history collector, which is a specialized history collector
        that provides Event objects.
      operationId: EventManager_CreateCollectorForEvents
      description: |2
        Creates an event history collector, which is a specialized history collector
        that provides Event objects.
        
        Event collectors do not persist beyond the current client session.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateCollectorForEventsRequestType'
      responses:
        '200':
          description: |2
            The event collector based on the filter.
            
            Refers instance of *EventHistoryCollector*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***InvalidArgument***: if the filter is null or if any of its fields
            is invalid, such as an invalid reference to a
            managed object, alarm, or scheduled task, or an
            invalid event type or event chain id, etc.
            
            ***InvalidState***: if there are more than the maximum number of
            event collectors.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InvalidState'

  /EventManager/{moId}/LogUserEvent:
    post:
      tags: [EventManager]
      summary: |2
        Logs a user defined event against a particular managed entity.
      operationId: EventManager_LogUserEvent
      description: |2
        Logs a user defined event against a particular managed entity.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LogUserEventRequestType'
      responses:
        '204':
          description: |2
            No Content

  /EventManager/{moId}/PostEvent:
    post:
      tags: [EventManager]
      summary: |2
        Posts the specified event, optionally associating it with
        a task.
      operationId: EventManager_PostEvent
      description: |2
        Posts the specified event, optionally associating it with
        a task.
        
        The event being posted should have the following info in it:
        - The *ManagedEntity* on which the event is being posted should
          be set in the appropriate *EntityEventArgument* field of the base
          *Event* class. It is OK to not set any entity, in which case the
          event is treated as an event about the system.
        - Some Event fields (*Event.key*, *Event.chainId*,
          *Event.createdTime*) are mandatory because of the nature of
          the structure, but any caller-supplied values will be overwritten by
          the system.
          
        If the event being posted is to be associated with an existing
        *Task*, the appropriate *TaskInfo* needs to be passed in.
        This task can either be one returned from a vSphere API operation or
        an extension task created by calling *TaskManager.CreateTask*.
        
        ***Required privileges:*** Global.LogEvent
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostEventRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***InvalidArgument***: if
            - an invalid reference to a managed object is passed in to one of the
              *EntityEventArgument* fields
            - an invalid severity value is passed in an *EventEx*.
              
            ***InvalidEvent***: no longer thrown by this API
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InvalidEvent'

  /EventManager/{moId}/RetrieveArgumentDescription:
    post:
      tags: [EventManager]
      summary: |2
        Retrieves the argument meta-data for a given Event type
      operationId: EventManager_RetrieveArgumentDescription
      description: |2
        Retrieves the argument meta-data for a given Event type
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RetrieveArgumentDescriptionRequestType'
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/EventArgDesc'

  /EventManager/{moId}/description:
    get:
      tags: [EventManager]
      summary: |2
        Static descriptive strings used in events.
      operationId: EventManager_getDescription
      description: |2
        Static descriptive strings used in events.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EventDescription'

  /EventManager/{moId}/latestEvent:
    get:
      tags: [EventManager]
      summary: |2
        The latest event that happened on the VirtualCenter server.
      operationId: EventManager_getLatestEvent
      description: |2
        The latest event that happened on the VirtualCenter server.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                $ref: '#/components/schemas/Event'

  /EventManager/{moId}/maxCollector:
    get:
      tags: [EventManager]
      summary: |2
        For each client, the maximum number of event collectors that can exist
        simultaneously.
      operationId: EventManager_getMaxCollector
      description: |2
        For each client, the maximum number of event collectors that can exist
        simultaneously.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                type: integer
                format: int32

  /ExtensibleManagedObject/{moId}/setCustomValue:
    post:
      tags: [ExtensibleManagedObject]
      summary: |2
        Assigns a value to a custom field.
      operationId: ExtensibleManagedObject_setCustomValue
      description: |2
        Assigns a value to a custom field.
        
        The setCustomValue method requires
        whichever updatePrivilege is defined as one of the
        *CustomFieldDef.fieldInstancePrivileges*
        for the CustomFieldDef whose value is being changed.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/setCustomValueRequestType'
      responses:
        '204':
          description: |2
            No Content

  /ExtensibleManagedObject/{moId}/availableField:
    get:
      tags: [ExtensibleManagedObject]
      summary: |2
        List of custom field definitions that are valid for the object's type.
      operationId: ExtensibleManagedObject_getAvailableField
      description: |2
        List of custom field definitions that are valid for the object's type.
        
        The fields are sorted by *CustomFieldDef.name*.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/CustomFieldDef'

  /ExtensibleManagedObject/{moId}/value:
    get:
      tags: [ExtensibleManagedObject]
      summary: |2
        List of custom field values.
      operationId: ExtensibleManagedObject_getValue
      description: |2
        List of custom field values.
        
        Each value uses a key to associate
        an instance of a *CustomFieldStringValue* with
        a custom field definition.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/CustomFieldValue'

  /ExtensionManager/{moId}/FindExtension:
    post:
      tags: [ExtensionManager]
      summary: |2
        Returns extension with the given key, if any.
      operationId: ExtensionManager_FindExtension
      description: |2
        Returns extension with the given key, if any.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/FindExtensionRequestType'
      responses:
        '200':
          description: |2
            Extension that matches given key, if any.
          content:
            application/json:
              schema:
                nullable: true
                $ref: '#/components/schemas/Extension'

  /ExtensionManager/{moId}/GetPublicKey:
    post:
      tags: [ExtensionManager]
      summary: |2
        Returns VirtualCenter Server public key.
      operationId: ExtensionManager_GetPublicKey
      deprecated: true
      description: |2
        Deprecated as of VI 4.0, use trusted certificates and
        *SessionManager.LoginExtensionBySubjectName* or
        *ExtensionManager.SetExtensionCertificate* and
        *SessionManager.LoginExtensionByCertificate*.
        
        Returns VirtualCenter Server public key.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            Public key of VirtualCenter Server, encoded
            in PEM (privacy-enhanced mail) format.
          content:
            application/json:
              schema:
                type: string

  /ExtensionManager/{moId}/QueryExtensionIpAllocationUsage:
    post:
      tags: [ExtensionManager]
      summary: |2
        Query statistics about IP allocation usage, either system wide or for
        specified extensions.
      operationId: ExtensionManager_QueryExtensionIpAllocationUsage
      description: |2
        Query statistics about IP allocation usage, either system wide or for
        specified extensions.
        
        Refer to *IpPoolManager* for details.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QueryExtensionIpAllocationUsageRequestType'
      responses:
        '200':
          description: |2
            List of IP allocation usage.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/ExtensionManagerIpAllocationUsage'

  /ExtensionManager/{moId}/QueryManagedBy:
    post:
      tags: [ExtensionManager]
      summary: |2
        Find entities managed by an extension.
      operationId: ExtensionManager_QueryManagedBy
      description: |2
        Find entities managed by an extension.
        
        These can be either virtual machines
        or vApps.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QueryManagedByRequestType'
      responses:
        '200':
          description: |2
            List of entities managed by the extension.
            
            Refers instances of *ManagedEntity*.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/ManagedObjectReference'

  /ExtensionManager/{moId}/RegisterExtension:
    post:
      tags: [ExtensionManager]
      summary: |2
        Registers extension.
      operationId: ExtensionManager_RegisterExtension
      description: |2
        Registers extension.
        
        ***Required privileges:*** Extension.Register
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RegisterExtensionRequestType'
      responses:
        '204':
          description: |2
            No Content

  /ExtensionManager/{moId}/SetExtensionCertificate:
    post:
      tags: [ExtensionManager]
      summary: |2
        Update the stored authentication certificate for a specified extension.
      operationId: ExtensionManager_SetExtensionCertificate
      description: |2
        Update the stored authentication certificate for a specified extension.
        
        Updates the registration of the specified extension with the
        thumbprint of the X.509 client certificate provided over SSL handshake,
        or by the &quot;certificatePem&quot;argument. The thumbprint
        will be used to authenticate the extension during invocations of
        *SessionManager.LoginExtensionByCertificate*.
        
        NOTE: No verification is performed on the received certificate, such as
        expiry or revocation.
        
        This method will unset any public key or subject name
        associated with the extension.
        
        ***Required privileges:*** Extension.Update
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SetExtensionCertificateRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***InvalidArgument***: if the certificate described by
            &quot;certificatePem&quot; is not in PEM
            format, or could not be decoded to an X.509 certificate.
            
            ***NoClientCertificate***: if certificatePem is not specified, and
            no certificate was passed over SSL handshake.
            
            ***NotFound***: if an extension specified by &quot;extensionKey&quot;
            is not registered.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /ExtensionManager/{moId}/SetPublicKey:
    post:
      tags: [ExtensionManager]
      summary: |2
        Sets extension's public key.
      operationId: ExtensionManager_SetPublicKey
      deprecated: true
      description: |2
        Deprecated as of VI 4.0, use trusted certificates and
        *SessionManager.LoginExtensionBySubjectName* or
        *ExtensionManager.SetExtensionCertificate* and
        *SessionManager.LoginExtensionByCertificate*.
        
        Sets extension's public key.
        
        This method will unset any subject name or
        certificate associated with the extension.
        
        ***Required privileges:*** Extension.Update
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SetPublicKeyRequestType'
      responses:
        '204':
          description: |2
            No Content

  /ExtensionManager/{moId}/SetServiceAccount:
    post:
      tags: [ExtensionManager]
      summary: |2
        Update the stored authentication service account for the specified extension.
      operationId: ExtensionManager_SetServiceAccount
      description: |2
        Update the stored authentication service account for the specified extension.
        
        Updates the registration of the specified extension with the
        service account passed in the &quot;serviceAccount&quot;parameter.
        The service account will be used to authenticate the extension
        by invoking vCenter Server Login APIs and the user session can be
        used to update an Extension's data.
        
        This method will unset the previous service account name
        associated with the extension.
        
        The account name must be passed in with same case as the created
        account name.
        The account name must be suffixed with the vCenter machine id.
        The account name passed in must be qualified by the SSO domain
        for the vCenter server using the same format as userName for
        *SessionManager.Login*
        
        NOTE: Account lifetime is managed by the extension owning the account.
        
        ***Since:*** vSphere API Release 8.0.2.0
        
        ***Required privileges:*** Extension.Update
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SetServiceAccountRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***InvalidArgument***: if the account name described by
            &quot;serviceAccount&quot; is not present.
            
            ***NotFound***: if an extension specified by &quot;extensionKey&quot;
            is not registered or the service account is not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFound'

  /ExtensionManager/{moId}/UnregisterExtension:
    post:
      tags: [ExtensionManager]
      summary: |2
        Unregisters the specified extension if it exists.
      operationId: ExtensionManager_UnregisterExtension
      description: |2
        Unregisters the specified extension if it exists.
        
        ***Required privileges:*** Extension.Unregister
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UnregisterExtensionRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***NotFound***: if the specified extension
            is not registered.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFound'

  /ExtensionManager/{moId}/UpdateExtension:
    post:
      tags: [ExtensionManager]
      summary: |2
        If the key specified in the extension exists,
        the existing record is updated.
      operationId: ExtensionManager_UpdateExtension
      description: |2
        If the key specified in the extension exists,
        the existing record is updated.
        
        If the &quot;subjectName&quot; property of the Extension
        object has a value, and it is different from the existing
        value, this method will unset any public key or
        certificate associated with the extension.
        
        ***Required privileges:*** Extension.Update
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateExtensionRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***NotFound***: if the specified extension key is not registered.
            
            ***InvalidArgument***: if the Extension description is incomplete or invalid, or
            if the extension is an OVF extension and its section types overlap with other
            registered OVF extensions.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFound'

  /ExtensionManager/{moId}/extensionList:
    get:
      tags: [ExtensionManager]
      summary: |2
        The list of currently registered extensions.
      operationId: ExtensionManager_getExtensionList
      description: |2
        The list of currently registered extensions.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/Extension'

  /FailoverClusterConfigurator/{moId}/configureVcha_Task:
    post:
      tags: [FailoverClusterConfigurator]
      summary: |2
        Configure VCHA on the local vCenter Server.
      operationId: FailoverClusterConfigurator_configureVcha_Task
      description: |2
        Configure VCHA on the local vCenter Server.
        
        This operation configures the VC appliance with VCHA specific inputs
        and uses already deployed Passive and Witness nodes to set up the
        VCHA cluster. After configuration, the VCHA Cluster is enabled
        on a best effort basis, but if this operation does not succeed,
        *FailoverClusterManager.setClusterMode_Task* must be called
        to enable it. State replication or failover is not allowed
        until the VCHA Cluster is enabled. The current vCenter Server
        continues to serve client requests during and after the configuration.
        
        ***Required privileges:*** Global.VCServer
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configureVchaRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to
            monitor the progress of the operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'

  /FailoverClusterConfigurator/{moId}/createPassiveNode_Task:
    post:
      tags: [FailoverClusterConfigurator]
      summary: |2
        Creates a Passive node in a degraded VCHA Cluster with node location
        information and pre-existing VCHA Cluster configuration from the
        Active node.
      operationId: FailoverClusterConfigurator_createPassiveNode_Task
      description: |2
        Creates a Passive node in a degraded VCHA Cluster with node location
        information and pre-existing VCHA Cluster configuration from the
        Active node.
        
        ***Required privileges:*** Global.VCServer
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/createPassiveNodeRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to
            monitor the progress of the operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'

  /FailoverClusterConfigurator/{moId}/createWitnessNode_Task:
    post:
      tags: [FailoverClusterConfigurator]
      summary: |2
        Creates a Witness node in a degraded VCHA Cluster with node location
        information and pre-existing VCHA Cluster configuration from the
        Active node.
      operationId: FailoverClusterConfigurator_createWitnessNode_Task
      description: |2
        Creates a Witness node in a degraded VCHA Cluster with node location
        information and pre-existing VCHA Cluster configuration from the
        Active node.
        
        ***Required privileges:*** Global.VCServer
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/createWitnessNodeRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to
            monitor the progress of the operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'

  /FailoverClusterConfigurator/{moId}/deployVcha_Task:
    post:
      tags: [FailoverClusterConfigurator]
      summary: |2
        Deploys and Configures VCHA on the local vCenter as a single API.
      operationId: FailoverClusterConfigurator_deployVcha_Task
      description: |2
        Deploys and Configures VCHA on the local vCenter as a single API.
        
        This deployment operation automatically provisions and creates a
        Passive and a Witness node followed by configuring each node such that
        a 3 node VCHA Cluster is formed. After configuration, the VCHA Cluster
        is enabled on a best effort basis, but if this operation does not
        succeed, *FailoverClusterManager.setClusterMode_Task* must be
        called to enable it. State replication or failover is not allowed
        until the VCHA Cluster is enabled. The current vCenter Server continues
        to serve client requests during and after the deployment.
        If the activeVcNetworkConfig spec if filled in, the cluster network
        will be created and configured.
        No changes will be made if the cluster network is already configured.
        
        ***Required privileges:*** Global.VCServer
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/deployVchaRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to
            monitor the progress of the operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'

  /FailoverClusterConfigurator/{moId}/destroyVcha_Task:
    post:
      tags: [FailoverClusterConfigurator]
      summary: |2
        Destroys the VCHA cluster setup and removes all VCHA specific
        configuration from the VCVA appliance.
      operationId: FailoverClusterConfigurator_destroyVcha_Task
      description: |2
        Destroys the VCHA cluster setup and removes all VCHA specific
        configuration from the VCVA appliance.
        
        The active node in the cluster
        continues to run as a standalone VCVA appliance after the destroy
        operation has been performed.
        This operation is allowed under the following circumstances:
        \- VCHA cluster is disabled
        \- The node is in an isolated state
        \- VCHA Deploy/Configure has failed
        
        ***Required privileges:*** Global.VCServer
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'

  /FailoverClusterConfigurator/{moId}/getVchaConfig:
    post:
      tags: [FailoverClusterConfigurator]
      summary: |2
        Returns the configuration information for each node that is part of
        the VCHA Cluster.
      operationId: FailoverClusterConfigurator_getVchaConfig
      description: |2
        Returns the configuration information for each node that is part of
        the VCHA Cluster.
        
        ***Required privileges:*** System.Read
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            Returns a data structure specifying configuration for Active,
            Passive and Witness node in the Cluster.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VchaClusterConfigInfo'

  /FailoverClusterConfigurator/{moId}/prepareVcha_Task:
    post:
      tags: [FailoverClusterConfigurator]
      summary: |2
        Prepares the vCenter appliance for a VCHA cluster deployment.
      operationId: FailoverClusterConfigurator_prepareVcha_Task
      description: |2
        Prepares the vCenter appliance for a VCHA cluster deployment.
        
        This preparation operation saves the network configuration of the cluster
        and configures the Active node to be cloned for a VCHA configuration.
        Prepares the VCHA Active node for ssh keys, vpostgres replication
        and related configuration file setup needed for a VCHA cluster.
        If the Active node Cluster network adapter does not exist
        the prepare operation will fail.
        No changes will be made if the cluster is already configured.
        
        ***Required privileges:*** Global.VCServer
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/prepareVchaRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to
            monitor the progress of the operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'

  /FailoverClusterConfigurator/{moId}/disabledConfigureMethod:
    get:
      tags: [FailoverClusterConfigurator]
      summary: |2
        A list of method names that must not be called and will throw
        a fault due to some other method running that the disabled method
        can cause side-effects for.
      operationId: FailoverClusterConfigurator_getDisabledConfigureMethod
      description: |2
        A list of method names that must not be called and will throw
        a fault due to some other method running that the disabled method
        can cause side-effects for.
        
        This list may include the following methods:
        - *FailoverClusterConfigurator.deployVcha_Task*
        - *FailoverClusterConfigurator.configureVcha_Task*
        - *FailoverClusterConfigurator.createPassiveNode_Task*
        - *FailoverClusterConfigurator.createWitnessNode_Task*
        - *FailoverClusterConfigurator.destroyVcha_Task*
          
        As with other disabled methods there will be no property updates
        on this property when called with non-zero property collector versions.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  type: string

  /FailoverClusterManager/{moId}/GetVchaClusterHealth:
    post:
      tags: [FailoverClusterManager]
      summary: |2
        Returns last known health of the VCHA Cluster.
      operationId: FailoverClusterManager_GetVchaClusterHealth
      description: |2
        Returns last known health of the VCHA Cluster.
        
        ***Required privileges:*** System.Read
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VchaClusterHealth'

  /FailoverClusterManager/{moId}/getClusterMode:
    post:
      tags: [FailoverClusterManager]
      summary: |2
        Returns current mode of a VCHA Cluster.
      operationId: FailoverClusterManager_getClusterMode
      description: |2
        Returns current mode of a VCHA Cluster.
        
        ***Required privileges:*** System.Read
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                type: string

  /FailoverClusterManager/{moId}/initiateFailover_Task:
    post:
      tags: [FailoverClusterManager]
      summary: |2
        Allows a caller to initiate a failover from Active vCenter Server node
        to the Passive node.
      operationId: FailoverClusterManager_initiateFailover_Task
      description: |2
        Allows a caller to initiate a failover from Active vCenter Server node
        to the Passive node.
        
        By default it is a forced failover. The planned
        flag can be used to initiate it as a planned failover.
        For forced failover, Active node immediately initiates a failover. This
        may result into a data loss after failover.
        For planned failover, Active node flushes all the state to the
        Passive node, waits for the flush to complete before causing a failover.
        After the failover, Passive node starts without any data loss.
        A failover is allowed only in the following cases -
        1\. Cluster's mode is enabled and all cluster members are present.
        2\. Cluster's mode is maintenance and all cluster members are present.
        API throws an exception in all other cases.
        
        ***Required privileges:*** Global.VCServer
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/initiateFailoverRequestType'
      responses:
        '200':
          description: |2
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'

  /FailoverClusterManager/{moId}/setClusterMode_Task:
    post:
      tags: [FailoverClusterManager]
      summary: |2
        setClusterMode method allows caller to manipulate the mode of a
        VCHA Cluster
        Following mode transitions are allowed -
        enabled -&gt; disabled - Allowed only in healthy and degraded states.
      operationId: FailoverClusterManager_setClusterMode_Task
      description: |2
        setClusterMode method allows caller to manipulate the mode of a
        VCHA Cluster
        Following mode transitions are allowed -
        enabled -&gt; disabled - Allowed only in healthy and degraded states.
        
        enabled -&gt; maintenance - Allowed only in healthy state.
        disabled -&gt; enabled - Allowed only in healthy state.
        maintenance -&gt; enabled - Allowed only in healthy state with all nodes
        are running the same version.
        maintenance -&gt; disabled - Allowed only in healthy state with all nodes
        are running the same version.
        All other transitions are not allowed.
        VCHA Cluster configuration remains intact in any of the cluster modes.
        
        ***Required privileges:*** Global.VCServer
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/setClusterModeRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to
            monitor the progress of the operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'

  /FailoverClusterManager/{moId}/disabledClusterMethod:
    get:
      tags: [FailoverClusterManager]
      summary: |2
        A list of method names that must not be called and will throw
        a fault due to some other method running that the disabled method
        can cause side-effects for.
      operationId: FailoverClusterManager_getDisabledClusterMethod
      description: |2
        A list of method names that must not be called and will throw
        a fault due to some other method running that the disabled method
        can cause side-effects for.
        
        This list may include the following methods:
        - *FailoverClusterManager.setClusterMode_Task*
        - *FailoverClusterManager.getClusterMode*
        - *FailoverClusterManager.initiateFailover_Task*
        - *FailoverClusterManager.GetVchaClusterHealth*
          
        GetClusterHealth will also be disabled if Deploy is in progress.
        As with other disabled methods there will be no property updates
        on this property when called with non-zero property collector versions.
        
        ***Required privileges:*** System.Read
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  type: string

  /FileManager/{moId}/ChangeOwner:
    post:
      tags: [FileManager]
      summary: |2
        Change the owner for a file.
      operationId: FileManager_ChangeOwner
      description: |2
        Change the owner for a file.
        
        This method is currently not supported.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ChangeOwnerRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            Failure
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /FileManager/{moId}/CopyDatastoreFile_Task:
    post:
      tags: [FileManager]
      summary: |2
        Copies the source file or folder to the destination.
      operationId: FileManager_CopyDatastoreFile_Task
      description: |2
        Copies the source file or folder to the destination.
        
        If the destination file does not exist, it is created.
        If the destination file exists, the force parameter determines whether
        to overwrite it with the source or not.
        Folders can be copied recursively. In this case, the
        destination, if it exists, must be a folder, else one will be created. Existing
        files on the destination that conflict with source files can be overwritten using
        the force parameter. Files and disks are always copied in binary format during
        recursive copy.
        
        If source (or destination) name is specified as a URL, then the
        corresponding datacenter parameter may be omitted.
        
        If any intermediate level folder specified by the source and destination
        does not exist, a *FileNotFound* fault is thrown.
        
        If a file of a virtual machine is overwritten on the destination datastore
        as a result of the force parameter, it may corrupt that virtual machine.
        
        If the source is an extent of a virtual disk, this operation treats the extent
        as a file.
        
        If source and destination resolve to the same file system location,
        the call has no effect.
        
        It is important to note that this operation will provide transactional guarantees
        only for a file. No guarantees are provided when copying a folder.
        If the intent is to clone a virtual machine registered in the inventory,
        with transactional guarantees, please refer to *VirtualMachine.CloneVM_Task*.
        
        Datastore.FileManagement privilege is required on both source and
        destination datastores.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CopyDatastoreFileRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor the
            operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***InvalidDatastore***: if the operation cannot be performed on the source
            or destination datastores. Typically, a specific subclass of this exception is
            thrown.
            
            ***FileNotFound***: if the file or folder specified by sourceName is not
            found, or, any intermediate level folder specified by the destinationName is not
            found.
            
            ***CannotAccessFile***: if the source cannot be accessed because of
            insufficient permissions.
            
            ***FileLocked***: if the source file or folder is currently locked or in use.
            
            ***FileAlreadyExists***: if a file with the given name already
            exists at the destination, and the force flag is false.
            
            ***NoDiskSpace***: if there is not enough space available at the destination
            datastore.
            
            ***FileFault***: if there is a generic file error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /FileManager/{moId}/DeleteDatastoreFile_Task:
    post:
      tags: [FileManager]
      summary: |2
        Deletes the specified file or folder from the datastore.
      operationId: FileManager_DeleteDatastoreFile_Task
      description: |2
        Deletes the specified file or folder from the datastore.
        
        If a file of a virtual machine is deleted, it may corrupt that
        virtual machine. Folder deletes are always recursive.
        The datacenter parameter may be omitted if a URL is used to name
        the file or folder.
        
        If the source is an extent of a virtual disk, this operation treats the extent
        as a file.
        
        It is important to note that this operation will provide transactional guarantees
        only for a file. No guarantees are provided when deleting folders.
        If the intent is to delete a virtual machine registered in the inventory,
        please refer to *ManagedEntity.Destroy_Task*.
        
        Requires Datastore.FileManagement privilege on the datastore.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DeleteDatastoreFileRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor the
            operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***InvalidDatastore***: if the operation cannot be performed on the
            datastore. Typically, a specific subclass of this exception is thrown.
            
            ***FileNotFound***: if the file or folder specified by name
            is not found.
            
            ***CannotDeleteFile***: if the delete operation on the file or folder
            fails.
            
            ***FileLocked***: if the source file or folder is currently locked or
            in use.
            
            ***FileFault***: if there is a generic file error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /FileManager/{moId}/MakeDirectory:
    post:
      tags: [FileManager]
      summary: |2
        Create a folder using the specified name.
      operationId: FileManager_MakeDirectory
      description: |2
        Create a folder using the specified name.
        
        If the parent
        or intermediate level folders do not exist, and the parameter
        createParentDirectories is false, a *FileNotFound* fault
        is thrown.
        If the intermediate level folders do not exist, and the parameter
        createParentDirectories is true, all the non-existent folders
        are created.
        
        Requires Datastore.FileManagement privilege on the datastore.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MakeDirectoryRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***InvalidDatastore***: if the operation cannot be performed on the
            datastore. Typically, a specific subclass of this exception is thrown.
            
            ***CannotCreateFile***: if the create operation on the folder fails.
            
            ***FileAlreadyExists***: if a file or folder with the given name already
            exists at the destination.
            
            ***FileNotFound***: if the createParentDirectories is false and a intermediate
            level folder specified by name is not found.
            
            ***FileFault***: if there is a generic file error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /FileManager/{moId}/MoveDatastoreFile_Task:
    post:
      tags: [FileManager]
      summary: |2
        Moves the source file or folder to the destination.
      operationId: FileManager_MoveDatastoreFile_Task
      description: |2
        Moves the source file or folder to the destination.
        
        If the destination file does not exist, it is created.
        If the destination file exists, the force parameter determines whether
        to overwrite it with the source or not.
        If the source path is a folder, then the destination path must not exist; the
        destination cannot be overwritten even with a force flag in that case. Folder
        moves are recursive, treating all files and disks to move as binary.
        
        If source (or destination) name is specified as a URL, then the
        corresponding datacenter parameter may be omitted.
        
        If any intermediate level folder specified by the source and destination
        does not exist, a *FileNotFound* fault is thrown.
        
        If a file of a virtual machine is moved, it may corrupt that virtual machine.
        If a file of a virtual machine is overwritten on the destination datastore
        as a result of the force parameter, it may corrupt that virtual machine.
        
        If the source is an extent of a virtual disk, this operation treats the extent
        as a file.
        
        If source and destination resolve to the same file system location,
        the call has no effect.
        
        It is important to note that this operation will provide transactional guarantees
        only for a file. No guarantees are provided for folder moves. If the intent is
        to move a virtual machine registered in the inventory, with transactional
        guarantees, please refer to *VirtualMachine.RelocateVM_Task*.
        If the intent is to rename a virtual machine registered in the inventory, please
        refer to *ManagedEntity.Rename_Task*.
        
        Datastore.FileManagement privilege is required on both source and
        destination datastores.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MoveDatastoreFileRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor the
            operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***InvalidDatastore***: if the operation cannot be performed on the source
            or destination datastores. Typically, a specific subclass of this exception is
            thrown.
            
            ***FileNotFound***: if the file or folder specified by sourceName is not
            found, or, any intermediate level folder specified by the destinationName is not
            found.
            
            ***CannotAccessFile***: if the source file or folder cannot be moved because of
            insufficient permissions.
            
            ***FileLocked***: if the source file or folder is currently locked or in use.
            
            ***FileAlreadyExists***: if a file with the given name already
            exists at the destination, and the force flag is false. For folders, if the
            destination exists, this fault is thrown regardless.
            
            ***NoDiskSpace***: if there is not enough space available on the destination
            datastore.
            
            ***FileFault***: if there is a generic file error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /FileManager/{moId}/QueryFileLockInfo:
    post:
      tags: [FileManager]
      summary: |2
        Fetches as much information as possible for the file path passed in.
      operationId: FileManager_QueryFileLockInfo
      description: |2
        Fetches as much information as possible for the file path passed in.
        
        The main purpose of the API is to show caller any lock information
        that can be queried from the host. The API gathers various information
        depending on which file-system (VMFS/NFS/VSAN) the file is located on.
        
        ***Since:*** vSphere API Release 8.0.2.0
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QueryFileLockInfoRequestType'
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FileLockInfoResult'
        '500':
          description: |2
            ***InvalidDatastore***: If the operation cannot be performed on the
            datastore. Typically, a specific subclass of this exception
            is thrown.
            
            ***FileFault***: If there is a generic file error.
            
            ***InvalidArgument***: If invoked with no host param on vCenter or if
            invoked with invalid path. Expected VM file path
            would be: /vmfs/volumes/datastore1/vm/vm-flat.vmdk
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /Folder/{moId}/AddStandaloneHost_Task:
    post:
      tags: [Folder]
      summary: |2
        Creates a new single-host compute resource.
      operationId: Folder_AddStandaloneHost_Task
      description: |2
        Creates a new single-host compute resource.
        
        The name provided can be an
        IP address, such as 192.168.0.120, or a string, such as esx120.
        If a name is specified, a DNS lookup is used to resolve it to a fully-qualified
        name, such as esx120.vmware.com. If the DNS lookup fails, the string is
        stored as specified.
        
        Licenses for the host are allocated when making the first connection to
        the host. This is because the license needed typically depends on the type
        of host and the number of CPUs.
        
        In addition to the Host.Inventory.AddStandaloneHost privilege, it
        requires System.View privilege on the VM folder that the VMs of the
        host will be placed on.
        
        ***Required privileges:*** Host.Inventory.AddStandaloneHost
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AddStandaloneHostRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor the
            operation. The *info.result* property in the
            *Task* contains the newly added *ComputeResource* upon
            success.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***InvalidLogin***: if authentication with the host fails.
            
            ***InvalidArgument***: if an argument is specified incorrectly.
            
            ***AlreadyBeingManaged***: if the host is already being managed by a
            vCenter server. If the host is being managed by a different
            vCenter server, this can be overridden by the "force" flag in the
            connection specification.
            
            ***NotEnoughLicenses***: if there are not enough licenses to add the host.
            
            ***NoHost***: if the host cannot be contacted.
            
            ***NotSupported***: if the host is being added to a folder whose
            *Folder.childType* property does not contain
            "ComputeResource".
            
            ***NotSupportedHost***: if the host is running a software version that is not
            supported.
            
            ***AgentInstallFailed***: if there is an error installing the vCenter
            agent on the new host.
            
            ***AlreadyConnected***: if addConnected is true and the host is already
            connected to vCenter.
            
            ***HostConnectFault***: if an error occurred when attempting to connect
            to a host. Typically, a more specific subclass, such as
            AlreadyBeingManaged, is thrown.
            
            ***SSLVerifyFault***: if the host certificate could not be authenticated
            
            ***DuplicateName***: if another host in the same folder has the name.
            
            ***NoPermission***: if there are crypto keys to be sent to the host,
            but the user does not have Cryptographer.RegisterHost privilege
            on the Folder.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /Folder/{moId}/BatchAddHostsToCluster_Task:
    post:
      tags: [Folder]
      summary: |2
        Adds a set of new and existing hosts to the cluster.
      operationId: Folder_BatchAddHostsToCluster_Task
      description: |2
        Adds a set of new and existing hosts to the cluster.
        
        This API is a composite API and performs the following tasks before hosts
        become part of the specified cluter -
        - Adds all new hosts as standalone hosts.
        - Move each host to the desired state.
        - Move each host to the cluster.
          
        The dynamic privilege check will ensure that appropriate privileges
        are acquired to allow this API to perform multiple actions on hosts
        and cluster. Required privileges -
        - Host.Inventory.EditCluster on cluster
        - Host.Config.Maintenance on the hosts if desiredState is set
        - Privileges for *Folder.BatchAddStandaloneHosts_Task* if newHosts is
          set
        - Host.Inventory.EditCluster on the hosts' source ComputeResource
        - Host.Inventory.MoveHost on the hosts
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BatchAddHostsToClusterRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor
            the operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'

  /Folder/{moId}/BatchAddStandaloneHosts_Task:
    post:
      tags: [Folder]
      summary: |2
        Adds a list of hosts to inventory, as standalone hosts,
        in a single invocation.
      operationId: Folder_BatchAddStandaloneHosts_Task
      description: |2
        Adds a list of hosts to inventory, as standalone hosts,
        in a single invocation.
        
        The operation returns a result containing
        a list of hosts that are successfully added.
        
        In addition to the Host.Inventory.AddStandaloneHost privilege, the operation
        requires System.View privilege on the VM folder that the VMs of the
        host will be placed on.
        
        ***Required privileges:*** Host.Inventory.AddStandaloneHost
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BatchAddStandaloneHostsRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor
            the operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'

  /Folder/{moId}/CreateCluster:
    post:
      tags: [Folder]
      summary: |2
        Creates a new cluster compute resource in this folder.
      operationId: Folder_CreateCluster
      deprecated: true
      description: |2
        Deprecated as of VI API 2.5, use *Folder.CreateClusterEx*.
        
        Creates a new cluster compute resource in this folder.
        
        Any % (percent) character used in this name parameter must be escaped, unless it
        is used to start an escape sequence. Clients may also escape any other characters
        in this name parameter.
        
        ***Required privileges:*** Host.Inventory.CreateCluster
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateClusterRequestType'
      responses:
        '200':
          description: |2
            A new ClusterComputeResource instance.
            
            Refers instance of *ClusterComputeResource*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***DuplicateName***: if an entity with that name already exists.
            
            ***InvalidArgument***: if the cluster configuration specification parameter is
            invalid.
            
            ***InvalidName***: if the name is not a valid entity name.
            
            ***NotSupported***: if the cluster is being added to a folder whose
            *Folder.childType* property value does not contain
            "ComputeResource" or "ClusterComputeResource".
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /Folder/{moId}/CreateClusterEx:
    post:
      tags: [Folder]
      summary: |2
        Creates a new cluster compute resource in this folder.
      operationId: Folder_CreateClusterEx
      description: |2
        Creates a new cluster compute resource in this folder.
        
        Any % (percent) character used in this name parameter must be escaped, unless it
        is used to start an escape sequence. Clients may also escape any other characters
        in this name parameter.
        
        ***Required privileges:*** Host.Inventory.CreateCluster
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateClusterExRequestType'
      responses:
        '200':
          description: |2
            A new ClusterComputeResource instance.
            
            Refers instance of *ClusterComputeResource*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***DuplicateName***: if an entity with that name already exists.
            
            ***InvalidArgument***: if the cluster configuration specification parameter is
            invalid.
            
            ***InvalidName***: if the name is not a valid entity name.
            
            ***NotSupported***: if the cluster is being added to a folder whose
            *Folder.childType* property value does not contain
            "ComputeResource" or "ClusterComputeResource".
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /Folder/{moId}/CreateDatacenter:
    post:
      tags: [Folder]
      summary: |2
        Creates a new datacenter with the given name.
      operationId: Folder_CreateDatacenter
      description: |2
        Creates a new datacenter with the given name.
        
        Any % (percent) character used in this name parameter must be escaped, unless it
        is used to start an escape sequence. Clients may also escape any other characters
        in this name parameter.
        
        ***Required privileges:*** Datacenter.Create
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateDatacenterRequestType'
      responses:
        '200':
          description: |2
            A new Datacenter instance.
            
            Refers instance of *Datacenter*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***DuplicateName***: if an entity with that name already exists.
            
            ***InvalidName***: if the new name is not a valid entity name.
            
            ***NotSupported***: if the datacenter is being created within a folder whose
            *Folder.childType* property value does not contain
            "Datacenter".
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /Folder/{moId}/CreateDVS_Task:
    post:
      tags: [Folder]
      summary: |2
        Create a *DistributedVirtualSwitch* in the folder according to the
        specified *DVSCreateSpec*.
      operationId: Folder_CreateDVS_Task
      description: |2
        Create a *DistributedVirtualSwitch* in the folder according to the
        specified *DVSCreateSpec*.
        
        The specified Folder
        must be a Network entity folder.
        
        ***Required privileges:*** DVSwitch.Create
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateDVSRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor
            the operation. After successful completion, the
            *Task*.*Task.info*.*TaskInfo.result* property
            contains the newly registered *DistributedVirtualSwitch*.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***NotSupported***: if called directly on a host.
            
            ***DvsNotAuthorized***: if login-session's extension key does not match
            (*DVSConfigInfo.extensionKey*).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /Folder/{moId}/CreateFolder:
    post:
      tags: [Folder]
      summary: |2
        Creates a new sub-folder with the specified name.
      operationId: Folder_CreateFolder
      description: |2
        Creates a new sub-folder with the specified name.
        
        The *Folder.childType* property of the new folder is the same as
        the *Folder.childType* property of the current folder.
        
        ***Required privileges:*** Folder.Create
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateFolderRequestType'
      responses:
        '200':
          description: |2
            A reference to the new folder.
            
            Refers instance of *Folder*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***DuplicateName***: if another object in the same folder has the
            target name.
            
            ***InvalidName***: if the name is not a valid entity name.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /Folder/{moId}/CreateStoragePod:
    post:
      tags: [Folder]
      summary: |2
        Creates a new storage pod in this folder.
      operationId: Folder_CreateStoragePod
      description: |2
        Creates a new storage pod in this folder.
        
        Any % (percent) character used in this name parameter must be escaped, unless it
        is used to start an escape sequence. Clients may also escape any other characters
        in this name parameter.
        
        ***Required privileges:*** Folder.Create
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateStoragePodRequestType'
      responses:
        '200':
          description: |2
            A new StoragePod instance.
            
            Refers instance of *StoragePod*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***DuplicateName***: if an entity with that name already exists.
            
            ***InvalidName***: if the name is not a valid entity name.
            
            ***NotSupported***: if the storage pod is being added to a folder whose
            *Folder.childType* property value does not contain
            "StoragePod".
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /Folder/{moId}/CreateVM_Task:
    post:
      tags: [Folder]
      summary: |2
        Creates a new virtual machine in the current folder and attaches it to the
        specified resource pool.
      operationId: Folder_CreateVM_Task
      description: |2
        Creates a new virtual machine in the current folder and attaches it to the
        specified resource pool.
        
        This operation creates a virtual machine,
        instead of cloning a virtual machine from an existing one.
        
        The server does not support creating templates using this method.
        Instead, you should create templates by marking existing virtual
        machines as templates, or by cloning an existing virtual machine or
        template.
        
        This operation only works if the folder's childType includes VirtualMachine.
        In addition to the VirtualMachine.Inventory.Create privilege, may also require
        any of the following privileges depending on the properties of the virtual
        machine bring created:
        - VirtualMachine.Config.AddExistingDisk if including a virtual disk device
          that refers to an existing virtual disk file (not RDM)
        - VirtualMachine.Config.AddNewDisk if including a virtual disk device that
          creates a new virtual disk file (not RDM)
        - VirtualMachine.Config.RawDevice if including a raw device mapping
          (RDM) or SCSI passthrough device
        - VirtualMachine.Config.HostUSBDevice if including a VirtualUSB device
          backed by a host USB device
        - VirtualMachine.Config.AdvancedConfig if setting values in
          ConfigSpec.extraConfig
        - VirtualMachine.Config.SwapPlacement if setting swapPlacement
        - VirtualMachine.Config.ChangeTracking if setting changed
          block tracking for the virtual machine's disks.
        - Datastore.AllocateSpace required on all datastores where the
          virtual machine and its virtual disks will be created
        - Network.Assign required on the network which is assigned to the
          new virtual machine that is being created
        - Cryptographer.EncryptNew on the folder if the created virtual
          machine is encrypted
        - Cryptographer.RegisterHost on the host if the created virtual
          machine is encrypted, but encryption is not enabled on the host
          
        To create a VirtualDisk on a persistent memory storage, the storage
        must be specified via
        *profile* while the datastore
        property of corresponding VirtualDisk backing must be unset.
        
        To create a VirtualNVDIMM device, the storage
        *profile* must be set to the
        default persistent memory storage profile while the datastore property of
        *the device backing* must be
        unset.
        
        ***Required privileges:*** VirtualMachine.Inventory.Create
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateVMRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor the
            operation. The *info.result* property in the
            *Task* contains the newly created *VirtualMachine*
            upon success.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***VmConfigFault***: if the configSpec has incorrect values. Typically, a more
            specific subclass is thrown.
            
            ***OutOfBounds***: if Host.capability.maxSupportedVMs is exceeded.
            
            ***FileAlreadyExists***: if the requested cfgPath for the virtual machine's
            configuration file already exists.
            
            ***FileFault***: if there is a problem creating the virtual machine on disk.
            Typically, a more specific subclass, such as NoDiskSpace, will be thrown.
            
            ***DuplicateName***: if another virtual machine in the same folder already has
            the specified target name.
            
            ***InvalidName***: if the name is not a valid entity name.
            
            ***NotSupported***: if the virtual machine is being created within a folder
            whose *Folder.childType* property is not set to
            "VirtualMachine".
            
            ***InsufficientResourcesFault***: if this operation would violate a resource
            usage policy.
            
            ***InvalidDatastore***: if the operation cannot be performed on the
            target datastores.
            
            ***VmWwnConflict***: if the WWN of the virtual machine has been used by
            other virtual machines.
            
            ***AlreadyExists***: if the requested cfgPath (or the default cfgPath)
            for the virtual machine's configuration file is already loaded
            in the inventory.
            
            ***InvalidState***: if the operation is not allowed in current state of
            the entities involved.
            
            ***NoPermission***: if the created virtual machine is encrypted but the
            user does not have Cryptographer.EncryptNew on the folder.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /Folder/{moId}/Destroy_Task:
    post:
      tags: [Folder]
      summary: |2
        Destroys this object, deleting its contents and removing it from its parent
        folder (if any).
      operationId: Folder_Destroy_Task
      description: |2
        Destroys this object, deleting its contents and removing it from its parent
        folder (if any).
        
        NOTE: The appropriate privilege must be held on the parent of the destroyed
        entity as well as the entity itself.
        This method can throw one of several exceptions. The exact set of exceptions
        depends on the kind of entity that is being removed. See comments for
        each entity for more information on destroy behavior.
        
        ***Required privileges:*** Folder.Delete
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor the
            operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            Failure
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /Folder/{moId}/MoveIntoFolder_Task:
    post:
      tags: [Folder]
      summary: |2
        Moves a set of managed entities into this folder.
      operationId: Folder_MoveIntoFolder_Task
      description: |2
        Moves a set of managed entities into this folder.
        
        This operation is typically used by clients when they implement a drag-and-drop
        interface to move a set of objects into a folder.
        
        This operation is transactional only with respect to each individual entity.
        The set of entities is moved sequentially as specified in the list, and
        committed one at a time. If the *Folder.MoveIntoFolder_Task* method fails on an object, the
        method terminates at that point with an exception, leaving the rest of the
        managed entities in their original location.
        
        The objects that can be moved into a folder depends on the folder's
        type (as defined by the folder's *Folder.childType* property).
        For a datacenter folder, only datacenters and datacenter folders can be
        moved into the folder. For a virtual machine folder, only virtual machines
        and virtual machine folders can be moved into the folder.
        For a host folder, ComputeResource objects, host folder objects, and
        HostSystem objects can be moved into the folder.
        
        Moving a HostSystem into a host folder creates a stand-alone host from a
        host that is currently part of a ClusterComputeResource. The host must be part
        of a ClusterComputeResource in the same datacenter and the host must be in
        maintenance mode. Otherwise, the operation fails.
        
        A ComputeResource with a single root resource pool is created for each
        HostSystem. The name of the ComputeResource is the DNS or IP address of the
        host. This operation moves the (physical) host resources out of a cluster.
        It does not move or change the ResourcePool configuration that is part of the
        ClusterComputeResource with which the host was associated.
        
        Note that all virtual machines associated with a host are moved with the host
        into the folder. If there are virtual machines that should not be moved
        with the host, then migrate them from the host before initiating this operation.
        
        vSphere Lifecycle Manager baselines (previously called vSphere Update
        Manager VUM) is
        <a href="https://kb.vmware.com/s/article/89519">deprecated</a> in vCenter 8.0.
        You can instead manage the lifecycle of the
        hosts in your environment by using vSphere Lifecycle Manager images (vLCM).
        A Host moved from image managed cluster to datacenter/host folder will become
        baseline managed stand-alone host.
        
        For a HostSystem move, the privileges required are Host.Inventory.EditCluster
        on the source ClusterComputeResource, Host.Inventory.MoveHost on the HostSystem,
        and Host.Inventory.AddStandaloneHost on the target Folder.
        
        Otherwise, the privilege required for this operation varies depending on this
        folder's type and is checked against the source container, destination container,
        and the object:
        - Folder.Move if the object is a Folder
        - Datacenter.Move if the object is a Datacenter
        - Host.Inventory.MoveCluster if the object is a ComputeResource
        - VirtualMachine.Inventory.Move if the object is a virtual machine
          or virtual machine template
        - DVSwitch.Move if the object is a DistributedVirtualSwitch
        - Datastore.Move if the object is a datastore
        - Network.Move if the object is a network
          
        If the object is a HostSystem, the privileges required are
        Host.Inventory.AddStandaloneHost on the folder, Host.Inventory.MoveHost on
        the HostSystem, and Host.Inventory.EditCluster on the host's original
        ComputeResource.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MoveIntoFolderRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor the
            operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***DuplicateName***: if this folder already contains an object with
            the specified name.
            
            ***InvalidFolder***: if a Folder that is a parent of this Folder is part
            of the list of objects.
            
            ***InvalidState***: if a HostSystem is not part of the same
            datacenter, not part of a ClusterComputeResource, or not in
            maintenance mode.
            
            ***NotSupported***: if the entity is being moved into a folder
            whose *Folder.childType* property is not set to
            the appropriate value. For example, a VirtualMachine entity
            cannot be moved into a folder whose ChildType property value
            does not contain "VirtualMachine".
            
            ***DisallowedOperationOnFailoverHost***: if the host is being moved
            out of a cluster and was configured as a failover host in that
            cluster. See *ClusterFailoverHostAdmissionControlPolicy*.
            
            ***VmAlreadyExistsInDatacenter***: if moving a standalone host between
            datacenters, and one or more of the host's virtual machines is
            already registered to a host in the destination datacenter.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /Folder/{moId}/RegisterVM_Task:
    post:
      tags: [Folder]
      summary: |2
        Adds an existing virtual machine to the folder.
      operationId: Folder_RegisterVM_Task
      description: |2
        Adds an existing virtual machine to the folder.
        
        Any % (percent) character used in this name parameter must be escaped, unless it
        is used to start an escape sequence. Clients may also escape any other characters
        in this name parameter.
        
        This operation only works if the folder's type is VirtualMachine.
        In addition to the VirtualMachine.Inventory.Register and
        Resource.AssignVMToPool privileges, it requires System.Read privilege
        on the datastore that the existing virtual machine resides on. If the
        virtual machine is encrypted Cryptographer.RegisterVM is required on the
        folder, in which the virtual machine is registered. Otherwise, the VM is
        registered successfully, but is left in the locked state.
        
        ***Required privileges:*** VirtualMachine.Inventory.Register
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RegisterVMRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor the
            operation. The *info.result* property in the
            *Task* contains the newly registered *VirtualMachine*
            upon success.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***NotSupported***: if the operation is not supported. For example,
            templates are not supported directly on hosts. Also, if the operation
            is invoked on a folder whose *Folder.childType* property is
            not set to "VirtualMachine".
            
            ***OutOfBounds***: if the maximum number of VMs for this folder has been
            exceeded. The maximum number is determined by
            Host.capability.maxSupportedVMs.
            
            ***DuplicateName***: if another virtual machine in the same folder has
            the target name.
            
            ***AlreadyExists***: if the virtual machine is already registered.
            
            ***InvalidDatastore***: if the operation cannot be performed on the
            target datastores.
            
            ***NotFound***: if the configuration file is not found on the system.
            
            ***InvalidName***: if the entity name is invalid.
            
            ***InvalidArgument***: if any of the arguments such as host or resource pool
            are not set to valid values.
            
            ***VmConfigFault***: if the format / configuration of the virtual machine
            is invalid. Typically, a more specific fault is thrown such as
            InvalidFormat if the configuration file cannot be read, or
            InvalidDiskFormat if the disks cannot be read.
            
            ***FileFault***: if there is an error accessing the files on disk.
            
            ***InsufficientResourcesFault***: if this operation would violate a resource
            usage policy.
            
            ***InvalidState***: if the operation is not allowed in current state of
            the entities involved.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /Folder/{moId}/Reload:
    post:
      tags: [Folder]
      summary: |2
        Reload the entity state.
      operationId: Folder_Reload
      description: |2
        Reload the entity state.
        
        Clients only need to call this method
        if they changed some external state that affects the service
        without using the Web service interface to perform the change.
        For example, hand-editing a virtual machine configuration file
        affects the configuration of the associated virtual machine but
        the service managing the virtual machine might not monitor the
        file for changes. In this case, after such an edit, a client
        would call "reload" on the associated virtual machine to ensure
        the service and its clients have current data for the
        virtual machine.
        
        ***Required privileges:*** System.Read
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '204':
          description: |2
            No Content

  /Folder/{moId}/Rename_Task:
    post:
      tags: [Folder]
      summary: |2
        Renames this managed entity.
      operationId: Folder_Rename_Task
      description: |2
        Renames this managed entity.
        
        Any % (percent) character used in this name parameter
        must be escaped, unless it is used to start an escape
        sequence. Clients may also escape any other characters in
        this name parameter.
        
        See also *ManagedEntity.name*.
        
        ***Required privileges:*** Folder.Rename
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RenameRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor the
            operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***DuplicateName***: If another object in the same folder has the target name.
            
            ***InvalidName***: If the new name is not a valid entity name.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /Folder/{moId}/setCustomValue:
    post:
      tags: [Folder]
      summary: |2
        Assigns a value to a custom field.
      operationId: Folder_setCustomValue
      description: |2
        Assigns a value to a custom field.
        
        The setCustomValue method requires
        whichever updatePrivilege is defined as one of the
        *CustomFieldDef.fieldInstancePrivileges*
        for the CustomFieldDef whose value is being changed.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/setCustomValueRequestType'
      responses:
        '204':
          description: |2
            No Content

  /Folder/{moId}/UnregisterAndDestroy_Task:
    post:
      tags: [Folder]
      summary: |2
        Recursively unregisters all virtual machines and vApps, and destroys
        all child virtual machine folders.
      operationId: Folder_UnregisterAndDestroy_Task
      description: |2
        Recursively unregisters all virtual machines and vApps, and destroys
        all child virtual machine folders.
        
        This is similar to the Destroy\_Task method,
        but this method calls UnregisterAndDestroy\_Task on each virtual machine
        object instead of calling Destroy\_Task.
        This operation applies only to VirtualMachine folders.
        
        UnregisterAndDestroy\_Task is a recursive operation that destroys the specified
        virtual machine folder, unregisters all child virtual machine objects, and destroys
        all child virtual machine folders. When you call UnregisterAndDestroy\_Task
        to destroy a virtual machine folder, the system uses the specified folder
        as a root and traverses its descendant hierarchy, calling UnregisterAndDestroy\_Task
        on each virtual machine object and Destroy\_Task on each virtual machine folder.
        UnregisterAndDestroy\_Task is a single operation that treats each recursive call
        as a single transaction, committing each call to remove an object individually.
        If a failure occurs, the method terminates at that point with an exception, leaving
        some or all objects unaffected.
        
        If you are removing virtual machines, you must hold the VirtualMachine.Delete
        privilege on all of the virtual machines to be unregistered, and on their parent folders.
        If you are removing virtual applications, you must hold the VApp.Delete
        privilege on all of the virtual applications to be unregistered, and on their
        parent folders.
        
        ***Required privileges:*** Folder.Delete
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor the
            operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***InvalidState***: if a virtual machine is not powered off or suspended.
            
            ***ConcurrentAccess***: if another client modifies the folder contents
            before this operation completes.
            
            ***NotSupported***: if the *Folder.childType* property of the
            folder is not set to "VirtualMachine".
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /Folder/{moId}/alarmActionsEnabled:
    get:
      tags: [Folder]
      summary: |2
        Whether alarm actions are enabled for this entity.
      operationId: Folder_getAlarmActionsEnabled
      description: |2
        Whether alarm actions are enabled for this entity.
        
        True if enabled; false otherwise.
        
        ***Required privileges:*** System.Read
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: boolean

  /Folder/{moId}/availableField:
    get:
      tags: [Folder]
      summary: |2
        List of custom field definitions that are valid for the object's type.
      operationId: Folder_getAvailableField
      description: |2
        List of custom field definitions that are valid for the object's type.
        
        The fields are sorted by *CustomFieldDef.name*.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/CustomFieldDef'

  /Folder/{moId}/childEntity:
    get:
      tags: [Folder]
      summary: |2
        An array of managed object references.
      operationId: Folder_getChildEntity
      description: |2
        An array of managed object references.
        
        Each entry is a reference to a child entity.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            Refers instances of *ManagedEntity*.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/ManagedObjectReference'

  /Folder/{moId}/childType:
    get:
      tags: [Folder]
      summary: |2
        Specifies the object types a folder may contain.
      operationId: Folder_getChildType
      description: |2
        Specifies the object types a folder may contain.
        
        When you create a folder, it inherits its childType from the parent folder
        in which it is created. childType is an array of strings. Each array entry
        identifies a set of object types - Folder and one or more managed object
        types. The following list shows childType values for the different folders:
        - { "vim.Folder", "vim.Datacenter" } - Identifies the root folder
          and its descendant folders. Data center folders can contain
          child data center folders and Datacenter managed objects.
          Datacenter objects contain virtual machine, compute resource,
          network entity, and datastore folders.
        - { "vim.Folder", "vim.Virtualmachine", "vim.VirtualApp" } - Identifies
          a virtual machine folder. A virtual machine folder may contain child
          virtual machine folders. It also can contain VirtualMachine managed objects,
          templates, and VirtualApp managed objects.
        - { "vim.Folder", "vim.ComputeResource" } - Identifies a
          compute resource folder, which contains child compute resource folders
          and ComputeResource hierarchies.
        - { "vim.Folder", "vim.Network" } - Identifies a network entity folder.
          Network entity folders on a vCenter Server can contain Network,
          DistributedVirtualSwitch, and DistributedVirtualPortgroup managed
          objects. Network entity folders on an ESXi host can contain only
          Network objects.
        - { "vim.Folder", "vim.Datastore" } - Identifies a datastore folder.
          Datastore folders can contain child datastore folders and Datastore
          managed objects.
          
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  type: string

  /Folder/{moId}/configIssue:
    get:
      tags: [Folder]
      summary: |2
        Current configuration issues that have been detected for this entity.
      operationId: Folder_getConfigIssue
      description: |2
        Current configuration issues that have been detected for this entity.
        
        Typically,
        these issues have already been logged as events. The entity stores these
        events as long as they are still current. The
        *configStatus* property provides an overall status
        based on these events.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/Event'

  /Folder/{moId}/configStatus:
    get:
      tags: [Folder]
      summary: |2
        The configStatus indicates whether or not the system has detected a configuration
        issue involving this entity.
      operationId: Folder_getConfigStatus
      description: |2
        The configStatus indicates whether or not the system has detected a configuration
        issue involving this entity.
        
        For example, it might have detected a
        duplicate IP address or MAC address, or a host in a cluster
        might be out of compliance. The meanings of the configStatus values are:
        - red: A problem has been detected involving the entity.
        - yellow: A problem is about to occur or a transient condition
          has occurred (For example, reconfigure fail-over policy).
        - green: No configuration issues have been detected.
        - gray: The configuration status of the entity is not being monitored.
          
        A green status indicates only that a problem has not been detected;
        it is not a guarantee that the entity is problem-free.
        
        The *configIssue* property contains a list of the
        problems that have been detected.
        In releases after vSphere API 5.0, vSphere Servers might not
        generate property collector update notifications for this property.
        To obtain the latest value of the property, you can use
        PropertyCollector methods RetrievePropertiesEx or WaitForUpdatesEx.
        If you use the PropertyCollector.WaitForUpdatesEx method, specify
        an empty string for the version parameter. Any other version value will not
        produce any property values as no updates are generated.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedEntityStatus_enum'

  /Folder/{moId}/customValue:
    get:
      tags: [Folder]
      summary: |2
        Custom field values.
      operationId: Folder_getCustomValue
      description: |2
        Custom field values.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/CustomFieldValue'

  /Folder/{moId}/declaredAlarmState:
    get:
      tags: [Folder]
      summary: |2
        A set of alarm states for alarms that apply to this managed entity.
      operationId: Folder_getDeclaredAlarmState
      description: |2
        A set of alarm states for alarms that apply to this managed entity.
        
        The set includes alarms defined on this entity
        and alarms inherited from the parent entity,
        or from any ancestors in the inventory hierarchy.
        
        Alarms are inherited if they can be triggered by this entity or its descendants.
        This set does not include alarms that are defined on descendants of this entity.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/AlarmState'

  /Folder/{moId}/disabledMethod:
    get:
      tags: [Folder]
      summary: |2
        List of operations that are disabled, given the current runtime
        state of the entity.
      operationId: Folder_getDisabledMethod
      description: |2
        List of operations that are disabled, given the current runtime
        state of the entity.
        
        For example, a power-on operation always fails if a
        virtual machine is already powered on. This list can be used by clients to
        enable or disable operations in a graphical user interface.
        
        Note: This list is determined by the current runtime state of an entity,
        not by its permissions.
        
        This list may include the following operations for a HostSystem:
        - *HostSystem.EnterMaintenanceMode_Task*
        - *HostSystem.ExitMaintenanceMode_Task*
        - *HostSystem.RebootHost_Task*
        - *HostSystem.ShutdownHost_Task*
        - *HostSystem.ReconnectHost_Task*
        - *HostSystem.DisconnectHost_Task*
          
        This list may include the following operations for a VirtualMachine:
        - *VirtualMachine.AnswerVM*
        - *ManagedEntity.Rename_Task*
        - *VirtualMachine.CloneVM_Task*
        - *VirtualMachine.PowerOffVM_Task*
        - *VirtualMachine.PowerOnVM_Task*
        - *VirtualMachine.SuspendVM_Task*
        - *VirtualMachine.ResetVM_Task*
        - *VirtualMachine.ReconfigVM_Task*
        - *VirtualMachine.RelocateVM_Task*
        - *VirtualMachine.MigrateVM_Task*
        - *VirtualMachine.CustomizeVM_Task*
        - *VirtualMachine.ShutdownGuest*
        - *VirtualMachine.StandbyGuest*
        - *VirtualMachine.RebootGuest*
        - *VirtualMachine.CreateSnapshot_Task*
        - *VirtualMachine.RemoveAllSnapshots_Task*
        - *VirtualMachine.RevertToCurrentSnapshot_Task*
        - *VirtualMachine.MarkAsTemplate*
        - *VirtualMachine.MarkAsVirtualMachine*
        - *VirtualMachine.ResetGuestInformation*
        - *VirtualMachine.MountToolsInstaller*
        - *VirtualMachine.UnmountToolsInstaller*
        - *ManagedEntity.Destroy_Task*
        - *VirtualMachine.UpgradeVM_Task*
        - *VirtualMachine.ExportVm*
          
        This list may include the following operations for a ResourcePool:
        - *ResourcePool.ImportVApp*
        - *ResourcePool.CreateChildVM_Task*
        - *ResourcePool.UpdateConfig*
        - *Folder.CreateVM_Task*
        - *ManagedEntity.Destroy_Task*
        - *ManagedEntity.Rename_Task*
          
        This list may include the following operations for a VirtualApp:
        - *ManagedEntity.Destroy_Task*
        - *VirtualApp.CloneVApp_Task*
        - *VirtualApp.unregisterVApp_Task*
        - *VirtualApp.ExportVApp*
        - *VirtualApp.PowerOnVApp_Task*
        - *VirtualApp.PowerOffVApp_Task*
        - *VirtualApp.UpdateVAppConfig*
          
        In releases after vSphere API 5.0, vSphere Servers might not
        generate property collector update notifications for this property.
        To obtain the latest value of the property, you can use
        PropertyCollector methods RetrievePropertiesEx or WaitForUpdatesEx.
        If you use the PropertyCollector.WaitForUpdatesEx method, specify
        an empty string for the version parameter. Any other version value will not
        produce any property values as no updates are generated.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  type: string

  /Folder/{moId}/effectiveRole:
    get:
      tags: [Folder]
      summary: |2
        Access rights the current session has to this entity.
      operationId: Folder_getEffectiveRole
      description: |2
        Access rights the current session has to this entity.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  type: integer
                  format: int32

  /Folder/{moId}/name:
    get:
      tags: [Folder]
      summary: |2
        Name of this entity, unique relative to its parent.
      operationId: Folder_getName
      description: |2
        Name of this entity, unique relative to its parent.
        
        Any / (slash), \\ (backslash), character used in this
        name element will be escaped. Similarly, any % (percent) character used in
        this name element will be escaped, unless it is used to start an escape
        sequence. A slash is escaped as %2F or %2f. A backslash is escaped as %5C or
        %5c, and a percent is escaped as %25.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                type: string

  /Folder/{moId}/namespace:
    get:
      tags: [Folder]
      summary: |2
        The namespace with which the Folder is associated.
      operationId: Folder_getNamespace
      description: |2
        The namespace with which the Folder is associated.
        
        Namespace is a vAPI
        resource which divides cluster resources and allows administrators to
        give Kubernetes environments to their development teams.
        This property is set only at the time of creation and cannot change.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: string

  /Folder/{moId}/overallStatus:
    get:
      tags: [Folder]
      summary: |2
        General health of this managed entity.
      operationId: Folder_getOverallStatus
      description: |2
        General health of this managed entity.
        
        The overall status of the managed entity is computed as the worst status
        among its alarms and the configuration issues detected on the entity.
        The status is reported as one of the following values:
        - red: The entity has alarms or configuration issues with a red status.
        - yellow: The entity does not have alarms or configuration issues with a
          red status, and has at least one with a yellow status.
        - green: The entity does not have alarms or configuration issues with a
          red or yellow status, and has at least one with a green status.
        - gray: All of the entity's alarms have a gray status and the
          configuration status of the entity is not being monitored.
          
        In releases after vSphere API 5.0, vSphere Servers might not
        generate property collector update notifications for this property.
        To obtain the latest value of the property, you can use
        PropertyCollector methods RetrievePropertiesEx or WaitForUpdatesEx.
        If you use the PropertyCollector.WaitForUpdatesEx method, specify
        an empty string for the version parameter. Any other version value will not
        produce any property values as no updates are generated.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedEntityStatus_enum'

  /Folder/{moId}/parent:
    get:
      tags: [Folder]
      summary: |2
        Parent of this entity.
      operationId: Folder_getParent
      description: |2
        Parent of this entity.
        
        This value is null for the root object and for
        *VirtualMachine* objects that are part of
        a *VirtualApp*.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            Refers instance of *ManagedEntity*.
          content:
            application/json:
              schema:
                nullable: true
                $ref: '#/components/schemas/ManagedObjectReference'

  /Folder/{moId}/permission:
    get:
      tags: [Folder]
      summary: |2
        List of permissions defined for this entity.
      operationId: Folder_getPermission
      description: |2
        List of permissions defined for this entity.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/Permission'

  /Folder/{moId}/recentTask:
    get:
      tags: [Folder]
      summary: |2
        The set of recent tasks operating on this managed entity.
      operationId: Folder_getRecentTask
      description: |2
        The set of recent tasks operating on this managed entity.
        
        This is a subset
        of *TaskManager.recentTask* belong to this entity. A task in this
        list could be in one of the four states: pending, running, success or error.
        
        This property can be used to deduce intermediate power states for
        a virtual machine entity. For example, if the current powerState is "poweredOn"
        and there is a running task performing the "suspend" operation, then the virtual
        machine's intermediate state might be described as "suspending."
        
        Most tasks (such as power operations) obtain exclusive access to the virtual
        machine, so it is unusual for this list to contain more than one running task.
        One exception, however, is the task of cloning a virtual machine.
        In releases after vSphere API 5.0, vSphere Servers might not
        generate property collector update notifications for this property.
        To obtain the latest value of the property, you can use
        PropertyCollector methods RetrievePropertiesEx or WaitForUpdatesEx.
        If you use the PropertyCollector.WaitForUpdatesEx method, specify
        an empty string for the version parameter. Any other version value will not
        produce any property values as no updates are generated.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            Refers instances of *Task*.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/ManagedObjectReference'

  /Folder/{moId}/tag:
    get:
      tags: [Folder]
      summary: |2
        The set of tags associated with this managed entity.
      operationId: Folder_getTag
      description: |2
        The set of tags associated with this managed entity.
        
        Experimental. Subject to change.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/Tag'

  /Folder/{moId}/triggeredAlarmState:
    get:
      tags: [Folder]
      summary: |2
        A set of alarm states for alarms triggered by this entity
        or by its descendants.
      operationId: Folder_getTriggeredAlarmState
      description: |2
        A set of alarm states for alarms triggered by this entity
        or by its descendants.
        
        Triggered alarms are propagated up the inventory hierarchy
        so that a user can readily tell when a descendant has triggered an alarm.
        In releases after vSphere API 5.0, vSphere Servers might not
        generate property collector update notifications for this property.
        To obtain the latest value of the property, you can use
        PropertyCollector methods RetrievePropertiesEx or WaitForUpdatesEx.
        If you use the PropertyCollector.WaitForUpdatesEx method, specify
        an empty string for the version parameter. Any other version value will not
        produce any property values as no updates are generated.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/AlarmState'

  /Folder/{moId}/value:
    get:
      tags: [Folder]
      summary: |2
        List of custom field values.
      operationId: Folder_getValue
      description: |2
        List of custom field values.
        
        Each value uses a key to associate
        an instance of a *CustomFieldStringValue* with
        a custom field definition.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/CustomFieldValue'

  /GuestAliasManager/{moId}/AddGuestAlias:
    post:
      tags: [GuestAliasManager]
      summary: |2
        Defines an alias for a guest account in a virtual machine.
      operationId: GuestAliasManager_AddGuestAlias
      description: |2
        Defines an alias for a guest account in a virtual machine.
        
        After the alias is defined, the ESXi Server will use the alias
        to authenticate guest operations requests.
        
        This will add the given VMware SSO Server's certificate and a
        subject to the alias store of the
        specified user in the guest.
        
        In order to add an alias to the guest, you must supply
        an existing valid credential. This can be any instance
        of *GuestAuthentication*, but must be valid for the
        specified guest username.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AddGuestAliasRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***GuestOperationsFault***: if there is an error processing a guest
            operation.
            
            ***GuestOperationsUnavailable***: if the VM agent for guest operations
            is not running.
            
            ***InvalidPowerState***: if the VM is not powered on.
            
            ***InvalidState***: if the operation cannot be performed because of the
            virtual machine's current state.
            
            ***TaskInProgress***: if the virtual machine is busy.
            
            ***GuestPermissionDenied***: if there are insufficient permissions in
            the guest OS.
            
            ***InvalidGuestLogin***: if the the guest authentication information
            was not accepted.
            
            ***GuestComponentsOutOfDate***: if the guest agent is too old to support
            the operation.
            
            ***OperationNotSupportedByGuest***: if the operation is not supported
            by the guest OS.
            
            ***OperationDisabledByGuest***: if the operation is not enabled due to
            guest agent configuration.
            
            ***InvalidArgument***: if the operation fails because
            the certificate is invalid.
            
            ***GuestMultipleMappings***: if the operation fails because
            mapCert is set and the certificate already
            exists in the mapping file for a
            different user.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /GuestAliasManager/{moId}/ListGuestAliases:
    post:
      tags: [GuestAliasManager]
      summary: |2
        Lists the
        *GuestAliases*
        for a specified user in the guest that can be used
        for authentication of guest operations.
      operationId: GuestAliasManager_ListGuestAliases
      description: |2
        Lists the
        *GuestAliases*
        for a specified user in the guest that can be used
        for authentication of guest operations.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ListGuestAliasesRequestType'
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/GuestAliases'
        '500':
          description: |2
            ***GuestOperationsFault***: if there is an error processing a guest
            operation.
            
            ***GuestOperationsUnavailable***: if the agent for guest operations
            is not running.
            
            ***InvalidPowerState***: if the VM is not powered on.
            
            ***InvalidState***: if the operation cannot be performed because of the
            virtual machine's current state.
            
            ***TaskInProgress***: if the virtual machine is busy.
            
            ***GuestPermissionDenied***: if there are insufficient permissions in
            the guest OS.
            
            ***InvalidGuestLogin***: if the the guest authentication information
            was not accepted.
            
            ***GuestComponentsOutOfDate***: if the guest agent is too old to support
            the operation.
            
            ***OperationNotSupportedByGuest***: if the operation is not supported
            by the guest OS.
            
            ***OperationDisabledByGuest***: if the operation is not enabled due to
            guest agent configuration.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /GuestAliasManager/{moId}/ListGuestMappedAliases:
    post:
      tags: [GuestAliasManager]
      summary: |2
        Lists the
        *GuestMappedAliases*
        in the guest that can be used for
        authentication of guest operations.
      operationId: GuestAliasManager_ListGuestMappedAliases
      description: |2
        Lists the
        *GuestMappedAliases*
        in the guest that can be used for
        authentication of guest operations.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ListGuestMappedAliasesRequestType'
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/GuestMappedAliases'
        '500':
          description: |2
            ***GuestOperationsFault***: if there is an error processing a guest
            operation.
            
            ***GuestOperationsUnavailable***: if the VM agent for guest operations
            is not running.
            
            ***InvalidPowerState***: if the VM is not powered on.
            
            ***InvalidState***: if the operation cannot be performed because of the
            virtual machine's current state.
            
            ***TaskInProgress***: if the virtual machine is busy.
            
            ***GuestPermissionDenied***: if there are insufficient permissions in
            the guest OS.
            
            ***InvalidGuestLogin***: if the the guest authentication information
            was not accepted.
            
            ***GuestComponentsOutOfDate***: if the guest agent is too old to support
            the operation.
            
            ***OperationNotSupportedByGuest***: if the operation is not supported
            by the guest OS.
            
            ***OperationDisabledByGuest***: if the operation is not enabled due to
            guest agent configuration.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /GuestAliasManager/{moId}/RemoveGuestAlias:
    post:
      tags: [GuestAliasManager]
      summary: |2
        Removes an alias from the guest so it can no longer be
        used for
        authentication of guest operations.
      operationId: GuestAliasManager_RemoveGuestAlias
      description: |2
        Removes an alias from the guest so it can no longer be
        used for
        authentication of guest operations.
        
        It will also be removed
        from the mapped credentials.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RemoveGuestAliasRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***GuestOperationsFault***: if there is an error processing a guest
            operation.
            
            ***GuestOperationsUnavailable***: if the VM agent for guest operations
            is not running.
            
            ***InvalidPowerState***: if the VM is not powered on.
            
            ***InvalidState***: if the operation cannot be performed because of the
            virtual machine's current state.
            
            ***TaskInProgress***: if the virtual machine is busy.
            
            ***GuestPermissionDenied***: if there are insufficient permissions in
            the guest OS.
            
            ***InvalidArgument***: if the operation fails because
            the certificate is invalid.
            
            ***InvalidGuestLogin***: if the the guest authentication information
            was not accepted.
            
            ***GuestComponentsOutOfDate***: if the guest agent is too old to support
            the operation.
            
            ***OperationNotSupportedByGuest***: if the operation is not supported
            by the guest OS.
            
            ***OperationDisabledByGuest***: if the operation is not enabled due to
            guest agent configuration.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /GuestAliasManager/{moId}/RemoveGuestAliasByCert:
    post:
      tags: [GuestAliasManager]
      summary: |2
        Removes a VMware SSO Server's certificate and all
        associated aliases from the guest so it
        can no longer be used for
        authentication of guest operations.
      operationId: GuestAliasManager_RemoveGuestAliasByCert
      description: |2
        Removes a VMware SSO Server's certificate and all
        associated aliases from the guest so it
        can no longer be used for
        authentication of guest operations.
        
        It will also be removed
        from the global certificate-to-user mapping file in the guest.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RemoveGuestAliasByCertRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***GuestOperationsFault***: if there is an error processing a guest
            operation.
            
            ***GuestOperationsUnavailable***: if the VM agent for guest operations
            is not running.
            
            ***InvalidPowerState***: if the VM is not powered on.
            
            ***InvalidState***: if the operation cannot be performed because of the
            virtual machine's current state.
            
            ***TaskInProgress***: if the virtual machine is busy.
            
            ***GuestPermissionDenied***: if there are insufficient permissions in
            the guest OS.
            
            ***InvalidGuestLogin***: if the the guest authentication information
            was not accepted.
            
            ***InvalidArgument***: if the operation fails because
            the certificate is invalid.
            
            ***GuestComponentsOutOfDate***: if the guest agent is too old to support
            the operation.
            
            ***OperationNotSupportedByGuest***: if the operation is not supported
            by the guest OS.
            
            ***OperationDisabledByGuest***: if the operation is not enabled due to
            guest agent configuration.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /GuestAuthManager/{moId}/AcquireCredentialsInGuest:
    post:
      tags: [GuestAuthManager]
      summary: |2
        Authenticates in the guest and returns a *GuestAuthentication* object
        with the acquired credentials for use in subsequent guest operation calls.
      operationId: GuestAuthManager_AcquireCredentialsInGuest
      description: |2
        Authenticates in the guest and returns a *GuestAuthentication* object
        with the acquired credentials for use in subsequent guest operation calls.
        
        This can be used to authenticate inside the guest and obtain a
        *GuestAuthentication* object for supported authentication types.
        This operation is not needed for Name and Password Authentication. To use
        Name and Password Authentication, see *NamePasswordAuthentication*.
        For SSPI authentication, requestAuth should be of the type *SSPIAuthentication*.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AcquireCredentialsInGuestRequestType'
      responses:
        '200':
          description: |2
            Returns a *GuestAuthentication* object that can be used in
            guest operation calls.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GuestAuthentication'
        '500':
          description: |2
            ***GuestOperationsFault***: if there is an error processing a guest
            operation.
            
            ***GuestOperationsUnavailable***: if the VM agent for guest operations
            is not running.
            
            ***InvalidPowerState***: if the VM is not powered on.
            
            ***InvalidState***: if the operation cannot be performed because of the
            virtual machine's current state.
            
            ***TaskInProgress***: if the virtual machine is busy.
            
            ***GuestAuthenticationChallenge***: if the credential information
            provided requires a challenge to authenticate.
            
            ***GuestComponentsOutOfDate***: if the guest agent is too old to
            support the operation.
            
            ***OperationNotSupportedByGuest***: if the operation is not supported
            by the guest OS.
            
            ***OperationDisabledByGuest***: if the operation is not enabled due
            to guest agent configuration.
            
            ***TooManyGuestLogons***: if there are too many concurrent login
            sessions active in the guest.
            
            ***InvalidGuestLogin***: if the the guest authentication information
            was not accepted.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /GuestAuthManager/{moId}/ReleaseCredentialsInGuest:
    post:
      tags: [GuestAuthManager]
      summary: |2
        Releases session data and resources associated with
        a *GuestAuthentication* object returned by *GuestAuthManager.AcquireCredentialsInGuest*.
      operationId: GuestAuthManager_ReleaseCredentialsInGuest
      description: |2
        Releases session data and resources associated with
        a *GuestAuthentication* object returned by *GuestAuthManager.AcquireCredentialsInGuest*.
        
        This frees any resources and session data associated with a
        *GuestAuthentication* object returned by *GuestAuthManager.AcquireCredentialsInGuest*.
        The *GuestAuthentication* object can no longer be used to
        authenticate in the guest once released. Currently this operation is only
        valid for *TicketedSessionAuthentication* objects.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ReleaseCredentialsInGuestRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***GuestOperationsFault***: if there is an error processing a guest
            operation.
            
            ***GuestOperationsUnavailable***: if the VM agent for guest operations
            is not running.
            
            ***InvalidPowerState***: if the VM is not powered on.
            
            ***InvalidState***: if the operation cannot be performed because of the
            virtual machine's current state.
            
            ***TaskInProgress***: if the virtual machine is busy.
            
            ***GuestComponentsOutOfDate***: if the guest agent is too old to
            support the operation.
            
            ***OperationNotSupportedByGuest***: if the operation is not supported
            by the guest OS.
            
            ***OperationDisabledByGuest***: if the operation is not enabled due
            to guest agent configuration.
            
            ***InvalidGuestLogin***: if the the guest authentication information
            was not accepted.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /GuestAuthManager/{moId}/ValidateCredentialsInGuest:
    post:
      tags: [GuestAuthManager]
      summary: |2
        Validates the *GuestAuthentication* credentials.
      operationId: GuestAuthManager_ValidateCredentialsInGuest
      description: |2
        Validates the *GuestAuthentication* credentials.
        
        This can be used to check the authentication data, or
        validate any authentication that has a timeout is still valid.
        If the authentication is not valid, *GuestPermissionDenied*
        will be thrown.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ValidateCredentialsInGuestRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***GuestOperationsFault***: if there is an error processing a guest
            operation.
            
            ***GuestOperationsUnavailable***: if the VM agent for guest operations
            is not running.
            
            ***InvalidPowerState***: if the VM is not powered on.
            
            ***InvalidState***: if the operation cannot be performed because of the
            virtual machine's current state.
            
            ***TaskInProgress***: if the virtual machine is busy.
            
            ***GuestComponentsOutOfDate***: if the guest agent is too old to support
            the operation.
            
            ***OperationNotSupportedByGuest***: if the operation is not supported by
            the guest OS.
            
            ***OperationDisabledByGuest***: if the operation is not enabled due to
            guest agent configuration.
            
            ***InvalidGuestLogin***: if the the guest authentication information
            was not accepted.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /GuestFileManager/{moId}/ChangeFileAttributesInGuest:
    post:
      tags: [GuestFileManager]
      summary: |2
        Changes the file attributes of a specified file inside the guest.
      operationId: GuestFileManager_ChangeFileAttributesInGuest
      description: |2
        Changes the file attributes of a specified file inside the guest.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ChangeFileAttributesInGuestRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***GuestOperationsFault***: if there is an error processing a guest
            operation.
            
            ***GuestOperationsUnavailable***: if the VM agent for guest operations
            is not running.
            
            ***InvalidPowerState***: if the VM is not powered on.
            
            ***InvalidState***: if the operation cannot be performed because of the
            virtual machine's current state.
            
            ***TaskInProgress***: if the virtual machine is busy.
            
            ***GuestPermissionDenied***: if the operation fails because
            the guest authentication will not allow the operation.
            
            ***InvalidGuestLogin***: if the the guest authentication information
            was not accepted.
            
            ***FileFault***: if there is a file error in the guest operating system.
            
            ***GuestComponentsOutOfDate***: if the guest agent is too old to support
            the operation.
            
            ***OperationNotSupportedByGuest***: if the operation is not supported
            by the guest OS.
            
            ***OperationDisabledByGuest***: if the operation is not enabled due
            to guest agent configuration.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /GuestFileManager/{moId}/CreateTemporaryDirectoryInGuest:
    post:
      tags: [GuestFileManager]
      summary: |2
        Creates a temporary directory.
      operationId: GuestFileManager_CreateTemporaryDirectoryInGuest
      description: |2
        Creates a temporary directory.
        
        Creates a new unique temporary directory for the user to use as needed.
        The user is responsible for removing it when it is no longer needed.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateTemporaryDirectoryInGuestRequestType'
      responses:
        '200':
          description: |2
            The absolute path of the temporary directory that is created.
          content:
            application/json:
              schema:
                type: string
        '500':
          description: |2
            ***GuestOperationsFault***: if there is an error processing a guest
            operation.
            
            ***GuestOperationsUnavailable***: if the VM agent for guest operations
            is not running.
            
            ***InvalidPowerState***: if the VM is not powered on.
            
            ***InvalidState***: if the operation cannot be performed because of the
            virtual machine's current state.
            
            ***TaskInProgress***: if the virtual machine is busy.
            
            ***GuestPermissionDenied***: if the operation fails because
            the guest authentication will not allow the operation.
            
            ***InvalidGuestLogin***: if the the guest authentication information
            was not accepted.
            
            ***FileFault***: if there is a file error in the guest operating system.
            
            ***GuestComponentsOutOfDate***: if the guest agent is too old to support
            the operation.
            
            ***OperationNotSupportedByGuest***: if the operation is not supported
            by the guest OS.
            
            ***OperationDisabledByGuest***: if the operation is not enabled due to
            guest agent configuration.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /GuestFileManager/{moId}/CreateTemporaryFileInGuest:
    post:
      tags: [GuestFileManager]
      summary: |2
        Creates a temporary file.
      operationId: GuestFileManager_CreateTemporaryFileInGuest
      description: |2
        Creates a temporary file.
        
        Creates a new unique temporary file for the user to use as needed.
        The user is responsible for removing it when it is no longer needed.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateTemporaryFileInGuestRequestType'
      responses:
        '200':
          description: |2
            The absolute path of the temporary file that is created.
          content:
            application/json:
              schema:
                type: string
        '500':
          description: |2
            ***GuestOperationsFault***: if there is an error processing a guest
            operation.
            
            ***GuestOperationsUnavailable***: if the VM agent for guest operations
            is not running.
            
            ***InvalidPowerState***: if the VM is not powered on.
            
            ***InvalidState***: if the operation cannot be performed because of the
            virtual machine's current state.
            
            ***TaskInProgress***: if the virtual machine is busy.
            
            ***GuestPermissionDenied***: if the operation fails because
            the guest authentication will not allow the operation.
            
            ***InvalidGuestLogin***: if the the guest authentication information
            was not accepted.
            
            ***FileFault***: if there is a file error in the guest operating system.
            
            ***GuestComponentsOutOfDate***: if the guest agent is too old to support
            the operation.
            
            ***OperationNotSupportedByGuest***: if the operation is not supported
            by the guest OS.
            
            ***OperationDisabledByGuest***: if the operation is not enabled due to
            guest agent configuration.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /GuestFileManager/{moId}/DeleteDirectoryInGuest:
    post:
      tags: [GuestFileManager]
      summary: |2
        Deletes a directory in the guest OS.
      operationId: GuestFileManager_DeleteDirectoryInGuest
      description: |2
        Deletes a directory in the guest OS.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DeleteDirectoryInGuestRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***GuestOperationsFault***: if there is an error processing a guest
            operation.
            
            ***GuestOperationsUnavailable***: if the VM agent for guest operations
            is not running.
            
            ***InvalidPowerState***: if the VM is not powered on.
            
            ***InvalidState***: if the operation cannot be performed because of the
            virtual machine's current state.
            
            ***TaskInProgress***: if the virtual machine is busy.
            
            ***GuestPermissionDenied***: if the operation fails because
            the guest authentication will not allow the operation.
            
            ***InvalidGuestLogin***: if the the guest authentication information
            was not accepted.
            
            ***NotADirectory***: if the specified object is not a directory.
            
            ***FileFault***: if there is a file error in the guest operating system.
            
            ***GuestComponentsOutOfDate***: if the guest agent is too old to support
            the operation.
            
            ***OperationNotSupportedByGuest***: if the operation is not supported
            by the guest OS.
            
            ***OperationDisabledByGuest***: if the operation is not enabled due to
            guest agent configuration.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /GuestFileManager/{moId}/DeleteFileInGuest:
    post:
      tags: [GuestFileManager]
      summary: |2
        Deletes a file in the guest OS
      operationId: GuestFileManager_DeleteFileInGuest
      description: |2
        Deletes a file in the guest OS
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DeleteFileInGuestRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***GuestOperationsFault***: if there is an error processing a guest
            operation.
            
            ***GuestOperationsUnavailable***: if the VM agent for guest operations
            is not running.
            
            ***InvalidPowerState***: if the VM is not powered on.
            
            ***InvalidState***: if the operation cannot be performed because of the
            virtual machine's current state.
            
            ***TaskInProgress***: if the virtual machine is busy.
            
            ***GuestPermissionDenied***: if the operation fails because
            the guest authentication will not allow the operation.
            
            ***InvalidGuestLogin***: if the the guest authentication information
            was not accepted.
            
            ***NotAFile***: if the specified object is not a file.
            
            ***FileFault***: if there is a file error in the guest operating system.
            
            ***GuestComponentsOutOfDate***: if the guest agent is too old to support
            the operation.
            
            ***OperationNotSupportedByGuest***: if the operation is not supported
            by the guest OS.
            
            ***OperationDisabledByGuest***: if the operation is not enabled due to
            guest agent configuration.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /GuestFileManager/{moId}/InitiateFileTransferFromGuest:
    post:
      tags: [GuestFileManager]
      summary: |2
        Initiates an operation to transfer a file from the guest.
      operationId: GuestFileManager_InitiateFileTransferFromGuest
      description: |2
        Initiates an operation to transfer a file from the guest.
        
        Obtains a reference to
        *FileTransferInformation* object
        for the file transfer operation. The information object contains a URL
        to the file inside the guest to be transferred to the client.
          
        See *FileTransferInformation* for
        information on how to use the information object. If the power state
        of the Virtual Machine is changed when the file transfer is in progress,
        or the Virtual Machine is migrated,
        then the transfer operation is aborted.
        
        In order to ensure a secure connection to the host when transferring
        a file using HTTPS, the X.509 certificate for the host must be used
        to authenticate the remote end of the connection. The certificate of
        the host that the virtual machine is running on can be retrieved using
        the following fields:
        vm (*VirtualMachine*) -&gt; runtime (*VirtualMachineRuntimeInfo*)
        \-&gt; host (*HostSystem*) -&gt; config (*HostConfigInfo*)
        \-&gt; certificate.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/InitiateFileTransferFromGuestRequestType'
      responses:
        '200':
          description: |2
            A reference to
            *FileTransferInformation*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FileTransferInformation'
        '500':
          description: |2
            ***GuestOperationsFault***: if there is an error processing a guest
            operation.
            
            ***GuestOperationsUnavailable***: if the VM agent for guest operations
            is not running.
            
            ***InvalidPowerState***: if the VM is not powered on.
            
            ***InvalidState***: if the operation cannot be performed because of the
            virtual machine's current state.
            
            ***TaskInProgress***: if the virtual machine is busy.
            
            ***GuestPermissionDenied***: if the operation fails because
            the guest authentication will not allow the operation.
            
            ***InvalidGuestLogin***: if the the guest authentication information
            was not accepted.
            
            ***FileFault***: if there is a file error in the guest operating system.
            
            ***GuestComponentsOutOfDate***: If the guest agent is too old to
            support the operation.
            
            ***OperationNotSupportedByGuest***: If the operation is not supported
            by the guest OS.
            
            ***OperationDisabledByGuest***: If the operation is not enabled due
            to guest agent configuration.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /GuestFileManager/{moId}/InitiateFileTransferToGuest:
    post:
      tags: [GuestFileManager]
      summary: |2
        Initiates an operation to transfer a file to the guest.
      operationId: GuestFileManager_InitiateFileTransferToGuest
      description: |2
        Initiates an operation to transfer a file to the guest.
        
        Obtains a URL to the file inside the guest to be transferred from the
        client. The user should send a HTTP PUT request specifying the file
        content in the body of the request. Multiple PUT request cannot be
        sent to the URL simultaneously. URL will be invalidated after a
        successful PUT request is sent. If the power state of the Virtual
        Machine is changed when the file transfer is in progress, or
        the Virtual Machine is migrated, then the
        transfer operation is aborted.
        
        In order to ensure a secure connection to the host when transferring
        a file using HTTPS, the X.509 certificate for the host must be used
        to authenticate the remote end of the connection. The certificate of
        the host that the virtual machine is running on can be retrieved using
        the following fields:
        vm (*VirtualMachine*) -&gt; runtime (*VirtualMachineRuntimeInfo*)
        \-&gt; host (*HostSystem*) -&gt; config (*HostConfigInfo*)
        \-&gt; certificate.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/InitiateFileTransferToGuestRequestType'
      responses:
        '200':
          description: |2
            A URL to which the user has to send a PUT request.
            The host part of the URL is returned as '\*' if the hostname to be
            used is the name of the server to which the call was made. For
            example, if the call is made to esx-svr-1.domain1.com, and the file
            can be uploaded to
            `https://esx-svr-1.domain1.com/guestFile?id=1&token=1234`,
            the URL returned may be
            `https://&#42;/guestFile?id=1&token=1234`.
            The client replaces the asterisk with the server name on which it
            invoked the call.
              
              
            The URL is valid only for 10 minutes from the time it is generated.
            Also, the URL becomes invalid whenever the virtual machine is powered
            off, suspended or unregistered.
          content:
            application/json:
              schema:
                type: string
        '500':
          description: |2
            ***GuestOperationsFault***: if there is an error processing a guest
            operation.
            
            ***GuestOperationsUnavailable***: if the VM agent for guest operations
            is not running.
            
            ***InvalidPowerState***: if the VM is not powered on.
            
            ***InvalidState***: if the operation cannot be performed because of the
            virtual machine's current state.
            
            ***TaskInProgress***: if the virtual machine is busy.
            
            ***GuestPermissionDenied***: if the operation fails because
            the guest authentication will not allow the operation.
            
            ***InvalidGuestLogin***: if the the guest authentication information
            was not accepted.
            
            ***FileFault***: if there is a file error in the guest operating system.
            
            ***GuestComponentsOutOfDate***: If the guest agent is too old to
            support the operation.
            
            ***OperationNotSupportedByGuest***: If the operation is not supported
            by the guest OS.
            
            ***OperationDisabledByGuest***: If the operation is not enabled due to
            guest agent configuration.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /GuestFileManager/{moId}/ListFilesInGuest:
    post:
      tags: [GuestFileManager]
      summary: |2
        Returns information about files or directories in the guest.
      operationId: GuestFileManager_ListFilesInGuest
      description: |2
        Returns information about files or directories in the guest.
        
        The results could be extremely large, so to minimize the size
        of the return value for cases where a UI only needs to show
        the first N results, the answer is batched. Files are returned in
        OS-specific (inode) order. If the directory is modified between
        queries, missing or duplicate results can occur.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ListFilesInGuestRequestType'
      responses:
        '200':
          description: |2
            A *GuestListFileInfo*
            object containing information for all the matching files
            in the filePath and the number of files left to be returned.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GuestListFileInfo'
        '500':
          description: |2
            ***GuestOperationsFault***: if there is an error processing a guest
            operation.
            
            ***GuestOperationsUnavailable***: if the VM agent for guest operations
            is not running.
            
            ***InvalidArgument***: If the matchPattern is an invalid regular
            expression.
            
            ***InvalidPowerState***: if the VM is not powered on.
            
            ***InvalidState***: if the operation cannot be performed because of the
            virtual machine's current state.
            
            ***TaskInProgress***: if the virtual machine is busy.
            
            ***GuestPermissionDenied***: if the operation fails because
            the guest authentication will not allow the operation.
            
            ***InvalidGuestLogin***: if the the guest authentication information
            was not accepted.
            
            ***GuestComponentsOutOfDate***: if the guest agent is too old to support
            the operation.
            
            ***OperationNotSupportedByGuest***: if the operation is not supported
            by the guest OS.
            
            ***OperationDisabledByGuest***: if the operation is not enabled due to
            guest agent configuration.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /GuestFileManager/{moId}/MakeDirectoryInGuest:
    post:
      tags: [GuestFileManager]
      summary: |2
        Creates a directory in the guest OS
      operationId: GuestFileManager_MakeDirectoryInGuest
      description: |2
        Creates a directory in the guest OS
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MakeDirectoryInGuestRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***GuestOperationsFault***: if there is an error processing a guest
            operation.
            
            ***GuestOperationsUnavailable***: if the VM agent for guest operations
            is not running.
            
            ***InvalidPowerState***: if the VM is not powered on.
            
            ***InvalidState***: if the operation cannot be performed because of the
            virtual machine's current state.
            
            ***TaskInProgress***: if the virtual machine is busy.
            
            ***GuestPermissionDenied***: if the directory cannot be created because
            the guest authentication will not allow the operation.
            
            ***InvalidGuestLogin***: if the the guest authentication information
            was not accepted.
            
            ***FileAlreadyExists***: if the specified object already exists.
            
            ***FileFault***: if there is a file error in the guest operating system.
            
            ***GuestComponentsOutOfDate***: if the guest agent is too old to support
            the operation.
            
            ***OperationNotSupportedByGuest***: if the operation is not supported
            by the guest OS.
            
            ***OperationDisabledByGuest***: if the operation is not enabled due to
            guest agent configuration.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /GuestFileManager/{moId}/MoveDirectoryInGuest:
    post:
      tags: [GuestFileManager]
      summary: |2
        Moves or renames a directory in the guest.
      operationId: GuestFileManager_MoveDirectoryInGuest
      description: |2
        Moves or renames a directory in the guest.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MoveDirectoryInGuestRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***GuestOperationsFault***: if there is an error processing a guest
            operation.
            
            ***GuestOperationsUnavailable***: if the VM agent for guest operations
            is not running.
            
            ***InvalidPowerState***: if the VM is not powered on.
            
            ***InvalidState***: if the operation cannot be performed because of the
            virtual machine's current state.
            
            ***TaskInProgress***: if the virtual machine is busy.
            
            ***GuestPermissionDenied***: if the operation fails because
            the guest authentication will not allow the operation.
            
            ***InvalidGuestLogin***: if the the guest authentication information
            was not accepted.
            
            ***FileFault***: if there is a file error in the guest operating system.
            
            ***GuestComponentsOutOfDate***: if the guest agent is too old to support
            the operation.
            
            ***OperationNotSupportedByGuest***: if the operation is not supported
            by the guest OS.
            
            ***OperationDisabledByGuest***: if the operation is not enabled due to
            guest agent configuration.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /GuestFileManager/{moId}/MoveFileInGuest:
    post:
      tags: [GuestFileManager]
      summary: |2
        Renames a file in the guest.
      operationId: GuestFileManager_MoveFileInGuest
      description: |2
        Renames a file in the guest.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MoveFileInGuestRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***GuestOperationsFault***: if there is an error processing a guest
            operation.
            
            ***GuestOperationsUnavailable***: if the VM agent for guest operations
            is not running.
            
            ***InvalidPowerState***: if the VM is not powered on.
            
            ***InvalidState***: if the operation cannot be performed because of the
            virtual machine's current state.
            
            ***TaskInProgress***: if the virtual machine is busy.
            
            ***GuestPermissionDenied***: if the operation fails because
            the guest authentication will not allow the operation.
            
            ***InvalidGuestLogin***: if the the guest authentication information
            was not accepted.
            
            ***FileFault***: if there is a file error in the guest operating system.
            
            ***GuestComponentsOutOfDate***: if the guest agent is too old to support
            the operation.
            
            ***OperationNotSupportedByGuest***: if the operation is not supported
            by the guest OS.
            
            ***OperationDisabledByGuest***: if the operation is not enabled due to
            guest agent configuration.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /GuestOperationsManager/{moId}/aliasManager:
    get:
      tags: [GuestOperationsManager]
      summary: |2
        A managed object that provides methods to support single sign-on
        in the guest operating system.
      operationId: GuestOperationsManager_getAliasManager
      description: |2
        A managed object that provides methods to support single sign-on
        in the guest operating system.
        
        ***Required privileges:*** System.Anonymous
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
        - {}
      responses:
        '200':
          description: |2
            Refers instance of *GuestAliasManager*.
          content:
            application/json:
              schema:
                nullable: true
                $ref: '#/components/schemas/ManagedObjectReference'

  /GuestOperationsManager/{moId}/authManager:
    get:
      tags: [GuestOperationsManager]
      summary: |2
        A singleton managed object that provides methods for guest authentication
        operations.
      operationId: GuestOperationsManager_getAuthManager
      description: |2
        A singleton managed object that provides methods for guest authentication
        operations.
        
        ***Required privileges:*** System.Anonymous
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
        - {}
      responses:
        '200':
          description: |2
            Refers instance of *GuestAuthManager*.
          content:
            application/json:
              schema:
                nullable: true
                $ref: '#/components/schemas/ManagedObjectReference'

  /GuestOperationsManager/{moId}/fileManager:
    get:
      tags: [GuestOperationsManager]
      summary: |2
        A singleton managed object that provides methods for guest file
        operations.
      operationId: GuestOperationsManager_getFileManager
      description: |2
        A singleton managed object that provides methods for guest file
        operations.
        
        ***Required privileges:*** System.Anonymous
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
        - {}
      responses:
        '200':
          description: |2
            Refers instance of *GuestFileManager*.
          content:
            application/json:
              schema:
                nullable: true
                $ref: '#/components/schemas/ManagedObjectReference'

  /GuestOperationsManager/{moId}/guestWindowsRegistryManager:
    get:
      tags: [GuestOperationsManager]
      summary: |2
        A singleton managed object that provides methods for guest windows registry
        operations.
      operationId: GuestOperationsManager_getGuestWindowsRegistryManager
      description: |2
        A singleton managed object that provides methods for guest windows registry
        operations.
        
        ***Required privileges:*** System.Anonymous
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
        - {}
      responses:
        '200':
          description: |2
            Refers instance of *GuestWindowsRegistryManager*.
          content:
            application/json:
              schema:
                nullable: true
                $ref: '#/components/schemas/ManagedObjectReference'

  /GuestOperationsManager/{moId}/processManager:
    get:
      tags: [GuestOperationsManager]
      summary: |2
        A singleton managed object that provides methods for guest process
        operations.
      operationId: GuestOperationsManager_getProcessManager
      description: |2
        A singleton managed object that provides methods for guest process
        operations.
        
        ***Required privileges:*** System.Anonymous
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
        - {}
      responses:
        '200':
          description: |2
            Refers instance of *GuestProcessManager*.
          content:
            application/json:
              schema:
                nullable: true
                $ref: '#/components/schemas/ManagedObjectReference'

  /GuestProcessManager/{moId}/ListProcessesInGuest:
    post:
      tags: [GuestProcessManager]
      summary: |2
        List the processes running in the guest operating system,
        plus those started by *GuestProcessManager.StartProgramInGuest*
        that have recently completed.
      operationId: GuestProcessManager_ListProcessesInGuest
      description: |2
        List the processes running in the guest operating system,
        plus those started by *GuestProcessManager.StartProgramInGuest*
        that have recently completed.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ListProcessesInGuestRequestType'
      responses:
        '200':
          description: |2
            The list running processes is returned in an array of
            *GuestProcessInfo* structures.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/GuestProcessInfo'
        '500':
          description: |2
            ***GuestOperationsFault***: if there is an error processing a guest
            operation.
            
            ***GuestOperationsUnavailable***: if the VM agent for guest operations
            is not running.
            
            ***InvalidPowerState***: if the VM is not powered on.
            
            ***InvalidState***: if the operation cannot be performed because of the
            virtual machine's current state.
            
            ***TaskInProgress***: if the virtual machine is busy.
            
            ***GuestPermissionDenied***: if there are insufficient permissions in
            the guest OS.
            
            ***InvalidGuestLogin***: if the the guest authentication information
            was not accepted.
            
            ***GuestComponentsOutOfDate***: if the guest agent is too old to support
            the operation.
            
            ***OperationNotSupportedByGuest***: if the operation is not supported
            by the guest OS.
            
            ***OperationDisabledByGuest***: if the operation is not enabled due to
            guest agent configuration.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /GuestProcessManager/{moId}/ReadEnvironmentVariableInGuest:
    post:
      tags: [GuestProcessManager]
      summary: |2
        Reads an environment variable from the guest OS
      operationId: GuestProcessManager_ReadEnvironmentVariableInGuest
      description: |2
        Reads an environment variable from the guest OS
        
        If the authentication uses interactiveSession, then the
        environment being read will be that of the user logged into the desktop.
        Otherwise it's the environment of the user specified by the auth.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ReadEnvironmentVariableInGuestRequestType'
      responses:
        '200':
          description: |2
            A string array containing the value of the variables,
            or all environment variables if nothing is specified.
            The format of each string is "name=value".
            If any specified environment variable isn't set, then nothing is
            returned for that variable.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  type: string
        '500':
          description: |2
            ***GuestOperationsFault***: if there is an error processing a guest
            operation.
            
            ***GuestOperationsUnavailable***: if the VM agent for guest operations
            is not running.
            
            ***InvalidPowerState***: if the VM is not powered on.
            
            ***InvalidState***: if the operation cannot be performed because of the
            virtual machine's current state.
            
            ***TaskInProgress***: if the virtual machine is busy.
            accepted by the guest OS.
            
            ***GuestPermissionDenied***: if there are insufficient permissions in
            the guest OS.
            
            ***InvalidGuestLogin***: if the the guest authentication information
            was not accepted.
            
            ***GuestComponentsOutOfDate***: if the guest agent is too old to support
            the operation.
            
            ***OperationNotSupportedByGuest***: if the operation is not supported
            by the guest OS.
            
            ***OperationDisabledByGuest***: if the operation is not enabled due to
            guest agent configuration.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /GuestProcessManager/{moId}/StartProgramInGuest:
    post:
      tags: [GuestProcessManager]
      summary: |2
        Starts a program in the guest operating system.
      operationId: GuestProcessManager_StartProgramInGuest
      description: |2
        Starts a program in the guest operating system.
        
        A process started this way can have its status queried with
        *GuestProcessManager.ListProcessesInGuest*.
        When the process completes, its exit code and end time will be
        available for 5 minutes after completion.
        
        If VMware Tools is restarted, the exit code and end time will not
        be available.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/StartProgramInGuestRequestType'
      responses:
        '200':
          description: |2
            The pid of the program started.
          content:
            application/json:
              schema:
                type: integer
                format: int64
        '500':
          description: |2
            ***GuestOperationsFault***: if there is an error processing a guest
            operation.
            
            ***GuestOperationsUnavailable***: if the VM agent for guest operations
            is not running.
            
            ***InvalidPowerState***: if the VM is not powered on.
            
            ***InvalidState***: if the operation cannot be performed because of the
            virtual machine's current state.
            
            ***TaskInProgress***: if the virtual machine is busy.
            
            ***FileNotFound***: if the program path does not exist.
            
            ***FileFault***: if there is a file error in the guest operating system.
            
            ***CannotAccessFile***: if the program path cannot be accessed.
            
            ***GuestPermissionDenied***: if the program path cannot be run because
            the guest authentication will not allow the operation.
            
            ***InvalidGuestLogin***: if the the guest authentication information
            was not accepted.
            
            ***GuestComponentsOutOfDate***: if the guest agent is too old to support
            the operation.
            
            ***OperationNotSupportedByGuest***: if the operation is not supported by
            the guest OS.
            
            ***OperationDisabledByGuest***: if the operation is not enabled due to
            guest agent configuration.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /GuestProcessManager/{moId}/TerminateProcessInGuest:
    post:
      tags: [GuestProcessManager]
      summary: |2
        Terminates a process in the guest OS.
      operationId: GuestProcessManager_TerminateProcessInGuest
      description: |2
        Terminates a process in the guest OS.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TerminateProcessInGuestRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***GuestOperationsFault***: if there is an error processing a guest
            operation.
            
            ***GuestOperationsUnavailable***: if the VM agent for guest operations
            is not running.
            
            ***InvalidPowerState***: if the VM is not powered on.
            
            ***InvalidState***: if the operation cannot be performed because of the
            virtual machine's current state.
            
            ***GuestProcessNotFound***: if the pid does not refer to a valid process.
            
            ***TaskInProgress***: if the virtual machine is busy.
            
            ***GuestPermissionDenied***: if the process cannot be terminated because
            the guest authentication will not allow the operation.
            
            ***InvalidGuestLogin***: if the the guest authentication information
            was not accepted.
            
            ***GuestComponentsOutOfDate***: if the guest agent is too old to
            support the operation.
            
            ***OperationNotSupportedByGuest***: if the operation is not supported
            by the guest OS.
            
            ***OperationDisabledByGuest***: if the operation is not enabled due
            to guest agent configuration.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /GuestWindowsRegistryManager/{moId}/CreateRegistryKeyInGuest:
    post:
      tags: [GuestWindowsRegistryManager]
      summary: |2
        Create a registry key.
      operationId: GuestWindowsRegistryManager_CreateRegistryKeyInGuest
      description: |2
        Create a registry key.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateRegistryKeyInGuestRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***GuestOperationsFault***: if there is an error processing a guest
            operation.
            
            ***GuestOperationsUnavailable***: if the VM agent for guest operations
            is not running.
            
            ***InvalidPowerState***: if the VM is not powered on.
            
            ***InvalidState***: if the operation cannot be performed because of the
            virtual machine's current state.
            
            ***TaskInProgress***: if the virtual machine is busy.
            
            ***GuestRegistryKeyInvalid***: if the registry key is not valid. Check
            the HKEY Root specified.
            
            ***GuestRegistryKeyAlreadyExists***: if the registry key already exists.
            
            ***GuestRegistryKeyParentVolatile***: if trying to create a non-volatile
            registry subkey under a volatile
            registry parent key.
            
            ***GuestPermissionDenied***: if the program path cannot be run because
            the guest authentication will not allow the
            operation.
            
            ***InvalidGuestLogin***: if the the guest authentication information
            was not accepted.
            
            ***GuestComponentsOutOfDate***: if the guest agent is too old to support
            the operation.
            
            ***OperationNotSupportedByGuest***: if the operation is not supported by
            the guest OS.
            
            ***OperationDisabledByGuest***: if the operation is not enabled due to
            guest agent configuration.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /GuestWindowsRegistryManager/{moId}/DeleteRegistryKeyInGuest:
    post:
      tags: [GuestWindowsRegistryManager]
      summary: |2
        Delete a registry key.
      operationId: GuestWindowsRegistryManager_DeleteRegistryKeyInGuest
      description: |2
        Delete a registry key.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DeleteRegistryKeyInGuestRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***GuestOperationsFault***: if there is an error processing a guest
            operation.
            
            ***GuestOperationsUnavailable***: if the VM agent for guest operations
            is not running.
            
            ***InvalidPowerState***: if the VM is not powered on.
            
            ***InvalidState***: if the operation cannot be performed because of the
            virtual machine's current state.
            
            ***TaskInProgress***: if the virtual machine is busy.
            
            ***GuestRegistryKeyInvalid***: if the registry key is not valid. Check
            the HKEY Root specified.
            
            ***GuestRegistryKeyHasSubkeys***: if the parameter recursive is false and
            the key has subkeys.
            
            ***GuestPermissionDenied***: if the program path cannot be run because
            the guest authentication will not allow the
            operation.
            
            ***InvalidGuestLogin***: if the the guest authentication information
            was not accepted.
            
            ***GuestComponentsOutOfDate***: if the guest agent is too old to support
            the operation.
            
            ***OperationNotSupportedByGuest***: if the operation is not supported by
            the guest OS.
            
            ***OperationDisabledByGuest***: if the operation is not enabled due to
            guest agent configuration.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /GuestWindowsRegistryManager/{moId}/DeleteRegistryValueInGuest:
    post:
      tags: [GuestWindowsRegistryManager]
      summary: |2
        Delete a registry value.
      operationId: GuestWindowsRegistryManager_DeleteRegistryValueInGuest
      description: |2
        Delete a registry value.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DeleteRegistryValueInGuestRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***GuestOperationsFault***: if there is an error processing a guest
            operation.
            
            ***GuestOperationsUnavailable***: if the VM agent for guest operations
            is not running.
            
            ***InvalidPowerState***: if the VM is not powered on.
            
            ***InvalidState***: if the operation cannot be performed because of the
            virtual machine's current state.
            
            ***TaskInProgress***: if the virtual machine is busy.
            
            ***GuestRegistryKeyInvalid***: if the registry key is not valid. Check
            the HKEY Root specified.
            
            ***GuestRegistryValueNotFound***: if the registry value was not found.
            
            ***GuestPermissionDenied***: if the program path cannot be run because
            the guest authentication will not allow the
            operation.
            
            ***InvalidGuestLogin***: if the the guest authentication information
            was not accepted.
            
            ***GuestComponentsOutOfDate***: if the guest agent is too old to support
            the operation.
            
            ***OperationNotSupportedByGuest***: if the operation is not supported by
            the guest OS.
            
            ***OperationDisabledByGuest***: if the operation is not enabled due to
            guest agent configuration.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /GuestWindowsRegistryManager/{moId}/ListRegistryKeysInGuest:
    post:
      tags: [GuestWindowsRegistryManager]
      summary: |2
        List all registry subkeys for a given registry key.
      operationId: GuestWindowsRegistryManager_ListRegistryKeysInGuest
      description: |2
        List all registry subkeys for a given registry key.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ListRegistryKeysInGuestRequestType'
      responses:
        '200':
          description: |2
            The list of subkeys is returned in an array of
            *GuestRegKeySpec* structures.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/GuestRegKeyRecordSpec'
        '500':
          description: |2
            ***GuestOperationsFault***: if there is an error processing a guest
            operation.
            
            ***GuestOperationsUnavailable***: if the VM agent for guest operations
            is not running.
            
            ***InvalidPowerState***: if the VM is not powered on.
            
            ***InvalidState***: if the operation cannot be performed because of the
            virtual machine's current state.
            
            ***TaskInProgress***: if the virtual machine is busy.
            
            ***GuestRegistryKeyInvalid***: if the registry key is not valid. Check
            the HKEY Root specified.
            
            ***GuestPermissionDenied***: if the program path cannot be run because
            the guest authentication will not allow the
            operation.
            
            ***InvalidGuestLogin***: if the the guest authentication information
            was not accepted.
            
            ***GuestComponentsOutOfDate***: if the guest agent is too old to support
            the operation.
            
            ***OperationNotSupportedByGuest***: if the operation is not supported by
            the guest OS.
            
            ***OperationDisabledByGuest***: if the operation is not enabled due to
            guest agent configuration.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /GuestWindowsRegistryManager/{moId}/ListRegistryValuesInGuest:
    post:
      tags: [GuestWindowsRegistryManager]
      summary: |2
        List all registry values for a given registry key.
      operationId: GuestWindowsRegistryManager_ListRegistryValuesInGuest
      description: |2
        List all registry values for a given registry key.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ListRegistryValuesInGuestRequestType'
      responses:
        '200':
          description: |2
            The list of values is returned in an array of
            *GuestRegValueSpec* structures.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/GuestRegValueSpec'
        '500':
          description: |2
            ***GuestOperationsFault***: if there is an error processing a guest
            operation.
            
            ***GuestOperationsUnavailable***: if the VM agent for guest operations
            is not running.
            
            ***InvalidPowerState***: if the VM is not powered on.
            
            ***InvalidState***: if the operation cannot be performed because of the
            virtual machine's current state.
            
            ***TaskInProgress***: if the virtual machine is busy.
            
            ***GuestRegistryKeyInvalid***: if the registry key is not valid. Check
            the HKEY Root specified.
            
            ***GuestPermissionDenied***: if the program path cannot be run because
            the guest authentication will not allow the
            operation.
            
            ***InvalidGuestLogin***: if the the guest authentication information
            was not accepted.
            
            ***GuestComponentsOutOfDate***: if the guest agent is too old to support
            the operation.
            
            ***OperationNotSupportedByGuest***: if the operation is not supported by
            the guest OS.
            
            ***OperationDisabledByGuest***: if the operation is not enabled due to
            guest agent configuration.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /GuestWindowsRegistryManager/{moId}/SetRegistryValueInGuest:
    post:
      tags: [GuestWindowsRegistryManager]
      summary: |2
        Set/Create a registry value.
      operationId: GuestWindowsRegistryManager_SetRegistryValueInGuest
      description: |2
        Set/Create a registry value.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SetRegistryValueInGuestRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***GuestOperationsFault***: if there is an error processing a guest
            operation.
            
            ***GuestOperationsUnavailable***: if the VM agent for guest operations
            is not running.
            
            ***InvalidPowerState***: if the VM is not powered on.
            
            ***InvalidState***: if the operation cannot be performed because of the
            virtual machine's current state.
            
            ***TaskInProgress***: if the virtual machine is busy.
            
            ***GuestRegistryKeyInvalid***: if the registry key is not valid. Check
            the HKEY Root specified.
            
            ***GuestPermissionDenied***: if the program path cannot be run because
            the guest authentication will not allow the
            operation.
            
            ***InvalidGuestLogin***: if the the guest authentication information
            was not accepted.
            
            ***GuestComponentsOutOfDate***: if the guest agent is too old to support
            the operation.
            
            ***OperationNotSupportedByGuest***: if the operation is not supported by
            the guest OS.
            
            ***OperationDisabledByGuest***: if the operation is not enabled due to
            guest agent configuration.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HealthUpdateManager/{moId}/AddFilter:
    post:
      tags: [HealthUpdateManager]
      summary: |2
        Adds health update filters.
      operationId: HealthUpdateManager_AddFilter
      description: |2
        Adds health update filters.
        
        ***Required privileges:*** Host.Inventory.EditCluster
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AddFilterRequestType'
      responses:
        '200':
          description: |2
            The filter identifier.
          content:
            application/json:
              schema:
                type: string
        '500':
          description: |2
            ***NotFound***: If no provider with this id is registered.
            
            ***InvalidArgument***: - If filter name exceeds the maximum length
            limit of 56 characters.
            \- If a filter with this name already exists for
            this provider.
            \- If infoIds list contains a HealthUpdateInfo id
            which is not associated with the specified
            provider.
            \- If there are duplicate HealthUpdateInfo ids
            in the infoIds list.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFound'

  /HealthUpdateManager/{moId}/AddFilterEntities:
    post:
      tags: [HealthUpdateManager]
      summary: |2
        Add entities on which this filter is configured.
      operationId: HealthUpdateManager_AddFilterEntities
      description: |2
        Add entities on which this filter is configured.
        
        ***Required privileges:*** Host.Inventory.EditCluster
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AddFilterEntitiesRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***NotFound***: If no filter with this id is registered.
            
            ***InvalidArgument***: - If any of the entities is already associated
            with the specified filter.
            \- If there are duplicate entities in the given
            entities list.
            \- If the entities list contains an entity of
            type other than HostSystem and
            ClusterComputeResource.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFound'

  /HealthUpdateManager/{moId}/AddMonitoredEntities:
    post:
      tags: [HealthUpdateManager]
      summary: |2
        The provider monitors additional managed entities.
      operationId: HealthUpdateManager_AddMonitoredEntities
      description: |2
        The provider monitors additional managed entities.
        
        A particular
        managed entity can be monitored by multiple providers.
        
        ***Required privileges:*** HealthUpdateProvider.Update
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AddMonitoredEntitiesRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***NotFound***: If no provider with this id is registered.
            
            ***NotSupported***: If the http session user does not match the user
            who registered the provider, or if the http
            session cannot be retrieved.
            
            ***InvalidArgument***: - If any of the entities is not of type
            HostSystem.
            \- If there are duplicate entities in the given
            entities list.
            \- If any of the entities is already monitored by
            the specified provider.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFound'

  /HealthUpdateManager/{moId}/HasMonitoredEntity:
    post:
      tags: [HealthUpdateManager]
      summary: |2
        Check if the managed entity is monitored by the provider.
      operationId: HealthUpdateManager_HasMonitoredEntity
      description: |2
        Check if the managed entity is monitored by the provider.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/HasMonitoredEntityRequestType'
      responses:
        '200':
          description: |2
            True iff the entity is monitored by this
            provider.
          content:
            application/json:
              schema:
                type: boolean
        '500':
          description: |2
            ***NotFound***: If no provider with this id is registered.
            
            ***InvalidArgument***: If the specified entity is not of type
            HostSystem.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFound'

  /HealthUpdateManager/{moId}/HasProvider:
    post:
      tags: [HealthUpdateManager]
      summary: |2
        Verifies if the given provider is registered.
      operationId: HealthUpdateManager_HasProvider
      description: |2
        Verifies if the given provider is registered.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/HasProviderRequestType'
      responses:
        '200':
          description: |2
            True iff the provider is registered.
          content:
            application/json:
              schema:
                type: boolean

  /HealthUpdateManager/{moId}/PostHealthUpdates:
    post:
      tags: [HealthUpdateManager]
      summary: |2
        Report a change in health status.
      operationId: HealthUpdateManager_PostHealthUpdates
      description: |2
        Report a change in health status.
        
        ***Required privileges:*** HealthUpdateProvider.Update
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostHealthUpdatesRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***NotFound***: If no provider with this id is registered.
            
            ***NotSupported***: If the http session user does not match the user
            who registered the provider, or if the http
            session cannot be retrieved.
            
            ***InvalidArgument***: - If an unknown HealthUpdate id is given.
            \- If updates list contains a HealthUpdate for a
            host which is not monitored by the specified
            provider.
            \- If updates list contains multiple
            HealthUpdates with the same id.
            \- If an existing HealthUpdate id is used in the
            given updates.
            \- If there is a HealthUpdate with green status
            and non-empty remediation.
            \- If there is a HealthUpdate with gray status.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFound'

  /HealthUpdateManager/{moId}/QueryFilterEntities:
    post:
      tags: [HealthUpdateManager]
      summary: |2
        Returns the list of entities on which this filter is configured.
      operationId: HealthUpdateManager_QueryFilterEntities
      description: |2
        Returns the list of entities on which this filter is configured.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QueryFilterEntitiesRequestType'
      responses:
        '200':
          description: |2
            The list of managed entities.
            
            Refers instances of *ManagedEntity*.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***NotFound***: If no filter with this id is registered.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFound'

  /HealthUpdateManager/{moId}/QueryFilterInfoIds:
    post:
      tags: [HealthUpdateManager]
      summary: |2
        Returns the list of HealthUpdateInfos configured for this filter.
      operationId: HealthUpdateManager_QueryFilterInfoIds
      description: |2
        Returns the list of HealthUpdateInfos configured for this filter.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QueryFilterInfoIdsRequestType'
      responses:
        '200':
          description: |2
            The list of identifiers of the configured
            HealthUpdateInfos.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  type: string
        '500':
          description: |2
            ***NotFound***: If no filter with this id is registered.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFound'

  /HealthUpdateManager/{moId}/QueryFilterList:
    post:
      tags: [HealthUpdateManager]
      summary: |2
        Returns the list of filters.
      operationId: HealthUpdateManager_QueryFilterList
      description: |2
        Returns the list of filters.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QueryFilterListRequestType'
      responses:
        '200':
          description: |2
            The list of filters identifiers.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  type: string
        '500':
          description: |2
            ***NotFound***: If no provider with this id is registered.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFound'

  /HealthUpdateManager/{moId}/QueryFilterName:
    post:
      tags: [HealthUpdateManager]
      summary: |2
        Returns the filter name.
      operationId: HealthUpdateManager_QueryFilterName
      description: |2
        Returns the filter name.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QueryFilterNameRequestType'
      responses:
        '200':
          description: |2
            The name of the filter.
          content:
            application/json:
              schema:
                type: string
        '500':
          description: |2
            ***NotFound***: If no filter with this id is registered.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFound'

  /HealthUpdateManager/{moId}/QueryHealthUpdateInfos:
    post:
      tags: [HealthUpdateManager]
      summary: |2
        Returns the list of HealthUpdateInfo configured for the given provider.
      operationId: HealthUpdateManager_QueryHealthUpdateInfos
      description: |2
        Returns the list of HealthUpdateInfo configured for the given provider.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QueryHealthUpdateInfosRequestType'
      responses:
        '200':
          description: |2
            The list of configured HealthUpdateInfo.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/HealthUpdateInfo'
        '500':
          description: |2
            ***NotFound***: If no provider with this id is registered.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFound'

  /HealthUpdateManager/{moId}/QueryHealthUpdates:
    post:
      tags: [HealthUpdateManager]
      summary: |2
        Returns the list of health updates reported by the given provider.
      operationId: HealthUpdateManager_QueryHealthUpdates
      description: |2
        Returns the list of health updates reported by the given provider.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QueryHealthUpdatesRequestType'
      responses:
        '200':
          description: |2
            The list of current health updates by this provider.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/HealthUpdate'
        '500':
          description: |2
            ***NotFound***: If no provider with this id is registered.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFound'

  /HealthUpdateManager/{moId}/QueryMonitoredEntities:
    post:
      tags: [HealthUpdateManager]
      summary: |2
        Returns the list of managed entities monitored by the given provider.
      operationId: HealthUpdateManager_QueryMonitoredEntities
      description: |2
        Returns the list of managed entities monitored by the given provider.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QueryMonitoredEntitiesRequestType'
      responses:
        '200':
          description: |2
            The list of monitored managed entities.
            
            Refers instances of *ManagedEntity*.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***NotFound***: If no provider with this id is registered.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFound'

  /HealthUpdateManager/{moId}/QueryProviderList:
    post:
      tags: [HealthUpdateManager]
      summary: |2
        The providers.
      operationId: HealthUpdateManager_QueryProviderList
      description: |2
        The providers.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            The list of identifiers of registered providers.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  type: string

  /HealthUpdateManager/{moId}/QueryProviderName:
    post:
      tags: [HealthUpdateManager]
      summary: |2
        Query the name of the provider.
      operationId: HealthUpdateManager_QueryProviderName
      description: |2
        Query the name of the provider.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QueryProviderNameRequestType'
      responses:
        '200':
          description: |2
            The name of the provider.
          content:
            application/json:
              schema:
                type: string
        '500':
          description: |2
            ***NotFound***: If no provider with this id is registered.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFound'

  /HealthUpdateManager/{moId}/QueryUnmonitoredHosts:
    post:
      tags: [HealthUpdateManager]
      summary: |2
        The set of hosts that are in the cluster, but not monitored by
        the provider.
      operationId: HealthUpdateManager_QueryUnmonitoredHosts
      description: |2
        The set of hosts that are in the cluster, but not monitored by
        the provider.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QueryUnmonitoredHostsRequestType'
      responses:
        '200':
          description: |2
            The hosts in the cluster that are not monitored by
            the provider.
            
            Refers instances of *HostSystem*.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***NotFound***: If no provider with this id is registered.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFound'

  /HealthUpdateManager/{moId}/RegisterHealthUpdateProvider:
    post:
      tags: [HealthUpdateManager]
      summary: |2
        Registers provider.
      operationId: HealthUpdateManager_RegisterHealthUpdateProvider
      description: |2
        Registers provider.
        
        ***Required privileges:*** HealthUpdateProvider.Register
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RegisterHealthUpdateProviderRequestType'
      responses:
        '200':
          description: |2
            The identifier for the registered provider.
          content:
            application/json:
              schema:
                type: string

  /HealthUpdateManager/{moId}/RemoveFilter:
    post:
      tags: [HealthUpdateManager]
      summary: |2
        Removes the specified filter.
      operationId: HealthUpdateManager_RemoveFilter
      description: |2
        Removes the specified filter.
        
        ***Required privileges:*** Host.Inventory.EditCluster
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RemoveFilterRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***NotFound***: If no filter with this id is registered.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFound'

  /HealthUpdateManager/{moId}/RemoveFilterEntities:
    post:
      tags: [HealthUpdateManager]
      summary: |2
        Remove entities on which this filter is configured.
      operationId: HealthUpdateManager_RemoveFilterEntities
      description: |2
        Remove entities on which this filter is configured.
        
        ***Required privileges:*** Host.Inventory.EditCluster
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RemoveFilterEntitiesRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***NotFound***: If no filter with this id is registered.
            
            ***InvalidArgument***: - If there are duplicate managed entities in the
            given entities list.
            \- If there is a managed entity of type other
            than HostSystem and ClusterComputeResource.
            \- If the entities list contains an entity which
            is not associated with the specified filter.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFound'

  /HealthUpdateManager/{moId}/RemoveMonitoredEntities:
    post:
      tags: [HealthUpdateManager]
      summary: |2
        The provider monitors fewer managed entities.
      operationId: HealthUpdateManager_RemoveMonitoredEntities
      description: |2
        The provider monitors fewer managed entities.
        
        ***Required privileges:*** HealthUpdateProvider.Update
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RemoveMonitoredEntitiesRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***NotFound***: If no provider with this id is registered.
            
            ***InvalidState***: If any of the entities is a part of an
            InfraUpdateHa cluster that has the provider
            enabled.
            
            ***NotSupported***: If the http session user does not match the user
            who registered the provider, or if the http
            session cannot be retrieved.
            
            ***InvalidArgument***: - If any of the specified entities is not of
            type HostSystem.
            \- If there are duplicate entities in the given
            entities list.
            \- If any of the entities is already not being
            monitored by the specified provider.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HealthUpdateManager/{moId}/UnregisterHealthUpdateProvider:
    post:
      tags: [HealthUpdateManager]
      summary: |2
        Unregisters the specified provider, if it exists.
      operationId: HealthUpdateManager_UnregisterHealthUpdateProvider
      description: |2
        Unregisters the specified provider, if it exists.
        
        A VirtualCenter
        Server restart implicitly unregisters all providers.
        
        ***Required privileges:*** HealthUpdateProvider.Unregister
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UnregisterHealthUpdateProviderRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***NotFound***: If the specified provider is not registered.
            
            ***InvalidState***: If the specified provider is still used in an
            InfraUpdateHa cluster.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HistoryCollector/{moId}/DestroyCollector:
    post:
      tags: [HistoryCollector]
      summary: |2
        Destroys this collector.
      operationId: HistoryCollector_DestroyCollector
      description: |2
        Destroys this collector.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '204':
          description: |2
            No Content

  /HistoryCollector/{moId}/ResetCollector:
    post:
      tags: [HistoryCollector]
      summary: |2
        Moves the "scrollable view" to the item immediately preceding the
        "viewable latest page".
      operationId: HistoryCollector_ResetCollector
      description: |2
        Moves the "scrollable view" to the item immediately preceding the
        "viewable latest page".
        
        If you use "readPrev",
        *ReadPreviousTasks* or
        *ReadPreviousEvents*,
        all items
        are retrieved from the newest item to the oldest item.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '204':
          description: |2
            No Content

  /HistoryCollector/{moId}/RewindCollector:
    post:
      tags: [HistoryCollector]
      summary: |2
        Moves the "scrollable view" to the oldest item.
      operationId: HistoryCollector_RewindCollector
      description: |2
        Moves the "scrollable view" to the oldest item.
        
        If you use
        *ReadNextTasks* or
        *ReadNextEvents*,
        all items are retrieved from the oldest item to the newest item. This
        is the default setting when the collector is created.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '204':
          description: |2
            No Content

  /HistoryCollector/{moId}/SetCollectorPageSize:
    post:
      tags: [HistoryCollector]
      summary: |2
        Sets the "viewable latest page" size to contain at most the
        number of items specified by the maxCount parameter).
      operationId: HistoryCollector_SetCollectorPageSize
      description: |2
        Sets the "viewable latest page" size to contain at most the
        number of items specified by the maxCount parameter).
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SetCollectorPageSizeRequestType'
      responses:
        '204':
          description: |2
            No Content

  /HistoryCollector/{moId}/filter:
    get:
      tags: [HistoryCollector]
      summary: |2
        The filter used to create this collector.
      operationId: HistoryCollector_getFilter
      description: |2
        The filter used to create this collector.
        
        The type of the returned filter is determined by the managed object
        for which the collector is created.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Any'

  /HostAccessManager/{moId}/ChangeAccessMode:
    post:
      tags: [HostAccessManager]
      summary: |2
        Update the access mode for a user or group.
      operationId: HostAccessManager_ChangeAccessMode
      description: |2
        Update the access mode for a user or group.
        
        If the host is in lockdown mode, this operation is allowed only on
        users in the exceptions list - see *HostAccessManager.QueryLockdownExceptions*,
        and trying to change the access mode of other users or groups
        will fail with SecurityError.
        
        ***Required privileges:*** Global.Settings
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ChangeAccessModeRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***AuthMinimumAdminPermission***: if this change would render the
            ESXi host inaccessible for local non-system users.
            The API *HostAccessManager.ChangeLockdownMode* may be used
            instead.
            
            ***InvalidArgument***: if accessMode is not valid.
            
            ***SecurityError***: if the host is in lockdown mode and 'principal'
            is not in the exceptions list.
            
            ***UserNotFound***: if the specified user is not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostAccessManager/{moId}/ChangeLockdownMode:
    post:
      tags: [HostAccessManager]
      summary: |2
        Changes the lockdown state of the ESXi host.
      operationId: HostAccessManager_ChangeLockdownMode
      description: |2
        Changes the lockdown state of the ESXi host.
        
        This operation will do nothing if the host is already in the desired
        lockdown state.
        
        When the host is in lockdown mode it can be managed only through vCenter
        and through DCUI (Direct Console User Interface) if the DCUI service is
        running.
        This is achieved by removing all permissions on the host, except those
        of the exception users defined with *HostAccessManager.UpdateLockdownExceptions*.
        
        In addition, the permissions for users 'dcui' and 'vpxuser'
        are always preserved.
        
        When lockdown mode is disabled, the system will try to restore all
        permissions that have been removed when lockdown mode was enabled.
        It is possible that not all permissions may be restored and this is not
        an error, e.g. if in the meantime some user or managed object was deleted.
        
        It may be possible that after exiting lockdown mode the only permissions
        on the host will be those of users 'dcui' and 'vpxuser'. This will render the
        host unmanageable if it is not already managed by vCenter, or if the
        connection to vCenter is lost. To prevent this, the users in the
        "DCUI.Access" list will be assigned Admin roles.
        
        While the host is in lockdown mode, some operations will fail with
        SecurityError. This ensures that the conditions for lockdown mode cannot
        be changed. For example it is allowed to change the access mode only for
        users in the exceptions list.
        
        When the host is in lockdown mode, changing the running state of service
        DCUI through *HostServiceSystem* will also fail with
        SecurityError accompanied with an appropriate localizeable message.
        
        ***Required privileges:*** Host.Config.Settings
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ChangeLockdownModeRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***AuthMinimumAdminPermission***: if the user invoking the operation
            is not in the exceptions list - see
            *HostAccessManager.QueryLockdownExceptions*.
            
            ***NoPermission***: if the current session does not have enough
            permissions to perform the operation.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuthMinimumAdminPermission'

  /HostAccessManager/{moId}/QueryLockdownExceptions:
    post:
      tags: [HostAccessManager]
      summary: |2
        Get the list of users which are exceptions for lockdown mode.
      operationId: HostAccessManager_QueryLockdownExceptions
      description: |2
        Get the list of users which are exceptions for lockdown mode.
        
        See *HostAccessManager.UpdateLockdownExceptions*.
        
        ***Required privileges:*** Global.Settings
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            the list of users which will not lose their permissions when
            the host enters lockdown mode.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  type: string

  /HostAccessManager/{moId}/QuerySystemUsers:
    post:
      tags: [HostAccessManager]
      summary: |2
        Get the list of local system users.
      operationId: HostAccessManager_QuerySystemUsers
      description: |2
        Get the list of local system users.
        
        These are special users like 'vpxuser' and 'dcui',
        which may be used for authenticating different sub-components of the
        vSphere system and may be essential for its correct functioning.
        
        Usually these users may not be used by human operators to connect
        directly to the host and the UI may choose to show them only in some
        "advanced" UI view.
        
        ***Required privileges:*** Global.Settings
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            the list of local system users.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  type: string

  /HostAccessManager/{moId}/RetrieveHostAccessControlEntries:
    post:
      tags: [HostAccessManager]
      summary: |2
        Retrieve access entries.
      operationId: HostAccessManager_RetrieveHostAccessControlEntries
      description: |2
        Retrieve access entries.
        
        Returns a list of AccessEntry objects for each VIM user or group which
        have explicitly assigned permissions on the host. This means that
        *accessNone* will not be present in the result.
        
        ***Required privileges:*** Global.Settings
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            a list of AccessEntry objects.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/HostAccessControlEntry'

  /HostAccessManager/{moId}/UpdateLockdownExceptions:
    post:
      tags: [HostAccessManager]
      summary: |2
        Update the list of users which are exceptions for lockdown mode.
      operationId: HostAccessManager_UpdateLockdownExceptions
      description: |2
        Update the list of users which are exceptions for lockdown mode.
        
        Usually these are user accounts used by third party solutions and
        external applications which need to continue to function in lockdown
        mode. It is not advised to add user accounts used by human operators,
        because this will compromise the purpose of lockdown mode.
        
        Both local and domain users are supported. The format for domain accounts
        is "DOMAIN\\login".
        
        When this API is called when the host is in lockdown mode,
        the behaviour is as follows:
        - if a user is removed from the exceptions list,
          then the permissions of that user are removed.
        - if a user is added to the exceptions list,
          then the permissions of that user are restored.
          
        ***Required privileges:*** Global.Settings
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateLockdownExceptionsRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***AuthMinimumAdminPermission***: if the user invoking the operation
            is not present in the new list of exceptions.
            
            ***UserNotFound***: if one of the specified users is not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostAccessManager/{moId}/UpdateSystemUsers:
    post:
      tags: [HostAccessManager]
      summary: |2
        Update the list of local system users.
      operationId: HostAccessManager_UpdateSystemUsers
      description: |2
        Update the list of local system users.
        
        The special users 'dcui' and 'vpxuser' need not be specified.
        They are always reported in the list of system users.
        
        ***Required privileges:*** Global.Settings
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateSystemUsersRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***InvalidArgument***: If one of the specified user names is not valid,
            or is in Active Directory domain format.
            
            ***UserNotFound***: If one of the specified users is not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserNotFound'

  /HostAccessManager/{moId}/lockdownMode:
    get:
      tags: [HostAccessManager]
      summary: |2
        Current lockdown state of the host.
      operationId: HostAccessManager_getLockdownMode
      description: |2
        Current lockdown state of the host.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HostLockdownMode_enum'

  /HostActiveDirectoryAuthentication/{moId}/DisableSmartCardAuthentication:
    post:
      tags: [HostActiveDirectoryAuthentication]
      summary: |2
        Disables console authentication using a local smart card and reader.
      operationId: HostActiveDirectoryAuthentication_DisableSmartCardAuthentication
      deprecated: true
      description: |2
        Deprecated as of vSphere API 8.0U3, and there is no replacement for it.
        
        Disables console authentication using a local smart card and reader.
        
        ***Required privileges:*** Host.Config.AuthenticationStore
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***ActiveDirectoryFault***: if the active directory client could not
            be reconfigured.
            
            ***HostConfigFault***: if the host configuration prevents smart card
            authentication from being disabled.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostActiveDirectoryAuthentication/{moId}/EnableSmartCardAuthentication:
    post:
      tags: [HostActiveDirectoryAuthentication]
      summary: |2
        Enables console authentication using a local smart card and reader.
      operationId: HostActiveDirectoryAuthentication_EnableSmartCardAuthentication
      deprecated: true
      description: |2
        Deprecated as of vSphere API 8.0U3, and there is no replacement for it.
        
        Enables console authentication using a local smart card and reader.
        
        To take effect this feature requires an active domain membership to a
        domain with users configured to authenticate using smart cards.
        
        ***Required privileges:*** Host.Config.AuthenticationStore
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***ActiveDirectoryFault***: if the active directory client could not
            be reconfigured.
            
            ***HostConfigFault***: if the host configuration prevents smart card
            authentication from being enabled.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostActiveDirectoryAuthentication/{moId}/ImportCertificateForCAM_Task:
    post:
      tags: [HostActiveDirectoryAuthentication]
      summary: |2
        Import the CAM server's certificate to the local store of vmwauth.
      operationId: HostActiveDirectoryAuthentication_ImportCertificateForCAM_Task
      description: |2
        Import the CAM server's certificate to the local store of vmwauth.
        
        The certificate should have already been uploaded to ESXi file system.
        
        ***Required privileges:*** Host.Config.AuthenticationStore
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ImportCertificateForCAMRequestType'
      responses:
        '200':
          description: |2
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***FileNotFound***: if the certificate file does not exist
            
            ***InvalidCAMServer***: if camServer is not a valid IP address
            
            ***ActiveDirectoryFault***: for any problem that is not handled with a more specific fault.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostActiveDirectoryAuthentication/{moId}/InstallSmartCardTrustAnchor:
    post:
      tags: [HostActiveDirectoryAuthentication]
      summary: |2
        Install a trust anchor certificate for smart card authentication.
      operationId: HostActiveDirectoryAuthentication_InstallSmartCardTrustAnchor
      deprecated: true
      description: |2
        Deprecated as of vSphere API 8.0U3, and there is no replacement for it.
        
        Install a trust anchor certificate for smart card authentication.
        
        ***Required privileges:*** Host.Config.AuthenticationStore
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/InstallSmartCardTrustAnchorRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***HostConfigFault***: if the host configuration prevents the
            certificate from being installed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HostConfigFault'

  /HostActiveDirectoryAuthentication/{moId}/JoinDomain_Task:
    post:
      tags: [HostActiveDirectoryAuthentication]
      summary: |2
        Adds the host to an Active Directory domain.
      operationId: HostActiveDirectoryAuthentication_JoinDomain_Task
      description: |2
        Adds the host to an Active Directory domain.
        
        If the *HostAuthenticationStoreInfo*.*HostAuthenticationStoreInfo.enabled*
        property is <code>True</code> (accessed through the <code>info</code> property),
        the host has joined a domain.
        The vSphere API will throw the <code>InvalidState</code> fault if you try
        to add a host to a domain when the host has already joined a domain.
        
        ***Required privileges:*** Host.Config.AuthenticationStore
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/JoinDomainRequestType'
      responses:
        '200':
          description: |2
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***InvalidState***: if the host has already joined a domain.
            
            ***BlockedByFirewall***: if ports needed by the join operation are
            blocked by the firewall.
            
            ***HostConfigFault***: if the host configuration prevents the join operation
            from succeeding.
            
            ***InvalidLogin***: if <code>userName</code> and <code>password</code>
            are not valid user credentials.
            
            ***DomainNotFound***: if the domain controller for <code>domainName</code>
            cannot be reached.
            
            ***NoPermissionOnAD***: if <code>userName</code> has no right to add hosts to the domain.
            
            ***InvalidHostName***: if the domain part of the host's FQDN doesn't match
            the domain being joined.
            
            ***ClockSkew***: if the clocks of the host and the domain controller
            differ by more than the allowed amount of time.
            
            ***ActiveDirectoryFault***: for any problem that is not handled with a more specific fault.
            
            ***TaskInProgress***: if the *HostActiveDirectoryAuthentication* object is busy.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostActiveDirectoryAuthentication/{moId}/JoinDomainWithCAM_Task:
    post:
      tags: [HostActiveDirectoryAuthentication]
      summary: |2
        Adds the host to an Active Directory domain through CAM service.
      operationId: HostActiveDirectoryAuthentication_JoinDomainWithCAM_Task
      description: |2
        Adds the host to an Active Directory domain through CAM service.
        
        If the *HostAuthenticationStoreInfo*.*HostAuthenticationStoreInfo.enabled*
        property is <code>True</code> (accessed through the <code>info</code> property),
        the host has joined a domain.
        The vSphere API will throw the <code>InvalidState</code> fault if you try
        to add a host to a domain when the host has already joined a domain.
        
        ***Required privileges:*** Host.Config.AuthenticationStore
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/JoinDomainWithCAMRequestType'
      responses:
        '200':
          description: |2
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***InvalidState***: if the host has already joined a domain.
            
            ***BlockedByFirewall***: if ports needed by the join operation are
            blocked by the firewall.
            
            ***HostConfigFault***: if the host configuration prevents the join operation
            from succeeding.
            
            ***DomainNotFound***: if the domain controller for <code>domainName</code>
            cannot be reached.
            
            ***InvalidHostName***: if the domain part of the host's FQDN doesn't match
            the domain being joined.
            
            ***ClockSkew***: if the clocks of the host and the domain controller
            differ by more than the allowed amount of time.
            
            ***InvalidCAMServer***: if camServer is not a valid IP address, or
            if camServer is not accessible.
            
            ***InvalidCAMCertificate***: if the certificate of the given CAM server
            cannot be verified.
            
            ***CAMServerRefusedConnection***: if the specified CAM server is not
            reachable, or
            if the server denied access.
            
            ***ActiveDirectoryFault***: for any problem that is not handled with a more specific fault.
            
            ***TaskInProgress***: if the *HostActiveDirectoryAuthentication* object is busy.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostActiveDirectoryAuthentication/{moId}/LeaveCurrentDomain_Task:
    post:
      tags: [HostActiveDirectoryAuthentication]
      summary: |2
        Removes the host from the Active Directory domain to which it belongs.
      operationId: HostActiveDirectoryAuthentication_LeaveCurrentDomain_Task
      description: |2
        Removes the host from the Active Directory domain to which it belongs.
        
        ***Required privileges:*** Host.Config.AuthenticationStore
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LeaveCurrentDomainRequestType'
      responses:
        '200':
          description: |2
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***InvalidState***: if the host is not in a domain or there are active
            permissions for Active Directory users.
            
            ***NonADUserRequired***: only non Active Directory users can initiate
            the leave domain operation.
            
            ***AuthMinimumAdminPermission***: if this change would leave the system with
            no Administrator permission on the root node.
            
            ***ActiveDirectoryFault***: for any problem that is not handled with a specific fault.
            
            ***TaskInProgress***: if the ActiveDirectoryAuthentication object is busy.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostActiveDirectoryAuthentication/{moId}/ListSmartCardTrustAnchors:
    post:
      tags: [HostActiveDirectoryAuthentication]
      summary: |2
        Lists installed trust anchor certificates for smart card authentication.
      operationId: HostActiveDirectoryAuthentication_ListSmartCardTrustAnchors
      deprecated: true
      description: |2
        Deprecated as of vSphere API 8.0U3, and there is no replacement for it.
        
        Lists installed trust anchor certificates for smart card authentication.
        
        ***Required privileges:*** Host.Config.AuthenticationStore
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            SSL certificates of trusted CAs in PEM format.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  type: string
        '500':
          description: |2
            ***HostConfigFault***: if the host configuration prevents the
            certificates from being listed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HostConfigFault'

  /HostActiveDirectoryAuthentication/{moId}/RemoveSmartCardTrustAnchor:
    post:
      tags: [HostActiveDirectoryAuthentication]
      summary: |2
        Remove a smart card trust anchor certificate from the system.
      operationId: HostActiveDirectoryAuthentication_RemoveSmartCardTrustAnchor
      deprecated: true
      description: |2
        Deprecated please remove by fingerprint/digest instead.
        
        Remove a smart card trust anchor certificate from the system.
        
        ***Required privileges:*** Host.Config.AuthenticationStore
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RemoveSmartCardTrustAnchorRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***HostConfigFault***: if the host configuration prevents the
            certificate from being removed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HostConfigFault'

  /HostActiveDirectoryAuthentication/{moId}/RemoveSmartCardTrustAnchorByFingerprint:
    post:
      tags: [HostActiveDirectoryAuthentication]
      summary: |2
        Remove a smart card trust anchor certificate from the system by
        fingerprint.
      operationId: HostActiveDirectoryAuthentication_RemoveSmartCardTrustAnchorByFingerprint
      deprecated: true
      description: |2
        Deprecated as of vSphere API 8.0U3, and there is no replacement for it.
        
        Remove a smart card trust anchor certificate from the system by
        fingerprint.
        
        ***Required privileges:*** Host.Config.AuthenticationStore
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RemoveSmartCardTrustAnchorByFingerprintRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***HostConfigFault***: if the host configuration prevents the
            certificate from being removed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HostConfigFault'

  /HostActiveDirectoryAuthentication/{moId}/ReplaceSmartCardTrustAnchors:
    post:
      tags: [HostActiveDirectoryAuthentication]
      summary: |2
        Replace the trust anchor certificates for smart card authentication.
      operationId: HostActiveDirectoryAuthentication_ReplaceSmartCardTrustAnchors
      deprecated: true
      description: |2
        Deprecated as of vSphere API 8.0U3, and there is no replacement for it.
        
        Replace the trust anchor certificates for smart card authentication.
        
        ***Required privileges:*** Host.Config.AuthenticationStore
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ReplaceSmartCardTrustAnchorsRequestType'
      responses:
        '204':
          description: |2
            No Content

  /HostActiveDirectoryAuthentication/{moId}/info:
    get:
      tags: [HostActiveDirectoryAuthentication]
      summary: |2
        Information about the authentication store.
      operationId: HostActiveDirectoryAuthentication_getInfo
      description: |2
        Information about the authentication store.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HostAuthenticationStoreInfo'

  /HostAssignableHardwareManager/{moId}/DownloadDescriptionTree:
    post:
      tags: [HostAssignableHardwareManager]
      summary: |2
        Download Assignable Hardware description tree.
      operationId: HostAssignableHardwareManager_DownloadDescriptionTree
      description: |2
        Download Assignable Hardware description tree.
        
        The size of the downloaded description tree is dependent on the
        type and number of assignable devices found on the host. As a
        rough estimate, each device might require approximate 256 bytes
        to represent.
        The number of assignable devices on a host may vary from none to
        60 or more. A host with 3 SRIOV type devices consisting
        of a PF and 16 VFs would have a total of 51 devices and the
        description tree would be approximately 51 \* 256 bytes = 13,056 bytes.
        
        ***Required privileges:*** System.Read
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                type: string
                format: byte

  /HostAssignableHardwareManager/{moId}/RetrieveDynamicPassthroughInfo:
    post:
      tags: [HostAssignableHardwareManager]
      summary: |2
        Retrieve PCI Dynamic Passthrough info.
      operationId: HostAssignableHardwareManager_RetrieveDynamicPassthroughInfo
      description: |2
        Retrieve PCI Dynamic Passthrough info.
        
        Returns the list of PCI devices that may be used as a Dynamic
        DirectPath IO device.
        
        ***Required privileges:*** System.Read
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/VirtualMachineDynamicPassthroughInfo'

  /HostAssignableHardwareManager/{moId}/RetrieveVendorDeviceGroupInfo:
    post:
      tags: [HostAssignableHardwareManager]
      summary: |2
        Retrieve VendorDeviceGroup info.
      operationId: HostAssignableHardwareManager_RetrieveVendorDeviceGroupInfo
      description: |2
        Retrieve VendorDeviceGroup info.
        
        Returns the list of Vendor Device Group deviceTypes present.
        
        ***Since:*** vSphere API Release 8.0.0.1
        
        ***Required privileges:*** System.Read
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/VirtualMachineVendorDeviceGroupInfo'

  /HostAssignableHardwareManager/{moId}/UpdateAssignableHardwareConfig:
    post:
      tags: [HostAssignableHardwareManager]
      summary: |2
        Update Assignable Hardware configuration.
      operationId: HostAssignableHardwareManager_UpdateAssignableHardwareConfig
      description: |2
        Update Assignable Hardware configuration.
        
        Entries are updated as described in *HostAssignableHardwareConfig*.
        
        ***Required privileges:*** Host.Config.Settings
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateAssignableHardwareConfigRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            Failure
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HostConfigFault'

  /HostAssignableHardwareManager/{moId}/binding:
    get:
      tags: [HostAssignableHardwareManager]
      summary: |2
        Assignable Hardware bindings
      operationId: HostAssignableHardwareManager_getBinding
      description: |2
        Assignable Hardware bindings
        
        ***Required privileges:*** System.Read
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/HostAssignableHardwareBinding'

  /HostAssignableHardwareManager/{moId}/config:
    get:
      tags: [HostAssignableHardwareManager]
      summary: |2
        Assignable Hardware configuration
      operationId: HostAssignableHardwareManager_getConfig
      description: |2
        Assignable Hardware configuration
        
        ***Required privileges:*** System.Read
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HostAssignableHardwareConfig'

  /HostAuthenticationManager/{moId}/info:
    get:
      tags: [HostAuthenticationManager]
      summary: |2
        Information about Active Directory membership.
      operationId: HostAuthenticationManager_getInfo
      description: |2
        Information about Active Directory membership.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HostAuthenticationManagerInfo'

  /HostAuthenticationManager/{moId}/supportedStore:
    get:
      tags: [HostAuthenticationManager]
      summary: |2
        An array that can contain managed object references to local and
        Active Directory authentication managed objects.
      operationId: HostAuthenticationManager_getSupportedStore
      description: |2
        An array that can contain managed object references to local and
        Active Directory authentication managed objects.
        
        <code>supportedStore</code> data implies a connection to a system
        that stores information about accounts.
        The <code>supportedStore</code> array can include the following objects:
        - *HostLocalAuthentication* - Local authentication refers
          to user accounts on the ESX host. Local authentication is always enabled.
        - *HostActiveDirectoryAuthentication* - Active Directory authentication
          refers to computer accounts and user accounts on the domain controller.
          This object indicates the domain membership status for the host
          and defines the join and leave methods for Active Directory
          membership.
          
          If <code>supportedStore</code> references
          a *HostActiveDirectoryAuthentication* object, the host
          is capable of joining a domain.
          However, if you try to add a host to a domain when the
          *HostAuthenticationStoreInfo*.*HostAuthenticationStoreInfo.enabled*
          property is <code>True</code> (accessed through the <code>info</code>
          property), the join method will throw a fault.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            Refers instances of *HostAuthenticationStore*.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ManagedObjectReference'

  /HostAuthenticationStore/{moId}/info:
    get:
      tags: [HostAuthenticationStore]
      summary: |2
        Information about the authentication store.
      operationId: HostAuthenticationStore_getInfo
      description: |2
        Information about the authentication store.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HostAuthenticationStoreInfo'

  /HostAutoStartManager/{moId}/AutoStartPowerOff:
    post:
      tags: [HostAutoStartManager]
      summary: |2
        Powers-off virtual machines according to the current AutoStart configuration.
      operationId: HostAutoStartManager_AutoStartPowerOff
      description: |2
        Powers-off virtual machines according to the current AutoStart configuration.
        
        See the description of the (@link vim.host.AutoStartManager.AutoPowerInfo)
        data object type for more information on Auto power-off behavior.
        
        ***Required privileges:*** Host.Config.AutoStart
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '204':
          description: |2
            No Content

  /HostAutoStartManager/{moId}/AutoStartPowerOn:
    post:
      tags: [HostAutoStartManager]
      summary: |2
        Powers-on virtual machines according to the current AutoStart configuration.
      operationId: HostAutoStartManager_AutoStartPowerOn
      description: |2
        Powers-on virtual machines according to the current AutoStart configuration.
        
        See the description of the (@link vim.host.AutoStartManager.AutoPowerInfo)
        data object type for more information on Auto power-on behavior.
        
        ***Required privileges:*** Host.Config.AutoStart
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '204':
          description: |2
            No Content

  /HostAutoStartManager/{moId}/ReconfigureAutostart:
    post:
      tags: [HostAutoStartManager]
      summary: |2
        Changes the power-on or power-off sequence and system defaults.
      operationId: HostAutoStartManager_ReconfigureAutostart
      description: |2
        Changes the power-on or power-off sequence and system defaults.
        
        The specification
        is an incremental change to the current configuration.
        
        If systemDefaults are included, only values that are specified in the
        specification are changed.
        
        For the spec.powerInfo array, each element is interpreted as an incremental
        change and the changes are processed sequentially. It is not an error to remove a
        non-existing virtual machine. If both startAction and stopAction are set to
        none, then the virtual machine is removed from the configuration.
        
        A virtual machine's position in the order can be changed either by assigning the
        virtual machine a different position in the order or removing the machine from
        the order. When a virtual machine's position changes, all other virtual machines'
        positions may be affected as they move to new positions relative to each other.
        
        ***Required privileges:*** Host.Config.AutoStart
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ReconfigureAutostartRequestType'
      responses:
        '204':
          description: |2
            No Content

  /HostAutoStartManager/{moId}/config:
    get:
      tags: [HostAutoStartManager]
      operationId: HostAutoStartManager_getConfig
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HostAutoStartManagerConfig'

  /HostBootDeviceSystem/{moId}/QueryBootDevices:
    post:
      tags: [HostBootDeviceSystem]
      summary: |2
        Retrieves a list of the available boot devices for the host system.
      operationId: HostBootDeviceSystem_QueryBootDevices
      description: |2
        Retrieves a list of the available boot devices for the host system.
        
        ***Required privileges:*** System.Read
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            The boot device information for the host. The returned object has a
            list of *HostBootDevice* data objects; each boot
            device object defines a description and a key to identify the device.
            The order of devices in the list is unpredictable.
            The returned *HostBootDeviceInfo* data object also contains
            the key of the current boot device.
          content:
            application/json:
              schema:
                nullable: true
                $ref: '#/components/schemas/HostBootDeviceInfo'

  /HostBootDeviceSystem/{moId}/UpdateBootDevice:
    post:
      tags: [HostBootDeviceSystem]
      summary: |2
        Sets the current boot device for the host system.
      operationId: HostBootDeviceSystem_UpdateBootDevice
      description: |2
        Sets the current boot device for the host system.
        
        ***Required privileges:*** Host.Config.Maintenance
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateBootDeviceRequestType'
      responses:
        '204':
          description: |2
            No Content

  /HostCacheConfigurationManager/{moId}/ConfigureHostCache_Task:
    post:
      tags: [HostCacheConfigurationManager]
      summary: |2
        Configure host cache/swap performance enhancement.
      operationId: HostCacheConfigurationManager_ConfigureHostCache_Task
      description: |2
        Configure host cache/swap performance enhancement.
        
        ***Required privileges:*** Host.Config.AdvancedConfig
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ConfigureHostCacheRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to
            monitor the operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'

  /HostCacheConfigurationManager/{moId}/cacheConfigurationInfo:
    get:
      tags: [HostCacheConfigurationManager]
      summary: |2
        The swap performance configuration for the ESX host.
      operationId: HostCacheConfigurationManager_getCacheConfigurationInfo
      description: |2
        The swap performance configuration for the ESX host.
        
        This includes
        configuration information for each datastore enabled for this purpose.
        
        ***Required privileges:*** Host.Config.AdvancedConfig
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/HostCacheConfigurationInfo'

  /HostCertificateManager/{moId}/GenerateCertificateSigningRequest:
    post:
      tags: [HostCertificateManager]
      summary: |2
        Requests the server to generate a certificate-signing
        request (CSR) for itself.
      operationId: HostCertificateManager_GenerateCertificateSigningRequest
      description: |2
        Requests the server to generate a certificate-signing
        request (CSR) for itself.
        
        The CSR is then typically
        provided to a Certificate Authority to sign and issue
        the SSL certificate for the server. Use *HostCertificateManager.InstallServerCertificate*
        to install this certificate.
        
        ***Required privileges:*** Certificate.Manage
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GenerateCertificateSigningRequestRequestType'
      responses:
        '200':
          description: |2
            CSR in PEM format
          content:
            application/json:
              schema:
                type: string
        '500':
          description: |2
            ***HostConfigFault***: if there's a problem generating the CSR.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HostConfigFault'

  /HostCertificateManager/{moId}/GenerateCertificateSigningRequestByDn:
    post:
      tags: [HostCertificateManager]
      summary: |2
        Requests the server to generate a certificate-signing
        request (CSR) for itself.
      operationId: HostCertificateManager_GenerateCertificateSigningRequestByDn
      description: |2
        Requests the server to generate a certificate-signing
        request (CSR) for itself.
        
        Alternative version similar to *HostCertificateManager.GenerateCertificateSigningRequest*
        but takes a Distinguished Name (DN) as a parameter.
        
        ***Required privileges:*** Certificate.Manage
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GenerateCertificateSigningRequestByDnRequestType'
      responses:
        '200':
          description: |2
            CSR in PEM format
          content:
            application/json:
              schema:
                type: string
        '500':
          description: |2
            ***HostConfigFault***: if there's a problem generating the CSR.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HostConfigFault'

  /HostCertificateManager/{moId}/InstallServerCertificate:
    post:
      tags: [HostCertificateManager]
      summary: |2
        Installs a given SSL certificate on the server.
      operationId: HostCertificateManager_InstallServerCertificate
      description: |2
        Installs a given SSL certificate on the server.
        
        The private key must have been previously generated by *HostCertificateManager.GenerateCertificateSigningRequest* or provided
        by *HostCertificateManager.ProvisionServerPrivateKey*.
        
        ***Required privileges:*** Certificate.Manage
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/InstallServerCertificateRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***HostConfigFault***: if there's a problem with the input certificate,
            or the certificate and key don't match.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HostConfigFault'

  /HostCertificateManager/{moId}/ListCACertificateRevocationLists:
    post:
      tags: [HostCertificateManager]
      summary: |2
        Fetches the SSL CRLs of Certificate Authorities that are trusted.
      operationId: HostCertificateManager_ListCACertificateRevocationLists
      description: |2
        Fetches the SSL CRLs of Certificate Authorities that are trusted.
        
        ***Required privileges:*** Certificate.Manage
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            SSL CRLs of trusted CAs in PEM format
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  type: string
        '500':
          description: |2
            ***HostConfigFault***: if there's a problem with the certificate store.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HostConfigFault'

  /HostCertificateManager/{moId}/ListCACertificates:
    post:
      tags: [HostCertificateManager]
      summary: |2
        Fetches the SSL certificates of Certificate Authorities
        that are trusted.
      operationId: HostCertificateManager_ListCACertificates
      description: |2
        Fetches the SSL certificates of Certificate Authorities
        that are trusted.
        
        ***Required privileges:*** Certificate.Manage
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            SSL certificates of trusted CAs in PEM format
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  type: string
        '500':
          description: |2
            ***HostConfigFault***: if there's a problem with the certificate store.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HostConfigFault'

  /HostCertificateManager/{moId}/NotifyAffectedServices:
    post:
      tags: [HostCertificateManager]
      summary: |2
        Instructs the host services affected by SSL credential changes
        by *HostCertificateManager.InstallServerCertificate*
        or *HostCertificateManager.ReplaceCACertificatesAndCRLs*
        to take into account said changes now.
      operationId: HostCertificateManager_NotifyAffectedServices
      description: |2
        Instructs the host services affected by SSL credential changes
        by *HostCertificateManager.InstallServerCertificate*
        or *HostCertificateManager.ReplaceCACertificatesAndCRLs*
        to take into account said changes now.
        
        Please note, that
        old SSL connections typically survive the transition and continue using
        old SSL credentials. New SSL connections will use the new SSL credentials.
        
        ***Required privileges:*** Certificate.Manage
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/NotifyAffectedServicesRequestType'
      responses:
        '204':
          description: |2
            No Content

  /HostCertificateManager/{moId}/ProvisionServerPrivateKey:
    post:
      tags: [HostCertificateManager]
      summary: |2
        Provisions a given SSL private key on the server for use with a subsequent
        SSL certificate installation.
      operationId: HostCertificateManager_ProvisionServerPrivateKey
      description: |2
        Provisions a given SSL private key on the server for use with a subsequent
        SSL certificate installation.
        
        The recommended way to update the server private key is via *HostCertificateManager.GenerateCertificateSigningRequest*, which
        ensures that the key never leaves the host.
        
        The current method is intended for use only in environments that
        have special requirements on how their private keys are generated.
        
        ***Since:*** vSphere API Release 8.0.3.0
        
        ***Required privileges:*** Certificate.Manage
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ProvisionServerPrivateKeyRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***HostConfigFault***: if there's a problem with the input key.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HostConfigFault'

  /HostCertificateManager/{moId}/ReplaceCACertificatesAndCRLs:
    post:
      tags: [HostCertificateManager]
      summary: |2
        Replaces the trusted Certificate Authority (CA)
        certificates and Certification Revocation List (CRL)
        used by the server with the provided values.
      operationId: HostCertificateManager_ReplaceCACertificatesAndCRLs
      description: |2
        Replaces the trusted Certificate Authority (CA)
        certificates and Certification Revocation List (CRL)
        used by the server with the provided values.
        
        These determine whether the server can verify
        the identity of an external entity.
        
        ***Required privileges:*** Certificate.Manage
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ReplaceCACertificatesAndCRLsRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***HostConfigFault***: if there's a problem with the input certificates
            or CRLs.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HostConfigFault'

  /HostCertificateManager/{moId}/RetrieveCertificateInfoList:
    post:
      tags: [HostCertificateManager]
      summary: |2
        the CertificateInfos of all known Certificates on
        the host
      operationId: HostCertificateManager_RetrieveCertificateInfoList
      description: |2
        the CertificateInfos of all known Certificates on
        the host
        
        ***Since:*** vSphere API Release 8.0.1.0
        
        ***Required privileges:*** Certificate.Manage
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/HostCertificateManagerCertificateInfo'

  /HostCertificateManager/{moId}/certificateInfo:
    get:
      tags: [HostCertificateManager]
      summary: |2
        the CertificateInfo of the Host Certificate.
      operationId: HostCertificateManager_getCertificateInfo
      description: |2
        the CertificateInfo of the Host Certificate.
        
        ***Required privileges:*** Certificate.Manage
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HostCertificateManagerCertificateInfo'

  /HostCpuSchedulerSystem/{moId}/DisableHyperThreading:
    post:
      tags: [HostCpuSchedulerSystem]
      summary: |2
        Don't treat hyperthreads as schedulable resources the next time the CPU
        scheduler starts.
      operationId: HostCpuSchedulerSystem_DisableHyperThreading
      description: |2
        Don't treat hyperthreads as schedulable resources the next time the CPU
        scheduler starts.
        
        If successful, this operation will change the
        configured setting.
        
        ***Required privileges:*** Host.Config.HyperThreading
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '204':
          description: |2
            No Content

  /HostCpuSchedulerSystem/{moId}/EnableHyperThreading:
    post:
      tags: [HostCpuSchedulerSystem]
      summary: |2
        Treat hyperthreads as schedulable resources the next time the CPU
        scheduler starts.
      operationId: HostCpuSchedulerSystem_EnableHyperThreading
      description: |2
        Treat hyperthreads as schedulable resources the next time the CPU
        scheduler starts.
        
        If successful, this operation will set the
        *config*
        property to "true".
        
        ***Required privileges:*** Host.Config.HyperThreading
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '204':
          description: |2
            No Content

  /HostCpuSchedulerSystem/{moId}/setCustomValue:
    post:
      tags: [HostCpuSchedulerSystem]
      summary: |2
        Assigns a value to a custom field.
      operationId: HostCpuSchedulerSystem_setCustomValue
      description: |2
        Assigns a value to a custom field.
        
        The setCustomValue method requires
        whichever updatePrivilege is defined as one of the
        *CustomFieldDef.fieldInstancePrivileges*
        for the CustomFieldDef whose value is being changed.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/setCustomValueRequestType'
      responses:
        '204':
          description: |2
            No Content

  /HostCpuSchedulerSystem/{moId}/availableField:
    get:
      tags: [HostCpuSchedulerSystem]
      summary: |2
        List of custom field definitions that are valid for the object's type.
      operationId: HostCpuSchedulerSystem_getAvailableField
      description: |2
        List of custom field definitions that are valid for the object's type.
        
        The fields are sorted by *CustomFieldDef.name*.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/CustomFieldDef'

  /HostCpuSchedulerSystem/{moId}/cpuSchedulerInfo:
    get:
      tags: [HostCpuSchedulerSystem]
      summary: |2
        Information about the current CPU scheduler of the host.
      operationId: HostCpuSchedulerSystem_getCpuSchedulerInfo
      description: |2
        Information about the current CPU scheduler of the host.
        
        Populates *HostCpuSchedulerInfo.policy* with the active *CPU Scheduling Policy*.
        
        ***Since:*** vSphere API Release 8.0.3.0
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                $ref: '#/components/schemas/HostCpuSchedulerInfo'

  /HostCpuSchedulerSystem/{moId}/hyperthreadInfo:
    get:
      tags: [HostCpuSchedulerSystem]
      summary: |2
        The hyperthread configuration for the CpuSchedulerSystem.
      operationId: HostCpuSchedulerSystem_getHyperthreadInfo
      description: |2
        The hyperthread configuration for the CpuSchedulerSystem.
        
        The
        existence of this data object type indicates if the CPU scheduler
        is capable of scheduling hyperthreads as resources.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                $ref: '#/components/schemas/HostHyperThreadScheduleInfo'

  /HostCpuSchedulerSystem/{moId}/value:
    get:
      tags: [HostCpuSchedulerSystem]
      summary: |2
        List of custom field values.
      operationId: HostCpuSchedulerSystem_getValue
      description: |2
        List of custom field values.
        
        Each value uses a key to associate
        an instance of a *CustomFieldStringValue* with
        a custom field definition.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/CustomFieldValue'

  /HostDatastoreBrowser/{moId}/DeleteFile:
    post:
      tags: [HostDatastoreBrowser]
      summary: |2
        Deletes the specified files from the datastore.
      operationId: HostDatastoreBrowser_DeleteFile
      deprecated: true
      description: |2
        Deprecated as of VI API 2.5, use *FileManager.DeleteDatastoreFile_Task*.
        
        Deletes the specified files from the datastore.
        
        If a valid virtual disk file is
        specified, then all the components of the virtual disk are deleted.
        
        ***Required privileges:*** Datastore.DeleteFile
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DeleteFileRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***InvalidDatastore***: if the operation cannot be performed on the target
            datastores. Typically, a specific subclass of this exception is thrown.
            
            ***FileNotFound***: if the file or folder specified by datastorePath is not
            found.
            
            ***CannotDeleteFile***: if the delete operation on the file fails.
            
            ***InvalidArgument***: if fileInfo is not a valid FileInfo type.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostDatastoreBrowser/{moId}/SearchDatastore_Task:
    post:
      tags: [HostDatastoreBrowser]
      summary: |2
        Returns the information for the files that match the given search criteria as a
        SearchResults object.
      operationId: HostDatastoreBrowser_SearchDatastore_Task
      description: |2
        Returns the information for the files that match the given search criteria as a
        SearchResults object.
        
        Searches only the folder specified by the datastore path.
        The Datastore.Browse privilege must be held on the datastore identified
        by the datastore path.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SearchDatastoreRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor the
            operation. The *info.result* property in the
            *Task* contains the
            *HostDatastoreBrowserSearchResults* upon success.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***InvalidDatastore***: if the operation cannot be performed on the target
            datastores. The server can throw InvalidDatastorePath to indicate a malformed
            datastorePath, or InaccessibleDatastore to indicate inaccessibility of the
            datastore.
            
            ***InvalidArgument***: if the SearchSpec contains duplicate file types.
            
            ***FileNotFound***: if the file or folder specified by datastorePath is not
            found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostDatastoreBrowser/{moId}/SearchDatastoreSubFolders_Task:
    post:
      tags: [HostDatastoreBrowser]
      summary: |2
        Returns the information for the files that match the given search criteria as a
        SearchResults\[\] object.
      operationId: HostDatastoreBrowser_SearchDatastoreSubFolders_Task
      description: |2
        Returns the information for the files that match the given search criteria as a
        SearchResults\[\] object.
        
        Searches the folder specified by the datastore path and
        all subfolders. The Datastore.Browse privilege must be held on the
        datastore identified by the datastore path.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SearchDatastoreSubFoldersRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor the
            operation. The *info.result* property in the
            *Task* contains the
            *HostDatastoreBrowserSearchResults* upon success.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***InvalidDatastore***: if the operation cannot be performed on the target
            datastores. Typically, a specific subclass of this exception is thrown.
            
            ***InvalidArgument***: if the SearchSpec contains duplicate file types.
            
            ***FileNotFound***: if the file or folder specified by datastorePath is not
            found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostDatastoreBrowser/{moId}/datastore:
    get:
      tags: [HostDatastoreBrowser]
      summary: |2
        Set of datastores that can be searched on this DatastoreBrowser.
      operationId: HostDatastoreBrowser_getDatastore
      description: |2
        Set of datastores that can be searched on this DatastoreBrowser.
        
        The list of datastores available to browse on this DatastoreBrowser is contextual
        information that depends on the object being browsed. If the host is being
        browsed, the host's datastores are used. If the Datacenter is being browsed, the
        Datacenter's list of datastores is used.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            Refers instances of *Datastore*.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/ManagedObjectReference'

  /HostDatastoreBrowser/{moId}/supportedType:
    get:
      tags: [HostDatastoreBrowser]
      summary: |2
        The list of supported file types.
      operationId: HostDatastoreBrowser_getSupportedType
      description: |2
        The list of supported file types.
        
        The supported file types are represented as
        items in this list. For each supported file type, there is an object in the list
        whose dynamic type is one of the types derived from the
        *FileQuery* data object
        type. In general, the properties in this query type are not set.
        
        Use the Query of the desired file type in the SearchSpec.query to indicate the
        desired file types.
        
        This property is used by clients to determine what kinds of file types are
        supported. Clients should consult this list to avoid querying for types of virtual
        machine components that are not supported.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/FileQuery'

  /HostDatastoreSystem/{moId}/ConfigureDatastorePrincipal:
    post:
      tags: [HostDatastoreSystem]
      summary: |2
        Configures datastore principal user for the host.
      operationId: HostDatastoreSystem_ConfigureDatastorePrincipal
      description: |2
        Configures datastore principal user for the host.
        
        All virtual machine-related file I/O is performed under
        this user. Configuring datastore principal user
        will result in all virtual machine files (configuration, disk,
        and so on) being checked for proper access. If necessary, ownership
        and permissions are modified. Note that in some environments,
        file ownership and permissions modification may not be possible.
        For example, virtual machine files stored on NFS cannot be
        modified for ownership and permissions if root squashing is
        enabled. Ownership and permissions for these files must be
        manually changed by a system administrator. In general, if
        server process does not have rights to change ownership
        and file permissions of virtual machine files, they must
        be modified manually. If a virtual machine files are not
        read/writeable by this user, virtual machine related operations such as
        power on/off, configuration, and so on will fail. This operation
        must be performed while in maintenance mode and requires host
        reboot.
        
        ***Required privileges:*** Host.Config.Maintenance
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ConfigureDatastorePrincipalRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***InvalidState***: if the host is not in maintenance mode.
            
            ***InvalidArgument***: if userName or password is not valid.
            
            ***NotSupported***: if this feature is not supported on the host.
            
            ***HostConfigFault***: if unable to configure the datastore principal.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostDatastoreSystem/{moId}/CreateLocalDatastore:
    post:
      tags: [HostDatastoreSystem]
      summary: |2
        Creates a new local datastore.
      operationId: HostDatastoreSystem_CreateLocalDatastore
      description: |2
        Creates a new local datastore.
        
        ***Required privileges:*** Host.Config.Storage
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateLocalDatastoreRequestType'
      responses:
        '200':
          description: |2
            Refers instance of *Datastore*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***DuplicateName***: if a datastore with the same name already exists.
            
            ***HostConfigFault***: if unable to create the datastore on host.
            
            ***InvalidName***: if name is not valid datastore name
            
            ***FileNotFound***: if path doesn't exist
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostDatastoreSystem/{moId}/CreateNasDatastore:
    post:
      tags: [HostDatastoreSystem]
      summary: |2
        Creates a new network-attached storage datastore.
      operationId: HostDatastoreSystem_CreateNasDatastore
      description: |2
        Creates a new network-attached storage datastore.
        
        ***Required privileges:*** Host.Config.Storage
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateNasDatastoreRequestType'
      responses:
        '200':
          description: |2
            The newly created datastore.
            
            Refers instance of *Datastore*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***DuplicateName***: if a datastore with the same name already exists.
            
            ***InvalidArgument***: if the datastore name is invalid, or the spec
            is invalid.
            
            ***NoVirtualNic***: if VMkernel TCPIP stack is not configured.
            
            ***NoGateway***: if VMkernel gateway is not configured.
            
            ***AlreadyExists***: if the local path already exists on the host, or
            the remote path is already mounted on the host.
            
            ***HostConfigFault***: if unable to mount the NAS volume.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostDatastoreSystem/{moId}/CreateVmfsDatastore:
    post:
      tags: [HostDatastoreSystem]
      summary: |2
        Creates a new VMFS datastore.
      operationId: HostDatastoreSystem_CreateVmfsDatastore
      description: |2
        Creates a new VMFS datastore.
        
        ***Required privileges:*** Host.Config.Storage
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateVmfsDatastoreRequestType'
      responses:
        '200':
          description: |2
            The newly created datastore.
            
            Refers instance of *Datastore*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***DuplicateName***: if a datastore with the same name already exists.
            
            ***InvalidArgument***: if the datastore name is invalid, or the spec
            is invalid.
            
            ***NotSupported***: if the host is not an ESX Server system.
            
            ***HostConfigFault***: if unable to format the VMFS volume or
            gather information about the created volume.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostDatastoreSystem/{moId}/CreateVvolDatastore:
    post:
      tags: [HostDatastoreSystem]
      summary: |2
        Create a Virtual-Volume based datastore
      operationId: HostDatastoreSystem_CreateVvolDatastore
      description: |2
        Create a Virtual-Volume based datastore
        
        ***Required privileges:*** Host.Config.Storage
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateVvolDatastoreRequestType'
      responses:
        '200':
          description: |2
            The newly created datastore.
            
            Refers instance of *Datastore*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***NotFound***: if the storage container could not be found.
            
            ***DuplicateName***: if a datastore with the same name already exists.
            
            ***HostConfigFault***: if unable to create the datastore on host.
            
            ***InvalidName***: if name is not valid datastore name
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostDatastoreSystem/{moId}/DisableClusteredVmdkSupport:
    post:
      tags: [HostDatastoreSystem]
      summary: |2
        Disable the clustered vmdk support on specified datastore.
      operationId: HostDatastoreSystem_DisableClusteredVmdkSupport
      description: |2
        Disable the clustered vmdk support on specified datastore.
        
        This API will fail if there are running VMs on the datastore
        which are configured to use clustered VMDK feature.
        
        ***Required privileges:*** Host.Config.Storage
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DisableClusteredVmdkSupportRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***NotFound***: if a datastore with the name could not be found.
            
            ***HostConfigFault***: if unable to disable clustered vmdk support.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostDatastoreSystem/{moId}/EnableClusteredVmdkSupport:
    post:
      tags: [HostDatastoreSystem]
      summary: |2
        Enable the clustered vmdk support on specified datastore.
      operationId: HostDatastoreSystem_EnableClusteredVmdkSupport
      description: |2
        Enable the clustered vmdk support on specified datastore.
        
        ***Required privileges:*** Host.Config.Storage
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EnableClusteredVmdkSupportRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***NotFound***: if a datastore with the name could not be found.
            
            ***HostConfigFault***: if unable to enable clustered vmdk support.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostDatastoreSystem/{moId}/ExpandVmfsDatastore:
    post:
      tags: [HostDatastoreSystem]
      summary: |2
        Increases the capacity of an existing VMFS datastore by expanding
        (increasing the size of) an existing extent of the datastore.
      operationId: HostDatastoreSystem_ExpandVmfsDatastore
      description: |2
        Increases the capacity of an existing VMFS datastore by expanding
        (increasing the size of) an existing extent of the datastore.
        
        ***Required privileges:*** Host.Config.Storage
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ExpandVmfsDatastoreRequestType'
      responses:
        '200':
          description: |2
            The expanded datastore.
            
            Refers instance of *Datastore*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***NotFound***: if a datastore with the name could not be found.
            
            ***NotSupported***: if the host is not an ESX Server.
            
            ***HostConfigFault***: if unable to expand the VMFS volume.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostDatastoreSystem/{moId}/ExtendVmfsDatastore:
    post:
      tags: [HostDatastoreSystem]
      summary: |2
        Increases the capacity of an existing VMFS datastore by adding new
        extents to the datastore.
      operationId: HostDatastoreSystem_ExtendVmfsDatastore
      description: |2
        Increases the capacity of an existing VMFS datastore by adding new
        extents to the datastore.
        
        ***Required privileges:*** Host.Config.Storage
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ExtendVmfsDatastoreRequestType'
      responses:
        '200':
          description: |2
            The extended datastore.
            
            Refers instance of *Datastore*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***NotFound***: if a datastore with the name could not be found.
            
            ***NotSupported***: if the host is not an ESX Server.
            
            ***HostConfigFault***: if unable to extend the VMFS volume.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostDatastoreSystem/{moId}/QueryAvailableDisksForVmfs:
    post:
      tags: [HostDatastoreSystem]
      summary: |2
        Query to list disks that can be used to contain VMFS datastore extents.
      operationId: HostDatastoreSystem_QueryAvailableDisksForVmfs
      description: |2
        Query to list disks that can be used to contain VMFS datastore extents.
        
        If the optional parameter name is supplied, queries for disks that can be
        used to contain extents for a VMFS datastore identified by the supplied
        name. Otherwise, the method retrieves disks that can be used to contain
        new VMFS datastores.
        
        This operation will filter out disks that are currently in use by an
        existing VMFS unless the VMFS using the disk is one being extended.
        It will also filter out management LUNs and disks that are referenced by
        RDMs. These disk LUNs are also unsuited for use by a VMFS.
        
        Disk LUNs referenced by RDMs are found by examining all virtual machines
        known to the system and visiting their virtual disk backends. If a
        virtual disk backend uses an RDM that is referencing a disk LUN, the disk
        LUN becomes ineligible for use by a VMFS datastore.
        
        ***Required privileges:*** Host.Config.Storage
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QueryAvailableDisksForVmfsRequestType'
      responses:
        '200':
          description: |2
            An array of data objects describing SCSI disks.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/HostScsiDisk'
        '500':
          description: |2
            ***NotSupported***: if the host is not an ESX Server.
            
            ***NotFound***: if the named VMFS datastore is not found.
            
            ***InvalidArgument***: if named VMFS datastore is not a VMFS datastore.
            
            ***HostConfigFault***: if unable to query disk information.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostDatastoreSystem/{moId}/QueryMaxQueueDepth:
    post:
      tags: [HostDatastoreSystem]
      summary: |2
        Query max queue depth for a specified NFS datastore.
      operationId: HostDatastoreSystem_QueryMaxQueueDepth
      description: |2
        Query max queue depth for a specified NFS datastore.
        
        ***Since:*** vSphere API Release 8.0.0.1
        
        ***Required privileges:*** Host.Config.Storage
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QueryMaxQueueDepthRequestType'
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                type: integer
                format: int64
        '500':
          description: |2
            ***NotFound***: if the datastore could not be found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFound'

  /HostDatastoreSystem/{moId}/QueryUnresolvedVmfsVolumes:
    post:
      tags: [HostDatastoreSystem]
      summary: |2
        Get the list of unbound VMFS volumes.
      operationId: HostDatastoreSystem_QueryUnresolvedVmfsVolumes
      description: |2
        Get the list of unbound VMFS volumes.
        
        For sharing a volume across hosts, a VMFS volume is bound to its
        underlying block device storage. When a low level block copy is
        performed to copy or move the VMFS volume, the copied volume will
        be unbound.
        
        ***Required privileges:*** System.Read
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            An array of unbound VMFS datastore
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/HostUnresolvedVmfsVolume'

  /HostDatastoreSystem/{moId}/QueryVmfsDatastoreCreateOptions:
    post:
      tags: [HostDatastoreSystem]
      summary: |2
        Queries options for creating a new VMFS datastore for a disk.
      operationId: HostDatastoreSystem_QueryVmfsDatastoreCreateOptions
      description: |2
        Queries options for creating a new VMFS datastore for a disk.
        
        See also *HostScsiDisk.devicePath*.
        
        ***Required privileges:*** Host.Config.Storage
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QueryVmfsDatastoreCreateOptionsRequestType'
      responses:
        '200':
          description: |2
            An array of VMFS datastore provisioning options that can be
            applied on a disk.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/VmfsDatastoreOption'
        '500':
          description: |2
            ***NotSupported***: if the host is not an ESX Server.
            
            ***NotFound***: if the device is not found.
            
            ***HostConfigFault***: if unable to get the current partition information for
            the device.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostDatastoreSystem/{moId}/QueryVmfsDatastoreExpandOptions:
    post:
      tags: [HostDatastoreSystem]
      summary: |2
        Queries for options for increasing the capacity of an existing VMFS
        datastore by expanding (increasing the size of) an existing extent of
        the datastore.
      operationId: HostDatastoreSystem_QueryVmfsDatastoreExpandOptions
      description: |2
        Queries for options for increasing the capacity of an existing VMFS
        datastore by expanding (increasing the size of) an existing extent of
        the datastore.
        
        ***Required privileges:*** Host.Config.Storage
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QueryVmfsDatastoreExpandOptionsRequestType'
      responses:
        '200':
          description: |2
            An array of VMFS datastore expansion options that can be applied.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/VmfsDatastoreOption'
        '500':
          description: |2
            ***NotFound***: if the specified datastore could not be found or is unmounted.
            
            ***HostConfigFault***: if unable to get partition information for the
            devices on which the extents reside
            
            ***NotSupported***: if the host is not an ESX Server.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostDatastoreSystem/{moId}/QueryVmfsDatastoreExtendOptions:
    post:
      tags: [HostDatastoreSystem]
      summary: |2
        Queries for options for increasing the capacity of an existing VMFS
        datastore by adding new extents using space from the specified disk.
      operationId: HostDatastoreSystem_QueryVmfsDatastoreExtendOptions
      description: |2
        Queries for options for increasing the capacity of an existing VMFS
        datastore by adding new extents using space from the specified disk.
        
        See also *HostScsiDisk.devicePath*.
        
        ***Required privileges:*** Host.Config.Storage
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QueryVmfsDatastoreExtendOptionsRequestType'
      responses:
        '200':
          description: |2
            An array of VMFS datastore provisioning options that can be applied
            on a disk.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/VmfsDatastoreOption'
        '500':
          description: |2
            ***NotFound***: if a datastore or device with the given name could not be found
            or if the datastore is unmounted.
            
            ***HostConfigFault***: if unable to get the current partition information for
            the device.
            
            ***NotSupported***: if the host is not an ESX Server.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostDatastoreSystem/{moId}/RemoveDatastore:
    post:
      tags: [HostDatastoreSystem]
      summary: |2
        Removes a datastore from a host.
      operationId: HostDatastoreSystem_RemoveDatastore
      description: |2
        Removes a datastore from a host.
        
        ***Required privileges:*** Host.Config.Storage
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RemoveDatastoreRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***NotFound***: if the datastore could not be found.
            
            ***HostConfigFault***: if unable to umount the NAS volume for NAS
            datastore, or gather the existing volume information.
            
            ***ResourceInUse***: for a VMFS volume if there is any VM registered
            on any host attached to this datastore.
            
            ***ResourceInUse***: for a NFS volume if there is any VM residing on
            this datastore and registered on this host.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostDatastoreSystem/{moId}/RemoveDatastoreEx_Task:
    post:
      tags: [HostDatastoreSystem]
      summary: |2
        Remove one or more datastores.
      operationId: HostDatastoreSystem_RemoveDatastoreEx_Task
      description: |2
        Remove one or more datastores.
        
        This is an asynchronous, batch operation of
        removeDatastore. Please see *HostDatastoreSystem.RemoveDatastore*
        for operational details.
        Note: This API currently supports removal of only NFS datastores.
        
        ***Required privileges:*** Host.Config.Storage
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RemoveDatastoreExRequestType'
      responses:
        '200':
          description: |2
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***HostConfigFault***: for host configuration failures.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HostConfigFault'

  /HostDatastoreSystem/{moId}/ResignatureUnresolvedVmfsVolume_Task:
    post:
      tags: [HostDatastoreSystem]
      summary: |2
        Resignature an unbound VMFS volume.
      operationId: HostDatastoreSystem_ResignatureUnresolvedVmfsVolume_Task
      description: |2
        Resignature an unbound VMFS volume.
        
        To safely enable sharing of the volume across hosts, a VMFS volume
        is bound to its underlying block device storage. When a low level
        block copy is performed to copy or move the VMFS volume, the copied
        volume will be unbound. In order for the VMFS volume to be usable,
        a resolution operation is needed to determine whether the VMFS volume
        should be treated as a new volume or not and what extents compose
        that volume in the event there is more than one unbound volume.
        
        With 'Resignature' operation, a new Vmfs Uuid is assigned to the
        volume but its contents are kept intact. Resignature results in a
        new Vmfs volume on the host. Users can specify a list of hosts on which
        the volume will be auto-mounted.
        
        ***Required privileges:*** Host.Config.Storage
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ResignatureUnresolvedVmfsVolumeRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor
            the operation. The task result
            (*Task.info*.*TaskInfo.result*) contains a
            *HostResignatureRescanResult* object that identifies
            the newly created VMFS datastore.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***VmfsAmbiguousMount***: when ESX is unable to resolve the extents
            of a VMFS volume unambiguously. This is thrown only when
            a VMFS volume has multiple extents and multiple copies of
            non-head extents are detected, and the user has not
            specified one copy of every extent. Please note that some
            versions of ESX may not support resolving the situation
            where multiple copies of non-head extents are detected,
            even if one copy of every extent is specified in the
            method parameter. To resolve such a situation, the user
            is expected to change the configuration (for example,
            using array management tools) so that only one copy of
            each non-head extent is presented to ESX.
            
            ***HostConfigFault***: for all other configuration failures.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VmfsAmbiguousMount'

  /HostDatastoreSystem/{moId}/SetMaxQueueDepth:
    post:
      tags: [HostDatastoreSystem]
      summary: |2
        Set max queue depth for a specified NFS datastore.
      operationId: HostDatastoreSystem_SetMaxQueueDepth
      description: |2
        Set max queue depth for a specified NFS datastore.
        
        ***Since:*** vSphere API Release 8.0.0.1
        
        ***Required privileges:*** Host.Config.Storage
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SetMaxQueueDepthRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***NotFound***: if the datastore could not be found.
            
            ***InvalidArgument***: if max queue depth is not within range.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFound'

  /HostDatastoreSystem/{moId}/UpdateLocalSwapDatastore:
    post:
      tags: [HostDatastoreSystem]
      summary: |2
        Choose the
        *localSwapDatastore*
        for this host.
      operationId: HostDatastoreSystem_UpdateLocalSwapDatastore
      description: |2
        Choose the
        *localSwapDatastore*
        for this host.
        
        Any change to this setting will affect virtual machines
        that subsequently power on or resume from a suspended state at this host,
        or that migrate to this host while powered on; virtual machines that are
        currently powered on at this host will not yet be affected.
        
        ***Required privileges:*** Host.Config.Storage
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateLocalSwapDatastoreRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***NotSupported***: if the datastore argument is set and the
            *localSwapDatastoreSupported*
            capability is not true for the host.
            
            ***InaccessibleDatastore***: if the datastore argument is set and
            the host cannot access the indicated datastore.
            
            ***DatastoreNotWritableOnHost***: if the datastore argument is set and
            the host cannot write to the indicated datastore.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InvalidDatastore'

  /HostDatastoreSystem/{moId}/capabilities:
    get:
      tags: [HostDatastoreSystem]
      summary: |2
        Capability vector indicating the available product features.
      operationId: HostDatastoreSystem_getCapabilities
      description: |2
        Capability vector indicating the available product features.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HostDatastoreSystemCapabilities'

  /HostDatastoreSystem/{moId}/datastore:
    get:
      tags: [HostDatastoreSystem]
      summary: |2
        List of datastores on this host.
      operationId: HostDatastoreSystem_getDatastore
      description: |2
        List of datastores on this host.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            Refers instances of *Datastore*.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/ManagedObjectReference'

  /HostDateTimeSystem/{moId}/QueryAvailableTimeZones:
    post:
      tags: [HostDateTimeSystem]
      summary: |2
        Retrieves the list of available timezones on the host.
      operationId: HostDateTimeSystem_QueryAvailableTimeZones
      description: |2
        Retrieves the list of available timezones on the host.
        
        The API works off the public domain 'tz' timezone database.
        
        ***Required privileges:*** System.Read
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            List of available timezones on the host.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/HostDateTimeSystemTimeZone'

  /HostDateTimeSystem/{moId}/QueryDateTime:
    post:
      tags: [HostDateTimeSystem]
      summary: |2
        Get the current DateTime on the host.
      operationId: HostDateTimeSystem_QueryDateTime
      description: |2
        Get the current DateTime on the host.
        
        ***Required privileges:*** System.Read
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            Current DateTime on the host.
          content:
            application/json:
              schema:
                type: string
                format: date-time

  /HostDateTimeSystem/{moId}/RefreshDateTimeSystem:
    post:
      tags: [HostDateTimeSystem]
      summary: |2
        Refresh the DateTime related settings to pick up any changes that might
        have occurred.
      operationId: HostDateTimeSystem_RefreshDateTimeSystem
      description: |2
        Refresh the DateTime related settings to pick up any changes that might
        have occurred.
        
        ***Required privileges:*** Host.Config.DateTime
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '204':
          description: |2
            No Content

  /HostDateTimeSystem/{moId}/TestTimeService:
    post:
      tags: [HostDateTimeSystem]
      summary: |2
        Run a test to validate current time service configuration is functioning
        normally.
      operationId: HostDateTimeSystem_TestTimeService
      description: |2
        Run a test to validate current time service configuration is functioning
        normally.
        
        The report will provide a localized diagnostic of any issues.
        Only one diagnostic test may be running at a time.
        
        ***Since:*** vSphere API Release 7.0.3.0
        
        ***Required privileges:*** Host.Config.DateTime
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            The status of the time service on this host based on present time
            service configuration.
          content:
            application/json:
              schema:
                nullable: true
                $ref: '#/components/schemas/HostDateTimeSystemServiceTestResult'

  /HostDateTimeSystem/{moId}/UpdateDateTimeConfig:
    post:
      tags: [HostDateTimeSystem]
      summary: |2
        Update the DateTime configuration of the host.
      operationId: HostDateTimeSystem_UpdateDateTimeConfig
      description: |2
        Update the DateTime configuration of the host.
        
        ***Required privileges:*** Host.Config.DateTime
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateDateTimeConfigRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***HostConfigFault***: if an error occurs.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HostConfigFault'

  /HostDateTimeSystem/{moId}/UpdateDateTime:
    post:
      tags: [HostDateTimeSystem]
      summary: |2
        Update the date/time on the host.
      operationId: HostDateTimeSystem_UpdateDateTime
      description: |2
        Update the date/time on the host.
        
        This method should be used with caution since network delays, execution
        delays can result in time skews.
        
        ***Required privileges:*** Host.Config.DateTime
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateDateTimeRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***HostConfigFault***: if an error occurs.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HostConfigFault'

  /HostDateTimeSystem/{moId}/dateTimeInfo:
    get:
      tags: [HostDateTimeSystem]
      summary: |2
        The DateTime configuration of the host.
      operationId: HostDateTimeSystem_getDateTimeInfo
      description: |2
        The DateTime configuration of the host.
        
        ***Required privileges:*** System.Read
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            DateTime configuration of the host.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HostDateTimeInfo'

  /HostDiagnosticSystem/{moId}/CreateDiagnosticPartition:
    post:
      tags: [HostDiagnosticSystem]
      summary: |2
        Creates a diagnostic partition according to the provided create
        specification.
      operationId: HostDiagnosticSystem_CreateDiagnosticPartition
      description: |2
        Creates a diagnostic partition according to the provided create
        specification.
        
        On success, this method will create the partition
        and make the partition the active diagnostic partition if specified.
        On failure, the diagnostic partition may exist but may not be active
        if the partition was supposed to be made active.
        
        ***Required privileges:*** Host.Config.Storage
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateDiagnosticPartitionRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***NotSupported***: if the host is not an ESX Server.
            
            ***NotFound***: if the specified disk cannot be found.
            
            ***InvalidArgument***: if an invalid storage type is specified or the
            specified disk is unable to accommodate a new diagnostic
            partition.
            
            ***HostConfigFault***: on some internal failure while trying to
            create the diagnostic partition or to activate the diagnostic
            partition.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostDiagnosticSystem/{moId}/QueryAvailablePartition:
    post:
      tags: [HostDiagnosticSystem]
      summary: |2
        Retrieves a list of available diagnostic partitions.
      operationId: HostDiagnosticSystem_QueryAvailablePartition
      description: |2
        Retrieves a list of available diagnostic partitions.
        
        The server will
        provide the list in order of preference. In general, local diagnostic
        partitions are better than shared diagnostic partitions because of
        the impossibility of multiple servers sharing the same partition. The
        most preferred diagnostic partition will be first in the array.
        
        ***Required privileges:*** Host.Config.Storage
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/HostDiagnosticPartition'
        '500':
          description: |2
            ***NotSupported***: if the host is not an ESX Server.
            
            ***HostConfigFault***: on some internal failure while setting the
            active partition.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HostConfigFault'

  /HostDiagnosticSystem/{moId}/QueryPartitionCreateDesc:
    post:
      tags: [HostDiagnosticSystem]
      summary: |2
        For a disk, query for the diagnostic partition creation description.
      operationId: HostDiagnosticSystem_QueryPartitionCreateDesc
      description: |2
        For a disk, query for the diagnostic partition creation description.
        
        The description details how the diagnostic partition will be created
        on the disk and provides a creation specification that is needed to
        invoke the create operation.
        
        See also *HostScsiDisk*, *ScsiLun.uuid*.
        
        ***Required privileges:*** Host.Config.Storage
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QueryPartitionCreateDescRequestType'
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HostDiagnosticPartitionCreateDescription'
        '500':
          description: |2
            ***NotSupported***: if the host is not an ESX Server.
            
            ***NotFound***: if the specified disk cannot be found.
            
            ***InvalidArgument***: if an invalid storage type is specified or the
            specified disk is unable to accommodate a new diagnostic
            partition.
            
            ***HostConfigFault***: on some internal failure while trying to
            query information about the disk.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostDiagnosticSystem/{moId}/QueryPartitionCreateOptions:
    post:
      tags: [HostDiagnosticSystem]
      summary: |2
        Retrieves a list of disks that can be used to contain a diagnostic
        partition.
      operationId: HostDiagnosticSystem_QueryPartitionCreateOptions
      description: |2
        Retrieves a list of disks that can be used to contain a diagnostic
        partition.
        
        This list will contain disks that have sufficient space
        to contain a diagnostic partition of the specific type.
        
        The choices will be returned in the order that is most preferable
        as determined by the system.
        
        ***Required privileges:*** Host.Config.Storage
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QueryPartitionCreateOptionsRequestType'
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/HostDiagnosticPartitionCreateOption'
        '500':
          description: |2
            ***NotSupported***: if the host is not an ESX Server.
            
            ***InvalidArgument***: if an invalid storage type is specified.
            
            ***HostConfigFault***: on some internal failure while querying the
            create options.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HostConfigFault'

  /HostDiagnosticSystem/{moId}/SelectActivePartition:
    post:
      tags: [HostDiagnosticSystem]
      summary: |2
        Changes the active diagnostic partition to a different partition.
      operationId: HostDiagnosticSystem_SelectActivePartition
      description: |2
        Changes the active diagnostic partition to a different partition.
        
        Setting a NULL partition will result in unsetting the diagnostic
        partition.
        
        ***Required privileges:*** Host.Config.Storage
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SelectActivePartitionRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***NotSupported***: if the host is not an ESX Server.
            
            ***NotFound***: if the diagnostic partition does not exist.
            
            ***InvalidArgument***: if the partition is not a diagnostic partition.
            
            ***HostConfigFault***: on some internal failure while selecting the
            active partition.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostDiagnosticSystem/{moId}/activePartition:
    get:
      tags: [HostDiagnosticSystem]
      summary: |2
        The currently active diagnostic partition.
      operationId: HostDiagnosticSystem_getActivePartition
      description: |2
        The currently active diagnostic partition.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                $ref: '#/components/schemas/HostDiagnosticPartition'

  /HostDirectoryStore/{moId}/info:
    get:
      tags: [HostDirectoryStore]
      summary: |2
        Information about the authentication store.
      operationId: HostDirectoryStore_getInfo
      description: |2
        Information about the authentication store.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HostAuthenticationStoreInfo'

  /HostEsxAgentHostManager/{moId}/EsxAgentHostManagerUpdateConfig:
    post:
      tags: [HostEsxAgentHostManager]
      summary: |2
        Update the host's ESX agent configuration.
      operationId: HostEsxAgentHostManager_EsxAgentHostManagerUpdateConfig
      description: |2
        Update the host's ESX agent configuration.
        
        The entire configuration must be set each time since all values are
        overwritten. E.g. a field set to null clears the value on the host.
        
        ***Required privileges:*** Host.Config.Settings
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EsxAgentHostManagerUpdateConfigRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***HostConfigFault***: if an error occurs.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HostConfigFault'

  /HostEsxAgentHostManager/{moId}/configInfo:
    get:
      tags: [HostEsxAgentHostManager]
      summary: |2
        Configuration of agent virtual machine resources
      operationId: HostEsxAgentHostManager_getConfigInfo
      description: |2
        Configuration of agent virtual machine resources
        
        ***Required privileges:*** Host.Config.Settings
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HostEsxAgentHostManagerConfigInfo'

  /HostFirewallSystem/{moId}/DisableRuleset:
    post:
      tags: [HostFirewallSystem]
      summary: |2
        Blocks the firewall ports belonging to the specified ruleset.
      operationId: HostFirewallSystem_DisableRuleset
      description: |2
        Blocks the firewall ports belonging to the specified ruleset.
        
        If the ruleset has a managed service with a policy of 'auto'
        and all other rulesets used by the service are blocked, stops
        the service.
        
        ***Required privileges:*** Host.Config.NetService
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DisableRulesetRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***NotFound***: if the ruleset ID is unknown.
            
            ***HostConfigFault***: if an internal error happened when reconfigure the
            ruleset.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostFirewallSystem/{moId}/EnableRuleset:
    post:
      tags: [HostFirewallSystem]
      summary: |2
        Opens the firewall ports belonging to the specified ruleset.
      operationId: HostFirewallSystem_EnableRuleset
      description: |2
        Opens the firewall ports belonging to the specified ruleset.
        
        If the ruleset has a managed service with a policy of 'auto'
        that is not running, starts the service.
        
        ***Required privileges:*** Host.Config.NetService
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EnableRulesetRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***NotFound***: if the ruleset ID is unknown.
            
            ***HostConfigFault***: if an internal error happened when reconfigure the
            ruleset.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostFirewallSystem/{moId}/RefreshFirewall:
    post:
      tags: [HostFirewallSystem]
      summary: |2
        Refresh the firewall information and settings to pick up any changes
        made directly on the host.
      operationId: HostFirewallSystem_RefreshFirewall
      description: |2
        Refresh the firewall information and settings to pick up any changes
        made directly on the host.
        
        ***Required privileges:*** Host.Config.NetService
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '204':
          description: |2
            No Content

  /HostFirewallSystem/{moId}/setCustomValue:
    post:
      tags: [HostFirewallSystem]
      summary: |2
        Assigns a value to a custom field.
      operationId: HostFirewallSystem_setCustomValue
      description: |2
        Assigns a value to a custom field.
        
        The setCustomValue method requires
        whichever updatePrivilege is defined as one of the
        *CustomFieldDef.fieldInstancePrivileges*
        for the CustomFieldDef whose value is being changed.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/setCustomValueRequestType'
      responses:
        '204':
          description: |2
            No Content

  /HostFirewallSystem/{moId}/UpdateDefaultPolicy:
    post:
      tags: [HostFirewallSystem]
      summary: |2
        Updates the default firewall policy; unset fields are left unchanged.
      operationId: HostFirewallSystem_UpdateDefaultPolicy
      description: |2
        Updates the default firewall policy; unset fields are left unchanged.
        
        ***Required privileges:*** Host.Config.NetService
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateDefaultPolicyRequestType'
      responses:
        '204':
          description: |2
            No Content

  /HostFirewallSystem/{moId}/UpdateRuleset:
    post:
      tags: [HostFirewallSystem]
      summary: |2
        Update the firewall ruleset specification.
      operationId: HostFirewallSystem_UpdateRuleset
      description: |2
        Update the firewall ruleset specification.
        
        ***Required privileges:*** Host.Config.NetService
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateRulesetRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***NotFound***: if the ruleset ID is unknown
            
            ***HostConfigFault***: if the update of the ruleset failed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostFirewallSystem/{moId}/availableField:
    get:
      tags: [HostFirewallSystem]
      summary: |2
        List of custom field definitions that are valid for the object's type.
      operationId: HostFirewallSystem_getAvailableField
      description: |2
        List of custom field definitions that are valid for the object's type.
        
        The fields are sorted by *CustomFieldDef.name*.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/CustomFieldDef'

  /HostFirewallSystem/{moId}/firewallInfo:
    get:
      tags: [HostFirewallSystem]
      summary: |2
        Firewall configuration.
      operationId: HostFirewallSystem_getFirewallInfo
      description: |2
        Firewall configuration.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                $ref: '#/components/schemas/HostFirewallInfo'

  /HostFirewallSystem/{moId}/value:
    get:
      tags: [HostFirewallSystem]
      summary: |2
        List of custom field values.
      operationId: HostFirewallSystem_getValue
      description: |2
        List of custom field values.
        
        Each value uses a key to associate
        an instance of a *CustomFieldStringValue* with
        a custom field definition.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/CustomFieldValue'

  /HostFirmwareSystem/{moId}/BackupFirmwareConfiguration:
    post:
      tags: [HostFirmwareSystem]
      summary: |2
        Backup the configuration of the host.
      operationId: HostFirmwareSystem_BackupFirmwareConfiguration
      description: |2
        Backup the configuration of the host.
        
        The method generates a bundle containing the host configuration.
        You can use an HTTP GET operation to download the bundle from the returned URL.
        
        ***Required privileges:*** Host.Config.Firmware
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            URL that identifies the location of the backup bundle.
          content:
            application/json:
              schema:
                type: string

  /HostFirmwareSystem/{moId}/QueryFirmwareConfigUploadURL:
    post:
      tags: [HostFirmwareSystem]
      summary: |2
        Return the URL on the host to which the configuration bundle must be
        uploaded for a restore operation.
      operationId: HostFirmwareSystem_QueryFirmwareConfigUploadURL
      description: |2
        Return the URL on the host to which the configuration bundle must be
        uploaded for a restore operation.
        
        See *HostFirmwareSystem.RestoreFirmwareConfiguration*.
        
        ***Required privileges:*** Host.Config.Firmware
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            URL that identifies the location for the restore operation.
          content:
            application/json:
              schema:
                type: string

  /HostFirmwareSystem/{moId}/ResetFirmwareToFactoryDefaults:
    post:
      tags: [HostFirmwareSystem]
      summary: |2
        Reset the configuration to factory defaults.
      operationId: HostFirmwareSystem_ResetFirmwareToFactoryDefaults
      description: |2
        Reset the configuration to factory defaults.
        
        This method will reset all configuration options, including the "admin"
        password, to the factory defaults. The host will be rebooted immediately.
        The host needs to be in maintenance mode before this operation can be
        performed.
        
        ***Required privileges:*** Host.Config.Firmware
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***InvalidState***: if the host is not in maintenance mode.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InvalidState'

  /HostFirmwareSystem/{moId}/RestoreFirmwareConfiguration:
    post:
      tags: [HostFirmwareSystem]
      summary: |2
        Restore the configuration of the host to that specified in the bundle.
      operationId: HostFirmwareSystem_RestoreFirmwareConfiguration
      description: |2
        Restore the configuration of the host to that specified in the bundle.
        
        Upload the bundle to the URL returned by the
        *HostFirmwareSystem.QueryFirmwareConfigUploadURL* method.
        The *HostFirmwareSystem.RestoreFirmwareConfiguration* method
        will restore all configuration options,
        including the "admin" password, to the values in the bundle.
        The host will be rebooted immediately.
        The host must be in maintenance mode before this operation can be
        performed.
        
        ***Required privileges:*** Host.Config.Firmware
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RestoreFirmwareConfigurationRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***InvalidState***: if the host is not in maintenance mode.
            
            ***FileFault***: if the file was not accessible.
            
            ***MismatchedBundle***: if the uuid / build number in the bundle
            does not match the uuid / build number of the host and
            parameter 'force' is set to false.
            
            ***InvalidBundle***: if the bundle does not have the expected contents.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostGraphicsManager/{moId}/IsSharedGraphicsActive:
    post:
      tags: [HostGraphicsManager]
      summary: |2
        Indicate if shared graphics device is active on the host.
      operationId: HostGraphicsManager_IsSharedGraphicsActive
      description: |2
        Indicate if shared graphics device is active on the host.
        
        ***Required privileges:*** System.Read
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                type: boolean

  /HostGraphicsManager/{moId}/RefreshGraphicsManager:
    post:
      tags: [HostGraphicsManager]
      summary: |2
        Refresh the available graphics information.
      operationId: HostGraphicsManager_RefreshGraphicsManager
      description: |2
        Refresh the available graphics information.
        
        ***Required privileges:*** Host.Config.Settings
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '204':
          description: |2
            No Content

  /HostGraphicsManager/{moId}/RetrieveVgpuDeviceInfo:
    post:
      tags: [HostGraphicsManager]
      operationId: HostGraphicsManager_RetrieveVgpuDeviceInfo
      description: |2
        ***Since:*** vSphere API Release 7.0.3.0
        
        ***Required privileges:*** System.Read
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/VirtualMachineVgpuDeviceInfo'

  /HostGraphicsManager/{moId}/RetrieveVgpuProfileInfo:
    post:
      tags: [HostGraphicsManager]
      operationId: HostGraphicsManager_RetrieveVgpuProfileInfo
      description: |2
        ***Since:*** vSphere API Release 7.0.3.0
        
        ***Required privileges:*** System.Read
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/VirtualMachineVgpuProfileInfo'

  /HostGraphicsManager/{moId}/setCustomValue:
    post:
      tags: [HostGraphicsManager]
      summary: |2
        Assigns a value to a custom field.
      operationId: HostGraphicsManager_setCustomValue
      description: |2
        Assigns a value to a custom field.
        
        The setCustomValue method requires
        whichever updatePrivilege is defined as one of the
        *CustomFieldDef.fieldInstancePrivileges*
        for the CustomFieldDef whose value is being changed.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/setCustomValueRequestType'
      responses:
        '204':
          description: |2
            No Content

  /HostGraphicsManager/{moId}/UpdateGraphicsConfig:
    post:
      tags: [HostGraphicsManager]
      summary: |2
        Update graphics configuration
      operationId: HostGraphicsManager_UpdateGraphicsConfig
      description: |2
        Update graphics configuration
        
        ***Required privileges:*** Host.Config.Settings
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateGraphicsConfigRequestType'
      responses:
        '204':
          description: |2
            No Content

  /HostGraphicsManager/{moId}/availableField:
    get:
      tags: [HostGraphicsManager]
      summary: |2
        List of custom field definitions that are valid for the object's type.
      operationId: HostGraphicsManager_getAvailableField
      description: |2
        List of custom field definitions that are valid for the object's type.
        
        The fields are sorted by *CustomFieldDef.name*.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/CustomFieldDef'

  /HostGraphicsManager/{moId}/graphicsConfig:
    get:
      tags: [HostGraphicsManager]
      summary: |2
        Graphics Configuration
      operationId: HostGraphicsManager_getGraphicsConfig
      description: |2
        Graphics Configuration
        
        ***Required privileges:*** System.Read
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                $ref: '#/components/schemas/HostGraphicsConfig'

  /HostGraphicsManager/{moId}/graphicsInfo:
    get:
      tags: [HostGraphicsManager]
      summary: |2
        Array of graphics information
      operationId: HostGraphicsManager_getGraphicsInfo
      description: |2
        Array of graphics information
        
        ***Required privileges:*** System.Read
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/HostGraphicsInfo'

  /HostGraphicsManager/{moId}/sharedGpuCapabilities:
    get:
      tags: [HostGraphicsManager]
      summary: |2
        Array of shared passthru GPU capablities.
      operationId: HostGraphicsManager_getSharedGpuCapabilities
      description: |2
        Array of shared passthru GPU capablities.
        
        See also *HostSharedGpuCapabilities*.
        
        ***Required privileges:*** System.Read
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/HostSharedGpuCapabilities'

  /HostGraphicsManager/{moId}/sharedPassthruGpuTypes:
    get:
      tags: [HostGraphicsManager]
      summary: |2
        Array of shared passthru GPU types.
      operationId: HostGraphicsManager_getSharedPassthruGpuTypes
      description: |2
        Array of shared passthru GPU types.
        
        These GPU types may be enabled
        when specific host hardware is present. Example values are "grid\_k120q"
        and "grid\_k240q".
        
        ***Required privileges:*** System.Read
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  type: string

  /HostGraphicsManager/{moId}/value:
    get:
      tags: [HostGraphicsManager]
      summary: |2
        List of custom field values.
      operationId: HostGraphicsManager_getValue
      description: |2
        List of custom field values.
        
        Each value uses a key to associate
        an instance of a *CustomFieldStringValue* with
        a custom field definition.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/CustomFieldValue'

  /HostHealthStatusSystem/{moId}/FetchSystemEventLog:
    post:
      tags: [HostHealthStatusSystem]
      summary: |2
        Hardware System Event Log (SEL) information
      operationId: HostHealthStatusSystem_FetchSystemEventLog
      description: |2
        Hardware System Event Log (SEL) information
        
        ***Required privileges:*** Host.Config.Settings
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/SystemEventInfo'

  /HostHealthStatusSystem/{moId}/ClearSystemEventLog:
    post:
      tags: [HostHealthStatusSystem]
      summary: |2
        Clear the the IPMI System Event Log.
      operationId: HostHealthStatusSystem_ClearSystemEventLog
      description: |2
        Clear the the IPMI System Event Log.
        
        ***Required privileges:*** Host.Config.Settings
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '204':
          description: |2
            No Content

  /HostHealthStatusSystem/{moId}/RefreshHealthStatusSystem:
    post:
      tags: [HostHealthStatusSystem]
      summary: |2
        Refresh the available runtime hardware health information.
      operationId: HostHealthStatusSystem_RefreshHealthStatusSystem
      description: |2
        Refresh the available runtime hardware health information.
        
        ***Required privileges:*** System.Read
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '204':
          description: |2
            No Content

  /HostHealthStatusSystem/{moId}/ResetSystemHealthInfo:
    post:
      tags: [HostHealthStatusSystem]
      summary: |2
        Resets the state of the sensors of the IPMI subsystem.
      operationId: HostHealthStatusSystem_ResetSystemHealthInfo
      description: |2
        Resets the state of the sensors of the IPMI subsystem.
        
        On certain types
        of hardware IPMI sensor states latch onto unhealthy states and will stay
        in an unhealth state until the sensor state is reset. This method will
        explicitly reset the sensors state.
        
        ***Required privileges:*** Host.Config.Settings
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '204':
          description: |2
            No Content

  /HostHealthStatusSystem/{moId}/runtime:
    get:
      tags: [HostHealthStatusSystem]
      operationId: HostHealthStatusSystem_getRuntime
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HealthSystemRuntime'

  /HostImageConfigManager/{moId}/fetchSoftwarePackages:
    post:
      tags: [HostImageConfigManager]
      summary: |2
        Reports the set of software packages installed.
      operationId: HostImageConfigManager_fetchSoftwarePackages
      description: |2
        Reports the set of software packages installed.
        
        The
        CLI command is: esxcli software vib get
        
        ***Required privileges:*** Host.Config.Image
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/SoftwarePackage'

  /HostImageConfigManager/{moId}/installDate:
    post:
      tags: [HostImageConfigManager]
      summary: |2
        Reports the UTC time stamp when this system was first installed.
      operationId: HostImageConfigManager_installDate
      description: |2
        Reports the UTC time stamp when this system was first installed.
        
        The
        CLI command is: esxcli system stats installtime get
        
        ***Required privileges:*** Host.Config.Image
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                type: string
                format: date-time

  /HostImageConfigManager/{moId}/HostImageConfigGetAcceptance:
    post:
      tags: [HostImageConfigManager]
      summary: |2
        Queries the current host acceptance level setting.
      operationId: HostImageConfigManager_HostImageConfigGetAcceptance
      description: |2
        Queries the current host acceptance level setting.
        
        See also *HostImageAcceptanceLevel_enum*If this has not been configured yet, then a default value will be
        returned..
        
        ***Required privileges:*** System.Read
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                type: string
        '500':
          description: |2
            ***HostConfigFault***: if the host acceptance setting is invalid.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HostConfigFault'

  /HostImageConfigManager/{moId}/HostImageConfigGetProfile:
    post:
      tags: [HostImageConfigManager]
      summary: |2
        Queries the current host image profile information.
      operationId: HostImageConfigManager_HostImageConfigGetProfile
      description: |2
        Queries the current host image profile information.
        
        See also *HostImageProfileSummary*If there is no host image profile, then the value "&lt;Unknown&gt;" will
        populate both name and vendor..
        
        ***Required privileges:*** System.Read
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HostImageProfileSummary'

  /HostImageConfigManager/{moId}/UpdateHostImageAcceptanceLevel:
    post:
      tags: [HostImageConfigManager]
      summary: |2
        Sets the acceptance level of the host image profile.
      operationId: HostImageConfigManager_UpdateHostImageAcceptanceLevel
      description: |2
        Sets the acceptance level of the host image profile.
        
        See also *HostImageAcceptanceLevel_enum*.
        
        ***Required privileges:*** Host.Config.Image
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateHostImageAcceptanceLevelRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***HostConfigFault***: if the acceptance level is raised and there are
            VIB packages that are not permitted by the
            higher acceptance level.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HostConfigFault'

  /HostKernelModuleSystem/{moId}/QueryConfiguredModuleOptionString:
    post:
      tags: [HostKernelModuleSystem]
      summary: |2
        Query the options configured to be passed to the kernel module when loaded.
      operationId: HostKernelModuleSystem_QueryConfiguredModuleOptionString
      description: |2
        Query the options configured to be passed to the kernel module when loaded.
        
        Note that this is not necessarily the option string currently in use by
        the kernel module.
        
        ***Required privileges:*** Host.Config.Settings
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QueryConfiguredModuleOptionStringRequestType'
      responses:
        '200':
          description: |2
            Option string to be passed to the kernel module at load time.
          content:
            application/json:
              schema:
                type: string
        '500':
          description: |2
            ***NotFound***: if the kernel module does not exist on the host.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFound'

  /HostKernelModuleSystem/{moId}/QueryModules:
    post:
      tags: [HostKernelModuleSystem]
      summary: |2
        Query the set of modules on the host.
      operationId: HostKernelModuleSystem_QueryModules
      description: |2
        Query the set of modules on the host.
        
        ***Required privileges:*** Host.Config.Settings
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/KernelModuleInfo'

  /HostKernelModuleSystem/{moId}/UpdateModuleOptionString:
    post:
      tags: [HostKernelModuleSystem]
      summary: |2
        Specifies the options to be passed to the kernel module when loaded.
      operationId: HostKernelModuleSystem_UpdateModuleOptionString
      description: |2
        Specifies the options to be passed to the kernel module when loaded.
        
        ***Required privileges:*** Host.Config.Settings
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateModuleOptionStringRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***NotFound***: if the kernel module does not exist on the host.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFound'

  /HostLocalAccountManager/{moId}/AssignUserToGroup:
    post:
      tags: [HostLocalAccountManager]
      summary: |2
        Assigns a user to a group.
      operationId: HostLocalAccountManager_AssignUserToGroup
      deprecated: true
      description: |2
        Deprecated as of vSphere API 5.1, local user groups are not supported
        and group specific methods will throw NotSupported.
        
        Assigns a user to a group.
        
        ***Required privileges:*** Host.Local.ManageUserGroups
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AssignUserToGroupRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***UserNotFound***: if the specified user or group does not exist.
            
            ***AlreadyExists***: if the user is already a member of the target group.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostLocalAccountManager/{moId}/ChangePassword:
    post:
      tags: [HostLocalAccountManager]
      summary: |2
        Updates the password of a local user account.
      operationId: HostLocalAccountManager_ChangePassword
      description: |2
        Updates the password of a local user account.
        
        ***Required privileges:*** System.Anonymous
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
        - {}
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ChangePasswordRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***InvalidArgument***: if newPassword has an invalid format.
            
            ***InvalidLogin***: if the user and oldPassword combination is not valid.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InvalidLogin'

  /HostLocalAccountManager/{moId}/CreateGroup:
    post:
      tags: [HostLocalAccountManager]
      summary: |2
        Creates a local group account using the parameters defined in the
        *HostLocalAccountManagerAccountSpecification*
        data object type.
      operationId: HostLocalAccountManager_CreateGroup
      deprecated: true
      description: |2
        Deprecated as of vSphere API 5.1, local user groups are not supported
        and group specific methods will throw NotSupported.
        
        Creates a local group account using the parameters defined in the
        *HostLocalAccountManagerAccountSpecification*
        data object type.
        
        For POSIX hosts, passing the
        *HostLocalAccountManagerPosixAccountSpecification* data object
        type allows you to control
        the group ID format of the group account being created.
        
        ***Required privileges:*** Host.Local.ManageUserGroups
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateGroupRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***AlreadyExists***: if specified local group already exists.
            
            ***InvalidArgument***: if group name is in invalid format.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AlreadyExists'

  /HostLocalAccountManager/{moId}/CreateUser:
    post:
      tags: [HostLocalAccountManager]
      summary: |2
        Creates a local user account using the parameters defined in the
        *HostLocalAccountManagerAccountSpecification*
        data object type.
      operationId: HostLocalAccountManager_CreateUser
      description: |2
        Creates a local user account using the parameters defined in the
        *HostLocalAccountManagerAccountSpecification*
        data object type.
        
        For POSIX hosts,
        passing *HostLocalAccountManagerPosixAccountSpecification* data object
        type allows you to control the
        format of the user ID of the user account being created.
        
        ***Required privileges:*** Host.Local.ManageUserGroups
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateUserRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***AlreadyExists***: if the specified local user account
            already exists.
            
            ***InvalidArgument***: if the user name or password has an
            invalid format.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AlreadyExists'

  /HostLocalAccountManager/{moId}/RemoveGroup:
    post:
      tags: [HostLocalAccountManager]
      summary: |2
        Removes a local group account.
      operationId: HostLocalAccountManager_RemoveGroup
      deprecated: true
      description: |2
        Deprecated as of vSphere API 5.1, local user groups are not supported
        and group specific methods will throw NotSupported.
        
        Removes a local group account.
        
        ***Required privileges:*** Host.Local.ManageUserGroups
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RemoveGroupRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***UserNotFound***: if the specified groupName does not exist.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserNotFound'

  /HostLocalAccountManager/{moId}/RemoveUser:
    post:
      tags: [HostLocalAccountManager]
      summary: |2
        Removes a local user account.
      operationId: HostLocalAccountManager_RemoveUser
      description: |2
        Removes a local user account.
        
        As of vSphere API 5.1, this operation will first try to remove all
        permissions associated with the specified account. The permissions of
        the user are removed one by one, not atomically, and the operation
        is not rolled back if the removal of some permission fails.
        
        ***Required privileges:*** Host.Local.ManageUserGroups
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RemoveUserRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***SecurityError***: if trying to remove the last local user with
            DCUI access,
            or if trying to remove the last local
            user with full administrative privileges,
            or if the system has encountered an error while
            trying to remove user's permissions.
            or if the account cannot be removed due to
            permission issues.
            
            ***UserNotFound***: if the specified userName does not exist.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserNotFound'

  /HostLocalAccountManager/{moId}/UnassignUserFromGroup:
    post:
      tags: [HostLocalAccountManager]
      summary: |2
        Unassigns a user from a group.
      operationId: HostLocalAccountManager_UnassignUserFromGroup
      deprecated: true
      description: |2
        Deprecated as of vSphere API 5.1, local user groups are not supported
        and group specific methods will throw NotSupported.
        
        Unassigns a user from a group.
        
        ***Required privileges:*** Host.Local.ManageUserGroups
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UnassignUserFromGroupRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***UserNotFound***: if the specified user or group does not exist.
            
            ***NoPermission***: if the group is the only group to which the
            user belongs.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserNotFound'

  /HostLocalAccountManager/{moId}/UpdateUser:
    post:
      tags: [HostLocalAccountManager]
      summary: |2
        Updates a local user account using the parameters defined in the
        *HostLocalAccountManagerAccountSpecification*
        data object type.
      operationId: HostLocalAccountManager_UpdateUser
      description: |2
        Updates a local user account using the parameters defined in the
        *HostLocalAccountManagerAccountSpecification*
        data object type.
        
        ***Required privileges:*** Host.Local.ManageUserGroups
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateUserRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***UserNotFound***: if user is not found.
            
            ***AlreadyExists***: if new account specification specifies an existing
            user's ID.
            
            ***InvalidArgument***: if new password or description has an invalid format.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostLocalAuthentication/{moId}/info:
    get:
      tags: [HostLocalAuthentication]
      summary: |2
        Information about the authentication store.
      operationId: HostLocalAuthentication_getInfo
      description: |2
        Information about the authentication store.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HostAuthenticationStoreInfo'

  /HostMemorySystem/{moId}/ReconfigureServiceConsoleReservation:
    post:
      tags: [HostMemorySystem]
      summary: |2
        Sets the configured service console memory reservation.
      operationId: HostMemorySystem_ReconfigureServiceConsoleReservation
      description: |2
        Sets the configured service console memory reservation.
        
        This change
        affects only the serviceConsoleReservedCfg property. The
        configuration change
        propagates to the other properties after the next boot.
        
        ***Required privileges:*** Host.Config.Memory
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ReconfigureServiceConsoleReservationRequestType'
      responses:
        '204':
          description: |2
            No Content

  /HostMemorySystem/{moId}/ReconfigureVirtualMachineReservation:
    post:
      tags: [HostMemorySystem]
      summary: |2
        Updates the virtual machine reservation information.
      operationId: HostMemorySystem_ReconfigureVirtualMachineReservation
      description: |2
        Updates the virtual machine reservation information.
        
        ***Required privileges:*** Host.Config.Memory
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ReconfigureVirtualMachineReservationRequestType'
      responses:
        '204':
          description: |2
            No Content

  /HostMemorySystem/{moId}/setCustomValue:
    post:
      tags: [HostMemorySystem]
      summary: |2
        Assigns a value to a custom field.
      operationId: HostMemorySystem_setCustomValue
      description: |2
        Assigns a value to a custom field.
        
        The setCustomValue method requires
        whichever updatePrivilege is defined as one of the
        *CustomFieldDef.fieldInstancePrivileges*
        for the CustomFieldDef whose value is being changed.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/setCustomValueRequestType'
      responses:
        '204':
          description: |2
            No Content

  /HostMemorySystem/{moId}/availableField:
    get:
      tags: [HostMemorySystem]
      summary: |2
        List of custom field definitions that are valid for the object's type.
      operationId: HostMemorySystem_getAvailableField
      description: |2
        List of custom field definitions that are valid for the object's type.
        
        The fields are sorted by *CustomFieldDef.name*.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/CustomFieldDef'

  /HostMemorySystem/{moId}/consoleReservationInfo:
    get:
      tags: [HostMemorySystem]
      summary: |2
        Service console reservation information for the memory manager.
      operationId: HostMemorySystem_getConsoleReservationInfo
      description: |2
        Service console reservation information for the memory manager.
        
        The
        existence of this data object indicates if the service console memory
        reservation must be configured for this host.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                $ref: '#/components/schemas/ServiceConsoleReservationInfo'

  /HostMemorySystem/{moId}/value:
    get:
      tags: [HostMemorySystem]
      summary: |2
        List of custom field values.
      operationId: HostMemorySystem_getValue
      description: |2
        List of custom field values.
        
        Each value uses a key to associate
        an instance of a *CustomFieldStringValue* with
        a custom field definition.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/CustomFieldValue'

  /HostMemorySystem/{moId}/virtualMachineReservationInfo:
    get:
      tags: [HostMemorySystem]
      summary: |2
        Virtual machine reservation information for the memory manager.
      operationId: HostMemorySystem_getVirtualMachineReservationInfo
      description: |2
        Virtual machine reservation information for the memory manager.
        
        The
        existence of this data object indicates if the virtual machine memory
        reservation must be configured for this host.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                $ref: '#/components/schemas/VirtualMachineMemoryReservationInfo'

  /HostNetworkSystem/{moId}/AddPortGroup:
    post:
      tags: [HostNetworkSystem]
      summary: |2
        Adds a port group to the virtual switch.
      operationId: HostNetworkSystem_AddPortGroup
      description: |2
        Adds a port group to the virtual switch.
        
        ***Required privileges:*** Host.Config.Network
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AddPortGroupRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***AlreadyExists***: if the port group already exists.
            
            ***NotFound***: if the virtual switch does not exist.
            
            ***InvalidArgument***: if the PortGroup vlanId is invalid. Valid vlanIds
            range from \[0,4095\], where 0 means no vlan tagging. Exception is
            also thrown if network policy is invalid.
            
            ***HostConfigFault***: for all other configuration failures.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostNetworkSystem/{moId}/AddServiceConsoleVirtualNic:
    post:
      tags: [HostNetworkSystem]
      summary: |2
        Adds a virtual service console network adapter.
      operationId: HostNetworkSystem_AddServiceConsoleVirtualNic
      description: |2
        Adds a virtual service console network adapter.
        
        Returns the device of the
        VirtualNic.
        
        IP configuration is required although it does not have to be enabled
        if the host is an ESX Server system.
        The dynamic privilege check will ensure that users have Host.Config.Network
        privilege on the host, and Network.Assign privilege on the connecting
        DVPortGroup, or DVS if connecting to a standalone DVPort.
        Network.Assign privilege is not required for operations on standard network
        or for operations performed directly on the host
        
        See also *HostNetCapabilities.usesServiceConsoleNic*.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AddServiceConsoleVirtualNicRequestType'
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                type: string
        '500':
          description: |2
            ***InvalidArgument***: if the IP address or subnet mask in the IP
            configuration are invalid or the named PortGroup does not exist.
            
            ***NotSupported***: if the host is not an ESX Server system.
            
            ***HostConfigFault***: for all other configuration failures.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HostConfigFault'

  /HostNetworkSystem/{moId}/AddVirtualNic:
    post:
      tags: [HostNetworkSystem]
      summary: |2
        Adds a virtual host/VMkernel network adapter.
      operationId: HostNetworkSystem_AddVirtualNic
      description: |2
        Adds a virtual host/VMkernel network adapter.
        
        Returns the device of the virtual
        network adapter.
        
        IP configuration is required although it does not have to be enabled
        if the host is an ESX Server system.
        The dynamic privilege check will ensure that users have Host.Config.Network
        privilege on the host, and Network.Assign privilege on the connecting
        DVPortGroup, or DVS if connecting to a standalone DVPort.
        Network.Assign privilege is not required for operations on standard network
        or for operations performed directly on the host.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AddVirtualNicRequestType'
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                type: string
        '500':
          description: |2
            ***AlreadyExists***: if the portgroup already has a virtual network
            adapter.
            
            ***InvalidArgument***: if the IP address or subnet mask in the IP
            configuration are invalid. In the case of an ESX Server system, DHCP is
            not supported and this exception will be thrown if DHCP is
            specified. Exception may also be thrown if the named PortGroup
            does not exist.
            
            ***InvalidState***: if the an ipv6 address is specified in an ipv4 only
            system
            
            ***HostConfigFault***: for all other configuration failures.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostNetworkSystem/{moId}/AddVirtualSwitch:
    post:
      tags: [HostNetworkSystem]
      summary: |2
        Adds a new virtual switch to the system with the given name.
      operationId: HostNetworkSystem_AddVirtualSwitch
      description: |2
        Adds a new virtual switch to the system with the given name.
        
        The
        name must be unique with respect to other virtual switches on the
        host and is limited to 32 characters.
        
        See also *HostNetworkSystem.UpdateVirtualSwitch*.
        
        ***Required privileges:*** Host.Config.Network
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AddVirtualSwitchRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***AlreadyExists***: if the virtual switch already exists.
            
            ***InvalidArgument***: if network vswitchName exceeds the maximum allowed
            length, or the number of ports specified falls out of valid range,
            or the network policy is invalid, or beacon configuration is invalid.
            
            ***ResourceInUse***: if the physical network adapter being bridged
            is already in use.
            
            ***HostConfigFault***: for all other configuration failures.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostNetworkSystem/{moId}/QueryNetworkHint:
    post:
      tags: [HostNetworkSystem]
      summary: |2
        Requests network hint information for a physical network adapter.
      operationId: HostNetworkSystem_QueryNetworkHint
      description: |2
        Requests network hint information for a physical network adapter.
        
        A network hint is
        some information about the network to which the physical network
        adapter is attached. The method receives in a list of physical
        network adapter devices and returns an equal number of hints
        if some devices are provided. If the list of devices is empty,
        then the method accesses hints for all physical
        network adapters.
        
        See also *HostNetCapabilities.supportsNetworkHints*, *PhysicalNic.device*.
        
        ***Required privileges:*** System.Read
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QueryNetworkHintRequestType'
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/PhysicalNicHintInfo'
        '500':
          description: |2
            ***NotFound***: if a specified physical network adapter does not exist.
            
            ***InvalidArgument***: if the speed and duplexity combination is not valid
            for the current link driver.
            
            ***NotSupported***: if the host is not an ESX Server system.
            
            ***HostConfigFault***: for all other configuration failures.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostNetworkSystem/{moId}/RefreshNetworkSystem:
    post:
      tags: [HostNetworkSystem]
      summary: |2
        Refresh the network information and settings to pick up any changes
        that might have occurred.
      operationId: HostNetworkSystem_RefreshNetworkSystem
      description: |2
        Refresh the network information and settings to pick up any changes
        that might have occurred.
        
        ***Required privileges:*** Host.Config.Network
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '204':
          description: |2
            No Content

  /HostNetworkSystem/{moId}/RemovePortGroup:
    post:
      tags: [HostNetworkSystem]
      summary: |2
        Removes port group from the virtual switch.
      operationId: HostNetworkSystem_RemovePortGroup
      description: |2
        Removes port group from the virtual switch.
        
        ***Required privileges:*** Host.Config.Network
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RemovePortGroupRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***NotFound***: if the port group or virtual switch does not exist.
            
            ***ResourceInUse***: if the port group can not be removed because there
            are virtual network adapters associated with it.
            
            ***HostConfigFault***: for all other configuration failures.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostNetworkSystem/{moId}/RemoveServiceConsoleVirtualNic:
    post:
      tags: [HostNetworkSystem]
      summary: |2
        Removes a virtual service console network adapter.
      operationId: HostNetworkSystem_RemoveServiceConsoleVirtualNic
      description: |2
        Removes a virtual service console network adapter.
        
        See also *HostNetCapabilities.usesServiceConsoleNic*.
        
        ***Required privileges:*** Host.Config.Network
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RemoveServiceConsoleVirtualNicRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***NotFound***: if the virtual network adapter cannot be found.
            
            ***NotSupported***: if the host is not an ESX Server system.
            
            ***ResourceInUse***: if the network adapter is currently used
            by DHCP DNS.
            
            ***HostConfigFault***: for all other configuration failures.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostNetworkSystem/{moId}/RemoveVirtualNic:
    post:
      tags: [HostNetworkSystem]
      summary: |2
        Removes a virtual host/VMkernel network adapter.
      operationId: HostNetworkSystem_RemoveVirtualNic
      description: |2
        Removes a virtual host/VMkernel network adapter.
        
        ***Required privileges:*** Host.Config.Network
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RemoveVirtualNicRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***NotFound***: if the virtual network adapter cannot be found.
            
            ***HostConfigFault***: for all other configuration failures.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostNetworkSystem/{moId}/RemoveVirtualSwitch:
    post:
      tags: [HostNetworkSystem]
      summary: |2
        Removes an existing virtual switch from the system.
      operationId: HostNetworkSystem_RemoveVirtualSwitch
      description: |2
        Removes an existing virtual switch from the system.
        
        ***Required privileges:*** Host.Config.Network
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RemoveVirtualSwitchRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***NotFound***: if the virtual switch does not exist.
            
            ***ResourceInUse***: if there are virtual network adapters associated
            with the virtual switch.
            
            ***HostConfigFault***: for all other configuration failures.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostNetworkSystem/{moId}/RestartServiceConsoleVirtualNic:
    post:
      tags: [HostNetworkSystem]
      summary: |2
        Restart the service console virtual network adapter interface.
      operationId: HostNetworkSystem_RestartServiceConsoleVirtualNic
      description: |2
        Restart the service console virtual network adapter interface.
        
        If the service console virtual network adapter uses DHCP, restarting
        the interface may result it with a different IP configuration, or
        even fail to be brought up depending on the host system network
        configuration.
        
        See also *HostNetCapabilities.usesServiceConsoleNic*.
        
        ***Required privileges:*** Host.Config.Network
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RestartServiceConsoleVirtualNicRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***NotFound***: if the virtual network adapter cannot be found.
            
            ***NotSupported***: if the host is not an ESX Server system.
            
            ***HostConfigFault***: for all other configuration failures.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostNetworkSystem/{moId}/setCustomValue:
    post:
      tags: [HostNetworkSystem]
      summary: |2
        Assigns a value to a custom field.
      operationId: HostNetworkSystem_setCustomValue
      description: |2
        Assigns a value to a custom field.
        
        The setCustomValue method requires
        whichever updatePrivilege is defined as one of the
        *CustomFieldDef.fieldInstancePrivileges*
        for the CustomFieldDef whose value is being changed.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/setCustomValueRequestType'
      responses:
        '204':
          description: |2
            No Content

  /HostNetworkSystem/{moId}/startDpuFailover:
    post:
      tags: [HostNetworkSystem]
      summary: |2
        Launch DPU(Data Processing Unit) failover for a given distributed virtual switch.
      operationId: HostNetworkSystem_startDpuFailover
      description: |2
        Launch DPU(Data Processing Unit) failover for a given distributed virtual switch.
        
        ***Since:*** vSphere API Release 8.0.3.0
        
        ***Required privileges:*** Host.Config.Network
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/startDpuFailoverRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***InvalidArgument***: if the given distributed virtual switch is not configured
            in network offloading mode or the standby DPU is not available.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InvalidArgument'

  /HostNetworkSystem/{moId}/UpdateConsoleIpRouteConfig:
    post:
      tags: [HostNetworkSystem]
      summary: |2
        Applies the IP route configuration for the service console.
      operationId: HostNetworkSystem_UpdateConsoleIpRouteConfig
      description: |2
        Applies the IP route configuration for the service console.
        
        ***Required privileges:*** Host.Config.Network
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateConsoleIpRouteConfigRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***InvalidArgument***: if any of the IP addresses are invalid.
            
            ***NotSupported***: if the host is not an ESX Server system.
            
            ***HostConfigFault***: for all other configuration failures.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HostConfigFault'

  /HostNetworkSystem/{moId}/UpdateDnsConfig:
    post:
      tags: [HostNetworkSystem]
      summary: |2
        Applies the client-side DNS configuration.
      operationId: HostNetworkSystem_UpdateDnsConfig
      deprecated: true
      description: |2
        Deprecated as of vSphere API 5.5, which is moved to
        each NetStackInstance. This API only works on the default NetStackInstance.
        
        Applies the client-side DNS configuration.
        
        ***Required privileges:*** Host.Config.Network
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateDnsConfigRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***InvalidArgument***: if any of the IP addresses are invalid, or
            for a DHCP DNS, if the DHCP virtual network adapter is not specified
            or the virtual network adapter specified is not DHCP enabled.
            
            ***NotFound***: when the DHCP virtual network adapter specified does
            not exist.
            
            ***NotSupported***: if the host is not an ESX Server system.
            
            ***HostInDomain***: if an attempt is made to change the host or domain name
            while the host is part of a Windows domain.
            
            ***HostConfigFault***: for all other configuration failures.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostNetworkSystem/{moId}/UpdateIpRouteConfig:
    post:
      tags: [HostNetworkSystem]
      summary: |2
        Applies the IP route configuration.
      operationId: HostNetworkSystem_UpdateIpRouteConfig
      deprecated: true
      description: |2
        Deprecated as of vSphere API 5.5, which is moved to
        each NetStackInstance. This API only works on the default NetStackInstance.
        
        Applies the IP route configuration.
        
        ***Required privileges:*** Host.Config.Network
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateIpRouteConfigRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***InvalidArgument***: if any of the IP addresses are invalid.
            
            ***InvalidState***: if the an ipv6 address is specified in an ipv4 only
            system
            
            ***NotSupported***: if the host is not an ESX Server system.
            
            ***HostConfigFault***: for all other configuration failures.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostNetworkSystem/{moId}/UpdateIpRouteTableConfig:
    post:
      tags: [HostNetworkSystem]
      summary: |2
        Applies the IP route table configuration.
      operationId: HostNetworkSystem_UpdateIpRouteTableConfig
      deprecated: true
      description: |2
        Deprecated as of vSphere API 5.5, which is moved to
        each NetStackInstance. This API only works on the default NetStackInstance.
        
        Applies the IP route table configuration.
        
        ***Required privileges:*** Host.Config.Network
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateIpRouteTableConfigRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***InvalidArgument***: if any of the IP addresses are invalid.
            
            ***NotSupported***: if the host is not an ESX Server system.
            
            ***HostConfigFault***: for all other configuration failures.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HostConfigFault'

  /HostNetworkSystem/{moId}/UpdateNetworkConfig:
    post:
      tags: [HostNetworkSystem]
      summary: |2
        Applies the network configuration.
      operationId: HostNetworkSystem_UpdateNetworkConfig
      description: |2
        Applies the network configuration.
        
        This method operates primarily
        in two modes: **replace** or **modify** mode.
        
        **replace**  
        When called in **replace** mode, this method applies the fully
        specified networking configuration to the networking system.
        
        Upon successful completion of the call, the state of networking will
        match the configuration specified in **config**. In general, objects
        are created or destroyed to match the elements in the array of
        configurations. The identifier field in each element in an array of
        configurations is used to match an existing network entity.
        The state of existing network entities is patched to match that
        of the configuration.
        
        An exception to this approach applies to the array of PhysicalNic.Config
        objects. The cardinality of physical network adapters cannot be
        changed through this
        operation. Thus, the identifier of every element in the array must match an
        existing PhysicalNic. If there are fewer elements in the array than
        there are existing PhysicalNics, then no change is made on the
        unreferenced PhysicalNic objects.
        
        If the call fails, the networking error is returned as an exception
        and the state of networking reverts to the state prior to the start
        of the call.
        
        **modify**
        When called in **modify** mode, only changes that are specified are
        made. For singleton entities like DnsConfig, the state is
        changed only if the data object is set. For array elements, there is
        an Operation field that indicates if the element should be added,
        removed, or edited. In the case of editing or removal, the entity
        must exist or an exception is thrown. In the case of adding, a
        specification needs to be provided.
        
        It returns device names of vmkernel and service console virtual network
        adapter added to the system.
        
        Currently, the only mode that is implemented is incremental mode.
        Only add operations are supported for instances. Singleton
        configuration is not supported.
        The dynamic privilege check will ensure that users have Host.Config.Network
        privilege on the host, and Network.Assign privilege on the connecting
        DVPortGroup, or DVS if connecting to a standalone DVPort.
        Network.Assign privilege is not required for operations on standard network
        or for operations performed directly on the host
        
        See also *HostConfigChangeMode_enum*.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateNetworkConfigRequestType'
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HostNetworkConfigResult'
        '500':
          description: |2
            ***AlreadyExists***: when a network entity specified in the configuration
            already exists.
            
            ***NotFound***: when a network entity specified in the configuration
            already exists.
            
            ***InvalidArgument***: if an invalid parameter is passed in for one
            of the networking objects.
            
            ***NotSupported***: if modify mode is not used, a remove or set
            operation is specified for an instance, or a singleton entity
            is configured.
            
            ***HostConfigFault***: for all other configuration failures.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostNetworkSystem/{moId}/UpdatePhysicalNicLinkSpeed:
    post:
      tags: [HostNetworkSystem]
      summary: |2
        Configures link speed and duplexity.
      operationId: HostNetworkSystem_UpdatePhysicalNicLinkSpeed
      description: |2
        Configures link speed and duplexity.
        
        If linkSpeed is not specified,
        physical network adapter will be set to autonegotiate.
        
        See also *HostNetCapabilities.canSetPhysicalNicLinkSpeed*.
        
        ***Required privileges:*** Host.Config.Network
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdatePhysicalNicLinkSpeedRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***NotFound***: if the physical network adapter does not exist.
            
            ***NotSupported***: if the host is not an ESX Server system.
            
            ***InvalidArgument***: if the speed and duplexity is not one of the valid
            configurations.
            
            ***HostConfigFault***: for all other configuration failures.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostNetworkSystem/{moId}/UpdatePortGroup:
    post:
      tags: [HostNetworkSystem]
      summary: |2
        Reconfigures a port group on the virtual switch.
      operationId: HostNetworkSystem_UpdatePortGroup
      description: |2
        Reconfigures a port group on the virtual switch.
        
        ***Required privileges:*** Host.Config.Network
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdatePortGroupRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***AlreadyExists***: if the update causes the port group to conflict
            with an existing port group.
            
            ***NotFound***: if the port group or virtual switch does not exist.
            
            ***InvalidArgument***: if the PortGroup vlanId is invalid. Valid vlanIds
            range from \[0,4095\], where 0 means no vlan tagging. Exception is
            also thrown if network policy is invalid.
            
            ***HostConfigFault***: for all other configuration failures.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostNetworkSystem/{moId}/UpdateServiceConsoleVirtualNic:
    post:
      tags: [HostNetworkSystem]
      summary: |2
        Configures the IP configuration for a virtual service console network
        adapter.
      operationId: HostNetworkSystem_UpdateServiceConsoleVirtualNic
      description: |2
        Configures the IP configuration for a virtual service console network
        adapter.
        
        IP configuration is required although it does not have to be enabled
        if the host is an ESX Server system.
        The dynamic privilege check will check that the users
        have Network.Assign privilege on the DVPortGroup
        or the DVS if the port resides on a DVPortGroup or is a stand-alone DVS port.
        
        See also *HostNetCapabilities.usesServiceConsoleNic*.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateServiceConsoleVirtualNicRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***NotFound***: if the virtual network adapter cannot be found.
            
            ***InvalidArgument***: if the IP address or subnet mask in the IP
            configuration are invalid or the named PortGroup does not exist.
            
            ***NotSupported***: if the host is not an ESX Server system.
            
            ***ResourceInUse***: if tries to turn of DHCP while the network
            adapter is currently used by DHCP DNS.
            
            ***HostConfigFault***: for all other configuration failures.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostNetworkSystem/{moId}/UpdateVirtualNic:
    post:
      tags: [HostNetworkSystem]
      summary: |2
        Configures virtual host/VMkernel network adapter.
      operationId: HostNetworkSystem_UpdateVirtualNic
      description: |2
        Configures virtual host/VMkernel network adapter.
        
        IP configuration is required although it does not have to be enabled
        if the host is an ESX Server system.
        The dynamic privilege check will ensure that users have Host.Config.Network
        privilege on the host, and Network.Assign privilege on the connecting
        DVPortGroup, or DVS if connecting to a standalone DVPort.
        Network.Assign privilege is not required for operations on standard network
        or for operations performed directly on the host.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateVirtualNicRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***NotFound***: if the virtual network adapter cannot be found.
            
            ***InvalidArgument***: if the IP address or subnet mask in the IP
            configuration are invalid. In the case of an ESX Server
            system, DHCP is
            not supported and this exception is thrown if DHCP is
            specified. Exception may also be thrown if the named PortGroup
            does not exist.
            
            ***InvalidState***: if the an ipv6 address is specified in an ipv4 only
            system
            
            ***HostConfigFault***: for all other configuration failures.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostNetworkSystem/{moId}/UpdateVirtualSwitch:
    post:
      tags: [HostNetworkSystem]
      summary: |2
        Updates the properties of the virtual switch.
      operationId: HostNetworkSystem_UpdateVirtualSwitch
      description: |2
        Updates the properties of the virtual switch.
        
        If the bridge is NULL, the configuration will be unset.
        
        If a network adapter is listed in the active or standby list, then
        changing the set of network adapters to which the physical network
        adapter is associated may have a side effect of changing the network
        adapter order policy. If a network adapter is removed from
        the bridge configuration, then the network adapter is removed
        from the network
        adapter teaming order.
        
        The BondBridge configuration is the only valid bridge configuration for
        an ESX Server system.
        
        See also *HostNicOrderPolicy*.
        
        ***Required privileges:*** Host.Config.Network
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateVirtualSwitchRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***ResourceInUse***: if the physical network adapter being bridged is
            already in use.
            
            ***NotFound***: if the virtual switch does not exist.
            
            ***InvalidArgument***: if the bridge parameter is bad or the network policy
            is invalid or does not exist or the number of ports specified falls
            out of valid range, or the beacon configuration is invalid.
            
            ***NotSupported***: if network adapter teaming policy is set but
            is not supported.
            
            ***HostConfigFault***: for all other configuration failures.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostNetworkSystem/{moId}/availableField:
    get:
      tags: [HostNetworkSystem]
      summary: |2
        List of custom field definitions that are valid for the object's type.
      operationId: HostNetworkSystem_getAvailableField
      description: |2
        List of custom field definitions that are valid for the object's type.
        
        The fields are sorted by *CustomFieldDef.name*.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/CustomFieldDef'

  /HostNetworkSystem/{moId}/capabilities:
    get:
      tags: [HostNetworkSystem]
      summary: |2
        Capability vector indicating the available product features.
      operationId: HostNetworkSystem_getCapabilities
      description: |2
        Capability vector indicating the available product features.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                $ref: '#/components/schemas/HostNetCapabilities'

  /HostNetworkSystem/{moId}/consoleIpRouteConfig:
    get:
      tags: [HostNetworkSystem]
      summary: |2
        IP route configuration for the service console.
      operationId: HostNetworkSystem_getConsoleIpRouteConfig
      description: |2
        IP route configuration for the service console.
        
        The IP route
        configuration is global to the entire host. This property is
        set only if
        IP routing can be configured for the service console.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                $ref: '#/components/schemas/HostIpRouteConfig'

  /HostNetworkSystem/{moId}/dnsConfig:
    get:
      tags: [HostNetworkSystem]
      summary: |2
        Client-side DNS configuration.
      operationId: HostNetworkSystem_getDnsConfig
      deprecated: true
      description: |2
        Deprecated as of vSphere API 5.5, which is moved to
        each NetStackInstance. This only works on the default NetStackInstance.
        
        Client-side DNS configuration.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                $ref: '#/components/schemas/HostDnsConfig'

  /HostNetworkSystem/{moId}/ipRouteConfig:
    get:
      tags: [HostNetworkSystem]
      summary: |2
        The IP route configuration.
      operationId: HostNetworkSystem_getIpRouteConfig
      deprecated: true
      description: |2
        Deprecated as of vSphere API 5.5, which is moved to
        each NetStackInstance. This only works on the default NetStackInstance.
        
        The IP route configuration.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                $ref: '#/components/schemas/HostIpRouteConfig'

  /HostNetworkSystem/{moId}/networkConfig:
    get:
      tags: [HostNetworkSystem]
      summary: |2
        Network configuration information.
      operationId: HostNetworkSystem_getNetworkConfig
      description: |2
        Network configuration information.
        
        This information can be applied
        using the *updateNetworkConfig()* method. The
        information is a strict subset of the information available in NetworkInfo.
        
        See also *HostNetworkInfo*.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                $ref: '#/components/schemas/HostNetworkConfig'

  /HostNetworkSystem/{moId}/networkInfo:
    get:
      tags: [HostNetworkSystem]
      summary: |2
        The network configuration and runtime information.
      operationId: HostNetworkSystem_getNetworkInfo
      description: |2
        The network configuration and runtime information.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                $ref: '#/components/schemas/HostNetworkInfo'

  /HostNetworkSystem/{moId}/offloadCapabilities:
    get:
      tags: [HostNetworkSystem]
      summary: |2
        The offload capabilities available on this server.
      operationId: HostNetworkSystem_getOffloadCapabilities
      deprecated: true
      description: |2
        Deprecated as of VI API 4.0, the system defaults will be used.
        
        The offload capabilities available on this server.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                $ref: '#/components/schemas/HostNetOffloadCapabilities'

  /HostNetworkSystem/{moId}/value:
    get:
      tags: [HostNetworkSystem]
      summary: |2
        List of custom field values.
      operationId: HostNetworkSystem_getValue
      description: |2
        List of custom field values.
        
        Each value uses a key to associate
        an instance of a *CustomFieldStringValue* with
        a custom field definition.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/CustomFieldValue'

  /HostNvdimmSystem/{moId}/CreateNvdimmNamespace_Task:
    post:
      tags: [HostNvdimmSystem]
      summary: |2
        A new block or persistent namespace can be created on the NVDIMM(s)
        when the system is in maintenance mode.
      operationId: HostNvdimmSystem_CreateNvdimmNamespace_Task
      deprecated: true
      description: |2
        Deprecated as of vSphere 6.7u1, use createPMemNamespace
        Create nvd namespace from information passed in NamespaceCreationSpec.
        
        A new block or persistent namespace can be created on the NVDIMM(s)
        when the system is in maintenance mode.
        
        If all the parameters passed
        are valid and system is in maintenance mode, then a DSM (Device
        Specific Method) call is made to create the namespace. DSM calls are
        blockable and slow operations and hence the use of task.
        
        If a new namespace is created, its UUID is returned.
        
        ***Required privileges:*** Host.Config.Nvdimm
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateNvdimmNamespaceRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object which is used to
            monitor this operation. The task result
            (*Task.info*.*TaskInfo.result*) contains a
            *NvdimmGuid* object that has the UUID of the
            newly created namespace.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***InvalidArgument***: if an argument to create namespace is invalid.
            
            ***NotSupported***: if no NVDIMMs are found, namespace type is
            not supported or if operation does not have
            DSM method.
            
            ***InvalidHostState***: if operation is not allowed as system is not in
            maintenance mode.
            
            ***AlreadyExists***: if the namespace of type already exists.
            
            ***SystemError***: for other system errors along with localized
            reason for failure.
            
            ***HostConfigFault***: for any other failure.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostNvdimmSystem/{moId}/CreateNvdimmPMemNamespace_Task:
    post:
      tags: [HostNvdimmSystem]
      summary: |2
        Create persistent memory mode nvd namespace from information passed
        in PMemNamespaceCreationSpec.
      operationId: HostNvdimmSystem_CreateNvdimmPMemNamespace_Task
      description: |2
        Create persistent memory mode nvd namespace from information passed
        in PMemNamespaceCreationSpec.
        
        A new persistent namespace can be created on the NVDIMM(s)
        when the system is in maintenance mode. If all the parameters passed
        are valid and system is in maintenance mode, then a DSM (Device
        Specific Method) call is made to create the namespace. DSM calls are
        blockable and slow operations and hence the use of task.
        
        If a new namespace is created, its UUID is returned.
        
        ***Required privileges:*** Host.Config.Nvdimm
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateNvdimmPMemNamespaceRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object which is used to
            monitor this operation. The task result
            (*Task.info*.*TaskInfo.result*) contains a
            *NvdimmGuid* object that has the UUID of the
            newly created namespace.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***InvalidArgument***: if an argument to create namespace is invalid.
            
            ***NotSupported***: if no NVDIMMs are found or if operation does
            not have the supporting DSM method.
            
            ***InvalidHostState***: if operation is not allowed as system is not in
            maintenance mode.
            
            ***AlreadyExists***: if the namespace of type already exists.
            
            ***SystemError***: for other system errors along with localized
            reason for failure.
            
            ***HostConfigFault***: for any other failure.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostNvdimmSystem/{moId}/DeleteNvdimmBlockNamespaces_Task:
    post:
      tags: [HostNvdimmSystem]
      summary: |2
        Delete all block mode namespaces in the system.
      operationId: HostNvdimmSystem_DeleteNvdimmBlockNamespaces_Task
      description: |2
        Delete all block mode namespaces in the system.
        
        Existing block namespace(s) can be deleted from all NVDIMMs, if the
        system is in maintenance mode. If paramters passed are valid and
        the system is in maintenance mode, then DSM calls are made to
        delete these namespaces. DSM calls are blockable, slow operations
        and hence the use of task.
        
        If a particular block namespace is to be deleted, use
        *HostNvdimmSystem.DeleteNvdimmNamespace_Task* by passing it the UUID
        of the block namespace.
        
        ***Required privileges:*** Host.Config.Nvdimm
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            This method returns a *Task* object which is used to
            monitor this operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***InvalidArgument***: if UUID of namespace to be created is invalid.
            
            ***NotFound***: if the namespace to be deleted is not found.
            
            ***NotSupported***: if no NVDIMMs are found and if operation does
            not have DSM method.
            
            ***InvalidHostState***: if operation is not allowed as system is not
            in maintenance mode.
            
            ***SystemError***: for any other system error along with localized
            reason for failure.
            
            ***HostConfigFault***: for any other failure.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostNvdimmSystem/{moId}/DeleteNvdimmNamespace_Task:
    post:
      tags: [HostNvdimmSystem]
      summary: |2
        Delete nvd namespace whose uuid matches passed parameter.
      operationId: HostNvdimmSystem_DeleteNvdimmNamespace_Task
      description: |2
        Delete nvd namespace whose uuid matches passed parameter.
        
        An existing namespace of type block or persistent mode can be deleted
        from NVDIMM(s), if the system is in maintenance mode. If paramters
        passed are valid and the system is in maintenance mode, then a DSM call
        is made to delete this namespace. DSM calls are blockable, slow
        operations and hence the use of task.
        
        ***Required privileges:*** Host.Config.Nvdimm
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DeleteNvdimmNamespaceRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object which is used to
            monitor this operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***InvalidArgument***: if UUID of namespace to be created is invalid.
            
            ***NotFound***: if the namespace to be deleted is not found.
            
            ***NotSupported***: if no NVDIMMs are found or if operation does
            not have DSM method.
            
            ***InvalidHostState***: if operation is not allowed as system is not in
            maintenance mode.
            
            ***SystemError***: for any other system error along with
            localized reason for failure.
            
            ***HostConfigFault***: for any other failure.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostNvdimmSystem/{moId}/nvdimmSystemInfo:
    get:
      tags: [HostNvdimmSystem]
      summary: |2
        Host NVDIMM information.
      operationId: HostNvdimmSystem_getNvdimmSystemInfo
      description: |2
        Host NVDIMM information.
        
        \- Summary of all dimms on the host.
        \- Array of all DIMMs on the host.
        \- Array of DIMM information and health for all dimms on the host.
        \- Array of interleave set for all sets on the host.
        \- Array of interleave set information for all sets on the host.
        \- Array of namespace IDs for all dimms on the host.
        \- Array of namespace details of all dimms on the host.
        
        ***Required privileges:*** Host.Config.Nvdimm
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            Return set of all NVDIMM related information.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NvdimmSystemInfo'

  /HostPatchManager/{moId}/CheckHostPatch_Task:
    post:
      tags: [HostPatchManager]
      summary: |2
        Check the list of metadata and returns the dependency, obsolete and conflict information
        The operation is cancelable through the returned *Task* object.
      operationId: HostPatchManager_CheckHostPatch_Task
      deprecated: true
      description: |2
        Deprecated as of vSphere 8.0u3, and there is no replacement available.
        
        Check the list of metadata and returns the dependency, obsolete and conflict information
        The operation is cancelable through the returned *Task* object.
        
        No integrity checks
        are performed on the metadata.
        
        ***Required privileges:*** System.Read
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CheckHostPatchRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor the
            operation. The *info.result* property in the
            *Task* contains the
            *HostPatchManagerStatus*
            upon success.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***RequestCanceled***: if the operation is canceled.
            
            ***InvalidState***: if the feature cannot be supported on the platform,
            potentially because the hardware configuration does not support it.
            
            ***TaskInProgress***: if there is already a patch installation in progress.
            
            ***PlatformConfigFault***: if any error occurs during the operation.
            More detailed information will be returned within the payload of the
            exception as xml string.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MethodFault'

  /HostPatchManager/{moId}/InstallHostPatch_Task:
    post:
      tags: [HostPatchManager]
      summary: |2
        Patch the host.
      operationId: HostPatchManager_InstallHostPatch_Task
      deprecated: true
      description: |2
        Deprecated method is deprecated, use *HostPatchManager.InstallHostPatchV2_Task* instead.
        
        Patch the host.
        
        The operation is not cancelable. If the
        patch installation failed, an atomic rollback of the installation will
        be attempted. Manual rollback is required if the atomic rollback
        failed, see *PatchInstallFailed* for details.
        
        ***Required privileges:*** Host.Config.Patch
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/InstallHostPatchRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor
            the operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***PatchMetadataInvalid***: if the required metadata is invalid - for
            example, it is not found in the repository, is corrupted and so
            on. Typically a more specific subclass of PatchMetadataInvalid is
            thrown.
            
            ***PatchBinariesNotFound***: if required update related binaries were not
            available.
            
            ***PatchNotApplicable***: if the patch is not applicable. Typically a
            more specific subclass of PatchNotApplicable is thrown to indicate
            a specific problem - for example, PatchSuperseded if the patch is
            superseded, MissingDependency if required patch or libraries are not
            installed, AlreadyInstalled if the patch is already installed.
            
            ***NoDiskSpace***: if the update can not be installed because there is
            insufficient disk space for the installation, including temporary
            space used for rollback.
            
            ***PatchInstallFailed***: if the installation failed,
            *PlatformConfigFault.text* has details of the
            failure. Automatic rollback might have succeeded or failed.
            
            ***RebootRequired***: if the update cannot be installed without
            restarting the host. This might occur on account of a prior
            update installation which needed to be installed separately
            from other updates.
            
            ***InvalidState***: if the host is not in maintenance mode but the
            patch install requires all virtual machines to be powered off.
            
            ***TaskInProgress***: if there is already a patch installation in progress.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostPatchManager/{moId}/InstallHostPatchV2_Task:
    post:
      tags: [HostPatchManager]
      summary: |2
        Patch the host.
      operationId: HostPatchManager_InstallHostPatchV2_Task
      deprecated: true
      description: |2
        Deprecated as of vSphere 8.0u3, and there is no replacement available.
        
        Patch the host.
        
        The operation is not cancelable. If the
        patch installation failed, an atomic rollback of the installation will
        be attempted. Manual rollback is required if the atomic rollback
        failed, see *PatchInstallFailed* for details.
        
        ***Required privileges:*** Host.Config.Patch
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/InstallHostPatchV2RequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor
            the operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***RequestCanceled***: if the operation is canceled.
            
            ***InvalidState***: if the feature cannot be supported on the platform,
            potentially because the hardware configuration does not support it.
            
            ***TaskInProgress***: if there is already a patch installation in progress.
            
            ***PlatformConfigFault***: if any error occurs during the operation.
            More detailed information will be returned within the payload of the
            exception as xml string.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MethodFault'

  /HostPatchManager/{moId}/QueryHostPatch_Task:
    post:
      tags: [HostPatchManager]
      summary: |2
        Query the host for installed bulletins.
      operationId: HostPatchManager_QueryHostPatch_Task
      deprecated: true
      description: |2
        Deprecated as of vSphere 8.0u3, and there is no replacement available.
        
        Query the host for installed bulletins.
        
        ***Required privileges:*** System.Read
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QueryHostPatchRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor
            the operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***RequestCanceled***: if the operation is canceled.
            
            ***InvalidState***: if the bulletin ID did not exist.
            
            ***TaskInProgress***: if there is already a patch installation in progress.
            
            ***PlatformConfigFault***: if any error occurs during the operation.
            More detailed information will be returned within the payload of the
            exception as xml string.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MethodFault'

  /HostPatchManager/{moId}/ScanHostPatch_Task:
    post:
      tags: [HostPatchManager]
      summary: |2
        Scan the host for the patch status.
      operationId: HostPatchManager_ScanHostPatch_Task
      deprecated: true
      description: |2
        Deprecated as of VI API 4.0, use *HostPatchManager.ScanHostPatchV2_Task*.
        
        Scan the host for the patch status.
        
        The operation is cancelable
        through the returned *Task* object. Integrity checks are
        performed on the metadata only during the scan operation.
        
        ***Required privileges:*** System.Read
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ScanHostPatchRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor the
            operation. The *info.result* property in the
            *Task* contains the
            *HostPatchManagerStatus*
            upon success.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***RequestCanceled***: if the operation is canceled.
            
            ***PatchMetadataInvalid***: if query required metadata is invalid - for
            example, it is not found in the repository, is corrupted and
            so on. Typically a more specific subclass of PatchMetadataInvalid
            is thrown.
            
            ***PlatformConfigFault***: if there is any error in the repository access,
            metadata download, repository level integrity check, or reading the
            metadata. See *PlatformConfigFault.text* for
            specific details.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MethodFault'

  /HostPatchManager/{moId}/ScanHostPatchV2_Task:
    post:
      tags: [HostPatchManager]
      summary: |2
        Scan the host for the patch status.
      operationId: HostPatchManager_ScanHostPatchV2_Task
      deprecated: true
      description: |2
        Deprecated as of vSphere 8.0u3, and there is no replacement available.
        
        Scan the host for the patch status.
        
        The operation is cancelable
        through the returned *Task* object. Integrity checks are
        performed on the metadata only during the scan operation.
        
        ***Required privileges:*** System.Read
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ScanHostPatchV2RequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor the
            operation. The *info.result* property in the
            *Task* contains the
            *HostPatchManagerStatus*
            upon success.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***RequestCanceled***: if the operation is canceled.
            
            ***InvalidState***: if the feature cannot be supported on the platform,
            potentially because the hardware configuration does not support it.
            
            ***TaskInProgress***: if there is already a patch installation in progress.
            
            ***PlatformConfigFault***: if there is any error in the repository access,
            metadata download, repository level integrity check, or reading the
            metadata. See *PlatformConfigFault.text* for
            specific details.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MethodFault'

  /HostPatchManager/{moId}/StageHostPatch_Task:
    post:
      tags: [HostPatchManager]
      summary: |2
        Stage the vib files to esx local location and possibly do some run time check.
      operationId: HostPatchManager_StageHostPatch_Task
      deprecated: true
      description: |2
        Deprecated as of vSphere 8.0u3, and there is no replacement available.
        
        Stage the vib files to esx local location and possibly do some run time check.
        
        ***Required privileges:*** Host.Config.Patch
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/StageHostPatchRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor the
            operation. The *info.result* property in the
            *Task* contains the
            *HostPatchManagerStatus*
            upon success.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***RequestCanceled***: if the operation is canceled.
            
            ***InvalidState***: if the feature cannot be supported on the platform,
            potentially because the hardware configuration does not support it.
            
            ***TaskInProgress***: if there is already a patch installation in progress.
            
            ***PlatformConfigFault***: if any error occurs during the operation.
            More detailed information will be returned within the payload of the
            exception as xml string.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MethodFault'

  /HostPatchManager/{moId}/UninstallHostPatch_Task:
    post:
      tags: [HostPatchManager]
      summary: |2
        Uninstall patch from the host.
      operationId: HostPatchManager_UninstallHostPatch_Task
      deprecated: true
      description: |2
        Deprecated as of vSphere 8.0u3, and there is no replacement available.
        
        Uninstall patch from the host.
        
        The operation is not cancelable.
        
        ***Required privileges:*** Host.Config.Patch
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UninstallHostPatchRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor
            the operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***InvalidState***: if the feature cannot be supported on the platform,
            potentially because the hardware configuration does not support it.
            
            ***TaskInProgress***: if there is already a patch installation in progress.
            
            ***PlatformConfigFault***: if any error occurs during the operation.
            More detailed information will be returned within the payload of the
            exception as xml string.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostPciPassthruSystem/{moId}/Refresh:
    post:
      tags: [HostPciPassthruSystem]
      summary: |2
        Refresh the available PciPassthru information.
      operationId: HostPciPassthruSystem_Refresh
      description: |2
        Refresh the available PciPassthru information.
        
        ***Required privileges:*** Host.Config.Settings
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '204':
          description: |2
            No Content

  /HostPciPassthruSystem/{moId}/setCustomValue:
    post:
      tags: [HostPciPassthruSystem]
      summary: |2
        Assigns a value to a custom field.
      operationId: HostPciPassthruSystem_setCustomValue
      description: |2
        Assigns a value to a custom field.
        
        The setCustomValue method requires
        whichever updatePrivilege is defined as one of the
        *CustomFieldDef.fieldInstancePrivileges*
        for the CustomFieldDef whose value is being changed.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/setCustomValueRequestType'
      responses:
        '204':
          description: |2
            No Content

  /HostPciPassthruSystem/{moId}/UpdatePassthruConfig:
    post:
      tags: [HostPciPassthruSystem]
      summary: |2
        Updates the PciPassthru configuration, this will
        get called for the dependent device with the enabled
        bool set
      operationId: HostPciPassthruSystem_UpdatePassthruConfig
      description: |2
        Updates the PciPassthru configuration, this will
        get called for the dependent device with the enabled
        bool set
        
        ***Required privileges:*** Host.Config.PciPassthru
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdatePassthruConfigRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***HostConfigFault***: if an error occurs.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HostConfigFault'

  /HostPciPassthruSystem/{moId}/availableField:
    get:
      tags: [HostPciPassthruSystem]
      summary: |2
        List of custom field definitions that are valid for the object's type.
      operationId: HostPciPassthruSystem_getAvailableField
      description: |2
        List of custom field definitions that are valid for the object's type.
        
        The fields are sorted by *CustomFieldDef.name*.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/CustomFieldDef'

  /HostPciPassthruSystem/{moId}/pciPassthruInfo:
    get:
      tags: [HostPciPassthruSystem]
      summary: |2
        Array of PciPassthru information
      operationId: HostPciPassthruSystem_getPciPassthruInfo
      description: |2
        Array of PciPassthru information
        
        ***Required privileges:*** System.Read
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/HostPciPassthruInfo'

  /HostPciPassthruSystem/{moId}/sriovDevicePoolInfo:
    get:
      tags: [HostPciPassthruSystem]
      summary: |2
        Array of Sriov Device Pool information
      operationId: HostPciPassthruSystem_getSriovDevicePoolInfo
      description: |2
        Array of Sriov Device Pool information
        
        ***Required privileges:*** System.Read
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/HostSriovDevicePoolInfo'

  /HostPciPassthruSystem/{moId}/value:
    get:
      tags: [HostPciPassthruSystem]
      summary: |2
        List of custom field values.
      operationId: HostPciPassthruSystem_getValue
      description: |2
        List of custom field values.
        
        Each value uses a key to associate
        an instance of a *CustomFieldStringValue* with
        a custom field definition.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/CustomFieldValue'

  /HostPowerSystem/{moId}/ConfigurePowerPolicy:
    post:
      tags: [HostPowerSystem]
      summary: |2
        Configure host power policy.
      operationId: HostPowerSystem_ConfigurePowerPolicy
      description: |2
        Configure host power policy.
        
        ***Required privileges:*** Host.Config.Power
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ConfigurePowerPolicyRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***InvalidArgument***: if an invalid power policy key is provided.
            
            ***HostConfigFault***: for any other failure.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HostConfigFault'

  /HostPowerSystem/{moId}/capability:
    get:
      tags: [HostPowerSystem]
      summary: |2
        Power system capabilities object.
      operationId: HostPowerSystem_getCapability
      description: |2
        Power system capabilities object.
        
        ***Required privileges:*** System.Read
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PowerSystemCapability'

  /HostPowerSystem/{moId}/info:
    get:
      tags: [HostPowerSystem]
      summary: |2
        Power system state info object.
      operationId: HostPowerSystem_getInfo
      description: |2
        Power system state info object.
        
        ***Required privileges:*** System.Read
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PowerSystemInfo'

  /HostProfile/{moId}/HostProfileResetValidationState:
    post:
      tags: [HostProfile]
      summary: |2
        This API will update the validationState to Ready
        from Failed, invalidate the validationFailureInfo
        and reset the validationStateUpdateTime.
      operationId: HostProfile_HostProfileResetValidationState
      description: |2
        This API will update the validationState to Ready
        from Failed, invalidate the validationFailureInfo
        and reset the validationStateUpdateTime.
        
        This API will return error if the validationState
        is Running.
        
        ***Required privileges:*** Profile.Edit
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '204':
          description: |2
            No Content

  /HostProfile/{moId}/AssociateProfile:
    post:
      tags: [HostProfile]
      summary: |2
        Associate a profile with a managed entity.
      operationId: HostProfile_AssociateProfile
      description: |2
        Associate a profile with a managed entity.
        
        You can check the compliance of
        entities associated with a profile by calling the
        *Profile.CheckProfileCompliance_Task* method.
        
        ***Required privileges:*** Profile.Edit
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AssociateProfileRequestType'
      responses:
        '204':
          description: |2
            No Content

  /HostProfile/{moId}/CheckProfileCompliance_Task:
    post:
      tags: [HostProfile]
      summary: |2
        Check compliance of an entity against a Profile.
      operationId: HostProfile_CheckProfileCompliance_Task
      description: |2
        Check compliance of an entity against a Profile.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CheckProfileComplianceRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor the
            operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'

  /HostProfile/{moId}/DestroyProfile:
    post:
      tags: [HostProfile]
      summary: |2
        Destroy the profile.
      operationId: HostProfile_DestroyProfile
      description: |2
        Destroy the profile.
        
        ***Required privileges:*** Profile.Delete
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '204':
          description: |2
            No Content

  /HostProfile/{moId}/DissociateProfile:
    post:
      tags: [HostProfile]
      summary: |2
        Remove the association between a profile and a managed entity.
      operationId: HostProfile_DissociateProfile
      description: |2
        Remove the association between a profile and a managed entity.
        
        ***Required privileges:*** Profile.Edit
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DissociateProfileRequestType'
      responses:
        '204':
          description: |2
            No Content

  /HostProfile/{moId}/ExecuteHostProfile:
    post:
      tags: [HostProfile]
      summary: |2
        Run the Profile Engine to determine the list of configuration changes
        needed for the specified host.
      operationId: HostProfile_ExecuteHostProfile
      description: |2
        Run the Profile Engine to determine the list of configuration changes
        needed for the specified host.
        
        The method generates configuration changes
        based on the host profile.
        
        You can also specify deferred parameters to verify additional host-specific data.
        The Profile Engine uses the policy options
        (*HostProfile*.*Profile.config*.*HostProfileConfigInfo.applyProfile*.*ApplyProfile.policy*\[\])
        to determine the required parameters
        (*PolicyOption*.*PolicyOption.parameter*\[\])
        for host configuration. If you do not provide all of the required parameters,
        you must call the method again to provide the complete list to the Profile Engine.
        After successful profile execution, when you apply the profile,
        the Profile Engine will save the host-specific data in an *AnswerFile*.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ExecuteHostProfileRequestType'
      responses:
        '200':
          description: |2
            Result of the execution. If the operation is successful
            (*ProfileExecuteResult*.*ProfileExecuteResult.status*<code>=success</code>),
            the result object includes a valid host configuration specification that you can pass to the
            *HostProfileManager*.*HostProfileManager.ApplyHostConfig_Task*
            method.
            
            If the operation is not successful, the object contains error information
            or information about additional data required for the host configuration.
            If additional data is required, the required input list
            (*ProfileExecuteResult*.*ProfileExecuteResult.requireInput*\[\])
            contains both the <code>deferredParam</code> data and paths to missing parameters.
            After you fill in the missing parameters, pass the complete required input
            list via the <code>deferredParam</code> parameter in another call to the execute method
            to finish input verification. After successful profile execution, you can pass
            the verified required input list to the *HostProfileManager.ApplyHostConfig_Task*
            method.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProfileExecuteResult'

  /HostProfile/{moId}/ExportProfile:
    post:
      tags: [HostProfile]
      summary: |2
        Export the profile in a serialized form.
      operationId: HostProfile_ExportProfile
      description: |2
        Export the profile in a serialized form.
        
        To use the serialized string to create a profile,
        specify a *ProfileSerializedCreateSpec* when you call the
        *HostProfileManager*.*ProfileManager.CreateProfile*
        method.
        
        ***Required privileges:*** Profile.Export
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            Serialized form of the profile.
          content:
            application/json:
              schema:
                type: string

  /HostProfile/{moId}/RetrieveDescription:
    post:
      tags: [HostProfile]
      summary: |2
        Returns the localizable description for the profile.
      operationId: HostProfile_RetrieveDescription
      description: |2
        Returns the localizable description for the profile.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            Profile divided into sections containing element descriptions and messages.
          content:
            application/json:
              schema:
                nullable: true
                $ref: '#/components/schemas/ProfileDescription'

  /HostProfile/{moId}/UpdateHostProfile:
    post:
      tags: [HostProfile]
      summary: |2
        Update the <code>HostProfile</code> with the specified configuration data.
      operationId: HostProfile_UpdateHostProfile
      description: |2
        Update the <code>HostProfile</code> with the specified configuration data.
        
        ***Required privileges:*** Profile.Edit
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateHostProfileRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***DuplicateName***: If the profile with the new name already exists.
            
            ***ProfileUpdateFailed***: if errors were encountered when updating
            the profile.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostProfile/{moId}/UpdateReferenceHost:
    post:
      tags: [HostProfile]
      summary: |2
        Sets the *HostProfile*.*HostProfile.referenceHost* property.
      operationId: HostProfile_UpdateReferenceHost
      description: |2
        Sets the *HostProfile*.*HostProfile.referenceHost* property.
        
        ***Required privileges:*** Profile.Edit
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateReferenceHostRequestType'
      responses:
        '204':
          description: |2
            No Content

  /HostProfile/{moId}/complianceCheckTime:
    get:
      tags: [HostProfile]
      summary: |2
        The latest compliance check time.
      operationId: HostProfile_getComplianceCheckTime
      description: |2
        The latest compliance check time.
        
        ***Since:*** vSphere API Release 8.0.1.0
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: string
                format: date-time

  /HostProfile/{moId}/complianceStatus:
    get:
      tags: [HostProfile]
      summary: |2
        Overall compliance of entities associated with this profile.
      operationId: HostProfile_getComplianceStatus
      description: |2
        Overall compliance of entities associated with this profile.
        
        If one of the entities is out of compliance, the profile is <code>nonCompliant</code>.
        If all entities are in compliance, the profile is <code>compliant</code>.
        If the compliance status of one of the entities is not known, compliance status
        of the profile is <code>unknown</code>.
        See *ComplianceResultStatus_enum*.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                type: string

  /HostProfile/{moId}/config:
    get:
      tags: [HostProfile]
      summary: |2
        Configuration data for the profile.
      operationId: HostProfile_getConfig
      description: |2
        Configuration data for the profile.
        
        ***Required privileges:*** Profile.Edit
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProfileConfigInfo'

  /HostProfile/{moId}/createdTime:
    get:
      tags: [HostProfile]
      summary: |2
        Time at which the profile was created.
      operationId: HostProfile_getCreatedTime
      description: |2
        Time at which the profile was created.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                type: string
                format: date-time

  /HostProfile/{moId}/description:
    get:
      tags: [HostProfile]
      summary: |2
        Localizable description of the profile
      operationId: HostProfile_getDescription
      deprecated: true
      description: |2
        Deprecated as of vSphere API 5.0. use *Profile.RetrieveDescription* instead.
        
        Localizable description of the profile
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                $ref: '#/components/schemas/ProfileDescription'

  /HostProfile/{moId}/entity:
    get:
      tags: [HostProfile]
      summary: |2
        List of managed entities associated with the profile.
      operationId: HostProfile_getEntity
      description: |2
        List of managed entities associated with the profile.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            Refers instances of *ManagedEntity*.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/ManagedObjectReference'

  /HostProfile/{moId}/modifiedTime:
    get:
      tags: [HostProfile]
      summary: |2
        Time at which the profile was last modified.
      operationId: HostProfile_getModifiedTime
      description: |2
        Time at which the profile was last modified.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                type: string
                format: date-time

  /HostProfile/{moId}/name:
    get:
      tags: [HostProfile]
      summary: |2
        Name of the profile.
      operationId: HostProfile_getName
      description: |2
        Name of the profile.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                type: string

  /HostProfile/{moId}/referenceHost:
    get:
      tags: [HostProfile]
      summary: |2
        Reference host in use for this host profile.
      operationId: HostProfile_getReferenceHost
      description: |2
        Reference host in use for this host profile.
        
        To set this property,
        use the *HostProfile.UpdateReferenceHost*
        method. If you do not specify a host for validation
        (*HostProfileCompleteConfigSpec*.*HostProfileCompleteConfigSpec.validatorHost*),
        the Profile Engine uses the reference host to validate the profile.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            Refers instance of *HostSystem*.
          content:
            application/json:
              schema:
                nullable: true
                $ref: '#/components/schemas/ManagedObjectReference'

  /HostProfile/{moId}/validationFailureInfo:
    get:
      tags: [HostProfile]
      summary: |2
        This object is created or updated if the *HostProfileValidationState_enum*
        is Failed.
      operationId: HostProfile_getValidationFailureInfo
      description: |2
        This object is created or updated if the *HostProfileValidationState_enum*
        is Failed.
        
        This object captures the most recent validation
        result for the host profile object in case of failure.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                $ref: '#/components/schemas/HostProfileValidationFailureInfo'

  /HostProfile/{moId}/validationState:
    get:
      tags: [HostProfile]
      summary: |2
        State of the host profile validation operation.
      operationId: HostProfile_getValidationState
      description: |2
        State of the host profile validation operation.
        
        The values
        of the state will be one of *HostProfileValidationState_enum* enumerations.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: string

  /HostProfile/{moId}/validationStateUpdateTime:
    get:
      tags: [HostProfile]
      summary: |2
        Update time of the validation operation.
      operationId: HostProfile_getValidationStateUpdateTime
      description: |2
        Update time of the validation operation.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: string
                format: date-time

  /HostProfileManager/{moId}/ApplyEntitiesConfig_Task:
    post:
      tags: [HostProfileManager]
      summary: |2
        The task for applying host configuration on a list of hosts.
      operationId: HostProfileManager_ApplyEntitiesConfig_Task
      description: |2
        The task for applying host configuration on a list of hosts.
        
        This is the
        batch version of <code>applyHostConfiguration</code>. The implementation
        of this method will:
        When a host is in a DRS cluster but doesn't satisfy the state requirement
        such as that the host is not in the required maintenance mode, this
        method uses DRS feature to put the host into maintenance mode.
        This method will apply a host profile to a stateful host or stateless
        host; or apply a host profile to a stateless host by reboot.
        After a host is reboot, a check compliance is done to update the latest
        compliance status.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ApplyEntitiesConfigRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor
            the operation. If the task is successful, the
            *Task*.*Task.info*.*TaskInfo.result*
            property is an array of
            *ApplyHostProfileConfigurationResult*
            objects. Each
            *ApplyHostProfileConfigurationResult*
            is for each host in the provided host list.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'

  /HostProfileManager/{moId}/ApplyHostConfig_Task:
    post:
      tags: [HostProfileManager]
      summary: |2
        Apply the configuration to the host.
      operationId: HostProfileManager_ApplyHostConfig_Task
      description: |2
        Apply the configuration to the host.
        
        If you specify any user input,
        the configuration will be saved in the *AnswerFile*
        associated with the host. If there is no answer file, the Profile Engine
        will create one.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ApplyHostConfigRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor
            the operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***InvalidState***: if the host is not in maintenance mode and the
            configuration specification requires it.
            
            ***HostConfigFailed***: if the ESX Server cannot apply the configuration changes.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostProfileManager/{moId}/CheckAnswerFileStatus_Task:
    post:
      tags: [HostProfileManager]
      summary: |2
        Check the validity of the answer files for the specified hosts.
      operationId: HostProfileManager_CheckAnswerFileStatus_Task
      description: |2
        Check the validity of the answer files for the specified hosts.
        
        The Profile Engine uses the profile associated with a host to check
        the answer file.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CheckAnswerFileStatusRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor
            the operation. If the task is successful, the
            *Task*.*Task.info*.*TaskInfo.result*
            property contains a list of *AnswerFileStatusResult* objects.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'

  /HostProfileManager/{moId}/CompositeHostProfile_Task:
    post:
      tags: [HostProfileManager]
      summary: |2
        Composes (merge, replace, delete, disable)
        the selected configurations into the target host profiles.
      operationId: HostProfileManager_CompositeHostProfile_Task
      description: |2
        Composes (merge, replace, delete, disable)
        the selected configurations into the target host profiles.
        
        ***Required privileges:*** Profile.Edit
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CompositeHostProfileRequestType'
      responses:
        '200':
          description: |2
            This method will returns a *Task* object with which to
            monitor the operation. The
            *Task*.*Task.info*.*TaskInfo.result*
            will contain a
            *HostProfileManagerCompositionResult*
            object containing the status of the operation, and details about
            any composition errors.
            The definitions of all the parameters are same as those in
            *HostProfileManager.ValidateHostProfileComposition_Task*.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'

  /HostProfileManager/{moId}/CreateDefaultProfile:
    post:
      tags: [HostProfileManager]
      summary: |2
        Create a default subprofile of a given type (for example, a
        *VirtualSwitchProfile*).
      operationId: HostProfileManager_CreateDefaultProfile
      description: |2
        Create a default subprofile of a given type (for example, a
        *VirtualSwitchProfile*).
        
        After you create
        the subprofile, you can add it to a configuration specification
        and update the host profile:
        - Call the <code>CreateDefaultProfile</code> method.
        - Create a *HostProfileCompleteConfigSpec* object.
        - Copy the existing profile from the host configuration information
          (*HostProfile*.*Profile.config*.*HostProfileConfigInfo.applyProfile*) to the configuration specification.
        - Add the new subprofile to the configuration specification. For example,
          if you create a <code>VirtualSwitchProfile</code>, you would add it to the list
          of virtual switches in the network profile for the configuration specification
          (*NetworkProfile*.*NetworkProfile.vswitch*\[\]).
        - Call *HostProfile*.*HostProfile.UpdateHostProfile*
          to save the new subprofile.  
          
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateDefaultProfileRequestType'
      responses:
        '200':
          description: |2
            Derived subprofile of type <code>profileType</code>.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApplyProfile'

  /HostProfileManager/{moId}/CreateProfile:
    post:
      tags: [HostProfileManager]
      summary: |2
        Create a profile from the specified CreateSpec.
      operationId: HostProfileManager_CreateProfile
      description: |2
        Create a profile from the specified CreateSpec.
        
        ***Required privileges:*** Profile.Create
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateProfileRequestType'
      responses:
        '200':
          description: |2
            Profile created from the specified createSpec.
            
            Refers instance of *Profile*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***DuplicateName***: If a profile with the specified name already
            exists.
            
            ***InvalidProfileReferenceHost***: if the specified reference host is
            incompatible or no reference host has been specified.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DuplicateName'

  /HostProfileManager/{moId}/ExportAnswerFile_Task:
    post:
      tags: [HostProfileManager]
      summary: |2
        Export a host's answer file into a serialized form.
      operationId: HostProfileManager_ExportAnswerFile_Task
      description: |2
        Export a host's answer file into a serialized form.
        
        The method returns a string
        that contains only the list of user input options.
        See *AnswerFile*.*AnswerFile.userInput*.
        
        ***Required privileges:*** Profile.Export
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ExportAnswerFileRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor
            the operation. If the task is successful, the
            *Task*.*Task.info*.*TaskInfo.result*
            property is a string that contains a serialized form of the answer file.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'

  /HostProfileManager/{moId}/FindAssociatedProfile:
    post:
      tags: [HostProfileManager]
      summary: |2
        Get the profile(s) to which this entity is associated.
      operationId: HostProfileManager_FindAssociatedProfile
      description: |2
        Get the profile(s) to which this entity is associated.
        
        The list of profiles will only include profiles known to this
        profileManager.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/FindAssociatedProfileRequestType'
      responses:
        '200':
          description: |2
            Refers instances of *Profile*.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/ManagedObjectReference'

  /HostProfileManager/{moId}/GenerateConfigTaskList:
    post:
      tags: [HostProfileManager]
      summary: |2
        Generate a list of configuration tasks that will be performed on the
        host during HostProfile application.
      operationId: HostProfileManager_GenerateConfigTaskList
      deprecated: true
      description: |2
        Deprecated as of vSphere API 6.0 use
        *HostProfileManager.GenerateHostProfileTaskList_Task*.
        
        Generate a list of configuration tasks that will be performed on the
        host during HostProfile application.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GenerateConfigTaskListRequestType'
      responses:
        '200':
          description: |2
            List of Configuration tasks.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HostProfileManagerConfigTaskList'

  /HostProfileManager/{moId}/GenerateHostConfigTaskSpec_Task:
    post:
      tags: [HostProfileManager]
      summary: |2
        This method generates *ApplyHostProfileConfigurationSpec* data object
        for each host which can be passed as input to
        *HostProfileManager.ApplyEntitiesConfig_Task*
        to configure that host.
      operationId: HostProfileManager_GenerateHostConfigTaskSpec_Task
      description: |2
        This method generates *ApplyHostProfileConfigurationSpec* data object
        for each host which can be passed as input to
        *HostProfileManager.ApplyEntitiesConfig_Task*
        to configure that host.
        
        For each host, this method goes through two stages,
        *HostProfile.ExecuteHostProfile* stage
        *HostProfileManager.GenerateHostProfileTaskList_Task* stage. If the
        *HostProfile.ExecuteHostProfile* stage completes
        successfully then the method invokes the
        *HostProfileManager.GenerateHostProfileTaskList_Task*
        stage to generate the list of configuration tasks that are needed
        to configure the host.
        This method will return a task to monitor the progress of the operation.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GenerateHostConfigTaskSpecRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor
            the operation. If the task is successful, the
            *Task*.*Task.info*.*TaskInfo.result*
            property is a
            *ApplyHostProfileConfigurationSpec* object.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'

  /HostProfileManager/{moId}/GenerateHostProfileTaskList_Task:
    post:
      tags: [HostProfileManager]
      summary: |2
        Generate a list of configuration tasks that will be performed on the
        host during HostProfile application.
      operationId: HostProfileManager_GenerateHostProfileTaskList_Task
      description: |2
        Generate a list of configuration tasks that will be performed on the
        host during HostProfile application.
        
        This differs from the
        *HostProfileManager.GenerateConfigTaskList* method in
        that it returns a task to monitor the progress of the operation.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GenerateHostProfileTaskListRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor
            the operation. If the task is successful, the
            *Task*.*Task.info*.*TaskInfo.result*
            property is a *HostProfileManagerConfigTaskList*
            object.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'

  /HostProfileManager/{moId}/QueryAnswerFileStatus:
    post:
      tags: [HostProfileManager]
      summary: |2
        Returns the status of the answer files associated with specified hosts.
      operationId: HostProfileManager_QueryAnswerFileStatus
      description: |2
        Returns the status of the answer files associated with specified hosts.
        
        This method returns the most recent status determined by
        *HostProfileManager.CheckAnswerFileStatus_Task*.
        See *HostProfileManagerAnswerFileStatus_enum* for valid values.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QueryAnswerFileStatusRequestType'
      responses:
        '200':
          description: |2
            List of answer file status objects.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/AnswerFileStatusResult'

  /HostProfileManager/{moId}/QueryPolicyMetadata:
    post:
      tags: [HostProfileManager]
      summary: |2
        Get the Metadata information for the policyNames.
      operationId: HostProfileManager_QueryPolicyMetadata
      description: |2
        Get the Metadata information for the policyNames.
        
        PolicyNames are available with the defaultProfile obtained by invoking the
        method createDefaultProfile.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QueryPolicyMetadataRequestType'
      responses:
        '200':
          description: |2
            The metadata information for the policy.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/ProfilePolicyMetadata'

  /HostProfileManager/{moId}/QueryHostProfileMetadata:
    post:
      tags: [HostProfileManager]
      summary: |2
        Retrieve the metadata for a set of profiles.
      operationId: HostProfileManager_QueryHostProfileMetadata
      description: |2
        Retrieve the metadata for a set of profiles.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QueryHostProfileMetadataRequestType'
      responses:
        '200':
          description: |2
            List of profile metadata objects.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/ProfileMetadata'

  /HostProfileManager/{moId}/QueryProfileStructure:
    post:
      tags: [HostProfileManager]
      summary: |2
        Get information about the structure of the profile.
      operationId: HostProfileManager_QueryProfileStructure
      description: |2
        Get information about the structure of the profile.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QueryProfileStructureRequestType'
      responses:
        '200':
          description: |2
            The profile structure.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProfileProfileStructure'

  /HostProfileManager/{moId}/RetrieveAnswerFile:
    post:
      tags: [HostProfileManager]
      summary: |2
        Returns the answer file associated with a particular host.
      operationId: HostProfileManager_RetrieveAnswerFile
      description: |2
        Returns the answer file associated with a particular host.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RetrieveAnswerFileRequestType'
      responses:
        '200':
          description: |2
            Answer file object will be returned if it exists.
          content:
            application/json:
              schema:
                nullable: true
                $ref: '#/components/schemas/AnswerFile'

  /HostProfileManager/{moId}/RetrieveAnswerFileForProfile:
    post:
      tags: [HostProfileManager]
      summary: |2
        Returns the answer file associated with a particular host, augmented
        with whatever answer file values are required for the supplied host
        profile.
      operationId: HostProfileManager_RetrieveAnswerFileForProfile
      description: |2
        Returns the answer file associated with a particular host, augmented
        with whatever answer file values are required for the supplied host
        profile.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RetrieveAnswerFileForProfileRequestType'
      responses:
        '200':
          description: |2
            Answer file object will be returned.
          content:
            application/json:
              schema:
                nullable: true
                $ref: '#/components/schemas/AnswerFile'

  /HostProfileManager/{moId}/RetrieveHostCustomizations:
    post:
      tags: [HostProfileManager]
      summary: |2
        This is the batch version of
        vim.profile.host.ProfileManager@retrieveAnswerFile.
      operationId: HostProfileManager_RetrieveHostCustomizations
      description: |2
        This is the batch version of
        vim.profile.host.ProfileManager@retrieveAnswerFile.
        
        Returns a map that contains the hosts and their answer file data
        objects.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RetrieveHostCustomizationsRequestType'
      responses:
        '200':
          description: |2
            A map that contains the hosts and their answer files.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/StructuredCustomizations'

  /HostProfileManager/{moId}/RetrieveHostCustomizationsForProfile:
    post:
      tags: [HostProfileManager]
      summary: |2
        This is the batch version of
        vim.profile.host.ProfileManager@retrieveAnswerFileForProfile.
      operationId: HostProfileManager_RetrieveHostCustomizationsForProfile
      description: |2
        This is the batch version of
        vim.profile.host.ProfileManager@retrieveAnswerFileForProfile.
        
        Returns a map that contains the hosts and their answer files associated
        with these hosts, augmented with whatever answer file values are
        required for the supplied host profile.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RetrieveHostCustomizationsForProfileRequestType'
      responses:
        '200':
          description: |2
            A map contains the hosts and their answer files.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/StructuredCustomizations'

  /HostProfileManager/{moId}/UpdateAnswerFile_Task:
    post:
      tags: [HostProfileManager]
      summary: |2
        Update the *AnswerFile* for the specified host.
      operationId: HostProfileManager_UpdateAnswerFile_Task
      description: |2
        Update the *AnswerFile* for the specified host.
        
        If there is no answer file associated with the host, the Profile Engine
        uses the answer file configuration specification to create a new one.
        
        ***Required privileges:*** Profile.Edit
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateAnswerFileRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor
            the operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***AnswerFileUpdateFailed***: If the answer file could not be updated.
            
            ***InvalidArgument***: If the input parameters are incorrect.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AnswerFileUpdateFailed'

  /HostProfileManager/{moId}/ValidateHostProfileComposition_Task:
    post:
      tags: [HostProfileManager]
      summary: |2
        Validates the proposed host profile composition.
      operationId: HostProfileManager_ValidateHostProfileComposition_Task
      description: |2
        Validates the proposed host profile composition.
        
        ***Required privileges:*** Profile.Edit
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ValidateHostProfileCompositionRequestType'
      responses:
        '200':
          description: |2
            This method will returns a *Task* object with which to
            monitor the operation. The
            *Task*.*Task.info*.*TaskInfo.result*
            will contain a
            *HostProfileManagerCompositionValidationResult*
            object containing the status of the operation, any validation errors
            and the validation results.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'

  /HostProfileManager/{moId}/profile:
    get:
      tags: [HostProfileManager]
      summary: |2
        A list of profiles known to this ProfileManager.
      operationId: HostProfileManager_getProfile
      description: |2
        A list of profiles known to this ProfileManager.
        
        ***Required privileges:*** Profile.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            Refers instances of *Profile*.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/ManagedObjectReference'

  /HostServiceSystem/{moId}/RefreshServices:
    post:
      tags: [HostServiceSystem]
      summary: |2
        Refresh the service information and settings to pick up any changes
        made directly on the host.
      operationId: HostServiceSystem_RefreshServices
      description: |2
        Refresh the service information and settings to pick up any changes
        made directly on the host.
        
        ***Required privileges:*** Host.Config.NetService
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '204':
          description: |2
            No Content

  /HostServiceSystem/{moId}/RestartService:
    post:
      tags: [HostServiceSystem]
      summary: |2
        Restarts the service.
      operationId: HostServiceSystem_RestartService
      description: |2
        Restarts the service.
        
        ***Required privileges:*** Host.Config.NetService
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RestartServiceRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***NotFound***: if the service ID is unknown.
            
            ***InvalidState***: if the service is not running.
            Only hosts with ESX/ESXi 4.1 or earlier software use this fault.
            Hosts running later versions of ESXi do not throw a fault in this case.
            
            ***HostConfigFault***: for all other failures.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostServiceSystem/{moId}/setCustomValue:
    post:
      tags: [HostServiceSystem]
      summary: |2
        Assigns a value to a custom field.
      operationId: HostServiceSystem_setCustomValue
      description: |2
        Assigns a value to a custom field.
        
        The setCustomValue method requires
        whichever updatePrivilege is defined as one of the
        *CustomFieldDef.fieldInstancePrivileges*
        for the CustomFieldDef whose value is being changed.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/setCustomValueRequestType'
      responses:
        '204':
          description: |2
            No Content

  /HostServiceSystem/{moId}/StartService:
    post:
      tags: [HostServiceSystem]
      summary: |2
        Starts the service.
      operationId: HostServiceSystem_StartService
      description: |2
        Starts the service.
        
        ***Required privileges:*** Host.Config.NetService
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/StartServiceRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***NotFound***: if the service ID is unknown.
            
            ***InvalidState***: if the service is already running.
            Only hosts with ESX/ESXi 4.1 or earlier software use this fault.
            Hosts running later versions of ESXi do not throw a fault in this case.
            
            ***HostConfigFault***: for all other failures.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostServiceSystem/{moId}/StopService:
    post:
      tags: [HostServiceSystem]
      summary: |2
        Stops the service.
      operationId: HostServiceSystem_StopService
      description: |2
        Stops the service.
        
        ***Required privileges:*** Host.Config.NetService
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/StopServiceRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***NotFound***: if the service ID is unknown.
            
            ***InvalidState***: if the service is not running.
            Only hosts with ESX/ESXi 4.1 or earlier software use this fault.
            Hosts running later versions of ESXi do not throw a fault in this case.
            
            ***HostConfigFault***: for all other failures.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostServiceSystem/{moId}/UninstallService:
    post:
      tags: [HostServiceSystem]
      summary: |2
        Uninstalls the service.
      operationId: HostServiceSystem_UninstallService
      description: |2
        Uninstalls the service.
        
        If the service is running, it is
        stopped before being uninstalled.
        
        ***Required privileges:*** Host.Config.NetService
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UninstallServiceRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***NotFound***: if the service ID is unknown.
            
            ***InvalidArgument***: if the service is a required service.
            
            ***NotSupported***: if the service doesn't support uninstallation.
            
            ***HostConfigFault***: for all other failures.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostServiceSystem/{moId}/UpdateServicePolicy:
    post:
      tags: [HostServiceSystem]
      summary: |2
        Updates the activation policy of the service.
      operationId: HostServiceSystem_UpdateServicePolicy
      description: |2
        Updates the activation policy of the service.
        
        ***Required privileges:*** Host.Config.NetService
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateServicePolicyRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***NotFound***: if the service ID is unknown.
            
            ***InvalidArgument***: if the service ID represents a required service,
            or if the specified policy is undefined.
            
            ***HostConfigFault***: for all other failures.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostServiceSystem/{moId}/availableField:
    get:
      tags: [HostServiceSystem]
      summary: |2
        List of custom field definitions that are valid for the object's type.
      operationId: HostServiceSystem_getAvailableField
      description: |2
        List of custom field definitions that are valid for the object's type.
        
        The fields are sorted by *CustomFieldDef.name*.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/CustomFieldDef'

  /HostServiceSystem/{moId}/serviceInfo:
    get:
      tags: [HostServiceSystem]
      summary: |2
        Service configuration.
      operationId: HostServiceSystem_getServiceInfo
      description: |2
        Service configuration.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HostServiceInfo'

  /HostServiceSystem/{moId}/value:
    get:
      tags: [HostServiceSystem]
      summary: |2
        List of custom field values.
      operationId: HostServiceSystem_getValue
      description: |2
        List of custom field values.
        
        Each value uses a key to associate
        an instance of a *CustomFieldStringValue* with
        a custom field definition.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/CustomFieldValue'

  /HostSnmpSystem/{moId}/ReconfigureSnmpAgent:
    post:
      tags: [HostSnmpSystem]
      operationId: HostSnmpSystem_ReconfigureSnmpAgent
      description: |2
        ***Required privileges:*** Global.Settings
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ReconfigureSnmpAgentRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            Failure
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostSnmpSystem/{moId}/SendTestNotification:
    post:
      tags: [HostSnmpSystem]
      operationId: HostSnmpSystem_SendTestNotification
      description: |2
        ***Required privileges:*** Global.Settings
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            Failure
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostSnmpSystem/{moId}/configuration:
    get:
      tags: [HostSnmpSystem]
      operationId: HostSnmpSystem_getConfiguration
      description: |2
        ***Required privileges:*** Global.Settings
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HostSnmpConfigSpec'

  /HostSnmpSystem/{moId}/limits:
    get:
      tags: [HostSnmpSystem]
      operationId: HostSnmpSystem_getLimits
      description: |2
        ***Required privileges:*** Global.Settings
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HostSnmpSystemAgentLimits'

  /HostSpecificationManager/{moId}/DeleteHostSpecification:
    post:
      tags: [HostSpecificationManager]
      summary: |2
        Delete the host specification of the specified host.
      operationId: HostSpecificationManager_DeleteHostSpecification
      description: |2
        Delete the host specification of the specified host.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DeleteHostSpecificationRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***HostSpecificationOperationFailed***: If the method fails when delete
            the spec.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HostSpecificationOperationFailed'

  /HostSpecificationManager/{moId}/DeleteHostSubSpecification:
    post:
      tags: [HostSpecificationManager]
      summary: |2
        Delete the host sub specification specified by the provided <code>
        subSpecname</code> of the specified host.
      operationId: HostSpecificationManager_DeleteHostSubSpecification
      description: |2
        Delete the host sub specification specified by the provided <code>
        subSpecname</code> of the specified host.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DeleteHostSubSpecificationRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***HostSpecificationOperationFailed***: If the method fails when delete
            the sub spec.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HostSpecificationOperationFailed'

  /HostSpecificationManager/{moId}/HostSpecGetUpdatedHosts:
    post:
      tags: [HostSpecificationManager]
      summary: |2
        Query the hosts whose specification was updated in the specified
        time period.
      operationId: HostSpecificationManager_HostSpecGetUpdatedHosts
      description: |2
        Query the hosts whose specification was updated in the specified
        time period.
        
        When the <code>startChangeID</code> isn't provided, it will
        return all the host updated before the <code>endChangeID</code>. When the
        <code>endChangeID</code> isn't provided, it will return all the hosts
        updated after <code>startChangeID</code>. If both aren't provided, all
        hosts having host spec will be returned.
        The format of the change ID is defined at
        *HostSpecification.changeID*.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/HostSpecGetUpdatedHostsRequestType'
      responses:
        '200':
          description: |2
            The queried host list.
            
            Refers instances of *HostSystem*.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/ManagedObjectReference'

  /HostSpecificationManager/{moId}/RetrieveHostSpecification:
    post:
      tags: [HostSpecificationManager]
      summary: |2
        Retrieve the host specification.
      operationId: HostSpecificationManager_RetrieveHostSpecification
      description: |2
        Retrieve the host specification.
        
        When the parameter <code>fromHost</code>
        is <code>true</code>, the host specification is retrieved from the host;
        otherwise, it is from the host specification "database" for this manager.
        When retrieved from host, the copy in host specification "database" will
        be updated. On success, it will fire a
        <code>HostSpecificationChangedEvent</code>.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RetrieveHostSpecificationRequestType'
      responses:
        '200':
          description: |2
            The host specification of the specified host.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HostSpecification'
        '500':
          description: |2
            ***HostSpecificationOperationFailed***: If the method fails when retrieve
            from host.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HostSpecificationOperationFailed'

  /HostSpecificationManager/{moId}/UpdateHostSpecification:
    post:
      tags: [HostSpecificationManager]
      summary: |2
        Update the host specification with the provided copy.
      operationId: HostSpecificationManager_UpdateHostSpecification
      description: |2
        Update the host specification with the provided copy.
        
        If there is no host specification for the host, create the host
        specification for this host in the host specification "database";
        otherwise, update the host specification with the provided.
        *HostSpecification* object.
        On success, it will fire a <code>HostSpecificationChangedEvent</code>.
        
        ***Required privileges:*** Profile.Edit
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateHostSpecificationRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***HostSpecificationOperationFailed***: If the method fails.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HostSpecificationOperationFailed'

  /HostSpecificationManager/{moId}/UpdateHostSubSpecification:
    post:
      tags: [HostSpecificationManager]
      summary: |2
        Update the host specification with the provided host sub specification.
      operationId: HostSpecificationManager_UpdateHostSubSpecification
      description: |2
        Update the host specification with the provided host sub specification.
        
        If there is no host specification for the host, create the host
        specification, which contains only the provided host sub specification,
        for this host; otherwise, add or update the host specification with the
        provided *HostSubSpecification* object.
        This method provides a way to incrementally build the host specification.
        On success, it will fire a <code>HostSpecificationChangedEvent</code>.
        
        ***Required privileges:*** Profile.Edit
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateHostSubSpecificationRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***HostSpecificationOperationFailed***: If the method fails.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HostSpecificationOperationFailed'

  /HostStorageSystem/{moId}/AddInternetScsiSendTargets:
    post:
      tags: [HostStorageSystem]
      summary: |2
        Adds Send Target entries to the host bus adapter discovery list.
      operationId: HostStorageSystem_AddInternetScsiSendTargets
      description: |2
        Adds Send Target entries to the host bus adapter discovery list.
        
        The DiscoveryProperties.sendTargetsDiscoveryEnabled flag
        must be set to true.
        
        ***Required privileges:*** Host.Config.Storage
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AddInternetScsiSendTargetsRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***HostConfigFault***: for all other configuration failures.
            
            ***NotFound***: if the discovery list could not be found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostStorageSystem/{moId}/AddInternetScsiStaticTargets:
    post:
      tags: [HostStorageSystem]
      summary: |2
        Adds Static Target entries to the host bus adapter discovery list.
      operationId: HostStorageSystem_AddInternetScsiStaticTargets
      description: |2
        Adds Static Target entries to the host bus adapter discovery list.
        
        The DiscoveryProperty.staticTargetDiscoveryEnabled must be set to true.
        
        ***Required privileges:*** Host.Config.Storage
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AddInternetScsiStaticTargetsRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***NotFound***: if the host bus adaptor discovery list was not found.
            
            ***HostConfigFault***: for all other configuration failures.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostStorageSystem/{moId}/AttachScsiLun:
    post:
      tags: [HostStorageSystem]
      summary: |2
        Allow I/O issue to the specified detached ScsiLun.
      operationId: HostStorageSystem_AttachScsiLun
      description: |2
        Allow I/O issue to the specified detached ScsiLun.
        
        The ScsiLun is
        administratively configured on, if the attach operation is successful.
        See *HostStorageSystem.DetachScsiLun*.
        
        attachScsiLun is part of the Unmount, Detach workflow used
        when a device will be permanently removed.
        See also *HostStorageSystem.UnmountVmfsVolume*.
        
        ***Required privileges:*** Host.Config.Storage
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AttachScsiLunRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***NotFound***: if the device could not be found.
            
            ***InvalidState***: if
            - The device is already attached.
              i.e. Device state is not 'off' in *ScsiLun.operationalState*.
            - The device is unreachable. See *ScsiLun.operationalState*.
              
            ***HostConfigFault***: for all other configuration failures.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostStorageSystem/{moId}/AttachScsiLunEx_Task:
    post:
      tags: [HostStorageSystem]
      summary: |2
        Attach one or more SCSI LUNs.
      operationId: HostStorageSystem_AttachScsiLunEx_Task
      description: |2
        Attach one or more SCSI LUNs.
        
        This is an asynchronous, batch operation of
        attachScisLun. Please see *HostStorageSystem.AttachScsiLun*
        for operational details.
        
        ***Required privileges:*** Host.Config.Storage
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AttachScsiLunExRequestType'
      responses:
        '200':
          description: |2
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***HostConfigFault***: for host configuration failures.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HostConfigFault'

  /HostStorageSystem/{moId}/AttachVmfsExtent:
    post:
      tags: [HostStorageSystem]
      summary: |2
        Extends a VMFS by attaching a disk partition as an extent.
      operationId: HostStorageSystem_AttachVmfsExtent
      description: |2
        Extends a VMFS by attaching a disk partition as an extent.
        
        ***Required privileges:*** Host.Config.Storage
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AttachVmfsExtentRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***NotFound***: if the VMFS cannot be found or is unmounted.
            
            ***InvalidArgument***: if the new extent is already used by another
            vmfs volume, does not exist, or is of an invalid partition
            type.
            
            ***HostConfigFault***: for all other configuration failures.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostStorageSystem/{moId}/ChangeNFSUserPassword:
    post:
      tags: [HostStorageSystem]
      summary: |2
        Change password for existing NFS user.
      operationId: HostStorageSystem_ChangeNFSUserPassword
      description: |2
        Change password for existing NFS user.
        
        This method shall be called after
        the NFS user has been created on the host.
        
        ***Required privileges:*** Host.Config.Storage
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ChangeNFSUserPasswordRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***NotFound***: NFS user is not set.
            
            ***HostConfigFault***: Unable to set passwords due to host configuration
            problem.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostStorageSystem/{moId}/ClearNFSUser:
    post:
      tags: [HostStorageSystem]
      summary: |2
        Clear the NFS user configured on the esx host
      operationId: HostStorageSystem_ClearNFSUser
      description: |2
        Clear the NFS user configured on the esx host
        
        ***Required privileges:*** Host.Config.Storage
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***HostConfigFault***: Unable to clear NFS user due to host configuration
            problem.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HostConfigFault'

  /HostStorageSystem/{moId}/ComputeDiskPartitionInfo:
    post:
      tags: [HostStorageSystem]
      summary: |2
        Computes the disk partition information given the desired disk layout.
      operationId: HostStorageSystem_ComputeDiskPartitionInfo
      description: |2
        Computes the disk partition information given the desired disk layout.
        
        The server computes a new partition information object for a specific
        disk representing the desired layout.
        
        See also *HostDiskPartitionInfoPartitionFormat_enum*.
        
        ***Required privileges:*** Host.Config.Storage
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ComputeDiskPartitionInfoRequestType'
      responses:
        '200':
          description: |2
            A data object that contains information about
            the partitions on a disk
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HostDiskPartitionInfo'
        '500':
          description: |2
            ***NotFound***: if the device could not be found.
            
            ***InvalidArgument***: if the layout is invalid.
            
            ***HostConfigFault***: if unable to get the current partition information for
            the device.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostStorageSystem/{moId}/ComputeDiskPartitionInfoForResize:
    post:
      tags: [HostStorageSystem]
      summary: |2
        Computes the disk partition information for the purpose of resizing
        a given partition.
      operationId: HostStorageSystem_ComputeDiskPartitionInfoForResize
      description: |2
        Computes the disk partition information for the purpose of resizing
        a given partition.
        
        See also *HostDiskPartitionInfoPartitionFormat_enum*.
        
        ***Required privileges:*** Host.Config.Storage
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ComputeDiskPartitionInfoForResizeRequestType'
      responses:
        '200':
          description: |2
            resized disk partition information
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HostDiskPartitionInfo'
        '500':
          description: |2
            ***NotFound***: if the device could not be found.
            
            ***InvalidArgument***: if blockRange or partition is invalid.
            
            ***HostConfigFault***: if unable to get the current partition
            information for the device.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostStorageSystem/{moId}/ConnectNvmeController:
    post:
      tags: [HostStorageSystem]
      summary: |2
        Establish a connection to an NVME controller.
      operationId: HostStorageSystem_ConnectNvmeController
      description: |2
        Establish a connection to an NVME controller.
        
        As a result, all the namespaces attached to the controller
        will be accessible through the adapter.
        For more details, see:
        - "NVM Express over Fabrics 1.0", Section 3.3,
          "Connect command and response"
          
        ***Required privileges:*** Host.Config.Storage
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ConnectNvmeControllerRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***NotFound***: if the given HBA or transport target could not be found.
            
            ***InvalidArgument***: if the provided spec is not valid.
            
            ***NotSupported***: if the adapter does not support the provided
            combination of parameters.
            
            ***HostConfigFault***: if the host is unable to establish
            the connection.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostStorageSystem/{moId}/ConnectNvmeControllerEx_Task:
    post:
      tags: [HostStorageSystem]
      summary: |2
        Establish a connection to one or more NVMe controllers.
      operationId: HostStorageSystem_ConnectNvmeControllerEx_Task
      description: |2
        Establish a connection to one or more NVMe controllers.
        
        This is an asynchronous, batch version of the connectNvmeController API.
        See *HostStorageSystem.ConnectNvmeController* for details. If supported
        on the host in question, *HostCapability.nvmeBatchOperationsSupported*
        will be set to true.
        An attempt will be made to establish a connection using each of the provided
        specifications. There are no transactional guarantees - some of the connections
        may succeed and some may fail. In case of any failures, a fault containing
        information about the failed attempts to establish a connection will be thrown.
        
        ***Since:*** vSphere API Release 7.0.3.0
        
        ***Required privileges:*** Host.Config.Storage
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ConnectNvmeControllerExRequestType'
      responses:
        '200':
          description: |2
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***NotSupported***: if the batch API is not supported on the host in question.
            
            ***HostConfigFault***: if any of the attempted connections failed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HostConfigFault'

  /HostStorageSystem/{moId}/CreateNvmeOverRdmaAdapter:
    post:
      tags: [HostStorageSystem]
      summary: |2
        Creates a software NVME over RDMA adapter.
      operationId: HostStorageSystem_CreateNvmeOverRdmaAdapter
      description: |2
        Creates a software NVME over RDMA adapter.
        
        ***Required privileges:*** Host.Config.Storage
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateNvmeOverRdmaAdapterRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***ResourceInUse***: if the RDMA device is already in use
            by an NVME over RDMA adapter.
            
            ***NotFound***: if the given RDMA device could not be found.
            
            ***NotSupported***: if the current configuration of the RDMA
            device does not permit the creation of the adapter.
            
            ***HostConfigFault***: if the host is unable to create the adapter.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostStorageSystem/{moId}/CreateSoftwareAdapter:
    post:
      tags: [HostStorageSystem]
      summary: |2
        Creates a software host bus adapter based on the provided spec.
      operationId: HostStorageSystem_CreateSoftwareAdapter
      description: |2
        Creates a software host bus adapter based on the provided spec.
        
        ***Since:*** vSphere API Release 7.0.3.0
        
        ***Required privileges:*** Host.Config.Storage
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateSoftwareAdapterRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***ResourceInUse***: if some of the resources specified in the spec
            and needed for adapter creation is in use
            
            ***NotFound***: if any of the resources specified in the spec could
            not be found.
            
            ***NotSupported***: if the configuration requested by the spec
            is not supported.
            
            ***HostConfigFault***: if the host is unable to create the adapter.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostStorageSystem/{moId}/DeleteScsiLunState:
    post:
      tags: [HostStorageSystem]
      summary: |2
        For previously detached SCSI Lun, remove the state information from
        host.
      operationId: HostStorageSystem_DeleteScsiLunState
      description: |2
        For previously detached SCSI Lun, remove the state information from
        host.
        
        Detach SCSI Lun marks the device where I/Os are not allowed.
        Host still maintains the entry of this device and its state.
        If a LUN is detached using detachScsiLun, ESX will not automatically
        attach this LUN durng a rescan or after a reboot.
        See *HostStorageSystem.DetachScsiLun*.
        Please note: The API takes 'canonicalName' of the ScsiLun object
        instead of the ScsiLun.uuid.
        
        See also *ScsiLun.canonicalName*.
        
        ***Required privileges:*** Host.Config.Storage
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DeleteScsiLunStateRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***HostConfigFault***: for any configuration failures.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HostConfigFault'

  /HostStorageSystem/{moId}/DeleteVffsVolumeState:
    post:
      tags: [HostStorageSystem]
      summary: |2
        For previously unmounted VFFS volume, remove the state information from
        host.
      operationId: HostStorageSystem_DeleteVffsVolumeState
      description: |2
        For previously unmounted VFFS volume, remove the state information from
        host.
        
        VFFS volumes mount state is maintained by host.
        
        deleteVffsVolumeState is part of the Unmount/Detach workflow used
        when the device will be permanently removed.
        See also *HostStorageSystem.UnmountVffsVolume*.
        If the VFFS volume is unmounted using unmountVffsVolume, ESX maintains
        the state of VFFS volume. This API will remove the state from the host.
        If the underlying storage device is going to be un-provisioned on the
        array side, please detach the storage device.
        See also *HostStorageSystem.DetachScsiLun*.
        
        ***Required privileges:*** Host.Config.Storage
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DeleteVffsVolumeStateRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***HostConfigFault***: for any configuration failures.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HostConfigFault'

  /HostStorageSystem/{moId}/DeleteVmfsVolumeState:
    post:
      tags: [HostStorageSystem]
      summary: |2
        For previously unmounted VMFS volume, remove the state information from
        host.
      operationId: HostStorageSystem_DeleteVmfsVolumeState
      description: |2
        For previously unmounted VMFS volume, remove the state information from
        host.
        
        VMFS volumes mount state is maintained by host.
        
        deleteVmfsVolumeState is part of the Unmount/Detach workflow used
        when the device will be permanently removed.
        See also *HostStorageSystem.UnmountVmfsVolume*.
        If the VMFS volume is unmounted using unmountVmfsVolume, ESX maintains
        the state of VMFS volume. This API will remove the state from the host.
        If the underlying storage device is going to be un-provisioned on the
        array side, please detach the storage device.
        See also *HostStorageSystem.DetachScsiLun*.
        
        ***Required privileges:*** Host.Config.Storage
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DeleteVmfsVolumeStateRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***HostConfigFault***: for any configuration failures.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HostConfigFault'

  /HostStorageSystem/{moId}/DestroyVffs:
    post:
      tags: [HostStorageSystem]
      summary: |2
        Destroy a VFFS volume.
      operationId: HostStorageSystem_DestroyVffs
      description: |2
        Destroy a VFFS volume.
        
        ***Required privileges:*** Host.Config.Storage
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DestroyVffsRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***NotFound***: if the VFFS cannot be found or is unmounted.
            
            ***HostConfigFault***: for all other configuration failures.
            
            ***ResourceInUse***: VFFS volume is being used.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostStorageSystem/{moId}/DetachScsiLun:
    post:
      tags: [HostStorageSystem]
      summary: |2
        Disallow I/O issue to the specified ScsiLun.
      operationId: HostStorageSystem_DetachScsiLun
      description: |2
        Disallow I/O issue to the specified ScsiLun.
        
        The ScsiLun is
        detached, i.e. administratively configured off until a subsequent
        attachScsiLun is performed, if the operation is successful.
        See *HostStorageSystem.AttachScsiLun*.
        
        detachScsiLun is part of the Unmount / Detach workflow used
        when a device will be permanently removed.
        See also *HostStorageSystem.UnmountVmfsVolume*.
        
        ***Required privileges:*** Host.Config.Storage
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DetachScsiLunRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***NotFound***: if the device could not be found.
            
            ***InvalidState***: if
            - The device is already detached(turned 'off').
              See *ScsiLun.operationalState*.
              
            ***ResourceInUse***: if
            - This device is backing a Vm with a Raw Device Mapped Virtual
              Disk.
            - 1 or more programs have I/O outstanding on this device.
            - 1 or more mounted vmfs volumes have extents residing on this
              device.
            - The device is configured for use by the host e.g. diagnostic
              partition is configured on this device.
              
            ***HostConfigFault***: for all other configuration failures.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostStorageSystem/{moId}/DetachScsiLunEx_Task:
    post:
      tags: [HostStorageSystem]
      summary: |2
        Detach one or more SCSI LUNs.
      operationId: HostStorageSystem_DetachScsiLunEx_Task
      description: |2
        Detach one or more SCSI LUNs.
        
        This is an asynchronous, batch operation of
        detachScisLun. Please see *HostStorageSystem.DetachScsiLun*
        for operational details.
        
        ***Required privileges:*** Host.Config.Storage
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DetachScsiLunExRequestType'
      responses:
        '200':
          description: |2
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***HostConfigFault***: for host configuration failures.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HostConfigFault'

  /HostStorageSystem/{moId}/DisableMultipathPath:
    post:
      tags: [HostStorageSystem]
      summary: |2
        Disables an enabled path for a Logical Unit.
      operationId: HostStorageSystem_DisableMultipathPath
      description: |2
        Disables an enabled path for a Logical Unit.
        
        Use the path name from *HostMultipathStateInfoPath*
        or *HostMultipathInfoPath*.
        
        ***Required privileges:*** Host.Config.Storage
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DisableMultipathPathRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***NotFound***: if the LUN could not be found.
            
            ***HostConfigFault***: for all other configuration failures.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostStorageSystem/{moId}/DisconnectNvmeController:
    post:
      tags: [HostStorageSystem]
      summary: |2
        Disconnect from an NVME controller.
      operationId: HostStorageSystem_DisconnectNvmeController
      description: |2
        Disconnect from an NVME controller.
        
        As a result, all the namespaces attached to the controller
        will no longer be accessible through the adapter.
        
        ***Required privileges:*** Host.Config.Storage
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DisconnectNvmeControllerRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***NotFound***: if the given HBA or controller could not be found.
            
            ***InvalidArgument***: if the provided spec is not valid.
            
            ***NotSupported***: if the adapter does not support the provided
            combination of parameters.
            
            ***HostConfigFault***: if the host is unable to perform
            the disconnect.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostStorageSystem/{moId}/DisconnectNvmeControllerEx_Task:
    post:
      tags: [HostStorageSystem]
      summary: |2
        Disconnect from one or more NVMe controllers.
      operationId: HostStorageSystem_DisconnectNvmeControllerEx_Task
      description: |2
        Disconnect from one or more NVMe controllers.
        
        This is an asynchronous, batch version of the disconnectNvmeController API.
        See *HostStorageSystem.DisconnectNvmeController* for details. If supported
        on the host in question, *HostCapability.nvmeBatchOperationsSupported*
        will be set to true.
        An attempt will be made to disconnect a controller using each of the provided
        specifications. There are no transactional guarantees - some of the disconnections
        may succeed and some may fail. In case of any failures, a fault containing
        information about the failed attempts to disconnect a controller will be thrown.
        
        ***Since:*** vSphere API Release 7.0.3.0
        
        ***Required privileges:*** Host.Config.Storage
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DisconnectNvmeControllerExRequestType'
      responses:
        '200':
          description: |2
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***NotSupported***: if the batch API is not supported on the host in question.
            
            ***HostConfigFault***: if any of the attempts to disconnect a controller fails.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HostConfigFault'

  /HostStorageSystem/{moId}/DiscoverFcoeHbas:
    post:
      tags: [HostStorageSystem]
      summary: |2
        Initiates FCoE discovery using the given FcoeSpecification.
      operationId: HostStorageSystem_DiscoverFcoeHbas
      deprecated: true
      description: |2
        Deprecated as of vSphere API 8.0. Software FCoE not supported.
        
        Initiates FCoE discovery using the given FcoeSpecification.
        
        Upon success, discovered VNPorts will have registered with the
        system as FCoE HBAs.
        
        ***Required privileges:*** Host.Config.Storage
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DiscoverFcoeHbasRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***InvalidArgument***: if any parameter in the given FcoeSpecification
            is invalid.
            
            ***HostConfigFault***: if the host is unable to issue FCoE discovery.
            
            ***NotFound***: if the given HBA could not be found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostStorageSystem/{moId}/DiscoverNvmeControllers:
    post:
      tags: [HostStorageSystem]
      summary: |2
        Connects to a Discovery Controller and retrieves the Discovery Log
        using the provided NvmeDiscoverSpec.
      operationId: HostStorageSystem_DiscoverNvmeControllers
      description: |2
        Connects to a Discovery Controller and retrieves the Discovery Log
        using the provided NvmeDiscoverSpec.
        
        For more details, see:
        - "NVM Express over Fabrics 1.0", Section 5, "Discovery service"
          
        ***Required privileges:*** Host.Config.Storage
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DiscoverNvmeControllersRequestType'
      responses:
        '200':
          description: |2
            discoveryLog A data object that represents
            the Discovery Log.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HostNvmeDiscoveryLog'
        '500':
          description: |2
            ***NotFound***: if the given HBA or transport target could not be found.
            
            ***InvalidArgument***: if the provided spec is not valid.
            
            ***NotSupported***: if the adapter does not support the provided
            combination of parameters.
            
            ***HostConfigFault***: if the host is unable to retrieve
            the discovery log.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostStorageSystem/{moId}/EnableMultipathPath:
    post:
      tags: [HostStorageSystem]
      summary: |2
        Enables a disabled path for a Logical Unit.
      operationId: HostStorageSystem_EnableMultipathPath
      description: |2
        Enables a disabled path for a Logical Unit.
        
        Use the path name from *HostMultipathStateInfoPath*
        or *HostMultipathInfoPath*.
        
        ***Required privileges:*** Host.Config.Storage
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EnableMultipathPathRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***NotFound***: if the LUN could not be found.
            
            ***HostConfigFault***: for all other configuration failures.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostStorageSystem/{moId}/ExpandVmfsExtent:
    post:
      tags: [HostStorageSystem]
      summary: |2
        Expands a VMFS extent as specified by the Disk partition specification.
      operationId: HostStorageSystem_ExpandVmfsExtent
      description: |2
        Expands a VMFS extent as specified by the Disk partition specification.
        
        ***Required privileges:*** Host.Config.Storage
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ExpandVmfsExtentRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***NotFound***: if the VMFS cannot be found or is unmounted.
            
            ***InvalidArgument***: if the extent is not part of the VMFS volume.
            
            ***HostConfigFault***: for all other configuration failures.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostStorageSystem/{moId}/ExtendVffs:
    post:
      tags: [HostStorageSystem]
      summary: |2
        Extends a VFFS by attaching a SSD.
      operationId: HostStorageSystem_ExtendVffs
      description: |2
        Extends a VFFS by attaching a SSD.
        
        See also *HostScsiDisk.devicePath*.
        
        ***Required privileges:*** Host.Config.Storage
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ExtendVffsRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***NotFound***: if the VFFS cannot be found or is unmounted.
            
            ***InvalidArgument***: if the new SSD is already used by another
            VFFS volume, does not exist, or is of an invalid partition
            type.
            
            ***HostConfigFault***: for all other configuration failures.
            
            ***ResourceInUse***: VFFS volume is being used.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostStorageSystem/{moId}/FormatVffs:
    post:
      tags: [HostStorageSystem]
      summary: |2
        Format a new VFFS on a SSD disk
      operationId: HostStorageSystem_FormatVffs
      description: |2
        Format a new VFFS on a SSD disk
        
        ***Required privileges:*** Host.Config.Storage
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/FormatVffsRequestType'
      responses:
        '200':
          description: |2
            A data object that represents the VFFS file system.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HostVffsVolume'
        '500':
          description: |2
            ***InvalidArgument***: if VFFS version is invalid, the SSD disk
            does not exist or is of an invalid type.
            
            ***AlreadyExists***: if the volume name is already being used
            by another volume on the host.
            
            ***HostConfigFault***: for all other configuration failures.
            
            ***ResourceInUse***: VFFS volume is being used.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostStorageSystem/{moId}/FormatVmfs:
    post:
      tags: [HostStorageSystem]
      summary: |2
        Formats a new VMFS on a disk partition.
      operationId: HostStorageSystem_FormatVmfs
      description: |2
        Formats a new VMFS on a disk partition.
        
        ***Required privileges:*** Host.Config.Storage
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/FormatVmfsRequestType'
      responses:
        '200':
          description: |2
            A data object that represents the VMFS file system.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HostVmfsVolume'
        '500':
          description: |2
            ***InvalidArgument***: if VMFS version specified is not 2 or 3,
            if blocksize, lock mode, or volume label are invalid,
            the partition does not exist or is of an invalid type.
            
            ***AlreadyExists***: if the volume name is already being used
            by another volume on the host.
            
            ***HostConfigFault***: for all other configuration failures.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostStorageSystem/{moId}/MarkAsLocal_Task:
    post:
      tags: [HostStorageSystem]
      summary: |2
        Mark a disk to local disk, due to the reason that local disks
        behind some controllers might not be recongized as local correctly.
      operationId: HostStorageSystem_MarkAsLocal_Task
      description: |2
        Mark a disk to local disk, due to the reason that local disks
        behind some controllers might not be recongized as local correctly.
        
        Task failure might lose existing claim rules on the disk.
        
        ***Required privileges:*** Host.Config.Storage
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MarkAsLocalRequestType'
      responses:
        '200':
          description: |2
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***NotFound***: if the device could not be found.
            
            ***HostConfigFault***: for all other configuration failures.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostStorageSystem/{moId}/MarkAsNonLocal_Task:
    post:
      tags: [HostStorageSystem]
      summary: |2
        Mark a disk to remote disk, which is the opposite operation of
        *HostStorageSystem.MarkAsLocal_Task*
        Task failure might lose existing claim rules on the disk.
      operationId: HostStorageSystem_MarkAsNonLocal_Task
      description: |2
        Mark a disk to remote disk, which is the opposite operation of
        *HostStorageSystem.MarkAsLocal_Task*
        Task failure might lose existing claim rules on the disk.
        
        ***Required privileges:*** Host.Config.Storage
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MarkAsNonLocalRequestType'
      responses:
        '200':
          description: |2
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***NotFound***: if the device could not be found.
            
            ***HostConfigFault***: for all other configuration failures.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostStorageSystem/{moId}/MarkAsNonSsd_Task:
    post:
      tags: [HostStorageSystem]
      summary: |2
        Mark a disk to Non-SSD, which is the opposite operation of
        *HostStorageSystem.MarkAsSsd_Task*
        Task failure might lose existing claim rules on the disk.
      operationId: HostStorageSystem_MarkAsNonSsd_Task
      description: |2
        Mark a disk to Non-SSD, which is the opposite operation of
        *HostStorageSystem.MarkAsSsd_Task*
        Task failure might lose existing claim rules on the disk.
        
        ***Required privileges:*** Host.Config.Storage
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MarkAsNonSsdRequestType'
      responses:
        '200':
          description: |2
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***NotFound***: if the device could not be found.
            
            ***HostConfigFault***: for all other configuration failures.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostStorageSystem/{moId}/MarkAsSsd_Task:
    post:
      tags: [HostStorageSystem]
      summary: |2
        Mark a disk to SSD, due to the reason that SSDs behind some controllers
        might not be recongized as SSD correctly.
      operationId: HostStorageSystem_MarkAsSsd_Task
      description: |2
        Mark a disk to SSD, due to the reason that SSDs behind some controllers
        might not be recongized as SSD correctly.
        
        Task failure might lose existing claim rules on the disk.
        
        ***Required privileges:*** Host.Config.Storage
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MarkAsSsdRequestType'
      responses:
        '200':
          description: |2
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***NotFound***: if the device could not be found.
            
            ***HostConfigFault***: for all other configuration failures.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostStorageSystem/{moId}/HostStorageSystem_MarkForRemoval:
    post:
      tags: [HostStorageSystem]
      summary: |2
        Mark or unmark the given FCoE HBA for removal from the host system.
      operationId: HostStorageSystem_HostStorageSystem_MarkForRemoval
      deprecated: true
      description: |2
        Deprecated as of vSphere API 8.0. Software FCoE not supported.
        
        Mark or unmark the given FCoE HBA for removal from the host system.
        
        Marking an FCoE HBA for removal will result in the HBA
        not being discovered upon host reboot. Until reboot,
        the HBA remains visible in the storage topology.
        
        ***Required privileges:*** Host.Config.Storage
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/HostStorageSystem_MarkForRemovalRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***NotFound***: if the given HBA could not be found.
            
            ***InvalidArgument***: if the given HBA is not an FCoE HBA.
            
            ***HostConfigFault***: if the host does not support removing the given
            HBA.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostStorageSystem/{moId}/MarkPerenniallyReserved:
    post:
      tags: [HostStorageSystem]
      summary: |2
        Marks the specified LUN as perennially reserved.
      operationId: HostStorageSystem_MarkPerenniallyReserved
      description: |2
        Marks the specified LUN as perennially reserved.
        
        ***Required privileges:*** Host.Config.Storage
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MarkPerenniallyReservedRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***HostConfigFault***: if unable to change perennially reserved state.
            
            ***NotFound***: if the device could not be found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostStorageSystem/{moId}/MarkPerenniallyReservedEx_Task:
    post:
      tags: [HostStorageSystem]
      summary: |2
        Marks the specified one or more SCSI LUN's perennially reserved based
        on the sate.
      operationId: HostStorageSystem_MarkPerenniallyReservedEx_Task
      description: |2
        Marks the specified one or more SCSI LUN's perennially reserved based
        on the sate.
        
        ***Required privileges:*** Host.Config.Storage
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MarkPerenniallyReservedExRequestType'
      responses:
        '200':
          description: |2
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'

  /HostStorageSystem/{moId}/MountVffsVolume:
    post:
      tags: [HostStorageSystem]
      summary: |2
        Mount the unmounted VFFS volume.
      operationId: HostStorageSystem_MountVffsVolume
      description: |2
        Mount the unmounted VFFS volume.
        
        See *HostStorageSystem.UnmountVffsVolume*.
        
        mountVffsVolume is part of the Unmount / Detach workflow used
        when a device will be permanently removed.
        See also *HostStorageSystem.DetachScsiLun*.
        
        ***Required privileges:*** Host.Config.Storage
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MountVffsVolumeRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***NotFound***: if VFFS uuid is not found on the host.
            
            ***InvalidState***: if
            - The volume is already mounted.
            - The volume is inaccessible. 
              
            ***HostConfigFault***: for all other configuration failures.
            
            ***ResourceInUse***: VFFS volume is being used.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostStorageSystem/{moId}/MountVmfsVolume:
    post:
      tags: [HostStorageSystem]
      summary: |2
        Mount the unmounted Vmfs volume.
      operationId: HostStorageSystem_MountVmfsVolume
      description: |2
        Mount the unmounted Vmfs volume.
        
        A newly discovered vmfs volume will be
        mounted unless, it has been explicitly unmounted. The default mount
        behavior of Vmfs volumes is auto-mount. See *HostStorageSystem.UnmountVmfsVolume*.
        
        mountVmfsVolume is part of the Unmount / Detach workflow used
        when a device will be permanently removed.
        See also *HostStorageSystem.DetachScsiLun*.
        
        ***Required privileges:*** Host.Config.Storage
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MountVmfsVolumeRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***NotFound***: if VMFS Uuid is not found on the host.
            
            ***InvalidState***: if
            - The volume is already mounted.
            - The volume is inaccessible. 
              
            ***HostConfigFault***: for all other configuration failures.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostStorageSystem/{moId}/MountVmfsVolumeEx_Task:
    post:
      tags: [HostStorageSystem]
      summary: |2
        Mount one or more VMFS volumes.
      operationId: HostStorageSystem_MountVmfsVolumeEx_Task
      description: |2
        Mount one or more VMFS volumes.
        
        This is an asynchronous, batch operation of
        mountVmfsVolume. Please see *HostStorageSystem.MountVmfsVolume*
        for operational details.
        
        ***Required privileges:*** Host.Config.Storage
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MountVmfsVolumeExRequestType'
      responses:
        '200':
          description: |2
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***HostConfigFault***: for host configuration failures.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HostConfigFault'

  /HostStorageSystem/{moId}/QueryAvailableSsds:
    post:
      tags: [HostStorageSystem]
      summary: |2
        Query the list SSD disks that can be used to contain a VFFS volume.
      operationId: HostStorageSystem_QueryAvailableSsds
      description: |2
        Query the list SSD disks that can be used to contain a VFFS volume.
        
        If the optional parameter name is supplied, queries for the SSD
        disks that can be used to contain extents of the specified VFFS volume. Otherwise,
        the method retrieves the SSD disks that can be used to contain the new VFFS volume.
        
        This operation will filter out SSD disks that are currently in use by an existing VFFS volume.
        
        ***Required privileges:*** Host.Config.Storage
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QueryAvailableSsdsRequestType'
      responses:
        '200':
          description: |2
            An array of data objects descrbing SSD disks.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/HostScsiDisk'
        '500':
          description: |2
            ***NotFound***: if the named VFFS volume is not found.
            
            ***InvalidArgument***: if named VFFS volume is not a VFFS volume
            
            ***HostConfigFault***: if unable to query disk information.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostStorageSystem/{moId}/QueryNFSUser:
    post:
      tags: [HostStorageSystem]
      summary: |2
        Query the NFS user configured on the esx host
      operationId: HostStorageSystem_QueryNFSUser
      description: |2
        Query the NFS user configured on the esx host
        
        ***Required privileges:*** Host.Config.Storage
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            UserInfo objects.
            See *HostNasVolumeUserInfo*
          content:
            application/json:
              schema:
                nullable: true
                $ref: '#/components/schemas/HostNasVolumeUserInfo'
        '500':
          description: |2
            ***HostConfigFault***: Unable to get NFS user due to host configuration
            problem.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HostConfigFault'

  /HostStorageSystem/{moId}/QueryPathSelectionPolicyOptions:
    post:
      tags: [HostStorageSystem]
      summary: |2
        Queries the set of path selection policy options.
      operationId: HostStorageSystem_QueryPathSelectionPolicyOptions
      description: |2
        Queries the set of path selection policy options.
        
        The set of policy
        options indicates what path selection policies can be used by a
        device managed by native multipathing. Devices managed through native
        multipathing are described in the *HostMultipathInfo* data
        object.
        
        Filtering capabilities are not currently present but may be added in
        the future.
        
        ***Required privileges:*** System.Read
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            The list of path selection policy descriptions that match the
            search criteria. Details about the policies will also be
            provided in accordance to the query specification.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/HostPathSelectionPolicyOption'
        '500':
          description: |2
            ***HostConfigFault***: for system configuration failures.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HostConfigFault'

  /HostStorageSystem/{moId}/QueryStorageArrayTypePolicyOptions:
    post:
      tags: [HostStorageSystem]
      summary: |2
        Queries the set of storage array type policy options.
      operationId: HostStorageSystem_QueryStorageArrayTypePolicyOptions
      description: |2
        Queries the set of storage array type policy options.
        
        The set of policy
        options indicates what storage array type policies can be used by a
        device managed by native multipathing. Devices managed through native
        multipathing are described in the *HostMultipathInfo* data
        object.
        
        Filtering capabilities are not currently present but may be added in
        the future.
        
        ***Required privileges:*** System.Read
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            The list of storage array type policy descriptions.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/HostStorageArrayTypePolicyOption'
        '500':
          description: |2
            ***HostConfigFault***: for system configuration failures.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HostConfigFault'

  /HostStorageSystem/{moId}/QueryUnresolvedVmfsVolume:
    post:
      tags: [HostStorageSystem]
      summary: |2
        Get the list of unbound VMFS volumes.
      operationId: HostStorageSystem_QueryUnresolvedVmfsVolume
      description: |2
        Get the list of unbound VMFS volumes.
        
        For sharing a volume across hosts, a VMFS volume is bound to its
        underlying block device storage. When a low level block copy is
        performed to copy or move the VMFS volume, the copied volume will
        be unbound.
        
        ***Required privileges:*** System.Read
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            An array of unbound VMFS volumes.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/HostUnresolvedVmfsVolume'

  /HostStorageSystem/{moId}/QueryVmfsConfigOption:
    post:
      tags: [HostStorageSystem]
      summary: |2
        Get the VMFS configuration options, including block size,
        unmap granularity.
      operationId: HostStorageSystem_QueryVmfsConfigOption
      description: |2
        Get the VMFS configuration options, including block size,
        unmap granularity.
        
        ***Required privileges:*** Host.Config.Storage
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            VMFS configuration options.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/VmfsConfigOption'

  /HostStorageSystem/{moId}/RefreshStorageSystem:
    post:
      tags: [HostStorageSystem]
      summary: |2
        Obtains the latest host storage information related to storage devices, topology,
        and file systems.
      operationId: HostStorageSystem_RefreshStorageSystem
      description: |2
        Obtains the latest host storage information related to storage devices, topology,
        and file systems.
        
        The ESX host updates its storage information asynchronously.
        
        This method may update the following inventory elements:
        - Devices and storage topology
          (*HostSystem*.*HostSystem.config*.*HostConfigInfo.storageDevice*).
        - VMFS and NFS datastores (*HostSystem*.*HostSystem.datastore*).
        - File system volumes
          (*HostSystem*.*HostSystem.config*.*HostConfigInfo.fileSystemVolume*).
          
        The Server performs asynchronous updates to the inventory. Use the
        *PropertyCollector*.*PropertyCollector.WaitForUpdatesEx*
        method to obtain the property changes.
        
        ***Required privileges:*** Host.Config.Storage
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '204':
          description: |2
            No Content

  /HostStorageSystem/{moId}/RemoveInternetScsiSendTargets:
    post:
      tags: [HostStorageSystem]
      summary: |2
        Removes Send Target entries from the host bus adapter discovery list.
      operationId: HostStorageSystem_RemoveInternetScsiSendTargets
      description: |2
        Removes Send Target entries from the host bus adapter discovery list.
        
        The DiscoveryProperty.sendTargetsDiscoveryEnabled must be set to true.
        If any of the targets provided as parameters are not found in
        the existing list, the other targets are removed and an exception
        is thrown.
        
        ***Required privileges:*** Host.Config.Storage
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RemoveInternetScsiSendTargetsRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***NotFound***: if at least one target was not found.
            
            ***HostConfigFault***: for all other configuration failures.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostStorageSystem/{moId}/RemoveInternetScsiStaticTargets:
    post:
      tags: [HostStorageSystem]
      summary: |2
        Removes static target entries from the host bus adapter discovery list.
      operationId: HostStorageSystem_RemoveInternetScsiStaticTargets
      description: |2
        Removes static target entries from the host bus adapter discovery list.
        
        The DiscoveryProperty.staticTargetDiscoveryEnabled must be set to true.
        If any of the targets provided as parameters are not found in
        the existing list, the other targets are removed and an exception
        is thrown.
        
        ***Required privileges:*** Host.Config.Storage
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RemoveInternetScsiStaticTargetsRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***NotFound***: if at least one target was not found.
            
            ***HostConfigFault***: for all other configuration failures.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostStorageSystem/{moId}/RemoveNvmeOverRdmaAdapter:
    post:
      tags: [HostStorageSystem]
      summary: |2
        Removes a software NVME over RDMA adapter.
      operationId: HostStorageSystem_RemoveNvmeOverRdmaAdapter
      description: |2
        Removes a software NVME over RDMA adapter.
        
        ***Required privileges:*** Host.Config.Storage
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RemoveNvmeOverRdmaAdapterRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***NotFound***: if the given HBA could not be found.
            
            ***InvalidArgument***: if the given HBA is not an NVMe over RDMA HBA.
            
            ***ResourceInUse***: if the given HBA is in use.
            
            ***HostConfigFault***: if the host is unable to remove the given HBA.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostStorageSystem/{moId}/RemoveSoftwareAdapter:
    post:
      tags: [HostStorageSystem]
      summary: |2
        Removes a software host bus adapter, if the adapter type allows it.
      operationId: HostStorageSystem_RemoveSoftwareAdapter
      description: |2
        Removes a software host bus adapter, if the adapter type allows it.
        
        ***Since:*** vSphere API Release 7.0.3.0
        
        ***Required privileges:*** Host.Config.Storage
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RemoveSoftwareAdapterRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***NotFound***: if the given HBA could not be found.
            
            ***InvalidArgument***: if the given adapter type cannot be removed.
            
            ***ResourceInUse***: if the given HBA is in use.
            
            ***HostConfigFault***: if the host is unable to remove the given HBA.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostStorageSystem/{moId}/RescanAllHba:
    post:
      tags: [HostStorageSystem]
      summary: |2
        Scans all host bus adapters to obtain the current list of devices and device topology.
      operationId: HostStorageSystem_RescanAllHba
      description: |2
        Scans all host bus adapters to obtain the current list of devices and device topology.
        
        The *HostStorageSystem.RescanAllHba* method looks for new devices,
        removed devices, and path changes.
        
        This method may update the following inventory elements:
        - Devices and storage topology
          (*HostSystem*.*HostSystem.config*.*HostConfigInfo.storageDevice*).
        - VMFS and NFS datastores (*HostSystem*.*HostSystem.datastore*).
        - File system volumes (*HostSystem*.*HostSystem.config*.*HostConfigInfo.fileSystemVolume*).
          
        The Server performs asynchronous updates to the inventory. Use the
        *PropertyCollector*.*PropertyCollector.WaitForUpdatesEx*
        method to obtain the property changes.
        
        ***Required privileges:*** Host.Config.Storage
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***HostConfigFault***: if rescan failed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HostConfigFault'

  /HostStorageSystem/{moId}/RescanHba:
    post:
      tags: [HostStorageSystem]
      summary: |2
        Issues a request to rescan a specific host bus adapter
        for new storage devices.
      operationId: HostStorageSystem_RescanHba
      description: |2
        Issues a request to rescan a specific host bus adapter
        for new storage devices.
        
        ***Required privileges:*** Host.Config.Storage
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RescanHbaRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***NotFound***: if the host bus adapter cannot be found.
            
            ***HostConfigFault***: for all other configuration failures.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostStorageSystem/{moId}/RescanVffs:
    post:
      tags: [HostStorageSystem]
      summary: |2
        Rescans for new VFFS.
      operationId: HostStorageSystem_RescanVffs
      description: |2
        Rescans for new VFFS.
        
        The *HostStorageSystem.RefreshStorageSystem* method also performs a VFFS rescan.
        
        *HostStorageSystem.RescanVffs* may update the
        *HostSystem*.*HostSystem.config*.*HostConfigInfo.fileSystemVolume* property.
        The Server performs asynchronous updates to the inventory. Use the
        *PropertyCollector*.*PropertyCollector.WaitForUpdatesEx*
        method to obtain the property changes.
        
        ***Required privileges:*** Host.Config.Storage
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***HostConfigFault***: if configuration fails.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HostConfigFault'

  /HostStorageSystem/{moId}/RescanVmfs:
    post:
      tags: [HostStorageSystem]
      summary: |2
        Rescans for new Virtual Machine File Systems (VMFS).
      operationId: HostStorageSystem_RescanVmfs
      description: |2
        Rescans for new Virtual Machine File Systems (VMFS).
        
        The *HostStorageSystem.RefreshStorageSystem* method also performs a VMFS rescan.
        
        *HostStorageSystem.RescanVmfs* may update the
        *HostSystem*.*HostSystem.config*.*HostConfigInfo.fileSystemVolume* property.
        The Server performs asynchronous updates to the inventory. Use the
        *PropertyCollector*.*PropertyCollector.WaitForUpdatesEx*
        method to obtain the property changes.
        
        ***Required privileges:*** Host.Config.Storage
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***HostConfigFault***: if configuration fails.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HostConfigFault'

  /HostStorageSystem/{moId}/ResolveMultipleUnresolvedVmfsVolumes:
    post:
      tags: [HostStorageSystem]
      summary: |2
        Resignature or 'Force Mount' list of unbound VMFS volumes.
      operationId: HostStorageSystem_ResolveMultipleUnresolvedVmfsVolumes
      description: |2
        Resignature or 'Force Mount' list of unbound VMFS volumes.
        
        To safely enable sharing of the volume across hosts, a VMFS volume
        is bound to its underlying block device storage. When a low level
        block copy is performed to copy or move the VMFS volume, the copied
        volume will be unbound. In order for the VMFS volume to be usable,
        a resolution operation is needed to determine whether the VMFS volume
        should be treated as a new volume or not and what extents compose
        that volume in the event there is more than one unbound volume.
        
        Resignature results in a new VMFS volume on the host.
        Operations performed at the StorageSystem interface apply only to a
        specific host. Hence, callers of this method are responsible for
        issuing rescan operations to detect the new VMFS volume on other hosts.
        Alternatively, callers that want VirtualCenter to handle rescanning
        the necessary hosts should use the DatastoreSystem interface.
        
        When user wants to keep the original Vmfs Uuid and mount it
        on the host, set the 'resolutionSpec.uuidResolution' to 'forceMounted'
        This is per-host operation.
        It will return an array of ResolutionResult describing success or failure
        associated with each specification.
        
        ***Required privileges:*** Host.Config.Storage
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ResolveMultipleUnresolvedVmfsVolumesRequestType'
      responses:
        '200':
          description: |2
            A data object that represents the VMFS file system and return status value.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/HostUnresolvedVmfsResolutionResult'
        '500':
          description: |2
            ***HostConfigFault***: if batch operation fails on the host.
            Because the returned array of ResolutionResult contains the new VMFS volume
            or fault for each operation, as of vSphere API 5.x, we won't throw fault when
            batch operation fails.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HostConfigFault'

  /HostStorageSystem/{moId}/ResolveMultipleUnresolvedVmfsVolumesEx_Task:
    post:
      tags: [HostStorageSystem]
      summary: |2
        Resignature or 'Force Mount' list of unbound VMFS volumes.
      operationId: HostStorageSystem_ResolveMultipleUnresolvedVmfsVolumesEx_Task
      description: |2
        Resignature or 'Force Mount' list of unbound VMFS volumes.
        
        To safely enable sharing of the volume across hosts, a VMFS volume
        is bound to its underlying block device storage. When a low level
        block copy is performed to copy or move the VMFS volume, the copied
        volume will be unbound. In order for the VMFS volume to be usable,
        a resolution operation is needed to determine whether the VMFS volume
        should be treated as a new volume or not and what extents compose
        that volume in the event there is more than one unbound volume.
        
        Resignature results in a new VMFS volume on the host.
        Operations performed at the *HostStorageSystem* interface apply only to a
        specific host. Hence, callers of this method are responsible for
        issuing rescan operations to detect the new VMFS volume on other hosts.
        Alternatively, callers that want VirtualCenter to handle rescanning
        the necessary hosts should use the *HostDatastoreSystem* interface.
        
        When user wants to keep the original VMFS UUID and mount it
        on the host, set the resolutionSpec.uuidResolution
        (*HostUnresolvedVmfsResolutionSpec.uuidResolution*)
        to *forceMount*.
        This is per-host operation.
        
        It will return an array of *HostUnresolvedVmfsResolutionResult*
        describing success or failure associated with each specification.
        
        This method behaves the same as *HostStorageSystem.ResolveMultipleUnresolvedVmfsVolumes*
        except that it returns a task to support monitoring the operation.
        This is important for operations with large number of
        unresolved volumes which may take potentially dozens of minutes to complete.
        
        ***Required privileges:*** Host.Config.Storage
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ResolveMultipleUnresolvedVmfsVolumesExRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor the
            operation. The *info.result* property in the
            *Task* contains an array of *HostUnresolvedVmfsResolutionResult*
            describing success or failure associated with each specification.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***HostConfigFault***: if batch operation fails on the host.
            Because the returned array of ResolutionResult contains the new VMFS volume
            or fault for each operation, as of vSphere API 5.x, we won't throw fault when
            batch operation fails.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HostConfigFault'

  /HostStorageSystem/{moId}/RetrieveDiskPartitionInfo:
    post:
      tags: [HostStorageSystem]
      summary: |2
        Gets the partition information for the disks named by the device names.
      operationId: HostStorageSystem_RetrieveDiskPartitionInfo
      description: |2
        Gets the partition information for the disks named by the device names.
        
        ***Required privileges:*** System.Read
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RetrieveDiskPartitionInfoRequestType'
      responses:
        '200':
          description: |2
            An array of information about the partitions.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/HostDiskPartitionInfo'

  /HostStorageSystem/{moId}/setCustomValue:
    post:
      tags: [HostStorageSystem]
      summary: |2
        Assigns a value to a custom field.
      operationId: HostStorageSystem_setCustomValue
      description: |2
        Assigns a value to a custom field.
        
        The setCustomValue method requires
        whichever updatePrivilege is defined as one of the
        *CustomFieldDef.fieldInstancePrivileges*
        for the CustomFieldDef whose value is being changed.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/setCustomValueRequestType'
      responses:
        '204':
          description: |2
            No Content

  /HostStorageSystem/{moId}/SetMultipathLunPolicy:
    post:
      tags: [HostStorageSystem]
      summary: |2
        Updates the path selection policy for a Logical Unit.
      operationId: HostStorageSystem_SetMultipathLunPolicy
      description: |2
        Updates the path selection policy for a Logical Unit.
        
        Use the LUN uuid from *HostMultipathInfoLogicalUnit*.
        
        ***Required privileges:*** Host.Config.Storage
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SetMultipathLunPolicyRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***NotFound***: if the LUN could not be found.
            
            ***InvalidArgument***: if the policy is invalid.
            
            ***HostConfigFault***: for all other configuration failures.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostStorageSystem/{moId}/SetNFSUser:
    post:
      tags: [HostStorageSystem]
      summary: |2
        Set NFS username and password on the host.
      operationId: HostStorageSystem_SetNFSUser
      description: |2
        Set NFS username and password on the host.
        
        The specified password is
        stored encrypted at the host and overwrites any previous password
        configuration. This information is only needed when the host has
        mounted NFS volumes with security types that require user
        credentials for accessing data. The password is used to acquire
        credentials that the NFS client needs to use in order to secure NFS
        traffic using RPCSECGSS. The client will access files on all volumes
        mounted on this host (that are mounted with the relevant security
        type) on behalf of specified user.
        
        At present, this API supports only file system NFSv4.1.
        
        ***Required privileges:*** Host.Config.Storage
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SetNFSUserRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***HostConfigFault***: Unable to set user/passwords due to host configuration
            problem.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HostConfigFault'

  /HostStorageSystem/{moId}/TurnDiskLocatorLedOff_Task:
    post:
      tags: [HostStorageSystem]
      summary: |2
        Turn off one or more disk locator LEDs.
      operationId: HostStorageSystem_TurnDiskLocatorLedOff_Task
      description: |2
        Turn off one or more disk locator LEDs.
        
        This is a batch operation to turn off one or more disk locator LEDs,
        which is the opposite operation of *HostStorageSystem.TurnDiskLocatorLedOn_Task*
        
        ***Required privileges:*** Host.Config.Storage
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TurnDiskLocatorLedOffRequestType'
      responses:
        '200':
          description: |2
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***HostConfigFault***: for host configuration failures.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HostConfigFault'

  /HostStorageSystem/{moId}/TurnDiskLocatorLedOn_Task:
    post:
      tags: [HostStorageSystem]
      summary: |2
        Turn on one or more disk locator LEDs, duration is the maximum that
        hardware can support.
      operationId: HostStorageSystem_TurnDiskLocatorLedOn_Task
      description: |2
        Turn on one or more disk locator LEDs, duration is the maximum that
        hardware can support.
        
        This is a batch operation to turn on one or more disk locator LEDs,
        so that user can easily locate the ScsiDisk on physical infrastructure.
        
        ***Required privileges:*** Host.Config.Storage
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TurnDiskLocatorLedOnRequestType'
      responses:
        '200':
          description: |2
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***HostConfigFault***: for host configuration failures.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HostConfigFault'

  /HostStorageSystem/{moId}/UnmapVmfsVolumeEx_Task:
    post:
      tags: [HostStorageSystem]
      summary: |2
        Unmap one or more VMFS volumes.
      operationId: HostStorageSystem_UnmapVmfsVolumeEx_Task
      description: |2
        Unmap one or more VMFS volumes.
        
        This is an asynchronous, batch operation.
        The operation unmaps free blocks in each VMFS volume.
        
        ***Required privileges:*** Host.Config.Storage
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UnmapVmfsVolumeExRequestType'
      responses:
        '200':
          description: |2
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***HostConfigFault***: for host configuration failures.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HostConfigFault'

  /HostStorageSystem/{moId}/UnmountForceMountedVmfsVolume:
    post:
      tags: [HostStorageSystem]
      summary: |2
        Unmount the 'forceMounted' Vmfs volume.
      operationId: HostStorageSystem_UnmountForceMountedVmfsVolume
      description: |2
        Unmount the 'forceMounted' Vmfs volume.
        
        When a low level block copy is performed to copy or move the
        VMFS volume, the copied volume is unresolved. For the VMFS
        volume to be usable, a resolution operation is applied. As
        part of resolution operation, user may decide to keep the
        original VMFS Uuid. Once the resolution is applied, the VMFS
        volume is mounted on the host for its use. User can unmount
        the VMFS volume if it is not being used by any registered
        VMs.
        
        ***Required privileges:*** Host.Config.Storage
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UnmountForceMountedVmfsVolumeRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***NotFound***: if VMFS Uuid is not found on the host.
            
            ***HostConfigFault***: for all other configuration failures.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostStorageSystem/{moId}/UnmountVffsVolume:
    post:
      tags: [HostStorageSystem]
      summary: |2
        Unmount the VFFS volume.
      operationId: HostStorageSystem_UnmountVffsVolume
      description: |2
        Unmount the VFFS volume.
        
        An unmounted volume cannot be used for any
        filesystem operation requiring I/O. In contrast to removal, this
        operation does not destroy or alter partitions on which VFFS volumes
        reside. The mountState will be persisted across filesystem rescans and
        host reboots. See *HostStorageSystem.MountVffsVolume*.
        
        unmountVffsVolume is part of the Unmount / Detach workflow used
        when a device will be permanently removed.
        See also *HostStorageSystem.DetachScsiLun*.
        
        ***Required privileges:*** Host.Config.Storage
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UnmountVffsVolumeRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***NotFound***: if VFFS uuid is not found on the host.
            
            ***InvalidState***: if
            - The volume is already unmounted.
            - The volume is inaccessible.
              
            ***ResourceInUse***: if
            - 1 or more programs have I/O outstanding on this volume.
              
            ***HostConfigFault***: for all other configuration failures.
            
            ***ResourceInUse***: VFFS volume is being used.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostStorageSystem/{moId}/UnmountVmfsVolume:
    post:
      tags: [HostStorageSystem]
      summary: |2
        Unmount the Vmfs volume.
      operationId: HostStorageSystem_UnmountVmfsVolume
      description: |2
        Unmount the Vmfs volume.
        
        An unmounted volume cannot be used for any
        filesystem operation requiring I/O. In contrast to removal, this
        operation does not destroy or alter partitions on which vmfs volumes
        reside. The mountState will be persisted across filesystem rescans and
        host reboots. See *HostStorageSystem.MountVmfsVolume*.
        
        unmountVmfsVolume is part of the Unmount / Detach workflow used
        when a device will be permanently removed.
        
                                 Mounted Vmfs Volume
                unmountVmfsVolume  |  ^ mountVmfsVolume
                                   V  |
                                 Unmounted Vmfs Volume
            
                     Attached Scsi Device (honors I/O)
                detachScsiLun      |  ^ attachScsiLun
                                   V  |
              Detached Scsi Device (does not honor I/O)
        
        It is safe to unprovision a Lun from the Storage array \*only\*
        after a Scsi device is detached.
        
        The best practice for decommisioning a Lun would be to find
        out the set of subsystems that a Lun is being used for.
        Many of the systems are listed as exceptions in the
        function documentation.
        
        One typical workflow could be:
        - Find out if the device is used as a Vmfs Extent. (See VmfsVolume.Extent API)
        - Unmount the Vmfs Volume.
        - Find out if device is used by the Diagnostic system (See Diagnostic System API).
        - Deactivate the diagnostic system, if it is being used.
        - Find out if this device is used to back a VM's RDM (See VirtualMachine API).
        - Remove this device from the VM.
        - Detach the Scsi device.
        - On success, it is safe to decommision the Lun at this point.
          
        See also *HostStorageSystem.DetachScsiLun*.
        
        ***Required privileges:*** Host.Config.Storage
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UnmountVmfsVolumeRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***NotFound***: if VMFS Uuid is not found on the host.
            
            ***InvalidState***: if
            - The volume is already unmounted.
            - The volume is inaccessible.
              
            ***ResourceInUse***: if
            - There is any VM registered on this volume.
            - 1 or more programs have I/O outstanding on this volume.
              
            ***HostConfigFault***: for all other configuration failures.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostStorageSystem/{moId}/UnmountVmfsVolumeEx_Task:
    post:
      tags: [HostStorageSystem]
      summary: |2
        Unmount one or more VMFS volumes.
      operationId: HostStorageSystem_UnmountVmfsVolumeEx_Task
      description: |2
        Unmount one or more VMFS volumes.
        
        This is an asynchronous, batch operation of
        unmountVmfsVolume. Please see *HostStorageSystem.UnmountVmfsVolume*
        for operational details.
        
        ***Required privileges:*** Host.Config.Storage
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UnmountVmfsVolumeExRequestType'
      responses:
        '200':
          description: |2
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***HostConfigFault***: for host configuration failures.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HostConfigFault'

  /HostStorageSystem/{moId}/UpdateDiskPartitions:
    post:
      tags: [HostStorageSystem]
      summary: |2
        Changes the partitions on the disk by supplying a partition specification
        and the device name.
      operationId: HostStorageSystem_UpdateDiskPartitions
      description: |2
        Changes the partitions on the disk by supplying a partition specification
        and the device name.
        
        ***Required privileges:*** Host.Config.Storage
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateDiskPartitionsRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***NotFound***: if the device could not be found.
            
            ***InvalidArgument***: if the spec is invalid.
            
            ***HostConfigFault***: for all other configuration failures.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostStorageSystem/{moId}/UpdateHppMultipathLunPolicy:
    post:
      tags: [HostStorageSystem]
      summary: |2
        Updates the path selection policy for a HPP claimed Logical Unit.
      operationId: HostStorageSystem_UpdateHppMultipathLunPolicy
      description: |2
        Updates the path selection policy for a HPP claimed Logical Unit.
        
        Use the LUN uuid from *HostMultipathInfoLogicalUnit*.
        
        ***Required privileges:*** Host.Config.Storage
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateHppMultipathLunPolicyRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***NotFound***: if the LUN could not be found.
            
            ***InvalidArgument***: if the policy is invalid.
            
            ***HostConfigFault***: for all other configuration failures.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostStorageSystem/{moId}/UpdateInternetScsiAdvancedOptions:
    post:
      tags: [HostStorageSystem]
      summary: |2
        Updates the advanced options the iSCSI host bus adapter or the
        discovery addresses and targets associated with it.
      operationId: HostStorageSystem_UpdateInternetScsiAdvancedOptions
      description: |2
        Updates the advanced options the iSCSI host bus adapter or the
        discovery addresses and targets associated with it.
        
        ***Required privileges:*** Host.Config.Storage
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateInternetScsiAdvancedOptionsRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***NotFound***: if the host bus adapter could not be found.
            
            ***HostConfigFault***: for all other configuration failures.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostStorageSystem/{moId}/UpdateInternetScsiAlias:
    post:
      tags: [HostStorageSystem]
      summary: |2
        Updates the alias of an iSCSI host bus adapter.
      operationId: HostStorageSystem_UpdateInternetScsiAlias
      description: |2
        Updates the alias of an iSCSI host bus adapter.
        
        ***Required privileges:*** Host.Config.Storage
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateInternetScsiAliasRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***NotFound***: if the host bus adapter could not be found.
            
            ***HostConfigFault***: for all other configuration failures.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostStorageSystem/{moId}/UpdateInternetScsiAuthenticationProperties:
    post:
      tags: [HostStorageSystem]
      summary: |2
        Updates the authentication properties for one or more targets or
        discovery addresses associated with an iSCSI host bus adapter.
      operationId: HostStorageSystem_UpdateInternetScsiAuthenticationProperties
      description: |2
        Updates the authentication properties for one or more targets or
        discovery addresses associated with an iSCSI host bus adapter.
        
        ***Required privileges:*** Host.Config.Storage
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateInternetScsiAuthenticationPropertiesRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***NotFound***: if the host bus adapter could not be found.
            
            ***HostConfigFault***: for all other configuration failures.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostStorageSystem/{moId}/UpdateInternetScsiDigestProperties:
    post:
      tags: [HostStorageSystem]
      summary: |2
        Updates the digest properties for the iSCSI host bus adapter or the
        discovery addresses and targets associated with it.
      operationId: HostStorageSystem_UpdateInternetScsiDigestProperties
      description: |2
        Updates the digest properties for the iSCSI host bus adapter or the
        discovery addresses and targets associated with it.
        
        ***Required privileges:*** Host.Config.Storage
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateInternetScsiDigestPropertiesRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***NotFound***: if the host bus adapter could not be found.
            
            ***HostConfigFault***: for all other configuration failures.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostStorageSystem/{moId}/UpdateInternetScsiDiscoveryProperties:
    post:
      tags: [HostStorageSystem]
      summary: |2
        Updates the Discovery properties for an iSCSI host bus adapter.
      operationId: HostStorageSystem_UpdateInternetScsiDiscoveryProperties
      description: |2
        Updates the Discovery properties for an iSCSI host bus adapter.
        
        ***Required privileges:*** Host.Config.Storage
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateInternetScsiDiscoveryPropertiesRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***NotFound***: if the host bus adapter could not be found.
            
            ***HostConfigFault***: for all other configuration failures.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostStorageSystem/{moId}/UpdateInternetScsiIPProperties:
    post:
      tags: [HostStorageSystem]
      summary: |2
        Updates the IP properties for an iSCSI host bus adapter.
      operationId: HostStorageSystem_UpdateInternetScsiIPProperties
      description: |2
        Updates the IP properties for an iSCSI host bus adapter.
        
        ***Required privileges:*** Host.Config.Storage
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateInternetScsiIPPropertiesRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***NotFound***: if the host bus adapter could not be found.
            
            ***HostConfigFault***: for all other configuration failures.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostStorageSystem/{moId}/UpdateInternetScsiName:
    post:
      tags: [HostStorageSystem]
      summary: |2
        Updates the name of an iSCSI host bus adapter.
      operationId: HostStorageSystem_UpdateInternetScsiName
      description: |2
        Updates the name of an iSCSI host bus adapter.
        
        ***Required privileges:*** Host.Config.Storage
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateInternetScsiNameRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***NotFound***: if the host bus adapter could not be found.
            
            ***HostConfigFault***: for all other configuration failures.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostStorageSystem/{moId}/UpdateScsiLunDisplayName:
    post:
      tags: [HostStorageSystem]
      summary: |2
        Update the mutable display name associated with a ScsiLun.
      operationId: HostStorageSystem_UpdateScsiLunDisplayName
      description: |2
        Update the mutable display name associated with a ScsiLun.
        
        The ScsiLun
        to be updated is identified using the specified uuid.
        
        ***Required privileges:*** Host.Config.Storage
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateScsiLunDisplayNameRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***NotFound***: if the device could not be found.
            
            ***InvalidName***: if the name does not meet name restrictions such
            as an 80 character limit.
            
            ***DuplicateName***: if the name does not name uniqueness restrictions.
            Name uniqueness restrictions will vary based on the context in
            which this method is invoked.
            
            When this method is invoked on a host directly, no uniqueness
            checks will be performed on the name.
            
            When this method is invoked on a VC server, uniqueness checks
            will be performed on the name. The uniqueness check will
            ensure that the name is unique with respect to the entire
            VC instance.
            
            ***HostConfigFault***: for all other configuration failures.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostStorageSystem/{moId}/UpdateSoftwareInternetScsiEnabled:
    post:
      tags: [HostStorageSystem]
      summary: |2
        Enables or disables Software iSCSI.
      operationId: HostStorageSystem_UpdateSoftwareInternetScsiEnabled
      description: |2
        Enables or disables Software iSCSI.
        
        ***Required privileges:*** Host.Config.Storage
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateSoftwareInternetScsiEnabledRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***HostConfigFault***: for any configuration failure.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HostConfigFault'

  /HostStorageSystem/{moId}/UpdateVmfsUnmapBandwidth:
    post:
      tags: [HostStorageSystem]
      summary: |2
        Update VMFS unmap bandwidth.
      operationId: HostStorageSystem_UpdateVmfsUnmapBandwidth
      description: |2
        Update VMFS unmap bandwidth.
        
        This API updates the value of
        *VmfsUnmapBandwidthSpec.policy*,
        *VmfsUnmapBandwidthSpec.fixedValue*,
        *VmfsUnmapBandwidthSpec.dynamicMin*,
        *VmfsUnmapBandwidthSpec.dynamicMax*.
        
        ***Required privileges:*** Host.Config.Storage
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateVmfsUnmapBandwidthRequestType'
      responses:
        '204':
          description: |2
            No Content

  /HostStorageSystem/{moId}/UpdateVmfsUnmapPriority:
    post:
      tags: [HostStorageSystem]
      summary: |2
        Update VMFS unmap priority.
      operationId: HostStorageSystem_UpdateVmfsUnmapPriority
      description: |2
        Update VMFS unmap priority.
        
        This API updates the value of *HostVmfsVolume.unmapPriority*.
        
        ***Required privileges:*** Host.Config.Storage
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateVmfsUnmapPriorityRequestType'
      responses:
        '204':
          description: |2
            No Content

  /HostStorageSystem/{moId}/UpgradeVmLayout:
    post:
      tags: [HostStorageSystem]
      summary: |2
        Iterates over all registered virtual machines.
      operationId: HostStorageSystem_UpgradeVmLayout
      description: |2
        Iterates over all registered virtual machines.
        
        For each VM which .vmx file
        is located on the service console and all disks are available on VMFS3 or NAS,
        it will relocate the disks into directories if stored in the ROOT, and
        relocate the VMX file into the directory too. Events are logged for each
        virtual machine that is relocated.
        
        On ESXi systems, this operation has no effect.
        
        ***Required privileges:*** Host.Config.Storage
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '204':
          description: |2
            No Content

  /HostStorageSystem/{moId}/UpgradeVmfs:
    post:
      tags: [HostStorageSystem]
      summary: |2
        Upgrades the VMFS to the *latest
        supported VMFS version*.
      operationId: HostStorageSystem_UpgradeVmfs
      description: |2
        Upgrades the VMFS to the *latest
        supported VMFS version*.
        
        Prerequisite:  
        All hosts that have mounted the volume must support the VMFS
        version to which the volume will be upgraded.
        
        ***Required privileges:*** Host.Config.Storage
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpgradeVmfsRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***NotFound***: if the VMFS cannot be found or is unmounted.
            
            ***HostConfigFault***: if the prerequisite is not satisfied
            or for all other configuration
            failures.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostStorageSystem/{moId}/availableField:
    get:
      tags: [HostStorageSystem]
      summary: |2
        List of custom field definitions that are valid for the object's type.
      operationId: HostStorageSystem_getAvailableField
      description: |2
        List of custom field definitions that are valid for the object's type.
        
        The fields are sorted by *CustomFieldDef.name*.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/CustomFieldDef'

  /HostStorageSystem/{moId}/fileSystemVolumeInfo:
    get:
      tags: [HostStorageSystem]
      summary: |2
        File system volume information for the host.
      operationId: HostStorageSystem_getFileSystemVolumeInfo
      description: |2
        File system volume information for the host.
        
        See the
        *FileSystemVolumeInfo* data
        object type for more information.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HostFileSystemVolumeInfo'

  /HostStorageSystem/{moId}/multipathStateInfo:
    get:
      tags: [HostStorageSystem]
      summary: |2
        Runtime information about the state of a multipath path.
      operationId: HostStorageSystem_getMultipathStateInfo
      description: |2
        Runtime information about the state of a multipath path.
        
        A null value will be returned if path state information is not available
        for this system.
        
        In systems prior to the plug-store architecture, the state of a path
        may be accessible on the *HostMultipathInfo* data object
        of the *HostStorageSystem.storageDeviceInfo* property.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                $ref: '#/components/schemas/HostMultipathStateInfo'

  /HostStorageSystem/{moId}/storageDeviceInfo:
    get:
      tags: [HostStorageSystem]
      summary: |2
        Host storage information up to the device level.
      operationId: HostStorageSystem_getStorageDeviceInfo
      description: |2
        Host storage information up to the device level.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                $ref: '#/components/schemas/HostStorageDeviceInfo'

  /HostStorageSystem/{moId}/systemFile:
    get:
      tags: [HostStorageSystem]
      summary: |2
        Datastore paths of files used by the host system on
        mounted volumes, for instance, the COS vmdk file of the
        host.
      operationId: HostStorageSystem_getSystemFile
      description: |2
        Datastore paths of files used by the host system on
        mounted volumes, for instance, the COS vmdk file of the
        host.
        
        For information on datastore paths, see *Datastore*.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  type: string

  /HostStorageSystem/{moId}/value:
    get:
      tags: [HostStorageSystem]
      summary: |2
        List of custom field values.
      operationId: HostStorageSystem_getValue
      description: |2
        List of custom field values.
        
        Each value uses a key to associate
        an instance of a *CustomFieldStringValue* with
        a custom field definition.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/CustomFieldValue'

  /HostSystem/{moId}/AcquireCimServicesTicket:
    post:
      tags: [HostSystem]
      summary: |2
        Creates and returns a credential used to establish a remote
        connection to a Web Based Management (CIM) interface.
      operationId: HostSystem_AcquireCimServicesTicket
      description: |2
        Creates and returns a credential used to establish a remote
        connection to a Web Based Management (CIM) interface.
        
        Valid only
        when ESXi wbem authentication mode is set to password.
        The ticket provides the port for the service and sslThumbprint should
        be used by client to validate ssl connection. This ticket is valid for 2
        minutes then will expire and is non-renewable.
        
        ***Required privileges:*** Host.Cim.CimInteraction
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HostServiceTicket'

  /HostSystem/{moId}/ConfigureCryptoKey:
    post:
      tags: [HostSystem]
      summary: |2
        Sets/changes the key to be used for coredump encryption
        and puts the host in *safe* state.
      operationId: HostSystem_ConfigureCryptoKey
      description: |2
        Sets/changes the key to be used for coredump encryption
        and puts the host in *safe* state.
        
        This function will make the host crypto safe and unlock all encrypted
        VMs on the host. When the encryption on the host is enabled for the
        first time after adding it to vCenter Server, this method will start
        sending asynchronously all the encryption keys for VMs on the host and
        cluster to unlock encrypted VMs.
        This API behaves differently on the ESXi host vs. the vCenter server.
        Before vSphere 7.0, it is not supported on host, and invoking directly
        on a host will throw NotSupported fault. Since vSphere 7.0, calling the
        API on host will make the host crypto safe, but the parameter should not
        be blank and should only be a key id from a trusted key provider.
        
        ***Required privileges:*** Cryptographer.RegisterHost
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ConfigureCryptoKeyRequestType'
      responses:
        '204':
          description: |2
            No Content

  /HostSystem/{moId}/Destroy_Task:
    post:
      tags: [HostSystem]
      summary: |2
        Destroys this object, deleting its contents and removing it from its parent
        folder (if any).
      operationId: HostSystem_Destroy_Task
      description: |2
        Destroys this object, deleting its contents and removing it from its parent
        folder (if any).
        
        NOTE: The appropriate privilege must be held on the parent of the destroyed
        entity as well as the entity itself.
        This method can throw one of several exceptions. The exact set of exceptions
        depends on the kind of entity that is being removed. See comments for
        each entity for more information on destroy behavior.
        
        ***Required privileges:*** Host.Inventory.RemoveHostFromCluster
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor the
            operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            Failure
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostSystem/{moId}/DisconnectHost_Task:
    post:
      tags: [HostSystem]
      summary: |2
        Disconnects from a host and instructs the server to stop sending heartbeats.
      operationId: HostSystem_DisconnectHost_Task
      description: |2
        Disconnects from a host and instructs the server to stop sending heartbeats.
        
        ***Required privileges:*** Host.Config.Connection
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor the
            operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'

  /HostSystem/{moId}/EnableCrypto:
    post:
      tags: [HostSystem]
      summary: |2
        Sets/changes the key to be used for coredump encryption
        and puts the host in *safe* state
        Note: *HostSystem.PrepareCrypto* must be called first
      operationId: HostSystem_EnableCrypto
      description: |2
        Sets/changes the key to be used for coredump encryption
        and puts the host in *safe* state
        Note: *HostSystem.PrepareCrypto* must be called first
        
        ***Required privileges:*** Cryptographer.RegisterHost
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EnableCryptoRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***InvalidState***: if the host is in
            *incapable* state
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InvalidState'

  /HostSystem/{moId}/EnterLockdownMode:
    post:
      tags: [HostSystem]
      summary: |2
        Modifies the permissions on the host, so that it will only be accessible
        through local console or an authorized centralized management application.
      operationId: HostSystem_EnterLockdownMode
      deprecated: true
      description: |2
        Deprecated as of vSphere API 6.0, use
        *HostAccessManager.ChangeLockdownMode*.
        
        Modifies the permissions on the host, so that it will only be accessible
        through local console or an authorized centralized management application.
        
        Any user defined permissions found on the host are lost.
        
        Access via a VI client connected to the host is blocked.
        Access though other services running on the host is also blocked.
        
        If the operation is successful, *HostConfigInfo.adminDisabled*
        will be set to true. This API is not supported on the host, If invoked
        directly on a host, a NotSupported fault will be thrown.
        
        See also *AuthorizationManager*for more information on permissions..
        
        ***Required privileges:*** Host.Config.Settings
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***AdminDisabled***: If the host's Administrator permission has been
            disabled.
            
            ***DisableAdminNotSupported***: If invoked directly on the host or the
            host doesn't support this operation.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HostConfigFault'

  /HostSystem/{moId}/EnterMaintenanceMode_Task:
    post:
      tags: [HostSystem]
      summary: |2
        Puts the host in maintenance mode.
      operationId: HostSystem_EnterMaintenanceMode_Task
      description: |2
        Puts the host in maintenance mode.
        
        While this task is running and when the host is
        in maintenance mode, no virtual machines can be powered on and no provisioning
        operations can be performed on the host. Once the call completes, it is safe to
        turn off a host without disrupting any virtual machines.
        
        The task completes once there are no powered-on virtual machines on the host and
        no provisioning operations in progress on the host. The operation does not
        directly initiate any operations to evacuate or power-down powered-on virtual machines.
        However, if the host is part of a cluster with VMware DRS enabled, DRS provides
        migration recommendations to evacuate the powered-on virtual machines. If DRS is in
        fully-automatic mode, these are automatically scheduled.
        
        If the host is part of a cluster and the task is issued through VirtualCenter with
        evacuatePoweredOffVms set to true, the task will not succeed unless all the
        powered-off virtual machines are reregistered to other hosts. If VMware DRS is
        enabled, vCenter Server will automatically evacuate powered-off virtual machines.
        
        If this API is called directly on the ESXi host, then the user is responsible
        for powering off, suspending or evacuating all powered-on virtual machines.
        The task is cancellable.
        
        ***Required privileges:*** Host.Config.Maintenance
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EnterMaintenanceModeRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor the
            operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***InvalidState***: if the host is already in maintenance mode.
            
            ***Timedout***: if the operation timed out.
            
            ***RequestCanceled***: if the operation is canceled.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostSystem/{moId}/PowerDownHostToStandBy_Task:
    post:
      tags: [HostSystem]
      summary: |2
        Puts the host in standby mode, a mode in which the host is in a
        standby state from which it can be powered up remotely.
      operationId: HostSystem_PowerDownHostToStandBy_Task
      description: |2
        Puts the host in standby mode, a mode in which the host is in a
        standby state from which it can be powered up remotely.
        
        While
        this task is running, no virtual machines can be powered on and
        no provisioning operations can be performed on the host.
        
        The task completes only if there are no powered-on virtual
        machines on the host, no provisioning operations in progress on
        the host, and the host stopped responding. The operation does
        not directly initiate any operations to evacuate or power-down
        powered-on virtual machines. However, if a dynamic recommendation
        generation module is running, if possible, it will provide, and
        depending on the automation level, it will execute migrations
        of powered-on virtual machine. Furthermore, VMware power
        management module may evacute and put a host in standby mode to
        save power.
        If the host is part of a cluster and the task is issued through VirtualCenter with
        evacuatePoweredOffVms set to true, the task will not succeed unless all the
        powered-off virtual machines are reregistered to other hosts. If VMware DRS is
        enabled, vCenter Server will automatically evacuate powered-off virtual machines.
        
        The task is cancellable.
        
        This command is not supported on all hosts. Check the host capability
        *HostCapability.standbySupported*.
        
        ***Required privileges:*** Host.Config.Maintenance
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PowerDownHostToStandByRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor the
            operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***HostPowerOpFailed***: if the standby operation fails.
            
            ***InvalidState***: if the host is already in standby mode, or disconnected.
            
            ***NotSupported***: if the host does not support standby mode.
            
            ***Timedout***: if the host did not enter standby mode in the given time
            
            ***RequestCanceled***: if the operation is canceled.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MethodFault'

  /HostSystem/{moId}/ExitLockdownMode:
    post:
      tags: [HostSystem]
      summary: |2
        Restores Administrator permission for the local administrative account
        for the host that was removed by prior call to *HostSystem.EnterLockdownMode*.
      operationId: HostSystem_ExitLockdownMode
      deprecated: true
      description: |2
        Deprecated as of vSphere API 6.0, use
        *HostAccessManager.ChangeLockdownMode*.
        
        Restores Administrator permission for the local administrative account
        for the host that was removed by prior call to *HostSystem.EnterLockdownMode*.
        
        If the operation is successful,
        *HostConfigInfo.adminDisabled* will be set to false. This API
        is not supported on the host. If invoked directly on a host, a
        NotSupported fault will be thrown.
        
        See also *AuthorizationManager*for more information on permissions..
        
        ***Required privileges:*** Host.Config.Settings
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***DisableAdminNotSupported***: If invoked directly on the host or the
            host doesn't support this operation.
            
            ***AdminNotDisabled***: If the host's Administrator permission
            is not disabled.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HostConfigFault'

  /HostSystem/{moId}/ExitMaintenanceMode_Task:
    post:
      tags: [HostSystem]
      summary: |2
        Takes the host out of maintenance mode.
      operationId: HostSystem_ExitMaintenanceMode_Task
      description: |2
        Takes the host out of maintenance mode.
        
        This blocks if any concurrent
        running maintenance-only host configurations operations are being performed.
        For example, if VMFS volumes are being upgraded.
        
        The task is cancellable.
        
        ***Required privileges:*** Host.Config.Maintenance
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ExitMaintenanceModeRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor the
            operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***InvalidState***: if the host is not in maintenance mode.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostSystem/{moId}/PowerUpHostFromStandBy_Task:
    post:
      tags: [HostSystem]
      summary: |2
        Takes the host out of standby mode.
      operationId: HostSystem_PowerUpHostFromStandBy_Task
      description: |2
        Takes the host out of standby mode.
        
        If the command is
        successful, the host wakes up and starts sending
        heartbeats. This method may be called automatically by a
        dynamic recommendation generation module to add capacity to a
        cluster, if the host is not in maintenance mode.
        
        Note that, depending on the implementation of the wakeup
        method, the client may never receive an indicator of success in
        the returned task. In some cases, it is not even possible to
        ensure that the wakeup request has made it to the host.
        
        The task is cancellable.
        
        ***Required privileges:*** Host.Config.Maintenance
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PowerUpHostFromStandByRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor the
            operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***HostPowerOpFailed***: if the standby operation fails.
            
            ***InvalidState***: if the host is in a state from which it
            cannot be woken up (e.g., disconnected, poweredOff)
            
            ***NotSupported***: if the host does not support standby mode.
            
            ***Timedout***: if the host did not exit standby mode in the given time
            
            ***RequestCanceled***: if the operation is canceled.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MethodFault'

  /HostSystem/{moId}/PrepareCrypto:
    post:
      tags: [HostSystem]
      summary: |2
        Prepare the host for receiving sensitive information
        and puts the host in *prepared* mode
        Note: Must be invoked before *HostSystem.EnableCrypto*
      operationId: HostSystem_PrepareCrypto
      description: |2
        Prepare the host for receiving sensitive information
        and puts the host in *prepared* mode
        Note: Must be invoked before *HostSystem.EnableCrypto*
        
        ***Required privileges:*** Cryptographer.RegisterHost
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***InvalidState***: if the host is not in
            *incapable* state
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InvalidState'

  /HostSystem/{moId}/QueryHostConnectionInfo:
    post:
      tags: [HostSystem]
      summary: |2
        Connection-oriented information about a host.
      operationId: HostSystem_QueryHostConnectionInfo
      description: |2
        Connection-oriented information about a host.
        
        ***Required privileges:*** System.Read
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HostConnectInfo'

  /HostSystem/{moId}/QueryMemoryOverhead:
    post:
      tags: [HostSystem]
      summary: |2
        Determines the amount of memory overhead necessary to power on a virtual
        machine with the specified characteristics.
      operationId: HostSystem_QueryMemoryOverhead
      deprecated: true
      description: |2
        Deprecated as of VI API 2.5, use *HostSystem.QueryMemoryOverheadEx*.
        
        Determines the amount of memory overhead necessary to power on a virtual
        machine with the specified characteristics.
        
        ***Required privileges:*** System.Read
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QueryMemoryOverheadRequestType'
      responses:
        '200':
          description: |2
            The amount of overhead memory required to power on such a virtual machine,
            in bytes.
          content:
            application/json:
              schema:
                type: integer
                format: int64

  /HostSystem/{moId}/QueryMemoryOverheadEx:
    post:
      tags: [HostSystem]
      summary: |2
        Determines the amount of memory overhead necessary to power on a virtual
        machine with the specified characteristics.
      operationId: HostSystem_QueryMemoryOverheadEx
      deprecated: true
      description: |2
        Deprecated as of VI API 6.0, use
        *VirtualMachineConfigInfo.initialOverhead*.
        
        Determines the amount of memory overhead necessary to power on a virtual
        machine with the specified characteristics.
        
        ***Required privileges:*** System.Read
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QueryMemoryOverheadExRequestType'
      responses:
        '200':
          description: |2
            The amount of overhead memory required to power on such a virtual machine,
            in bytes.
          content:
            application/json:
              schema:
                type: integer
                format: int64

  /HostSystem/{moId}/QueryProductLockerLocation:
    post:
      tags: [HostSystem]
      summary: |2
        Query the path to VMware Tools repository configured on the host.
      operationId: HostSystem_QueryProductLockerLocation
      description: |2
        Query the path to VMware Tools repository configured on the host.
        
        The host should be powered on.
        
        ***Required privileges:*** System.Read
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            The absolute path currently set for the VMware Tools
            repository on the host.
          content:
            application/json:
              schema:
                type: string
        '500':
          description: |2
            ***HostConfigFault***: if the configuration could not be read.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HostConfigFault'

  /HostSystem/{moId}/QueryTpmAttestationReport:
    post:
      tags: [HostSystem]
      summary: |2
        Basic information about TPM attestation state of the host.
      operationId: HostSystem_QueryTpmAttestationReport
      description: |2
        Basic information about TPM attestation state of the host.
        
        ***Required privileges:*** System.Read
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                $ref: '#/components/schemas/HostTpmAttestationReport'

  /HostSystem/{moId}/RebootHost_Task:
    post:
      tags: [HostSystem]
      summary: |2
        Reboots a host.
      operationId: HostSystem_RebootHost_Task
      description: |2
        Reboots a host.
        
        If the command is successful, then the host has been rebooted. If
        connected directly to the host, the client never receives an indicator of success
        in the returned task but simply loses connection to the host, upon success.
        
        This command is not supported on all hosts. Check the host capability
        *vim.host.Capability.rebootSupported*.
        If QuickBoot is enabled on the host, additional setup steps are performed.
        
        ***Required privileges:*** Host.Config.Maintenance
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RebootHostRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor the
            operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***InvalidState***: if "force" is false and the host is not in maintenance mode.
            
            ***NotSupported***: if the host does not support the reboot operation.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InvalidState'

  /HostSystem/{moId}/ReconfigureHostForDAS_Task:
    post:
      tags: [HostSystem]
      summary: |2
        Reconfigures the host for vSphere HA.
      operationId: HostSystem_ReconfigureHostForDAS_Task
      description: |2
        Reconfigures the host for vSphere HA.
        
        If the host is part of a HA cluster, this operation reconfigures the host for HA.
        For example, this operation may be used if a host is added to a HA enabled cluster
        and the automatic HA configuration system task fails. Automatic HA configuration
        may fail for a variety of reasons. For example, the host is configured
        incorrectly.
        
        ***Required privileges:*** Host.Config.Connection
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor the
            operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***NotSupported***: if run directly on an ESX Server host.
            
            ***DasConfigFault***: if there is a problem reconfiguring the host for HA.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DasConfigFault'

  /HostSystem/{moId}/ReconnectHost_Task:
    post:
      tags: [HostSystem]
      summary: |2
        Reconnects to a host.
      operationId: HostSystem_ReconnectHost_Task
      description: |2
        Reconnects to a host.
        
        This process reinstalls agents and reconfigures the host, if
        it has gotten out of date with VirtualCenter. The reconnection process goes
        through many of the same steps as addHost: ensuring the correct set of licenses
        for the number of CPUs on the host, ensuring the correct set of agents is
        installed, and ensuring that networks and datastores are discovered and registered
        with VirtualCenter.
        
        The client can change the IP address and port of the host when doing a reconnect
        operation. This can be useful if the client wants to preserve existing metadata,
        even though the host is changing its IP address. For example, clients could
        preserve existing statistics, alarms, and privileges.
        
        This method can also be used to change the SSL thumbprint of a connected host
        without disconnecting it.
        
        Any changes made to the resource hierarchy on the host when the host
        was disconnected are overriden by VirtualCenter settings on
        reconnect.
        
        This method is only supported through VirtualCenter.
        
        ***Required privileges:*** Host.Config.Connection
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ReconnectHostRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor the
            operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***NotSupported***: if no host can be added to this group. This is the case if
            the ComputeResource is a standalone type.
            
            ***InvalidLogin***: if the method fails to authenticate with the host.
            
            ***AlreadyBeingManaged***: if host is already being managed by another
            VirtualCenter server
            
            ***NotEnoughLicenses***: if there are not enough licenses to add this host.
            
            ***NoHost***: if the method is unable to contact the server.
            
            ***NotSupportedHost***: if the host is running a software version that is not
            supported.
            
            ***InvalidState***: if the host is not disconnected.
            
            ***InvalidName***: if the host name is invalid.
            
            ***HostConnectFault***: if an error occurred when attempting to reconnect
            to a host. Typically, a more specific subclass, such as
            AlreadyBeingManaged, is thrown.
            
            ***SSLVerifyFault***: if the host certificate could not be authenticated.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostSystem/{moId}/Reload:
    post:
      tags: [HostSystem]
      summary: |2
        Reload the entity state.
      operationId: HostSystem_Reload
      description: |2
        Reload the entity state.
        
        Clients only need to call this method
        if they changed some external state that affects the service
        without using the Web service interface to perform the change.
        For example, hand-editing a virtual machine configuration file
        affects the configuration of the associated virtual machine but
        the service managing the virtual machine might not monitor the
        file for changes. In this case, after such an edit, a client
        would call "reload" on the associated virtual machine to ensure
        the service and its clients have current data for the
        virtual machine.
        
        ***Required privileges:*** System.Read
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '204':
          description: |2
            No Content

  /HostSystem/{moId}/Rename_Task:
    post:
      tags: [HostSystem]
      summary: |2
        Renames this managed entity.
      operationId: HostSystem_Rename_Task
      description: |2
        Renames this managed entity.
        
        Any % (percent) character used in this name parameter
        must be escaped, unless it is used to start an escape
        sequence. Clients may also escape any other characters in
        this name parameter.
        
        See also *ManagedEntity.name*.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RenameRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor the
            operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***DuplicateName***: If another object in the same folder has the target name.
            
            ***InvalidName***: If the new name is not a valid entity name.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostSystem/{moId}/RetrieveFreeEpcMemory:
    post:
      tags: [HostSystem]
      summary: |2
        Return the amount of free EPC memory on the host in bytes.
      operationId: HostSystem_RetrieveFreeEpcMemory
      description: |2
        Return the amount of free EPC memory on the host in bytes.
        
        ***Required privileges:*** System.Read
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                type: integer
                format: int64

  /HostSystem/{moId}/RetrieveHardwareUptime:
    post:
      tags: [HostSystem]
      summary: |2
        Return the hardware uptime of the host in seconds.
      operationId: HostSystem_RetrieveHardwareUptime
      description: |2
        Return the hardware uptime of the host in seconds.
        
        The harware uptime of a host is not affected by NTP and changes to its
        wall clock time and can be used by clients to provide a common time
        reference for all hosts.
        
        ***Required privileges:*** System.Read
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                type: integer
                format: int64

  /HostSystem/{moId}/setCustomValue:
    post:
      tags: [HostSystem]
      summary: |2
        Assigns a value to a custom field.
      operationId: HostSystem_setCustomValue
      description: |2
        Assigns a value to a custom field.
        
        The setCustomValue method requires
        whichever updatePrivilege is defined as one of the
        *CustomFieldDef.fieldInstancePrivileges*
        for the CustomFieldDef whose value is being changed.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/setCustomValueRequestType'
      responses:
        '204':
          description: |2
            No Content

  /HostSystem/{moId}/ShutdownHost_Task:
    post:
      tags: [HostSystem]
      summary: |2
        Shuts down a host.
      operationId: HostSystem_ShutdownHost_Task
      description: |2
        Shuts down a host.
        
        If the command is successful, then the host has been shut down.
        Thus, the client never receives an indicator of success in the returned task if
        connected directly to the host.
        
        This command is not supported on all hosts. Check the host capability
        *HostCapability.shutdownSupported*.
        
        ***Required privileges:*** Host.Config.Maintenance
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ShutdownHostRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor the
            operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***InvalidState***: if "force" is false and the host is not in
            maintenance mode.
            
            ***NotSupported***: if the host does not support shutdown.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InvalidState'

  /HostSystem/{moId}/UpdateFlags:
    post:
      tags: [HostSystem]
      summary: |2
        Update flags that are part of the *HostFlagInfo* object.
      operationId: HostSystem_UpdateFlags
      description: |2
        Update flags that are part of the *HostFlagInfo* object.
        
        ***Required privileges:*** Host.Config.Settings
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateFlagsRequestType'
      responses:
        '204':
          description: |2
            No Content

  /HostSystem/{moId}/UpdateIpmi:
    post:
      tags: [HostSystem]
      summary: |2
        Update fields that are part of the *HostIpmiInfo* object.
      operationId: HostSystem_UpdateIpmi
      description: |2
        Update fields that are part of the *HostIpmiInfo* object.
        
        ***Required privileges:*** Host.Config.Settings
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateIpmiRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***InvalidIpmiLoginInfo***: if the supplied user ID and/or password is invalid.
            
            ***InvalidIpmiMacAddress***: if the supplied MAC address is invalid.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostSystem/{moId}/UpdateProductLockerLocation_Task:
    post:
      tags: [HostSystem]
      summary: |2
        Change and reconfigure the VMware Tools repository on the host.
      operationId: HostSystem_UpdateProductLockerLocation_Task
      description: |2
        Change and reconfigure the VMware Tools repository on the host.
        
        If the new path is the same as the path already configured on
        the host, no changes will be made to the host.
        The host should be powered on.
        
        This task is not cancellable and cannot be reverted once started.
        
        ***Required privileges:*** Host.Config.ProductLocker
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateProductLockerLocationRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to
            monitor the operation. The *info.result*
            property in the *Task* contains the stable vmfs path
            of the VMware Tools repository upon success. A stable vmfs
            path is of the form:
            /vmfs/volumes/\[datastore-uuid\]/\[path/inside/datastore\]
            or
            empty to indicate restoring to default value.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***InvalidArgument***: if the path does not have "/vmfs/volumes/"
            prefix and is not empty.
            
            ***FileNotFound***: if the path does not exist.
            
            ***TaskInProgress***: if there is another task configuring the
            VMware Tools repository on the host.
            
            ***HostConfigFault***: if the configuration could not be written.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MethodFault'

  /HostSystem/{moId}/UpdateSystemResources:
    post:
      tags: [HostSystem]
      summary: |2
        Update the configuration of the system resource hierarchy.
      operationId: HostSystem_UpdateSystemResources
      deprecated: true
      description: |2
        Deprecated as of Vsphere API 6.0. Please, contact VMware Support to get
        instructions on how to configure system ESX resource pools.
        
        Update the configuration of the system resource hierarchy.
        
        ***Required privileges:*** Host.Config.Resources
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateSystemResourcesRequestType'
      responses:
        '204':
          description: |2
            No Content

  /HostSystem/{moId}/UpdateSystemSwapConfiguration:
    post:
      tags: [HostSystem]
      summary: |2
        Update the System Swap Configuration.
      operationId: HostSystem_UpdateSystemSwapConfiguration
      description: |2
        Update the System Swap Configuration.
        
        See also *HostSystemSwapConfiguration*.
        
        ***Required privileges:*** Host.Config.Settings
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateSystemSwapConfigurationRequestType'
      responses:
        '204':
          description: |2
            No Content

  /HostSystem/{moId}/alarmActionsEnabled:
    get:
      tags: [HostSystem]
      summary: |2
        Whether alarm actions are enabled for this entity.
      operationId: HostSystem_getAlarmActionsEnabled
      description: |2
        Whether alarm actions are enabled for this entity.
        
        True if enabled; false otherwise.
        
        ***Required privileges:*** System.Read
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: boolean

  /HostSystem/{moId}/answerFileValidationResult:
    get:
      tags: [HostSystem]
      summary: |2
        Host answer file validation result.
      operationId: HostSystem_getAnswerFileValidationResult
      description: |2
        Host answer file validation result.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                $ref: '#/components/schemas/AnswerFileStatusResult'

  /HostSystem/{moId}/answerFileValidationState:
    get:
      tags: [HostSystem]
      summary: |2
        Host answer file validation state.
      operationId: HostSystem_getAnswerFileValidationState
      description: |2
        Host answer file validation state.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                $ref: '#/components/schemas/AnswerFileStatusResult'

  /HostSystem/{moId}/availableField:
    get:
      tags: [HostSystem]
      summary: |2
        List of custom field definitions that are valid for the object's type.
      operationId: HostSystem_getAvailableField
      description: |2
        List of custom field definitions that are valid for the object's type.
        
        The fields are sorted by *CustomFieldDef.name*.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/CustomFieldDef'

  /HostSystem/{moId}/capability:
    get:
      tags: [HostSystem]
      summary: |2
        Host capabilities.
      operationId: HostSystem_getCapability
      description: |2
        Host capabilities.
        
        This might not be available for a
        disconnected host.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                $ref: '#/components/schemas/HostCapability'

  /HostSystem/{moId}/complianceCheckResult:
    get:
      tags: [HostSystem]
      summary: |2
        The host profile compliance check result.
      operationId: HostSystem_getComplianceCheckResult
      description: |2
        The host profile compliance check result.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                $ref: '#/components/schemas/ComplianceResult'

  /HostSystem/{moId}/complianceCheckState:
    get:
      tags: [HostSystem]
      summary: |2
        The host profile compliance check state.
      operationId: HostSystem_getComplianceCheckState
      description: |2
        The host profile compliance check state.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                $ref: '#/components/schemas/HostSystemComplianceCheckState'

  /HostSystem/{moId}/config:
    get:
      tags: [HostSystem]
      summary: |2
        Host configuration information.
      operationId: HostSystem_getConfig
      description: |2
        Host configuration information.
        
        This might not be available for a disconnected
        host.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                $ref: '#/components/schemas/HostConfigInfo'

  /HostSystem/{moId}/configIssue:
    get:
      tags: [HostSystem]
      summary: |2
        Current configuration issues that have been detected for this entity.
      operationId: HostSystem_getConfigIssue
      description: |2
        Current configuration issues that have been detected for this entity.
        
        Typically,
        these issues have already been logged as events. The entity stores these
        events as long as they are still current. The
        *configStatus* property provides an overall status
        based on these events.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/Event'

  /HostSystem/{moId}/configManager:
    get:
      tags: [HostSystem]
      summary: |2
        Host configuration systems.
      operationId: HostSystem_getConfigManager
      description: |2
        Host configuration systems.
        
        In releases after vSphere API 5.0, vSphere Servers might not
        generate property collector update notifications for this property.
        To obtain the latest value of the property, you can use
        PropertyCollector methods RetrievePropertiesEx or WaitForUpdatesEx.
        If you use the PropertyCollector.WaitForUpdatesEx method, specify
        an empty string for the version parameter. Any other version value will not
        produce any property values as no updates are generated.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HostConfigManager'

  /HostSystem/{moId}/configStatus:
    get:
      tags: [HostSystem]
      summary: |2
        The configStatus indicates whether or not the system has detected a configuration
        issue involving this entity.
      operationId: HostSystem_getConfigStatus
      description: |2
        The configStatus indicates whether or not the system has detected a configuration
        issue involving this entity.
        
        For example, it might have detected a
        duplicate IP address or MAC address, or a host in a cluster
        might be out of compliance. The meanings of the configStatus values are:
        - red: A problem has been detected involving the entity.
        - yellow: A problem is about to occur or a transient condition
          has occurred (For example, reconfigure fail-over policy).
        - green: No configuration issues have been detected.
        - gray: The configuration status of the entity is not being monitored.
          
        A green status indicates only that a problem has not been detected;
        it is not a guarantee that the entity is problem-free.
        
        The *configIssue* property contains a list of the
        problems that have been detected.
        In releases after vSphere API 5.0, vSphere Servers might not
        generate property collector update notifications for this property.
        To obtain the latest value of the property, you can use
        PropertyCollector methods RetrievePropertiesEx or WaitForUpdatesEx.
        If you use the PropertyCollector.WaitForUpdatesEx method, specify
        an empty string for the version parameter. Any other version value will not
        produce any property values as no updates are generated.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedEntityStatus_enum'

  /HostSystem/{moId}/customValue:
    get:
      tags: [HostSystem]
      summary: |2
        Custom field values.
      operationId: HostSystem_getCustomValue
      description: |2
        Custom field values.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/CustomFieldValue'

  /HostSystem/{moId}/datastore:
    get:
      tags: [HostSystem]
      summary: |2
        A collection of references to the subset of datastore objects in the datacenter
        that are available in this HostSystem.
      operationId: HostSystem_getDatastore
      description: |2
        A collection of references to the subset of datastore objects in the datacenter
        that are available in this HostSystem.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            Refers instances of *Datastore*.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/ManagedObjectReference'

  /HostSystem/{moId}/datastoreBrowser:
    get:
      tags: [HostSystem]
      summary: |2
        DatastoreBrowser to browse datastores for this host.
      operationId: HostSystem_getDatastoreBrowser
      description: |2
        DatastoreBrowser to browse datastores for this host.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            Refers instance of *HostDatastoreBrowser*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'

  /HostSystem/{moId}/declaredAlarmState:
    get:
      tags: [HostSystem]
      summary: |2
        A set of alarm states for alarms that apply to this managed entity.
      operationId: HostSystem_getDeclaredAlarmState
      description: |2
        A set of alarm states for alarms that apply to this managed entity.
        
        The set includes alarms defined on this entity
        and alarms inherited from the parent entity,
        or from any ancestors in the inventory hierarchy.
        
        Alarms are inherited if they can be triggered by this entity or its descendants.
        This set does not include alarms that are defined on descendants of this entity.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/AlarmState'

  /HostSystem/{moId}/disabledMethod:
    get:
      tags: [HostSystem]
      summary: |2
        List of operations that are disabled, given the current runtime
        state of the entity.
      operationId: HostSystem_getDisabledMethod
      description: |2
        List of operations that are disabled, given the current runtime
        state of the entity.
        
        For example, a power-on operation always fails if a
        virtual machine is already powered on. This list can be used by clients to
        enable or disable operations in a graphical user interface.
        
        Note: This list is determined by the current runtime state of an entity,
        not by its permissions.
        
        This list may include the following operations for a HostSystem:
        - *HostSystem.EnterMaintenanceMode_Task*
        - *HostSystem.ExitMaintenanceMode_Task*
        - *HostSystem.RebootHost_Task*
        - *HostSystem.ShutdownHost_Task*
        - *HostSystem.ReconnectHost_Task*
        - *HostSystem.DisconnectHost_Task*
          
        This list may include the following operations for a VirtualMachine:
        - *VirtualMachine.AnswerVM*
        - *ManagedEntity.Rename_Task*
        - *VirtualMachine.CloneVM_Task*
        - *VirtualMachine.PowerOffVM_Task*
        - *VirtualMachine.PowerOnVM_Task*
        - *VirtualMachine.SuspendVM_Task*
        - *VirtualMachine.ResetVM_Task*
        - *VirtualMachine.ReconfigVM_Task*
        - *VirtualMachine.RelocateVM_Task*
        - *VirtualMachine.MigrateVM_Task*
        - *VirtualMachine.CustomizeVM_Task*
        - *VirtualMachine.ShutdownGuest*
        - *VirtualMachine.StandbyGuest*
        - *VirtualMachine.RebootGuest*
        - *VirtualMachine.CreateSnapshot_Task*
        - *VirtualMachine.RemoveAllSnapshots_Task*
        - *VirtualMachine.RevertToCurrentSnapshot_Task*
        - *VirtualMachine.MarkAsTemplate*
        - *VirtualMachine.MarkAsVirtualMachine*
        - *VirtualMachine.ResetGuestInformation*
        - *VirtualMachine.MountToolsInstaller*
        - *VirtualMachine.UnmountToolsInstaller*
        - *ManagedEntity.Destroy_Task*
        - *VirtualMachine.UpgradeVM_Task*
        - *VirtualMachine.ExportVm*
          
        This list may include the following operations for a ResourcePool:
        - *ResourcePool.ImportVApp*
        - *ResourcePool.CreateChildVM_Task*
        - *ResourcePool.UpdateConfig*
        - *Folder.CreateVM_Task*
        - *ManagedEntity.Destroy_Task*
        - *ManagedEntity.Rename_Task*
          
        This list may include the following operations for a VirtualApp:
        - *ManagedEntity.Destroy_Task*
        - *VirtualApp.CloneVApp_Task*
        - *VirtualApp.unregisterVApp_Task*
        - *VirtualApp.ExportVApp*
        - *VirtualApp.PowerOnVApp_Task*
        - *VirtualApp.PowerOffVApp_Task*
        - *VirtualApp.UpdateVAppConfig*
          
        In releases after vSphere API 5.0, vSphere Servers might not
        generate property collector update notifications for this property.
        To obtain the latest value of the property, you can use
        PropertyCollector methods RetrievePropertiesEx or WaitForUpdatesEx.
        If you use the PropertyCollector.WaitForUpdatesEx method, specify
        an empty string for the version parameter. Any other version value will not
        produce any property values as no updates are generated.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  type: string

  /HostSystem/{moId}/effectiveRole:
    get:
      tags: [HostSystem]
      summary: |2
        Access rights the current session has to this entity.
      operationId: HostSystem_getEffectiveRole
      description: |2
        Access rights the current session has to this entity.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  type: integer
                  format: int32

  /HostSystem/{moId}/hardware:
    get:
      tags: [HostSystem]
      summary: |2
        Hardware configuration of the host.
      operationId: HostSystem_getHardware
      description: |2
        Hardware configuration of the host.
        
        This might not be available for a
        disconnected host.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                $ref: '#/components/schemas/HostHardwareInfo'

  /HostSystem/{moId}/licensableResource:
    get:
      tags: [HostSystem]
      summary: |2
        Information about all licensable resources, currently present on this host.
      operationId: HostSystem_getLicensableResource
      description: |2
        Information about all licensable resources, currently present on this host.
        
        This information is used mostly by the modules, manipulating information
        in the *LicenseManager*. Developers of such modules
        should use this property instead of *hardware*.
        
        NOTE:
        The values in this property may not be accurate for pre-5.0 hosts when returned by vCenter 5.0
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HostLicensableResourceInfo'

  /HostSystem/{moId}/name:
    get:
      tags: [HostSystem]
      summary: |2
        Name of this entity, unique relative to its parent.
      operationId: HostSystem_getName
      description: |2
        Name of this entity, unique relative to its parent.
        
        Any / (slash), \\ (backslash), character used in this
        name element will be escaped. Similarly, any % (percent) character used in
        this name element will be escaped, unless it is used to start an escape
        sequence. A slash is escaped as %2F or %2f. A backslash is escaped as %5C or
        %5c, and a percent is escaped as %25.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                type: string

  /HostSystem/{moId}/network:
    get:
      tags: [HostSystem]
      summary: |2
        A collection of references to the subset of network objects in the datacenter that
        are available in this HostSystem.
      operationId: HostSystem_getNetwork
      description: |2
        A collection of references to the subset of network objects in the datacenter that
        are available in this HostSystem.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            Refers instances of *Network*.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/ManagedObjectReference'

  /HostSystem/{moId}/overallStatus:
    get:
      tags: [HostSystem]
      summary: |2
        General health of this managed entity.
      operationId: HostSystem_getOverallStatus
      description: |2
        General health of this managed entity.
        
        The overall status of the managed entity is computed as the worst status
        among its alarms and the configuration issues detected on the entity.
        The status is reported as one of the following values:
        - red: The entity has alarms or configuration issues with a red status.
        - yellow: The entity does not have alarms or configuration issues with a
          red status, and has at least one with a yellow status.
        - green: The entity does not have alarms or configuration issues with a
          red or yellow status, and has at least one with a green status.
        - gray: All of the entity's alarms have a gray status and the
          configuration status of the entity is not being monitored.
          
        In releases after vSphere API 5.0, vSphere Servers might not
        generate property collector update notifications for this property.
        To obtain the latest value of the property, you can use
        PropertyCollector methods RetrievePropertiesEx or WaitForUpdatesEx.
        If you use the PropertyCollector.WaitForUpdatesEx method, specify
        an empty string for the version parameter. Any other version value will not
        produce any property values as no updates are generated.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedEntityStatus_enum'

  /HostSystem/{moId}/parent:
    get:
      tags: [HostSystem]
      summary: |2
        Parent of this entity.
      operationId: HostSystem_getParent
      description: |2
        Parent of this entity.
        
        This value is null for the root object and for
        *VirtualMachine* objects that are part of
        a *VirtualApp*.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            Refers instance of *ManagedEntity*.
          content:
            application/json:
              schema:
                nullable: true
                $ref: '#/components/schemas/ManagedObjectReference'

  /HostSystem/{moId}/permission:
    get:
      tags: [HostSystem]
      summary: |2
        List of permissions defined for this entity.
      operationId: HostSystem_getPermission
      description: |2
        List of permissions defined for this entity.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/Permission'

  /HostSystem/{moId}/precheckRemediationResult:
    get:
      tags: [HostSystem]
      summary: |2
        The host profile precheck-remediation result.
      operationId: HostSystem_getPrecheckRemediationResult
      description: |2
        The host profile precheck-remediation result.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                $ref: '#/components/schemas/ApplyHostProfileConfigurationSpec'

  /HostSystem/{moId}/recentTask:
    get:
      tags: [HostSystem]
      summary: |2
        The set of recent tasks operating on this managed entity.
      operationId: HostSystem_getRecentTask
      description: |2
        The set of recent tasks operating on this managed entity.
        
        This is a subset
        of *TaskManager.recentTask* belong to this entity. A task in this
        list could be in one of the four states: pending, running, success or error.
        
        This property can be used to deduce intermediate power states for
        a virtual machine entity. For example, if the current powerState is "poweredOn"
        and there is a running task performing the "suspend" operation, then the virtual
        machine's intermediate state might be described as "suspending."
        
        Most tasks (such as power operations) obtain exclusive access to the virtual
        machine, so it is unusual for this list to contain more than one running task.
        One exception, however, is the task of cloning a virtual machine.
        In releases after vSphere API 5.0, vSphere Servers might not
        generate property collector update notifications for this property.
        To obtain the latest value of the property, you can use
        PropertyCollector methods RetrievePropertiesEx or WaitForUpdatesEx.
        If you use the PropertyCollector.WaitForUpdatesEx method, specify
        an empty string for the version parameter. Any other version value will not
        produce any property values as no updates are generated.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            Refers instances of *Task*.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/ManagedObjectReference'

  /HostSystem/{moId}/remediationResult:
    get:
      tags: [HostSystem]
      summary: |2
        The host profile remediation result.
      operationId: HostSystem_getRemediationResult
      description: |2
        The host profile remediation result.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                $ref: '#/components/schemas/ApplyHostProfileConfigurationResult'

  /HostSystem/{moId}/remediationState:
    get:
      tags: [HostSystem]
      summary: |2
        The host profile remediation state.
      operationId: HostSystem_getRemediationState
      description: |2
        The host profile remediation state.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                $ref: '#/components/schemas/HostSystemRemediationState'

  /HostSystem/{moId}/runtime:
    get:
      tags: [HostSystem]
      summary: |2
        Runtime state information about the host such as connection state.
      operationId: HostSystem_getRuntime
      description: |2
        Runtime state information about the host such as connection state.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HostRuntimeInfo'

  /HostSystem/{moId}/summary:
    get:
      tags: [HostSystem]
      summary: |2
        Basic information about the host, including connection state.
      operationId: HostSystem_getSummary
      description: |2
        Basic information about the host, including connection state.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HostListSummary'

  /HostSystem/{moId}/systemResources:
    get:
      tags: [HostSystem]
      summary: |2
        Reference for the system resource hierarchy, used for configuring the set of
        resources reserved to the system and unavailable to virtual machines.
      operationId: HostSystem_getSystemResources
      description: |2
        Reference for the system resource hierarchy, used for configuring the set of
        resources reserved to the system and unavailable to virtual machines.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                $ref: '#/components/schemas/HostSystemResourceInfo'

  /HostSystem/{moId}/tag:
    get:
      tags: [HostSystem]
      summary: |2
        The set of tags associated with this managed entity.
      operationId: HostSystem_getTag
      description: |2
        The set of tags associated with this managed entity.
        
        Experimental. Subject to change.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/Tag'

  /HostSystem/{moId}/triggeredAlarmState:
    get:
      tags: [HostSystem]
      summary: |2
        A set of alarm states for alarms triggered by this entity
        or by its descendants.
      operationId: HostSystem_getTriggeredAlarmState
      description: |2
        A set of alarm states for alarms triggered by this entity
        or by its descendants.
        
        Triggered alarms are propagated up the inventory hierarchy
        so that a user can readily tell when a descendant has triggered an alarm.
        In releases after vSphere API 5.0, vSphere Servers might not
        generate property collector update notifications for this property.
        To obtain the latest value of the property, you can use
        PropertyCollector methods RetrievePropertiesEx or WaitForUpdatesEx.
        If you use the PropertyCollector.WaitForUpdatesEx method, specify
        an empty string for the version parameter. Any other version value will not
        produce any property values as no updates are generated.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/AlarmState'

  /HostSystem/{moId}/value:
    get:
      tags: [HostSystem]
      summary: |2
        List of custom field values.
      operationId: HostSystem_getValue
      description: |2
        List of custom field values.
        
        Each value uses a key to associate
        an instance of a *CustomFieldStringValue* with
        a custom field definition.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/CustomFieldValue'

  /HostSystem/{moId}/vm:
    get:
      tags: [HostSystem]
      summary: |2
        List of virtual machines associated with this host.
      operationId: HostSystem_getVm
      description: |2
        List of virtual machines associated with this host.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            Refers instances of *VirtualMachine*.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/ManagedObjectReference'

  /HostVFlashManager/{moId}/HostConfigVFlashCache:
    post:
      tags: [HostVFlashManager]
      summary: |2
        Configure vFlash cache on the host.
      operationId: HostVFlashManager_HostConfigVFlashCache
      description: |2
        Configure vFlash cache on the host.
        
        ***Required privileges:*** Host.Config.AdvancedConfig
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/HostConfigVFlashCacheRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***HostConfigFault***: If the swap cache cannot be configured on the host.
            
            ***InaccessibleVFlashSource***: vFlash resource is not accessible.
            
            ***ResourceInUse***: The contained VFFS volume is being used.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostVFlashManager/{moId}/HostConfigureVFlashResource:
    post:
      tags: [HostVFlashManager]
      summary: |2
        Configure vFlash resource on the host by attaching to a backend VFFS volume.
      operationId: HostVFlashManager_HostConfigureVFlashResource
      description: |2
        Configure vFlash resource on the host by attaching to a backend VFFS volume.
        
        ***Required privileges:*** Host.Config.Storage
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/HostConfigureVFlashResourceRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***HostConfigFault***: If vFlash resource cannot be configured on the host
            
            ***ResourceInUse***: The contained VFFS volume is being used.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostVFlashManager/{moId}/ConfigureVFlashResourceEx_Task:
    post:
      tags: [HostVFlashManager]
      summary: |2
        Configure vFlash resource on a list of SSD disks.
      operationId: HostVFlashManager_ConfigureVFlashResourceEx_Task
      description: |2
        Configure vFlash resource on a list of SSD disks.
        
        If the host does not have
        a VFFS volume, host will format the volume first and then extend the volume
        on the rest of the SSDs; otherwise host will extend the existing VFFS volume
        on the passed SSDs. Finally host will configure the vFlash resource on the
        VFFS volume.
        
        It will return *HostVFlashResourceConfigurationResult*
        describing success or failure associated with each device.
        
        ***Required privileges:*** Host.Config.Storage
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ConfigureVFlashResourceExRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor the
            operation. The *info.result* property in the
            *Task* contains *HostVFlashResourceConfigurationResult*
            describing success or failure associated with each device.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***HostConfigFault***: if batch operation fails on the host.
            Because the returned VFlashResourceConfigurationResult contains the configuration
            success or fault for each device, as of vSphere API 5.x, we won't throw fault when
            batch operation fails.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HostConfigFault'

  /HostVFlashManager/{moId}/HostGetVFlashModuleDefaultConfig:
    post:
      tags: [HostVFlashManager]
      summary: |2
        Retrieve the default supported configuration for a given vFlash module
      operationId: HostVFlashManager_HostGetVFlashModuleDefaultConfig
      description: |2
        Retrieve the default supported configuration for a given vFlash module
        
        ***Required privileges:*** Host.Config.AdvancedConfig
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/HostGetVFlashModuleDefaultConfigRequestType'
      responses:
        '200':
          description: |2
            The supported default vFlash cache configuration
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VirtualDiskVFlashCacheConfigInfo'
        '500':
          description: |2
            ***NotFound***: If vFlash resource is not configured or the contained VFFS volume
            cannot be found on the host.
            
            ***HostConfigFault***: If the default vFlash module configuration option cannot be
            retrieved.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostVFlashManager/{moId}/HostRemoveVFlashResource:
    post:
      tags: [HostVFlashManager]
      summary: |2
        Remove vFlash resource on the host by destroying the contained VFFS volume.
      operationId: HostVFlashManager_HostRemoveVFlashResource
      description: |2
        Remove vFlash resource on the host by destroying the contained VFFS volume.
        
        ***Required privileges:*** Host.Config.Storage
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***NotFound***: If vFlash resource is not configured or the contained VFFS volume
            cannot be found on the host.
            
            ***HostConfigFault***: If vFlash resource or the contained VFFS volume cannot
            be removed from the host.
            
            ***ResourceInUse***: The contained VFFS volume is being used.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostVFlashManager/{moId}/vFlashConfigInfo:
    get:
      tags: [HostVFlashManager]
      summary: |2
        Host vFlash configuration information.
      operationId: HostVFlashManager_getVFlashConfigInfo
      description: |2
        Host vFlash configuration information.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                $ref: '#/components/schemas/HostVFlashManagerVFlashConfigInfo'

  /HostVMotionSystem/{moId}/DeselectVnic:
    post:
      tags: [HostVMotionSystem]
      summary: |2
        Indicate that no VirtualNic should be used for VMotion.
      operationId: HostVMotionSystem_DeselectVnic
      description: |2
        Indicate that no VirtualNic should be used for VMotion.
        
        ***Required privileges:*** Host.Config.Network
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***HostConfigFault***: is a failure occurred
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HostConfigFault'

  /HostVMotionSystem/{moId}/SelectVnic:
    post:
      tags: [HostVMotionSystem]
      summary: |2
        Select the VirtualNic to be used for VMotion.
      operationId: HostVMotionSystem_SelectVnic
      description: |2
        Select the VirtualNic to be used for VMotion.
        
        ***Required privileges:*** Host.Config.Network
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SelectVnicRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***InvalidArgument***: if key represents a nonexistent or invalid VirtualNic.
            
            ***HostConfigFault***: for any other failure
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HostConfigFault'

  /HostVMotionSystem/{moId}/setCustomValue:
    post:
      tags: [HostVMotionSystem]
      summary: |2
        Assigns a value to a custom field.
      operationId: HostVMotionSystem_setCustomValue
      description: |2
        Assigns a value to a custom field.
        
        The setCustomValue method requires
        whichever updatePrivilege is defined as one of the
        *CustomFieldDef.fieldInstancePrivileges*
        for the CustomFieldDef whose value is being changed.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/setCustomValueRequestType'
      responses:
        '204':
          description: |2
            No Content

  /HostVMotionSystem/{moId}/UpdateIpConfig:
    post:
      tags: [HostVMotionSystem]
      summary: |2
        Update the IP configuration of VMotion VirtualNic.
      operationId: HostVMotionSystem_UpdateIpConfig
      description: |2
        Update the IP configuration of VMotion VirtualNic.
        
        ***Required privileges:*** Host.Config.Network
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateIpConfigRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***NotFound***: if no VirtualNic is selected for VMotion.
            
            ***InvalidArgument***: if the IpConfig is invalid or cannot be used.
            
            ***HostConfigFault***: for any other failure
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostVMotionSystem/{moId}/availableField:
    get:
      tags: [HostVMotionSystem]
      summary: |2
        List of custom field definitions that are valid for the object's type.
      operationId: HostVMotionSystem_getAvailableField
      description: |2
        List of custom field definitions that are valid for the object's type.
        
        The fields are sorted by *CustomFieldDef.name*.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/CustomFieldDef'

  /HostVMotionSystem/{moId}/ipConfig:
    get:
      tags: [HostVMotionSystem]
      summary: |2
        IP configuration of the VMotion VirtualNic.
      operationId: HostVMotionSystem_getIpConfig
      description: |2
        IP configuration of the VMotion VirtualNic.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                $ref: '#/components/schemas/HostIpConfig'

  /HostVMotionSystem/{moId}/netConfig:
    get:
      tags: [HostVMotionSystem]
      summary: |2
        VMotion network configuration.
      operationId: HostVMotionSystem_getNetConfig
      description: |2
        VMotion network configuration.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                $ref: '#/components/schemas/HostVMotionNetConfig'

  /HostVMotionSystem/{moId}/value:
    get:
      tags: [HostVMotionSystem]
      summary: |2
        List of custom field values.
      operationId: HostVMotionSystem_getValue
      description: |2
        List of custom field values.
        
        Each value uses a key to associate
        an instance of a *CustomFieldStringValue* with
        a custom field definition.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/CustomFieldValue'

  /HostVStorageObjectManager/{moId}/HostVStorageObjectRevert_Task:
    post:
      tags: [HostVStorageObjectManager]
      summary: |2
        Reverts to a given snapshot of a VStorageObject.
      operationId: HostVStorageObjectManager_HostVStorageObjectRevert_Task
      description: |2
        Reverts to a given snapshot of a VStorageObject.
        
        This operation is supported on detached VirtualDisks
        During revert all the snapshots which were taken after the specified
        snapshot would get deleted.
        
        E.g. Consider Disk with 4 snapshots
        
        BaseDisk -&gt; Snap-2 -&gt; Snap-3 -&gt; Snap-4 -&gt; Running-Point
        
        If user chooses to revert to snap-2 then snap-4 and snap-3 would also
        be deleted. After revert operation disk would have below configuration:
        
        BaseDisk -&gt; Snap-2 -&gt; Running-Point
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/HostVStorageObjectRevertRequestType'
      responses:
        '200':
          description: |2
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***FileFault***: If an error occurs while snapshotting the virtual
            storage object.
            
            ***InvalidDatastore***: If the operation cannot be performed on the
            datastore.
            
            ***InvalidState***: If the operation cannot be performed on the disk.
            
            ***NotFound***: If specified virtual storage object cannot be found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostVStorageObjectManager/{moId}/HostClearVStorageObjectControlFlags:
    post:
      tags: [HostVStorageObjectManager]
      summary: |2
        Clear control flags on VStorageObject.
      operationId: HostVStorageObjectManager_HostClearVStorageObjectControlFlags
      description: |2
        Clear control flags on VStorageObject.
        
        The control flags are defined in
        *vslmVStorageObjectControlFlag_enum*.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/HostClearVStorageObjectControlFlagsRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***InvalidDatastore***: If the operation cannot be performed on
            the datastore.
            
            ***InvalidState***: If the operation cannot be performed on the disk.
            The disk may be consumed.
            
            ***NotFound***: If specified virtual storage object cannot
            be found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostVStorageObjectManager/{moId}/HostCloneVStorageObject_Task:
    post:
      tags: [HostVStorageObjectManager]
      summary: |2
        Clone a virtual storage object.
      operationId: HostVStorageObjectManager_HostCloneVStorageObject_Task
      description: |2
        Clone a virtual storage object.
        
        Requires Datastore.FileManagement privilege on both source and
        destination datastore.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/HostCloneVStorageObjectRequestType'
      responses:
        '200':
          description: |2
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***FileFault***: If an error occurs while cloning the virtual
            storage object.
            
            ***InvalidDatastore***: If the operation cannot be performed on
            the datastore.
            
            ***NotFound***: If specified virtual storage object cannot be
            found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostVStorageObjectManager/{moId}/HostCreateDisk_Task:
    post:
      tags: [HostVStorageObjectManager]
      summary: |2
        Create a virtual disk, which is a storage object with
        *disk*
        as consumption type.
      operationId: HostVStorageObjectManager_HostCreateDisk_Task
      description: |2
        Create a virtual disk, which is a storage object with
        *disk*
        as consumption type.
        
        Requires Datastore.FileManagement privilege on the datastore where the
        virtual disk object is created.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/HostCreateDiskRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to
            monitor the operation. The *info.result*
            property in the *Task* contains the newly created
            *VStorageObject* upon success.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***FileFault***: If an error occurs when creating the virtual disk.
            
            ***InvalidDatastore***: If the operation cannot be performed on the
            datastore.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostVStorageObjectManager/{moId}/HostVStorageObjectCreateDiskFromSnapshot_Task:
    post:
      tags: [HostVStorageObjectManager]
      summary: |2
        Creates a new Disk from given snapshot of a VStorageObject.
      operationId: HostVStorageObjectManager_HostVStorageObjectCreateDiskFromSnapshot_Task
      description: |2
        Creates a new Disk from given snapshot of a VStorageObject.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/HostVStorageObjectCreateDiskFromSnapshotRequestType'
      responses:
        '200':
          description: |2
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***FileFault***: If an error occurs while snapshotting the virtual
            storage object.
            
            ***InvalidDatastore***: If the operation cannot be performed on the
            datastore.
            
            ***InvalidState***: If the operation cannot be performed on the disk.
            
            ***NotFound***: If specified virtual storage object cannot be found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostVStorageObjectManager/{moId}/HostVStorageObjectCreateSnapshot_Task:
    post:
      tags: [HostVStorageObjectManager]
      summary: |2
        Creates a snapshot of a given VStorageObject.
      operationId: HostVStorageObjectManager_HostVStorageObjectCreateSnapshot_Task
      description: |2
        Creates a snapshot of a given VStorageObject.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/HostVStorageObjectCreateSnapshotRequestType'
      responses:
        '200':
          description: |2
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***FileFault***: If an error occurs while snapshotting the virtual
            storage object.
            
            ***InvalidDatastore***: If the operation cannot be performed on the
            datastore.
            
            ***InvalidState***: If the operation cannot be performed on the disk.
            
            ***NotFound***: If specified virtual storage object cannot be found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostVStorageObjectManager/{moId}/VStorageObjectCreateSnapshotEx_Task:
    post:
      tags: [HostVStorageObjectManager]
      summary: |2
        Creates a snapshot of a given VStorageObject.
      operationId: HostVStorageObjectManager_VStorageObjectCreateSnapshotEx_Task
      description: |2
        Creates a snapshot of a given VStorageObject.
        
        Requires Datastore.FileManagement privilege.
        
        ***Since:*** vSphere API Release 8.0.2.0
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VStorageObjectCreateSnapshotExRequestType'
      responses:
        '200':
          description: |2
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***FileFault***: If an error occurs while snapshotting the virtual
            storage object.
            
            ***InvalidDatastore***: If the operation cannot be performed on the
            datastore.
            
            ***InvalidState***: If the operation cannot be performed on the disk.
            
            ***NotFound***: If specified virtual storage object cannot be found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostVStorageObjectManager/{moId}/HostVStorageObjectDeleteSnapshot_Task:
    post:
      tags: [HostVStorageObjectManager]
      summary: |2
        Deletes a given snapshot of a VStorageObject.
      operationId: HostVStorageObjectManager_HostVStorageObjectDeleteSnapshot_Task
      description: |2
        Deletes a given snapshot of a VStorageObject.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/HostVStorageObjectDeleteSnapshotRequestType'
      responses:
        '200':
          description: |2
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***FileFault***: If an error occurs while snapshotting the virtual
            storage object.
            
            ***InvalidDatastore***: If the operation cannot be performed on the
            datastore.
            
            ***InvalidState***: If the operation cannot be performed on the disk.
            
            ***NotFound***: If specified virtual storage object cannot be found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostVStorageObjectManager/{moId}/VStorageObjectDeleteSnapshotEx_Task:
    post:
      tags: [HostVStorageObjectManager]
      summary: |2
        Deletes a given snapshot of a VStorageObject.
      operationId: HostVStorageObjectManager_VStorageObjectDeleteSnapshotEx_Task
      description: |2
        Deletes a given snapshot of a VStorageObject.
        
        Requires Datastore.FileManagement privilege.
        
        ***Since:*** vSphere API Release 8.0.2.0
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VStorageObjectDeleteSnapshotExRequestType'
      responses:
        '200':
          description: |2
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***FileFault***: If an error occurs while snapshotting the virtual
            storage object.
            
            ***InvalidDatastore***: If the operation cannot be performed on the
            datastore.
            
            ***InvalidState***: If the operation cannot be performed on the disk.
            
            ***NotFound***: If specified virtual storage object cannot be found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostVStorageObjectManager/{moId}/HostDeleteVStorageObject_Task:
    post:
      tags: [HostVStorageObjectManager]
      summary: |2
        Delete a virtual storage object and its assoicated backings.
      operationId: HostVStorageObjectManager_HostDeleteVStorageObject_Task
      description: |2
        Delete a virtual storage object and its assoicated backings.
        
        Requires Datastore.FileManagement privilege on the datastore where the
        virtual storage object is located.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/HostDeleteVStorageObjectRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to
            monitor the operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***FileFault***: If an error occurs when deleting the virtual storage
            object.
            
            ***NotFound***: If the specified virtual storage object cannot be
            found.
            
            ***InvalidDatastore***: If the operation cannot be performed on the
            datastore.
            
            ***InvalidState***: If the operation cannot be performed on the disk.
            The disk may be consumed and cannot be deleted.
            
            ***TaskInProgress***: If the virtual storage object is busy.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostVStorageObjectManager/{moId}/HostDeleteVStorageObjectEx_Task:
    post:
      tags: [HostVStorageObjectManager]
      summary: |2
        Delete a virtual storage object and its assoicated backings.
      operationId: HostVStorageObjectManager_HostDeleteVStorageObjectEx_Task
      description: |2
        Delete a virtual storage object and its assoicated backings.
        
        Requires Datastore.FileManagement privilege on the datastore where the
        virtual storage object is located.
        
        ***Since:*** vSphere API Release 7.0.2.0
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/HostDeleteVStorageObjectExRequestType'
      responses:
        '200':
          description: |2
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***FileFault***: If an error occurs when deleting the virtual storage
            object.
            
            ***NotFound***: If the specified virtual storage object cannot be
            found.
            
            ***InvalidDatastore***: If the operation cannot be performed on the
            datastore.
            
            ***InvalidState***: If the operation cannot be performed on the disk.
            The disk may be consumed and cannot be deleted.
            
            ***TaskInProgress***: If the virtual storage object is busy.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostVStorageObjectManager/{moId}/HostExtendDisk_Task:
    post:
      tags: [HostVStorageObjectManager]
      summary: |2
        Expand the capacity of a virtual disk, which is a storage object with
        *disk*, to the new
        capacity.
      operationId: HostVStorageObjectManager_HostExtendDisk_Task
      description: |2
        Expand the capacity of a virtual disk, which is a storage object with
        *disk*, to the new
        capacity.
        
        If new capacity is smaller than current disk capacity, then
        operation fails due to invalid capacity. If new capacity is greater
        than current disk capacity, then operation proceeds. If new capacity
        is equal to current disk ccapcity, then operation succeeds without
        any actual extension.
        The extended disk region will be the same as the original disk:
        \- For a zerothick disk, the extended disk region will be zeroedthick.
        \- For an eagerzerothick disk, the extended disk region will be
        eagerzeroedthick
        \- A thin-provisioned disk will always be extended as a thin-provisioned
        disk.
        
        Requires Datastore.FileManagement privilege on the datastore where the
        virtual storage object is located.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/HostExtendDiskRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to
            monitor the operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***FileFault***: If an error occurs while extending the virtual disk.
            
            ***NotFound***: If the specified virtual storage object cannot be
            found.
            
            ***InvalidDatastore***: If the operation cannot be performed on the
            datastore.
            
            ***InvalidState***: If the operation cannot be performed on the disk.
            The disk may be consumed and cannot be extended.
            
            ***TaskInProgress***: If the virtual storage object is busy.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostVStorageObjectManager/{moId}/VStorageObjectExtendDiskEx_Task:
    post:
      tags: [HostVStorageObjectManager]
      summary: |2
        Expand the capacity of a virtual disk, which is a storage object with
        *disk*, to the new
        capacity.
      operationId: HostVStorageObjectManager_VStorageObjectExtendDiskEx_Task
      description: |2
        Expand the capacity of a virtual disk, which is a storage object with
        *disk*, to the new
        capacity.
        
        If new capacity is smaller than current disk capacity, then
        operation fails due to invalid capacity. If new capacity is greater
        than current disk capacity, then operation proceeds. If new capacity
        is equal to current disk ccapcity, then operation succeeds without
        any actual extension.
        The extended disk region will be the same as the original disk:
        \- For a zerothick disk, the extended disk region will be zeroedthick.
        \- For an eagerzerothick disk, the extended disk region will be
        eagerzeroedthick
        \- A thin-provisioned disk will always be extended as a thin-provisioned
        disk.
        
        ***Since:*** vSphere API Release 8.0.2.0
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VStorageObjectExtendDiskExRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to
            monitor the operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***FileFault***: If an error occurs while extending the virtual disk.
            
            ***NotFound***: If the specified virtual storage object cannot be
            found.
            
            ***InvalidDatastore***: If the operation cannot be performed on the
            datastore.
            
            ***InvalidState***: If the operation cannot be performed on the disk.
            The disk may be consumed and cannot be extended.
            
            ***TaskInProgress***: If the virtual storage object is busy.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostVStorageObjectManager/{moId}/HostInflateDisk_Task:
    post:
      tags: [HostVStorageObjectManager]
      summary: |2
        Inflate a sparse or thin-provisioned virtual disk up to the full size.
      operationId: HostVStorageObjectManager_HostInflateDisk_Task
      description: |2
        Inflate a sparse or thin-provisioned virtual disk up to the full size.
        
        Additional space allocated to the disk as a result of this operation
        will be filled with zeroes.
        
        Currently inflateDisk API only supports the following combinations:
        Valid provisioning type: THIN;
        Valid Datastore: VMFS, NFS.
        Inflating a disk is not applicable for VVol/VSAN datastore.
        
        Requires Datastore.FileManagement privilege on the datastore where the
        virtual storage object is located.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/HostInflateDiskRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to
            monitor the operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***FileFault***: If an error occurs while inflating the virtual disk.
            
            ***NotFound***: If the specified virtual storage object cannot be
            found.
            
            ***InvalidDatastore***: If the operation cannot be performed on the
            datastore.
            
            ***InvalidState***: If the operation cannot be performed on the disk.
            The disk may be consumed and cannot be extended.
            
            ***TaskInProgress***: If the virtual storage object is busy.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostVStorageObjectManager/{moId}/HostListVStorageObject:
    post:
      tags: [HostVStorageObjectManager]
      summary: |2
        List all virtual storage objects located on a datastore.
      operationId: HostVStorageObjectManager_HostListVStorageObject
      description: |2
        List all virtual storage objects located on a datastore.
        
        Requires Datastore.FileManagement privilege on the datastore where the
        virtual storage object is located.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/HostListVStorageObjectRequestType'
      responses:
        '200':
          description: |2
            The list of IDs of the virtual storage objects located on the
            datastore.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/ID'
        '500':
          description: |2
            ***InvalidDatastore***: If the operation cannot be performed on the
            datastore, such as datastore cannot be found
            or inaccessible.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InvalidDatastore'

  /HostVStorageObjectManager/{moId}/HostQueryVirtualDiskUuid:
    post:
      tags: [HostVStorageObjectManager]
      summary: |2
        Get the virtual disk UUID.
      operationId: HostVStorageObjectManager_HostQueryVirtualDiskUuid
      description: |2
        Get the virtual disk UUID.
        
        ***Since:*** vSphere API Release 8.0.3.0
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/HostQueryVirtualDiskUuidRequestType'
      responses:
        '200':
          description: |2
            The hex representation of the unique ID for this virtual disk.
          content:
            application/json:
              schema:
                type: string
        '500':
          description: |2
            ***FileFault***: if an error occurs reading the virtual disk.
            
            ***InvalidDatastore***: if the operation cannot be performed on the datastore.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostVStorageObjectManager/{moId}/HostReconcileDatastoreInventory_Task:
    post:
      tags: [HostVStorageObjectManager]
      summary: |2
        Reconcile the datastore inventory info of virtual storage objects.
      operationId: HostVStorageObjectManager_HostReconcileDatastoreInventory_Task
      description: |2
        Reconcile the datastore inventory info of virtual storage objects.
        
        Requires Datastore.FileManagement privilege.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/HostReconcileDatastoreInventoryRequestType'
      responses:
        '200':
          description: |2
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***InvalidDatastore***: If the operation cannot be performed on
            the datastore.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostVStorageObjectManager/{moId}/HostRegisterDisk:
    post:
      tags: [HostVStorageObjectManager]
      summary: |2
        Promote a virtual disk to a First Class Disk.
      operationId: HostVStorageObjectManager_HostRegisterDisk
      description: |2
        Promote a virtual disk to a First Class Disk.
        
        Requires Datastore.FileManagement privilege on the datastore where the
        virtual disk resides.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/HostRegisterDiskRequestType'
      responses:
        '200':
          description: |2
            The registered virtual storage object for the disk.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VStorageObject'
        '500':
          description: |2
            ***FileFault***: If an error occurs while registering the virtual disk.
            
            ***InvalidDatastore***: If datastore cannot be found or the operation
            cannot be performed on the datastore.
            
            ***AlreadyExists***: If disk is already registered as a
            virtual storage object.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostVStorageObjectManager/{moId}/HostRelocateVStorageObject_Task:
    post:
      tags: [HostVStorageObjectManager]
      summary: |2
        Relocate a virtual storage object.
      operationId: HostVStorageObjectManager_HostRelocateVStorageObject_Task
      description: |2
        Relocate a virtual storage object.
        
        Requires Datastore.FileManagement privilege on both source and
        destination datastore.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/HostRelocateVStorageObjectRequestType'
      responses:
        '200':
          description: |2
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***FileFault***: If an error occurs while relocating the virtual
            storage object.
            
            ***InvalidDatastore***: If the operation cannot be performed on
            the datastore.
            
            ***InvalidState***: If the operation cannot be performed on the disk.
            The disk may be consumed and cannot be relocated.
            
            ***NotFound***: If specified virtual storage object cannot
            be found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostVStorageObjectManager/{moId}/HostRenameVStorageObject:
    post:
      tags: [HostVStorageObjectManager]
      summary: |2
        Rename a virtual storage object.
      operationId: HostVStorageObjectManager_HostRenameVStorageObject
      description: |2
        Rename a virtual storage object.
        
        Requires Datastore.FileManagement privilege on the datastore where the
        virtual storage object is located.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/HostRenameVStorageObjectRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***FileFault***: If an error occurs while renaming the virtual storage
            object.
            
            ***NotFound***: If the specified virtual storage object cannot be
            found.
            
            ***InvalidDatastore***: If the operation cannot be performed on the
            datastore.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostVStorageObjectManager/{moId}/RenameVStorageObjectEx:
    post:
      tags: [HostVStorageObjectManager]
      summary: |2
        Rename a virtual storage object.
      operationId: HostVStorageObjectManager_RenameVStorageObjectEx
      description: |2
        Rename a virtual storage object.
        
        ***Since:*** vSphere API Release 8.0.2.0
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RenameVStorageObjectExRequestType'
      responses:
        '200':
          description: |2
            The vclock info of this operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/vslmVClockInfo'
        '500':
          description: |2
            ***FileFault***: If an error occurs while renaming the virtual storage
            object.
            
            ***NotFound***: If the specified virtual storage object cannot be
            found.
            
            ***InvalidDatastore***: If the operation cannot be performed on the
            datastore.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostVStorageObjectManager/{moId}/HostVStorageObjectRetrieveSnapshotInfo:
    post:
      tags: [HostVStorageObjectManager]
      summary: |2
        Retrieves snapshot information of a given VStorageObject.
      operationId: HostVStorageObjectManager_HostVStorageObjectRetrieveSnapshotInfo
      description: |2
        Retrieves snapshot information of a given VStorageObject.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/HostVStorageObjectRetrieveSnapshotInfoRequestType'
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VStorageObjectSnapshotInfo'
        '500':
          description: |2
            ***FileFault***: If an error occurs while snapshotting the virtual
            storage object.
            
            ***InvalidDatastore***: If the operation cannot be performed on the
            datastore.
            
            ***InvalidState***: If the operation cannot be performed on the disk.
            
            ***NotFound***: If specified virtual storage object cannot be found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostVStorageObjectManager/{moId}/HostRetrieveVStorageInfrastructureObjectPolicy:
    post:
      tags: [HostVStorageObjectManager]
      summary: |2
        Retrieve virtual storage infrastructure object SBPM policy on given
        datastore.
      operationId: HostVStorageObjectManager_HostRetrieveVStorageInfrastructureObjectPolicy
      description: |2
        Retrieve virtual storage infrastructure object SBPM policy on given
        datastore.
        
        Only support VSAN datastore.
        
        Requires Datastore.FileManagement privilege on the datastore specified.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/HostRetrieveVStorageInfrastructureObjectPolicyRequestType'
      responses:
        '200':
          description: |2
            The policy object of virtual storage object.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/vslmInfrastructureObjectPolicy'
        '500':
          description: |2
            ***InvalidDatastore***: If the operation cannot be performed on the
            datastore.
            
            ***InvalidState***: If the operation cannot be performed on the disk.
            
            ***NotFound***: If specified virtual storage object cannot be found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostVStorageObjectManager/{moId}/HostRetrieveVStorageObject:
    post:
      tags: [HostVStorageObjectManager]
      summary: |2
        Retrieve a virtual storage object.
      operationId: HostVStorageObjectManager_HostRetrieveVStorageObject
      description: |2
        Retrieve a virtual storage object.
        
        Requires Datastore.FileManagement privilege on the datastore where the
        virtual storage object is located.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/HostRetrieveVStorageObjectRequestType'
      responses:
        '200':
          description: |2
            The required virtual storage object.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VStorageObject'
        '500':
          description: |2
            ***FileFault***: If an error occurs when retrieving the virtual object.
            
            ***InvalidDatastore***: If the operation cannot be performed on the
            datastore.
            
            ***NotFound***: If specified virtual storage object cannot be found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostVStorageObjectManager/{moId}/HostRetrieveVStorageObjectMetadata:
    post:
      tags: [HostVStorageObjectManager]
      summary: |2
        Retrieve metadata KV pairs from a virtual storage object.
      operationId: HostVStorageObjectManager_HostRetrieveVStorageObjectMetadata
      description: |2
        Retrieve metadata KV pairs from a virtual storage object.
        
        Requires Datastore.FileManagement privilege on the datastore where the
        virtual storage object is located.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/HostRetrieveVStorageObjectMetadataRequestType'
      responses:
        '200':
          description: |2
            returns the array of key value pair
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/KeyValue'
        '500':
          description: |2
            ***InvalidDatastore***: If the operation cannot be performed on the
            datastore, such as datastore cannot be found
            or inaccessible.
            
            ***InvalidState***: If the operation cannot be performed on the disk.
            
            ***NotFound***: If specified virtual storage object cannot be found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostVStorageObjectManager/{moId}/HostRetrieveVStorageObjectMetadataValue:
    post:
      tags: [HostVStorageObjectManager]
      summary: |2
        Retrieve the metadata value by key from a virtual storage object.
      operationId: HostVStorageObjectManager_HostRetrieveVStorageObjectMetadataValue
      description: |2
        Retrieve the metadata value by key from a virtual storage object.
        
        Requires Datastore.FileManagement privilege on the datastore where the
        virtual storage object is located.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/HostRetrieveVStorageObjectMetadataValueRequestType'
      responses:
        '200':
          description: |2
            returns the value for the key
          content:
            application/json:
              schema:
                type: string
        '500':
          description: |2
            ***InvalidDatastore***: If the operation cannot be performed on the
            datastore, such as datastore cannot be found
            or inaccessible.
            
            ***InvalidState***: If the operation cannot be performed on the disk.
            
            ***NotFound***: If specified virtual storage object cannot be found.
            
            ***KeyNotFound***: If specified key cannot be found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostVStorageObjectManager/{moId}/HostRetrieveVStorageObjectState:
    post:
      tags: [HostVStorageObjectManager]
      summary: |2
        Retrieve a virtual storage object state.
      operationId: HostVStorageObjectManager_HostRetrieveVStorageObjectState
      description: |2
        Retrieve a virtual storage object state.
        
        Requires Datastore.FileManagement privilege on the datastore where the
        virtual storage object is located.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/HostRetrieveVStorageObjectStateRequestType'
      responses:
        '200':
          description: |2
            The required virtual storage object state.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VStorageObjectStateInfo'
        '500':
          description: |2
            ***FileFault***: If an error occurs when retrieving the virtual object
            state.
            
            ***InvalidDatastore***: If the operation cannot be performed on the
            datastore.
            
            ***NotFound***: If specified virtual storage object cannot be found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostVStorageObjectManager/{moId}/RevertVStorageObjectEx_Task:
    post:
      tags: [HostVStorageObjectManager]
      summary: |2
        Reverts to a given snapshot of a VStorageObject.
      operationId: HostVStorageObjectManager_RevertVStorageObjectEx_Task
      description: |2
        Reverts to a given snapshot of a VStorageObject.
        
        This operation is supported on detached VirtualDisks
        During revert all the snapshots which were taken after the specified
        snapshot would get deleted.
        
        E.g. Consider Disk with 4 snapshots
        
        BaseDisk -&gt; Snap-2 -&gt; Snap-3 -&gt; Snap-4 -&gt; Running-Point
        
        If user chooses to revert to snap-2 then snap-4 and snap-3 would also
        be deleted. After revert operation disk would have below configuration:
        
        BaseDisk -&gt; Snap-2 -&gt; Running-Point
        
        Requires Datastore.FileManagement privilege.
        
        ***Since:*** vSphere API Release 8.0.2.0
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RevertVStorageObjectExRequestType'
      responses:
        '200':
          description: |2
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***FileFault***: If an error occurs while snapshotting the virtual
            storage object.
            
            ***InvalidDatastore***: If the operation cannot be performed on the
            datastore.
            
            ***InvalidState***: If the operation cannot be performed on the disk.
            
            ***NotFound***: If specified virtual storage object cannot be found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostVStorageObjectManager/{moId}/HostScheduleReconcileDatastoreInventory:
    post:
      tags: [HostVStorageObjectManager]
      summary: |2
        Schedules reconcile of the datastore inventory info of virtual storage
        objects.
      operationId: HostVStorageObjectManager_HostScheduleReconcileDatastoreInventory
      description: |2
        Schedules reconcile of the datastore inventory info of virtual storage
        objects.
        
        This method just schedules the reconcile operation for the
        nearby future and returns. Note that since the reconcile operation will
        be executed after this method already returns the success of this method
        should not be considered as success of the actual reconcile operation.
        
        Requires Datastore.FileManagement privilege.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/HostScheduleReconcileDatastoreInventoryRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***InvalidDatastore***: If the operation cannot be performed on
            the datastore.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostVStorageObjectManager/{moId}/HostSetVStorageObjectControlFlags:
    post:
      tags: [HostVStorageObjectManager]
      summary: |2
        Set control flags on VStorageObject.
      operationId: HostVStorageObjectManager_HostSetVStorageObjectControlFlags
      description: |2
        Set control flags on VStorageObject.
        
        The control flags are defined in
        *vslmVStorageObjectControlFlag_enum*.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/HostSetVStorageObjectControlFlagsRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***InvalidDatastore***: If the operation cannot be performed on
            the datastore.
            
            ***InvalidState***: If the operation cannot be performed on the disk.
            The disk may be consumed.
            
            ***NotFound***: If specified virtual storage object cannot
            be found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostVStorageObjectManager/{moId}/HostSetVirtualDiskUuid_Task:
    post:
      tags: [HostVStorageObjectManager]
      summary: |2
        Set the virtual disk Uuid.
      operationId: HostVStorageObjectManager_HostSetVirtualDiskUuid_Task
      description: |2
        Set the virtual disk Uuid.
        
        ***Since:*** vSphere API Release 8.0.3.0
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/HostSetVirtualDiskUuidRequestType'
      responses:
        '200':
          description: |2
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***FileFault***: if an error occurs updating the virtual disk.
            
            ***InvalidDatastore***: if the operation cannot be performed on the datastore.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostVStorageObjectManager/{moId}/HostUpdateVStorageObjectMetadata_Task:
    post:
      tags: [HostVStorageObjectManager]
      summary: |2
        Update metadata KV pairs to a virtual storage object.
      operationId: HostVStorageObjectManager_HostUpdateVStorageObjectMetadata_Task
      description: |2
        Update metadata KV pairs to a virtual storage object.
        
        And this API is by
        design supposed to be used for all of the addition, modification and
        deletion operations of metadata KV pairs.
        
        Requires Datastore.FileManagement privilege on the datastore where the
        virtual storage object is located.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/HostUpdateVStorageObjectMetadataRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to
            monitor the operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***InvalidDatastore***: If the operation cannot be performed on the
            datastore, such as datastore cannot be found
            or inaccessible.
            
            ***InvalidState***: If the operation cannot be performed on the disk.
            
            ***NotFound***: If specified virtual storage object cannot be found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostVStorageObjectManager/{moId}/HostUpdateVStorageObjectMetadataEx_Task:
    post:
      tags: [HostVStorageObjectManager]
      summary: |2
        Update metadata KV pairs to a virtual storage object.
      operationId: HostVStorageObjectManager_HostUpdateVStorageObjectMetadataEx_Task
      description: |2
        Update metadata KV pairs to a virtual storage object.
        
        And this API is by
        design supposed to be used for all of the addition, modification and
        deletion operations of metadata KV pairs.
        
        Requires Datastore.FileManagement privilege on the datastore where the
        virtual storage object is located.
        
        ***Since:*** vSphere API Release 7.0.2.0
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/HostUpdateVStorageObjectMetadataExRequestType'
      responses:
        '200':
          description: |2
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***InvalidDatastore***: If the operation cannot be performed on the
            datastore, such as datastore cannot be found
            or inaccessible.
            
            ***InvalidState***: If the operation cannot be performed on the disk.
            
            ***NotFound***: If specified virtual storage object cannot be found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostVirtualNicManager/{moId}/DeselectVnicForNicType:
    post:
      tags: [HostVirtualNicManager]
      summary: |2
        Deselect the VirtualNic to be a special type.
      operationId: HostVirtualNicManager_DeselectVnicForNicType
      description: |2
        Deselect the VirtualNic to be a special type.
        
        ***Required privileges:*** Host.Config.Network
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DeselectVnicForNicTypeRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***InvalidArgument***: if nicType is invalid, device represents
            a nonexistent or invalid VirtualNic, or the VirtualNic is
            not selected
            
            ***HostConfigFault***: for any other failure.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MethodFault'

  /HostVirtualNicManager/{moId}/QueryNetConfig:
    post:
      tags: [HostVirtualNicManager]
      summary: |2
        Get the NetConfig for the specified nicType
      operationId: HostVirtualNicManager_QueryNetConfig
      description: |2
        Get the NetConfig for the specified nicType
        
        ***Required privileges:*** System.Read
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QueryNetConfigRequestType'
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                $ref: '#/components/schemas/VirtualNicManagerNetConfig'
        '500':
          description: |2
            ***InvalidArgument***: if nicType is invalid
            
            ***HostConfigFault***: for any other failure.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MethodFault'

  /HostVirtualNicManager/{moId}/SelectVnicForNicType:
    post:
      tags: [HostVirtualNicManager]
      summary: |2
        Select the NicType of the VirtualNic.
      operationId: HostVirtualNicManager_SelectVnicForNicType
      description: |2
        Select the NicType of the VirtualNic.
        
        Selecting a device automatically
        deselects the previous selection if *VirtualNicManagerNetConfig.multiSelectAllowed*
        is false for the specified nicType.
        Else, the device is added to the list of selected nics.
        
        ***Required privileges:*** Host.Config.Network
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SelectVnicForNicTypeRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***InvalidArgument***: if nicType is invalid, or device represents a
            nonexistent or invalid VirtualNic
            
            ***HostConfigFault***: for any other failure.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MethodFault'

  /HostVirtualNicManager/{moId}/setCustomValue:
    post:
      tags: [HostVirtualNicManager]
      summary: |2
        Assigns a value to a custom field.
      operationId: HostVirtualNicManager_setCustomValue
      description: |2
        Assigns a value to a custom field.
        
        The setCustomValue method requires
        whichever updatePrivilege is defined as one of the
        *CustomFieldDef.fieldInstancePrivileges*
        for the CustomFieldDef whose value is being changed.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/setCustomValueRequestType'
      responses:
        '204':
          description: |2
            No Content

  /HostVirtualNicManager/{moId}/availableField:
    get:
      tags: [HostVirtualNicManager]
      summary: |2
        List of custom field definitions that are valid for the object's type.
      operationId: HostVirtualNicManager_getAvailableField
      description: |2
        List of custom field definitions that are valid for the object's type.
        
        The fields are sorted by *CustomFieldDef.name*.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/CustomFieldDef'

  /HostVirtualNicManager/{moId}/info:
    get:
      tags: [HostVirtualNicManager]
      summary: |2
        Network configuration.
      operationId: HostVirtualNicManager_getInfo
      description: |2
        Network configuration.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HostVirtualNicManagerInfo'

  /HostVirtualNicManager/{moId}/value:
    get:
      tags: [HostVirtualNicManager]
      summary: |2
        List of custom field values.
      operationId: HostVirtualNicManager_getValue
      description: |2
        List of custom field values.
        
        Each value uses a key to associate
        an instance of a *CustomFieldStringValue* with
        a custom field definition.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/CustomFieldValue'

  /HostVsanInternalSystem/{moId}/AbdicateDomOwnership:
    post:
      tags: [HostVsanInternalSystem]
      summary: |2
        Abdicate ownership of DOM objects.
      operationId: HostVsanInternalSystem_AbdicateDomOwnership
      description: |2
        Abdicate ownership of DOM objects.
        
        The objects must be currently owned
        by this host. Which host has ownership of an object at a given point in
        time can be queried from QueryVsanObjects() or QueryCmmds() APIs.
        Abidcating ownership tears down DOM owner in-memory state. Hosts in the
        cluster will then compete to become the new owner of the object, similar
        to a host failure event. There is a short interuption of IO flow while
        the owner re-election is going on, but it is transparent to any consumers
        of the object.
        This API is meant as a troubleshooting and debugging tool. It is internal
        at this point and can be used to resolve issues where DOM owner gets
        "stuck".
        
        ***Required privileges:*** Host.Config.Storage
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AbdicateDomOwnershipRequestType'
      responses:
        '200':
          description: |2
            List of UUIDs successfully abdicated.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  type: string

  /HostVsanInternalSystem/{moId}/CanProvisionObjects:
    post:
      tags: [HostVsanInternalSystem]
      summary: |2
        Determine if given objects can be provisioned.
      operationId: HostVsanInternalSystem_CanProvisionObjects
      description: |2
        Determine if given objects can be provisioned.
        
        Determines if the objects
        of the given size can be provisioned with the given policies.
        The API is intended to answer the question: can these objects be
        provisioned with the given policy using the current cluster topology
        (#hosts and #disks) and does NOT take into account free space on the
        disk, size of disks, etc. If the objects cannot be provisioned,
        the API returns the reason for not being able to satisfy the policy.
        If the objects can be provisioned, the API returns the cost of
        provisioning objects with this policy. Please note: This API ignores
        forceProvisioning.
        
        ***Required privileges:*** System.Read
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CanProvisionObjectsRequestType'
      responses:
        '200':
          description: |2
            List of PolicySatisfiability objects, one for each specified
            size.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/VsanPolicySatisfiability'
        '500':
          description: |2
            Failure
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostVsanInternalSystem/{moId}/DeleteVsanObjects:
    post:
      tags: [HostVsanInternalSystem]
      summary: |2
        Delete VSAN objects.
      operationId: HostVsanInternalSystem_DeleteVsanObjects
      description: |2
        Delete VSAN objects.
        
        This API is internal and intended for troubleshooting/debugging only.
        WARNING: This API can be slow because we do IOs to all the objects.
        This API can be used to delete VSAN objects. DOM won't allow access to
        objects which have lost quorum. Such objects can be deleted with the
        optional "force" flag. These objects may however re-appear with quorum
        if the absent components come back (network partition gets resolved,
        etc.)
        
        ***Required privileges:*** Host.Config.Storage
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DeleteVsanObjectsRequestType'
      responses:
        '200':
          description: |2
            List of DeleteVsanObjectsResult.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/HostVsanInternalSystemDeleteVsanObjectsResult'
        '500':
          description: |2
            Failure
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostVsanInternalSystem/{moId}/GetVsanObjExtAttrs:
    post:
      tags: [HostVsanInternalSystem]
      summary: |2
        Get VSAN object extended attributes.
      operationId: HostVsanInternalSystem_GetVsanObjExtAttrs
      description: |2
        Get VSAN object extended attributes.
        
        This API is internal and intended for troubleshooting/debugging
        situations in the field. WARNING: This API can be slow because we
        do IOs (reads) to all the objects. This API can be used to get
        extended attributes of any object in the VSAN cluster from any host
        provided the object is accessible from that host. In case of an error,
        we return a dict with key "Error" for that object.
        
        ***Required privileges:*** System.Read
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GetVsanObjExtAttrsRequestType'
      responses:
        '200':
          description: |2
            JSON string with the extended attributes.
          content:
            application/json:
              schema:
                type: string
        '500':
          description: |2
            Failure
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostVsanInternalSystem/{moId}/QueryCmmds:
    post:
      tags: [HostVsanInternalSystem]
      summary: |2
        Query CMMDS directly.
      operationId: HostVsanInternalSystem_QueryCmmds
      description: |2
        Query CMMDS directly.
        
        The list of given queries is executed and all
        results are returned in a flat list. No attempt is made to de-dupe
        results in the case of overlapping query results.
        
        ***Required privileges:*** System.Read
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QueryCmmdsRequestType'
      responses:
        '200':
          description: |2
            JSON string with the results
          content:
            application/json:
              schema:
                type: string

  /HostVsanInternalSystem/{moId}/QueryObjectsOnPhysicalVsanDisk:
    post:
      tags: [HostVsanInternalSystem]
      summary: |2
        Query DOM objects on a given set of physical disks.
      operationId: HostVsanInternalSystem_QueryObjectsOnPhysicalVsanDisk
      description: |2
        Query DOM objects on a given set of physical disks.
        
        Finds all DOM objects
        that have at least one component on the given physical disks. In order to
        make this API efficient, the output of this API contains the found
        DOM\_OBJECT, and referenced LSOM\_OBJECT and DISK entries.
        
        ***Required privileges:*** System.Read
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QueryObjectsOnPhysicalVsanDiskRequestType'
      responses:
        '200':
          description: |2
            JSON string with the results
          content:
            application/json:
              schema:
                type: string

  /HostVsanInternalSystem/{moId}/QueryPhysicalVsanDisks:
    post:
      tags: [HostVsanInternalSystem]
      summary: |2
        Query statistics about physical VSAN disks.
      operationId: HostVsanInternalSystem_QueryPhysicalVsanDisks
      description: |2
        Query statistics about physical VSAN disks.
        
        Using the props parameter the
        caller can control which properties are returned. Requesting only the
        required properties is encouraged to reduce server load, response time
        and client load.
        
        ***Required privileges:*** System.Read
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QueryPhysicalVsanDisksRequestType'
      responses:
        '200':
          description: |2
            JSON string with the results
          content:
            application/json:
              schema:
                type: string

  /HostVsanInternalSystem/{moId}/QuerySyncingVsanObjects:
    post:
      tags: [HostVsanInternalSystem]
      summary: |2
        Query information about VSAN DOM objects that are currently syncing data.
      operationId: HostVsanInternalSystem_QuerySyncingVsanObjects
      description: |2
        Query information about VSAN DOM objects that are currently syncing data.
        
        Instead of returning all objects, only such objects are returned that
        are currently resyncing any stale components or syncing fresh replicas.
        The API returns the same output format as queryVsanObjects(). It
        retrieves information about syncing all objects, or retricts the
        search for syncing objects to the UUID list provided. In order to make
        this API efficient, the output of this API contains the found
        DOM\_OBJECT, and referenced LSOM\_OBJECT and DISK entries.
        
        ***Required privileges:*** System.Read
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QuerySyncingVsanObjectsRequestType'
      responses:
        '200':
          description: |2
            JSON string with the results
          content:
            application/json:
              schema:
                type: string

  /HostVsanInternalSystem/{moId}/QueryVsanObjectUuidsByFilter:
    post:
      tags: [HostVsanInternalSystem]
      summary: |2
        Query VSAN object UUIDs by filtering conditions.
      operationId: HostVsanInternalSystem_QueryVsanObjectUuidsByFilter
      description: |2
        Query VSAN object UUIDs by filtering conditions.
        
        The API queries CMMDS by given filtering conditions (initially only for
        object version) and return object UUID in an array with limited elements
        count.
        If caller specified the inputs objects UUID, then only these objects will
        be checked for the filtering conditions, and return ones which satisfy
        the filtering condition. In this case, the 'limit' parameter will be
        ignored.
        
        ***Required privileges:*** System.Read
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QueryVsanObjectUuidsByFilterRequestType'
      responses:
        '200':
          description: |2
            String array of object uuids which satisfy the filtering
            conditions.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  type: string
        '500':
          description: |2
            ***VsanFault***: for any unexpected failures.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VsanFault'

  /HostVsanInternalSystem/{moId}/QueryVsanObjects:
    post:
      tags: [HostVsanInternalSystem]
      summary: |2
        Query information about VSAN DOM objects.
      operationId: HostVsanInternalSystem_QueryVsanObjects
      description: |2
        Query information about VSAN DOM objects.
        
        Retrieves information about the
        given set of DOM object UUIDs. In order to make this API efficient, the
        output of this API contains the found DOM\_OBJECT, and referenced
        LSOM\_OBJECT and DISK entries.
        
        ***Required privileges:*** System.Read
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QueryVsanObjectsRequestType'
      responses:
        '200':
          description: |2
            JSON string with the results
          content:
            application/json:
              schema:
                type: string

  /HostVsanInternalSystem/{moId}/QueryVsanStatistics:
    post:
      tags: [HostVsanInternalSystem]
      summary: |2
        Query VSAN system statistics.
      operationId: HostVsanInternalSystem_QueryVsanStatistics
      description: |2
        Query VSAN system statistics.
        
        This is a low level API that gathers low
        level statistic counters from the system. The details of the counters
        remain undocumented and unsupported at this point, and this API remains
        internal.
        The data for this API call mostly comes from VSI, but also other tools
        like memstats.
        The caller can control which counters are being retrieved by providing
        a list of labels. The following labels are current supported:
        \- TBD
        
        ***Required privileges:*** System.Read
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QueryVsanStatisticsRequestType'
      responses:
        '200':
          description: |2
            JSON string with the results
          content:
            application/json:
              schema:
                type: string

  /HostVsanInternalSystem/{moId}/ReconfigurationSatisfiable:
    post:
      tags: [HostVsanInternalSystem]
      summary: |2
        Determine if the given objects can be reconfigured with the given
        policies.
      operationId: HostVsanInternalSystem_ReconfigurationSatisfiable
      description: |2
        Determine if the given objects can be reconfigured with the given
        policies.
        
        The what-if determination only takes into account
        the total number of hosts and total number
        of disks per host. The API is intended to answer the question: is
        this reconfiguration possible using the current cluster topology
        (#hosts and #disks) and does NOT take into account free space on the
        disk, size of disks, etc. If policy is not satisfiable, the API returns
        the reason for not being able to satisfy the policy. If the policy is
        satisfiable, the API returns the cost of provisioning objects with the
        new policy. This cost can be combined with current available free disk
        space to compute if a particular operation is expected to succeed
        or fail. Please note: This API ignores forceProvisioning.
        
        ***Required privileges:*** System.Read
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ReconfigurationSatisfiableRequestType'
      responses:
        '200':
          description: |2
            List of PolicySatisfiability objects, one for each specified
            UUID.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/VsanPolicySatisfiability'
        '500':
          description: |2
            Failure
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostVsanInternalSystem/{moId}/ReconfigureDomObject:
    post:
      tags: [HostVsanInternalSystem]
      summary: |2
        Reconfigure DOM object.
      operationId: HostVsanInternalSystem_ReconfigureDomObject
      description: |2
        Reconfigure DOM object.
        
        Typically we expect VM centric APIs to be used
        for setting storage policies, i.e. to use ReconfigVM() to change the
        policy/profile of a namespace directory or virtual disk. This is a low
        level API to reconfigure any object known by UUID.
        This API is internal and intended for troubleshooting/debugging
        situations in the field.
        
        ***Required privileges:*** Host.Config.Storage
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ReconfigureDomObjectRequestType'
      responses:
        '204':
          description: |2
            No Content

  /HostVsanInternalSystem/{moId}/RunVsanPhysicalDiskDiagnostics:
    post:
      tags: [HostVsanInternalSystem]
      summary: |2
        Runs diagnostics on VSAN physical disks.
      operationId: HostVsanInternalSystem_RunVsanPhysicalDiskDiagnostics
      description: |2
        Runs diagnostics on VSAN physical disks.
        
        This method takes an active
        approach and creates a minimal and temporary object on each physical
        MD disk consumed by VSAN across the entire VSAN cluster. The temporary
        objects are deleted right away upon completion of creation. The result
        returns a list of all checked MDs, indicating wheather or not there was
        a problem creating an object on that MD at the given point in time.
        
        ***Required privileges:*** System.Read
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RunVsanPhysicalDiskDiagnosticsRequestType'
      responses:
        '200':
          description: |2
            A list of result structures. One per checked disk.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/HostVsanInternalSystemVsanPhysicalDiskDiagnosticsResult'

  /HostVsanInternalSystem/{moId}/UpgradeVsanObjects:
    post:
      tags: [HostVsanInternalSystem]
      summary: |2
        Upgrade VSAN objects version.
      operationId: HostVsanInternalSystem_UpgradeVsanObjects
      description: |2
        Upgrade VSAN objects version.
        
        Upgrade a set of objects' version to new one in batch mode.
        API caller should limit the size of the inputs array, and suggested
        array size is 500 ~ 1000 initially. (The API will give more realistic
        suggestion after more experiments, then will apply hard limits in future)
        
        ***Required privileges:*** Host.Config.Storage
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpgradeVsanObjectsRequestType'
      responses:
        '200':
          description: |2
            Array of VsanObjectOperationResult, the array only contains
            result for failed objects, such as invalid or not existing UUID,
            upgrade failure, etc.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/HostVsanInternalSystemVsanObjectOperationResult'
        '500':
          description: |2
            ***VsanFault***: for any unexpected failures.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VsanFault'

  /HostVsanSystem/{moId}/AddDisks_Task:
    post:
      tags: [HostVsanSystem]
      summary: |2
        Add the set of given disks for use by the VSAN service on this host.
      operationId: HostVsanSystem_AddDisks_Task
      description: |2
        Add the set of given disks for use by the VSAN service on this host.
        
        Users may use this API to manually add disks for use by VSAN, without
        specifying an explicit *VsanHostDiskMapping*, when the VSAN service
        not configured to automatically claim storage. Any ineligible disk in
        the set of given disks and disks which would have exceeded
        the capacity will be ignored and will not be published in
        returned *TaskInfo.result*.
        
        Mount a *VsanHostDiskMapping* if the specified disk belongs to the
        unmounted mapping and is of type *VsanHostDiskMapping.ssd*.
        
        Upon successful completion of the returned *Task*, its
        *TaskInfo.result* field will be populated with a
        *VsanHostDiskMapResult*\[\] and caller must inspect
        *VsanHostDiskMapResult*\[\] to check result for individual
        *VsanHostDiskMapping*.
        
        See also *HostVsanSystem.QueryDisksForVsan*, *VsanHostConfigInfoStorageInfo.autoClaimStorage*, *VsanHostDiskMapInfo.mounted*.
        
        ***Required privileges:*** Host.Config.Storage
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AddDisksRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to
            monitor the operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'

  /HostVsanSystem/{moId}/EvacuateVsanNode_Task:
    post:
      tags: [HostVsanSystem]
      summary: |2
        Evacuate this host from VSAN cluster.
      operationId: HostVsanSystem_EvacuateVsanNode_Task
      description: |2
        Evacuate this host from VSAN cluster.
        
        The task is cancellable.
        
        ***Required privileges:*** Host.Config.Storage
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EvacuateVsanNodeRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor the
            operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***InvalidState***: If the host is entering maintenance mode or evacuating data.
            
            ***RequestCanceled***: if the operation is canceled.
            
            ***Timedout***: if the operation timed out.
            
            ***VsanFault***: if operation fails with VSAN-specific error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MethodFault'

  /HostVsanSystem/{moId}/InitializeDisks_Task:
    post:
      tags: [HostVsanSystem]
      summary: |2
        Initialize and use the sets of disks in the given *VsanHostDiskMapping*
        list for the VSAN service on this host.
      operationId: HostVsanSystem_InitializeDisks_Task
      description: |2
        Initialize and use the sets of disks in the given *VsanHostDiskMapping*
        list for the VSAN service on this host.
        
        Users may use this API to specify or
        change disk mappings when the VSAN service is not configured to
        automatically claim storage. For appending new non-SSDs to an existing
        *VsanHostDiskMapping*, users need to specify only the new non-SSDs
        with its *VsanHostDiskMapping.ssd*.
        
        Mount a *VsanHostDiskMapping* if the specified
        *VsanHostDiskMapping* is not mounted in this host.
        
        Upon successful completion of the returned *Task*, its
        *TaskInfo.result* field will be populated with a
        *VsanHostDiskMapResult*\[\] and caller must inspect
        *VsanHostDiskMapResult*\[\] to check result for individual
        *VsanHostDiskMapping*.
        
        See also *HostVsanSystem.QueryDisksForVsan*, *VsanHostConfigInfoStorageInfo.autoClaimStorage*.
        
        ***Required privileges:*** Host.Config.Storage
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/InitializeDisksRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to
            monitor the operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'

  /HostVsanSystem/{moId}/QueryDisksForVsan:
    post:
      tags: [HostVsanSystem]
      summary: |2
        Queries disks on this host for suitability to use with the VSAN service,
        and returns the result.
      operationId: HostVsanSystem_QueryDisksForVsan
      description: |2
        Queries disks on this host for suitability to use with the VSAN service,
        and returns the result.
        
        See also *ScsiLun.canonicalName*.
        
        ***Required privileges:*** System.Read
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QueryDisksForVsanRequestType'
      responses:
        '200':
          description: |2
            a list of populated *VsanHostDiskResult* entries
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/VsanHostDiskResult'

  /HostVsanSystem/{moId}/QueryHostStatus:
    post:
      tags: [HostVsanSystem]
      summary: |2
        Queries this host's current runtime status for the VSAN service.
      operationId: HostVsanSystem_QueryHostStatus
      description: |2
        Queries this host's current runtime status for the VSAN service.
        
        ***Required privileges:*** System.Read
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            a populated *VsanHostClusterStatus* entry
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VsanHostClusterStatus'

  /HostVsanSystem/{moId}/RecommissionVsanNode_Task:
    post:
      tags: [HostVsanSystem]
      summary: |2
        Recommission this host to VSAN cluster.
      operationId: HostVsanSystem_RecommissionVsanNode_Task
      description: |2
        Recommission this host to VSAN cluster.
        
        Users may use this API to recommission a node that has been
        evacuated in *VsanHostDecommissionMode*.
        
        See also *HostVsanSystem.EvacuateVsanNode_Task*, *VsanHostDecommissionMode*.
        
        ***Required privileges:*** Host.Config.Storage
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor the
            operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***InvalidState***: if the host is not evacuated.
            
            ***VsanFault***: if operation fails with VSAN-specific error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostVsanSystem/{moId}/RemoveDisk_Task:
    post:
      tags: [HostVsanSystem]
      summary: |2
        Remove the set of given disks from use by the VSAN service on this host.
      operationId: HostVsanSystem_RemoveDisk_Task
      description: |2
        Remove the set of given disks from use by the VSAN service on this host.
        
        Users
        may use this API to manually remove a *VsanHostDiskMapping.nonSsd*
        from a *VsanHostDiskMapping*. This operation is only permitted if the
        VSAN service on this host is not configured to automatically claim storage.
        
        The task is cancellable.
        
        This method may not be used to remove the last
        *VsanHostDiskMapping.nonSsd* from any given
        *VsanHostDiskMapping*. Removal of the last
        *VsanHostDiskMapping.nonSsd* can be accomplished by using
        *HostVsanSystem.RemoveDiskMapping_Task*.
        
        Upon successful completion of the returned *Task*, its
        *TaskInfo.result* field will be populated with a
        *VsanHostDiskResult*\[\]. Sets DiskIsLastRemainingNonSSD fault
        in returned task if specified disk is the last
        *VsanHostDiskMapping.nonSsd* member of
        *VsanHostDiskMapping*.
        
        See also *HostVsanSystem.RemoveDiskMapping_Task*, *HostVsanSystem.UpdateVsan_Task*, *VsanHostConfigInfoStorageInfo.autoClaimStorage*.
        
        ***Required privileges:*** Host.Config.Storage
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RemoveDiskRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to
            monitor the operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'

  /HostVsanSystem/{moId}/RemoveDiskMapping_Task:
    post:
      tags: [HostVsanSystem]
      summary: |2
        Delete given set of disk mappings from use by the VSAN service on this host.
      operationId: HostVsanSystem_RemoveDiskMapping_Task
      description: |2
        Delete given set of disk mappings from use by the VSAN service on this host.
        
        This API may be used to remove all disks in a given mapping, including its
        *VsanHostDiskMapping.ssd*. This operation is only permitted
        if the VSAN service on this host is not configured to automatically
        claim storage.
        
        The task is cancellable.
        
        Upon successful completion of the returned *Task*, its
        *TaskInfo.result* field will be populated with an empty
        *VsanHostDiskMapResult*\[\]. If any errors are encountered,
        the returned field will instead contain populated error information.
        
        See also *HostVsanSystem.RemoveDisk_Task*, *HostVsanSystem.UpdateVsan_Task*, *VsanHostConfigInfoStorageInfo.autoClaimStorage*.
        
        ***Required privileges:*** Host.Config.Storage
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RemoveDiskMappingRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to
            monitor the operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'

  /HostVsanSystem/{moId}/UnmountDiskMapping_Task:
    post:
      tags: [HostVsanSystem]
      summary: |2
        Unmount the mounted *VsanHostDiskMapping*.
      operationId: HostVsanSystem_UnmountDiskMapping_Task
      description: |2
        Unmount the mounted *VsanHostDiskMapping*.
        
        An unmounted volume cannot
        be used for any VSAN operations. In contrast to *HostVsanSystem.RemoveDiskMapping_Task*,
        this operation does not destroy or alter VSAN data on the disks.
        *HostVsanSystem.AddDisks_Task* and *HostVsanSystem.InitializeDisks_Task* can be used to
        re-mount the diskMapping.
        
        In case of shared-SAS, where diskMappings are visible to more than one VSAN hosts,
        Users may use this API to manually unmount and re-mount diskMappings.
        
        Upon successful completion of the returned *Task*, its
        *TaskInfo.result* field will be populated with
        *VsanHostDiskMapResult*\[\]. If any errors are encountered,
        the returned field will instead contain populated error information.
        
        See also *HostVsanSystem.RemoveDiskMapping_Task*, *HostVsanSystem.AddDisks_Task*, *HostVsanSystem.InitializeDisks_Task*.
        
        ***Required privileges:*** Host.Config.Storage
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UnmountDiskMappingRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor the
            operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***InvalidState***: If the *VsanHostDiskMapping* is already unmounted.
            
            ***VsanFault***: if operation fails with VSAN-specific error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HostVsanSystem/{moId}/UpdateVsan_Task:
    post:
      tags: [HostVsanSystem]
      summary: |2
        Update the VSAN service on this host according to the given host
        configuration specification.
      operationId: HostVsanSystem_UpdateVsan_Task
      description: |2
        Update the VSAN service on this host according to the given host
        configuration specification.
        
        Enabling and disabling the VSAN service can be achieved by using
        the *VsanHostConfigInfo.enabled* flag.
        Host storage settings can be specified through use of
        *VsanHostConfigInfo.storageInfo*. If this value is omitted,
        changes will not be made to the existing storage configuration.
        Host cluster settings can be specified through use of
        *VsanHostConfigInfo.clusterInfo*. If this value is omitted,
        changes will not be made to the existing cluster configuration.
        Host network settings can be specified through use of
        *VsanHostConfigInfo.networkInfo*. If this value is omitted,
        changes will not be made to the existing network configuration.
        
        See also *VsanHostConfigInfo*, *VsanHostConfigInfo.storageInfo*, *VsanHostConfigInfo.clusterInfo*, *VsanHostConfigInfo.networkInfo*, *HostVsanSystem.QueryDisksForVsan*.
        
        ***Required privileges:*** Host.Config.Storage
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateVsanRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to
            monitor the operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'

  /HostVsanSystem/{moId}/config:
    get:
      tags: [HostVsanSystem]
      summary: |2
        The current VSAN service configuration information for this host.
      operationId: HostVsanSystem_getConfig
      description: |2
        The current VSAN service configuration information for this host.
        
        ***Required privileges:*** System.Read
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VsanHostConfigInfo'

  /HttpNfcLease/{moId}/HttpNfcLeaseAbort:
    post:
      tags: [HttpNfcLease]
      summary: |2
        Aborts the import/export and releases this lease.
      operationId: HttpNfcLease_HttpNfcLeaseAbort
      description: |2
        Aborts the import/export and releases this lease.
        
        Operations on the
        objects contained in this lease will no longer be blocked. After
        calling this method, this lease will no longer be valid.
        
        Clients should call this method if an error occurs while accessing
        the disks, or if the operation is cancelled. The client can report
        the cause of the abort to other clients listening on the task with
        the fault parameter.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/HttpNfcLeaseAbortRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***Timedout***: if the lease has timed out before this call.
            
            ***InvalidState***: if the lease has already been aborted.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HttpNfcLease/{moId}/HttpNfcLeaseComplete:
    post:
      tags: [HttpNfcLease]
      summary: |2
        Completes the import/export and releases this lease.
      operationId: HttpNfcLease_HttpNfcLeaseComplete
      description: |2
        Completes the import/export and releases this lease.
        
        Operations on
        the objects contained in this lease will no longer be blocked. After
        calling this method, this lease will no longer be valid.
        
        Clients should call this method when they are done accessing the
        disks for the *VirtualMachine*s in this lease. The status
        of the corresponding task will be set to success.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***Timedout***: if the lease has timed out before this call.
            
            ***InvalidState***: if the lease has already been completed or
            aborted.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HttpNfcLease/{moId}/HttpNfcLeaseGetManifest:
    post:
      tags: [HttpNfcLease]
      summary: |2
        Gets the download manifest for this lease.
      operationId: HttpNfcLease_HttpNfcLeaseGetManifest
      description: |2
        Gets the download manifest for this lease.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/HttpNfcLeaseManifestEntry'
        '500':
          description: |2
            Failure
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HttpNfcLease/{moId}/HttpNfcLeaseProbeUrls:
    post:
      tags: [HttpNfcLease]
      summary: |2
        Perform a series of validations on the target host to see if
        it can succesfully perform PullFromUrls.
      operationId: HttpNfcLease_HttpNfcLeaseProbeUrls
      description: |2
        Perform a series of validations on the target host to see if
        it can succesfully perform PullFromUrls.
        
        ***Since:*** vSphere API Release 7.0.2.0
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/HttpNfcLeaseProbeUrlsRequestType'
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/HttpNfcLeaseProbeResult'
        '500':
          description: |2
            ***InvalidArgument***: if no source files are provided.
            
            ***InvalidState***: if the lease has already been aborted.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InvalidState'

  /HttpNfcLease/{moId}/HttpNfcLeaseProgress:
    post:
      tags: [HttpNfcLease]
      summary: |2
        Sets the disk up/download progress, and renews this lease.
      operationId: HttpNfcLease_HttpNfcLeaseProgress
      description: |2
        Sets the disk up/download progress, and renews this lease.
        
        A lease
        will time out automatically after a while. If the client wishes to
        continue using it, for example if it is not done accessing the
        disks, this method must be called periodically.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/HttpNfcLeaseProgressRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***Timedout***: if the lease has timed out or vSphere has not
            detected data transfer progress.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Timedout'

  /HttpNfcLease/{moId}/HttpNfcLeasePullFromUrls_Task:
    post:
      tags: [HttpNfcLease]
      summary: |2
        Upgrades current lease from push to pull mode.
      operationId: HttpNfcLease_HttpNfcLeasePullFromUrls_Task
      description: |2
        Upgrades current lease from push to pull mode.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/HttpNfcLeasePullFromUrlsRequestType'
      responses:
        '200':
          description: |2
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***InvalidState***: if the lease has already been aborted.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /HttpNfcLease/{moId}/HttpNfcLeaseSetManifestChecksumType:
    post:
      tags: [HttpNfcLease]
      summary: |2
        Sets desired checksum algorithm per each file that will be returned in
        ManifestEntry.
      operationId: HttpNfcLease_HttpNfcLeaseSetManifestChecksumType
      description: |2
        Sets desired checksum algorithm per each file that will be returned in
        ManifestEntry.
        
        Should be set before any transfer starts.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/HttpNfcLeaseSetManifestChecksumTypeRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            Failure
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InvalidState'

  /HttpNfcLease/{moId}/capabilities:
    get:
      tags: [HttpNfcLease]
      summary: |2
        Current supported capabilities by this lease
        See *HttpNfcLeaseCapabilities*
      operationId: HttpNfcLease_getCapabilities
      description: |2
        Current supported capabilities by this lease
        See *HttpNfcLeaseCapabilities*
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HttpNfcLeaseCapabilities'

  /HttpNfcLease/{moId}/error:
    get:
      tags: [HttpNfcLease]
      summary: |2
        If the lease is in the error state, this property contains the
        error that caused the lease to be aborted.
      operationId: HttpNfcLease_getError
      description: |2
        If the lease is in the error state, this property contains the
        error that caused the lease to be aborted.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                $ref: '#/components/schemas/MethodFault'

  /HttpNfcLease/{moId}/info:
    get:
      tags: [HttpNfcLease]
      summary: |2
        Provides information on the objects contained in this lease.
      operationId: HttpNfcLease_getInfo
      description: |2
        Provides information on the objects contained in this lease.
        
        The
        info property is only valid when the lease is in the ready state.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                $ref: '#/components/schemas/HttpNfcLeaseInfo'

  /HttpNfcLease/{moId}/initializeProgress:
    get:
      tags: [HttpNfcLease]
      summary: |2
        Provides progress information (0-100 percent) for the initializing state
        of the lease.
      operationId: HttpNfcLease_getInitializeProgress
      description: |2
        Provides progress information (0-100 percent) for the initializing state
        of the lease.
        
        Clients can use this to track overall progress.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                type: integer
                format: int32

  /HttpNfcLease/{moId}/mode:
    get:
      tags: [HttpNfcLease]
      summary: |2
        Current mode of the lease.
      operationId: HttpNfcLease_getMode
      description: |2
        Current mode of the lease.
        
        See *HttpNfcLeaseMode_enum* for possible values.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                type: string

  /HttpNfcLease/{moId}/state:
    get:
      tags: [HttpNfcLease]
      summary: |2
        The current state of the lease.
      operationId: HttpNfcLease_getState
      description: |2
        The current state of the lease.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HttpNfcLeaseState_enum'

  /HttpNfcLease/{moId}/transferProgress:
    get:
      tags: [HttpNfcLease]
      summary: |2
        Provides progress information (0-100 percent) for current transfer.
      operationId: HttpNfcLease_getTransferProgress
      description: |2
        Provides progress information (0-100 percent) for current transfer.
        
        Transfer covers download, upload and pull scenario.
        Can be externally updated by progress method.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                type: integer
                format: int32

  /InventoryView/{moId}/CloseInventoryViewFolder:
    post:
      tags: [InventoryView]
      summary: |2
        Notify the server that folder(s) have been closed, and changes for all
        its contained objects should no longer be sent.
      operationId: InventoryView_CloseInventoryViewFolder
      description: |2
        Notify the server that folder(s) have been closed, and changes for all
        its contained objects should no longer be sent.
        
        The associated child
        objects are removed from the view. The containers themselves
        will still be retained as open objects until their parent is closed.
        
        May partially succeed if some entities could not be resolved. The operation
        will still succeed for all entities that could be resolved, and the
        list of those that failed is returned as the result.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CloseInventoryViewFolderRequestType'
      responses:
        '200':
          description: |2
            A list containing any entities in the argument could not be resolved.
            
            Refers instances of *ManagedEntity*.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/ManagedObjectReference'

  /InventoryView/{moId}/DestroyView:
    post:
      tags: [InventoryView]
      summary: |2
        Destroy this view.
      operationId: InventoryView_DestroyView
      description: |2
        Destroy this view.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '204':
          description: |2
            No Content

  /InventoryView/{moId}/OpenInventoryViewFolder:
    post:
      tags: [InventoryView]
      summary: |2
        Adds the child objects of a given managed entity to the view.
      operationId: InventoryView_OpenInventoryViewFolder
      description: |2
        Adds the child objects of a given managed entity to the view.
        
        If a *Datacenter* is returned as a child, the implicit virtual machine folder and
        host folder objects are also returned. If a *ComputeResource* is returned,
        the implicit root *ResourcePool* and *HostSystem* objects are also returned.
        
        May partially succeed if some entities could not be resolved. The operation
        will still succeed for all entities which could be resolved, and the
        list of those which failed is returned as the result.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OpenInventoryViewFolderRequestType'
      responses:
        '200':
          description: |2
            A list containing any entities in the argument could not be resolved.
            
            Refers instances of *ManagedEntity*.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/ManagedObjectReference'

  /InventoryView/{moId}/view:
    get:
      tags: [InventoryView]
      summary: |2
        The list of references to objects mapped by this view.
      operationId: InventoryView_getView
      description: |2
        The list of references to objects mapped by this view.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/ManagedObjectReference'

  /IoFilterManager/{moId}/InstallIoFilter_Task:
    post:
      tags: [IoFilterManager]
      summary: |2
        Install an IO Filter on a compute resource.
      operationId: IoFilterManager_InstallIoFilter_Task
      description: |2
        Install an IO Filter on a compute resource.
        
        IO Filters can only be installed on a cluster.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/InstallIoFilterRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor
            the operation. The task is set to success if the filter is installed on
            all the hosts in the compute resource successfully. If the task fails, first
            check *TaskInfo.error* to see the error. If the error indicates that
            installation has failed on the hosts, use *IoFilterManager.QueryIoFilterIssues*
            to get the detailed errors occurred during installation on each host.
            
            The dynamic privilege check ensures that the user must have
            Host.Config.Patch privilege for all the hosts in the compute resource.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***InvalidArgument***: if "compRes" is a standalone host.
            
            ***AlreadyExists***: if another VIB with the same name and vendor has
            been installed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AlreadyExists'

  /IoFilterManager/{moId}/QueryDisksUsingFilter:
    post:
      tags: [IoFilterManager]
      summary: |2
        Return the list of virtual disks that use an IO Filter installed on
        a compute resource.
      operationId: IoFilterManager_QueryDisksUsingFilter
      description: |2
        Return the list of virtual disks that use an IO Filter installed on
        a compute resource.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QueryDisksUsingFilterRequestType'
      responses:
        '200':
          description: |2
            An array of *VirtualDiskId* objects that use
            the given IO Filter installed on the compute resource.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/VirtualDiskId'
        '500':
          description: |2
            ***NotFound***: if the filter specified by "filterId" is
            not installed on the cluster.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFound'

  /IoFilterManager/{moId}/QueryIoFilterInfo:
    post:
      tags: [IoFilterManager]
      summary: |2
        Return the information for the IO Filters that are installed on the cluster.
      operationId: IoFilterManager_QueryIoFilterInfo
      description: |2
        Return the information for the IO Filters that are installed on the cluster.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QueryIoFilterInfoRequestType'
      responses:
        '200':
          description: |2
            An array of *ClusterIoFilterInfo* objects
            that contain the information for the IO Filters that are installed
            on the compute resource.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/ClusterIoFilterInfo'

  /IoFilterManager/{moId}/QueryIoFilterIssues:
    post:
      tags: [IoFilterManager]
      summary: |2
        Return the issues that occurred during the last installation/uninstallation/upgrade
        operation of an IO Filter on a compute resource.
      operationId: IoFilterManager_QueryIoFilterIssues
      description: |2
        Return the issues that occurred during the last installation/uninstallation/upgrade
        operation of an IO Filter on a compute resource.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QueryIoFilterIssuesRequestType'
      responses:
        '200':
          description: |2
            A *IoFilterQueryIssueResult* object.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IoFilterQueryIssueResult'
        '500':
          description: |2
            ***NotFound***: if the filter specified by "filterId" is
            not installed on the cluster.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFound'

  /IoFilterManager/{moId}/ResolveInstallationErrorsOnCluster_Task:
    post:
      tags: [IoFilterManager]
      summary: |2
        Resolve the errors occurred during an installation/uninstallation/upgrade
        operation of an IO Filter on a cluster.
      operationId: IoFilterManager_ResolveInstallationErrorsOnCluster_Task
      description: |2
        Resolve the errors occurred during an installation/uninstallation/upgrade
        operation of an IO Filter on a cluster.
        
        Depending on the nature of the installation failure, vCenter will take the
        appropriate actions to resolve it. For example, retry or resume
        installation.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ResolveInstallationErrorsOnClusterRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor
            the operation. The task is set to success if all the errors related to the
            filter are resolved on the cluster. If the task fails, first check
            *TaskInfo.error* to see the error. If the error indicates that
            issues persist on the cluster, use *IoFilterManager.QueryIoFilterIssues*
            to get the detailed errors on the hosts in the cluster.
            
            The dynamic privilege check will ensure that the appropriate privileges
            must be acquired for all the hosts in the cluster based on the remediation
            actions. For example, Host.Config.Maintenance privilege and Host.Config.Patch
            privileges must be required for upgrading a VIB.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***NotFound***: if the filter specified by "filterId" is
            not installed on the cluster.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFound'

  /IoFilterManager/{moId}/ResolveInstallationErrorsOnHost_Task:
    post:
      tags: [IoFilterManager]
      summary: |2
        Resolve the errors occurred during an installation/uninstallation/upgrade
        operation of an IO Filter on a host.
      operationId: IoFilterManager_ResolveInstallationErrorsOnHost_Task
      description: |2
        Resolve the errors occurred during an installation/uninstallation/upgrade
        operation of an IO Filter on a host.
        
        Depending on the nature of the installation failure, vCenter will take the
        appropriate actions to resolve it. For example, retry or resume
        installation.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ResolveInstallationErrorsOnHostRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor
            the operation. The task is set to success if all the errors related to the
            filter are resolved on the host. If the task fails, first check
            *TaskInfo.error* to see the error. If the error indicates that
            issues persist on the host, use *IoFilterManager.QueryIoFilterIssues*
            to get the detailed errors on the host.
            
            The dynamic privilege check will ensure that the appropriate privileges
            are acquired based on the remediation actions. For example,
            Host.Config.Maintenance and Host.Config.Patch privilege must required for
            upgrading a VIB.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***NotFound***: if the filter specified by "filterId" is
            not installed on the cluster.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFound'

  /IoFilterManager/{moId}/UninstallIoFilter_Task:
    post:
      tags: [IoFilterManager]
      summary: |2
        Uninstall an IO Filter from a compute resource.
      operationId: IoFilterManager_UninstallIoFilter_Task
      description: |2
        Uninstall an IO Filter from a compute resource.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UninstallIoFilterRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor
            the operation. The task is set to success if the filter is uninstalled from
            all the hosts in the compute resource successfully. If the task fails, first
            check *TaskInfo.error* to see the error. If the error indicates that
            uninstallation has failed on the hosts, use *IoFilterManager.QueryIoFilterIssues*
            to get the detailed errors occurred during uninstallation on each host.
            
            The dynamic privilege check ensures that the user must have
            Host.Config.Maintenance and Host.Config.Patch privilege for
            all the hosts in the compute resource.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***InvalidArgument***: if "compRes" is a standalone host.
            
            ***NotFound***: if the filter is not installed on the cluster.
            
            ***FilterInUse***: if the filter to be uninstalled is being used by a
            virtual disk.
            
            ***InvalidState***: if "compRes" is a cluster and DRS is disabled
            on the cluster.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /IoFilterManager/{moId}/UpgradeIoFilter_Task:
    post:
      tags: [IoFilterManager]
      summary: |2
        Upgrade an IO Filter on a compute resource.
      operationId: IoFilterManager_UpgradeIoFilter_Task
      description: |2
        Upgrade an IO Filter on a compute resource.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpgradeIoFilterRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor
            the operation. The task is set to success if all the hosts in the compute
            resource are upgraded successfully. If the task fails, first check
            *TaskInfo.error* to see the error. If the error indicates that
            upgrade has failed on the hosts, use *IoFilterManager.QueryIoFilterIssues*
            to get the detailed errors occurred during upgrade on each host.
            
            The dynamic privilege check ensures that the user must have
            Host.Config.Maintenance and Host.Config.Patch privileges for
            all the hosts in the compute resource.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***InvalidArgument***: if "compRes" is a standalone host; or if the VIB
            package pointed by "vibUrl" is not an upgrade of the
            IO Filter specified by "filterId".
            
            ***NotFound***: if the filter specified by "filterId" is
            not installed on the cluster.
            
            ***InvalidState***: if "compRes" is a cluster and DRS is disabled
            on the cluster.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /IpPoolManager/{moId}/AllocateIpv4Address:
    post:
      tags: [IpPoolManager]
      summary: |2
        Allocates an IPv4 address from an IP pool.
      operationId: IpPoolManager_AllocateIpv4Address
      description: |2
        Allocates an IPv4 address from an IP pool.
        
        Allocated IP addresses are reserved in the IP pool until released by
        calling *IpPoolManager.ReleaseIpAllocation*, or until the IP pool is configured to
        have an IP range that does not contain the IP address, or until the IP
        pool is destroyed.
        
        The caller must be a vCenter extension. Refer to *ExtensionManager*
        for details on vCenter extensions.
        
        The caller specifies a per extension unique allocation ID. Calling this
        function twice with the same allocation ID for the same pool yields the
        same IP address. This makes it possible to do idempotent allocations.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AllocateIpv4AddressRequestType'
      responses:
        '200':
          description: |2
            An IPv4 address if the pool has an available IPv4 address in its
            address ranges, otherwise the empty string.
          content:
            application/json:
              schema:
                type: string

  /IpPoolManager/{moId}/AllocateIpv6Address:
    post:
      tags: [IpPoolManager]
      summary: |2
        Allocates an IPv6 address from an IP pool.
      operationId: IpPoolManager_AllocateIpv6Address
      description: |2
        Allocates an IPv6 address from an IP pool.
        
        Allocated IP addresses are reserved in the IP pool until released by
        calling *IpPoolManager.ReleaseIpAllocation*, or until the IP pool is configured to
        have an IP range that does not contain the IP address, or until the IP
        pool is destroyed.
        
        The caller must be a vCenter extension. Refer to *ExtensionManager*
        for details on vCenter extensions.
        
        The caller specifies a per extension unique allocation ID. Calling this
        function twice with the same allocation ID for the same pool yields the
        same IP address. This makes it possible to do idempotent allocations.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AllocateIpv6AddressRequestType'
      responses:
        '200':
          description: |2
            An IPv6 address if the pool has an available IPv6 address in its
            address ranges, otherwise the empty string.
          content:
            application/json:
              schema:
                type: string

  /IpPoolManager/{moId}/CreateIpPool:
    post:
      tags: [IpPoolManager]
      summary: |2
        Create a new IP pool.
      operationId: IpPoolManager_CreateIpPool
      description: |2
        Create a new IP pool.
        
        The name field must be defined, all other fields are optional. If unset,
        they will be given default values.
        
        The ID for the pool is generated by the server and should not be defined on the
        pool object passed to this method.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateIpPoolRequestType'
      responses:
        '200':
          description: |2
            The generated ID for the pool
          content:
            application/json:
              schema:
                type: integer
                format: int32

  /IpPoolManager/{moId}/DestroyIpPool:
    post:
      tags: [IpPoolManager]
      summary: |2
        Destroys an IP pool on the given datacenter.
      operationId: IpPoolManager_DestroyIpPool
      description: |2
        Destroys an IP pool on the given datacenter.
        
        Looks up the pool on the datacenter by ID and deletes it. If the pool is in use,
        the method throws InvalidState unless the force flag is true.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DestroyIpPoolRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***InvalidState***: if the pool is in use and the force flag is false
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InvalidState'

  /IpPoolManager/{moId}/QueryIPAllocations:
    post:
      tags: [IpPoolManager]
      summary: |2
        Query IP allocations by IP pool and extension key.
      operationId: IpPoolManager_QueryIPAllocations
      description: |2
        Query IP allocations by IP pool and extension key.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QueryIPAllocationsRequestType'
      responses:
        '200':
          description: |2
            The resulting list of *IpPoolManagerIpAllocation*.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/IpPoolManagerIpAllocation'

  /IpPoolManager/{moId}/QueryIpPools:
    post:
      tags: [IpPoolManager]
      summary: |2
        Return the list of IP pools for a datacenter.
      operationId: IpPoolManager_QueryIpPools
      description: |2
        Return the list of IP pools for a datacenter.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QueryIpPoolsRequestType'
      responses:
        '200':
          description: |2
            The resulting list of pools.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/IpPool'

  /IpPoolManager/{moId}/ReleaseIpAllocation:
    post:
      tags: [IpPoolManager]
      summary: |2
        Releases an IP allocation back to it's IP pool.
      operationId: IpPoolManager_ReleaseIpAllocation
      description: |2
        Releases an IP allocation back to it's IP pool.
        
        Attempting to release an IP allocation that is not allocated from the
        specified IP pool with the specified allocation ID silently fails. This
        makes it possible to release IP allocations idempotently.
        
        All IP addresses allocated by an extension are automatically released
        if the extension is unregistered from vCenter.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ReleaseIpAllocationRequestType'
      responses:
        '204':
          description: |2
            No Content

  /IpPoolManager/{moId}/UpdateIpPool:
    post:
      tags: [IpPoolManager]
      summary: |2
        Update an IP pool on a datacenter.
      operationId: IpPoolManager_UpdateIpPool
      description: |2
        Update an IP pool on a datacenter.
        
        The pool to update is looked up from the value of the id field.
        
        All fields in the pool except the id are optional. Only defined values are stored
        on the server.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateIpPoolRequestType'
      responses:
        '204':
          description: |2
            No Content

  /IscsiManager/{moId}/BindVnic:
    post:
      tags: [IscsiManager]
      summary: |2
        Bind a Virtual NIC to be used for an iSCSI adapter
      operationId: IscsiManager_BindVnic
      description: |2
        Bind a Virtual NIC to be used for an iSCSI adapter
        
        ***Required privileges:*** Host.Config.Storage
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BindVnicRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***IscsiFaultVnicAlreadyBound***: The given Virtual NIC is already bound to the HBA.
            
            ***IscsiFaultVnicHasNoUplinks***: The given Virtual NIC has no physical uplinks.
            
            ***IscsiFaultVnicHasMultipleUplinks***: The given Virtual NIC has multiple uplinks.
            
            ***IscsiFaultVnicHasWrongUplink***: The given Virtual NIC has the wrong uplink and
            it can't be used for iSCSI multi-pathing.
            
            ***IscsiFaultVnicNotFound***: The given Virtual NIC is not present on the system.
            
            ***IscsiFaultInvalidVnic***: The given Virtual NIC is not valid for the HBA.
            
            ***PlatformConfigFault***: For platform error that occurs during the operation.
            
            ***IscsiFault***: For any problem that is not handled with a more specific fault.
            
            ***NotFound***: If the given HBA is not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /IscsiManager/{moId}/QueryBoundVnics:
    post:
      tags: [IscsiManager]
      summary: |2
        Query the list of Virtual NICs that are bound to a given iSCSI HBA.
      operationId: IscsiManager_QueryBoundVnics
      description: |2
        Query the list of Virtual NICs that are bound to a given iSCSI HBA.
        
        ***Required privileges:*** Host.Config.Storage
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QueryBoundVnicsRequestType'
      responses:
        '200':
          description: |2
            An array of *IscsiPortInfo* containing detailed
            information on the list of Virtual NICs bound to the adapter
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/IscsiPortInfo'
        '500':
          description: |2
            ***IscsiFault***: For any problem that is not handled with a more specific fault.
            
            ***NotFound***: If the given HBA is not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /IscsiManager/{moId}/QueryCandidateNics:
    post:
      tags: [IscsiManager]
      summary: |2
        Query the candidate Virtual NICs and Physical NICs that can be used
        for Port-Binding.
      operationId: IscsiManager_QueryCandidateNics
      description: |2
        Query the candidate Virtual NICs and Physical NICs that can be used
        for Port-Binding.
        
        For dependent offload adapters, the Virtual NIC should be attached
        to the physical NIC associated with the hardware function.
        
        ***Required privileges:*** Host.Config.Storage
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QueryCandidateNicsRequestType'
      responses:
        '200':
          description: |2
            Array of *IscsiPortInfo* containing detailed
            information on list of eligible Virtual NICs that can be bound
            to the adapter. This list will also include details on the
            eligible Physical NICs that are not associated with any
            Virtual NICs.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/IscsiPortInfo'
        '500':
          description: |2
            ***IscsiFault***: For any problem that is not handled with a more specific fault.
            
            ***NotFound***: If the given HBA is not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /IscsiManager/{moId}/QueryMigrationDependencies:
    post:
      tags: [IscsiManager]
      summary: |2
        Query the dependency table for a migration operation of a given Physical
        NIC.
      operationId: IscsiManager_QueryMigrationDependencies
      description: |2
        Query the dependency table for a migration operation of a given Physical
        NIC.
        
        ***Required privileges:*** Host.Config.Storage
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QueryMigrationDependenciesRequestType'
      responses:
        '200':
          description: |2
            Dependency table, as described in *IscsiMigrationDependency*,
            providing the user of all the Virtual NIC and iSCSI resources
            affected.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IscsiMigrationDependency'

  /IscsiManager/{moId}/QueryPnicStatus:
    post:
      tags: [IscsiManager]
      summary: |2
        Query if Physical NIC device is used for iSCSI.
      operationId: IscsiManager_QueryPnicStatus
      description: |2
        Query if Physical NIC device is used for iSCSI.
        
        ***Required privileges:*** Host.Config.Storage
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QueryPnicStatusRequestType'
      responses:
        '200':
          description: |2
            A status object, *IscsiStatus*, indicating
            whether Physical NIC is used by iSCSI or not.
            - Empty *IscsiStatus* (i.e reason unset)
              if Physical NIC device is not used.
            - Fault code *IscsiFaultPnicInUse* if
              Physical NIC is being used.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IscsiStatus'
        '500':
          description: |2
            ***IscsiFault***: For any problem that is not handled with a more specific fault.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IscsiFault'

  /IscsiManager/{moId}/QueryVnicStatus:
    post:
      tags: [IscsiManager]
      summary: |2
        Query the status of Virtual NIC association with the iSCSI.
      operationId: IscsiManager_QueryVnicStatus
      description: |2
        Query the status of Virtual NIC association with the iSCSI.
        
        ***Required privileges:*** Host.Config.Storage
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QueryVnicStatusRequestType'
      responses:
        '200':
          description: |2
            A status object *IscsiStatus*, containing
            list of the fault codes, providing the user with information as to
            whether Virtual NIC is used by iSCSI and list of compliance check
            failure codes if any. The returned *IscsiStatus*
            object will have an array of *MethodFault* objects providing
            following information:
            - Empty *IscsiStatus* (i.e reason unset)
              if Virtual NIC device is not used.
            - Fault code *IscsiFaultVnicInUse* if Virtual
              NIC is being used by iSCSI.
            - This will be followed with list of fault codes
              corresponding to the compliance check failures.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IscsiStatus'
        '500':
          description: |2
            ***IscsiFault***: For any problem that is not handled with a more specific fault.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IscsiFault'

  /IscsiManager/{moId}/UnbindVnic:
    post:
      tags: [IscsiManager]
      summary: |2
        Unbind Virtual NIC binding from an iSCSI adapter.
      operationId: IscsiManager_UnbindVnic
      description: |2
        Unbind Virtual NIC binding from an iSCSI adapter.
        
        ***Required privileges:*** Host.Config.Storage
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UnbindVnicRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***IscsiFaultVnicNotBound***: The given Virtual NIC is not bound to the adapter
            
            ***IscsiFaultVnicHasActivePaths***: The given Virtual NIC is associated with "active" paths
            to the storage.
            
            ***IscsiFaultVnicIsLastPath***: The given Virtual NIC is associated with "only" paths
            to the storage.
            
            ***PlatformConfigFault***: For platform error that occurs during the operation.
            
            ***IscsiFault***: For any problem that is not handled with a more specific fault.
            
            ***NotFound***: If the given HBA is not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /LicenseAssignmentManager/{moId}/QueryAssignedLicenses:
    post:
      tags: [LicenseAssignmentManager]
      summary: |2
        Get information about all the licenses associated with an entity
      operationId: LicenseAssignmentManager_QueryAssignedLicenses
      description: |2
        Get information about all the licenses associated with an entity
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QueryAssignedLicensesRequestType'
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/LicenseAssignmentManagerLicenseAssignment'

  /LicenseAssignmentManager/{moId}/RemoveAssignedLicense:
    post:
      tags: [LicenseAssignmentManager]
      summary: |2
        Remove licenses associated with an entity
      operationId: LicenseAssignmentManager_RemoveAssignedLicense
      description: |2
        Remove licenses associated with an entity
        
        ***Required privileges:*** Global.Licenses
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RemoveAssignedLicenseRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            Failure
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LicenseEntityNotFound'

  /LicenseAssignmentManager/{moId}/UpdateAssignedLicense:
    post:
      tags: [LicenseAssignmentManager]
      summary: |2
        Update the license associated with an entity
      operationId: LicenseAssignmentManager_UpdateAssignedLicense
      description: |2
        Update the license associated with an entity
        
        ***Required privileges:*** Global.Licenses
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateAssignedLicenseRequestType'
      responses:
        '200':
          description: |2
            Returns information about the license specified in licenseKey
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LicenseManagerLicenseInfo'
        '500':
          description: |2
            Failure
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LicenseEntityNotFound'

  /LicenseManager/{moId}/AddLicense:
    post:
      tags: [LicenseManager]
      summary: |2
        Adds a license to the inventory of available licenses.
      operationId: LicenseManager_AddLicense
      description: |2
        Adds a license to the inventory of available licenses.
        
        ***Required privileges:*** Global.Licenses
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AddLicenseRequestType'
      responses:
        '200':
          description: |2
            Returns information about the license specified in licenseKey.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LicenseManagerLicenseInfo'

  /LicenseManager/{moId}/CheckLicenseFeature:
    post:
      tags: [LicenseManager]
      summary: |2
        Returns whether or not a given feature is enabled.
      operationId: LicenseManager_CheckLicenseFeature
      deprecated: true
      description: |2
        Deprecated as of vSphere API 4.0, use
        *LicenseAssignmentManager.QueryAssignedLicenses* instead.
        
        Returns whether or not a given feature is enabled.
        
        ***Required privileges:*** System.Read
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CheckLicenseFeatureRequestType'
      responses:
        '200':
          description: |2
            Returns true if the feature is enabled and false if it is not.
          content:
            application/json:
              schema:
                type: boolean
        '500':
          description: |2
            ***InvalidArgument***: If a feature name is not found.
            
            ***InvalidState***: If the feature cannot be supported on the platform,
            potentially because the hardware configuration does not support it.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InvalidState'

  /LicenseManager/{moId}/ConfigureLicenseSource:
    post:
      tags: [LicenseManager]
      summary: |2
        Allows for reconfiguration of the License Manager license source.
      operationId: LicenseManager_ConfigureLicenseSource
      deprecated: true
      description: |2
        Deprecated as of vSphere API 4.0, use *LicenseManager.UpdateLicense*
        instead.
        
        Allows for reconfiguration of the License Manager license source.
        
        This changes the licensing source to be either served or local. Before changing
        the license source location, the API checks the number of licenses available at
        the new potential source to ensure there are at least as many licenses there as
        have been issued by the current source. If there are an equal or greater number of
        licenses at the new source, all licenses on the current source are released and
        then reacquired from the new source. If there are not enough licenses available on
        the new source to reissue all licenses, the operation fails.
        
        This is used to configure the license source on an individual host.
        
        **PLATFORM Specific Notes:**
        VirtualCenter - only supports a served source.
        the host parameter is mandatory.
        ESX Server - the host parameter is optional.
        
        ***Required privileges:*** Global.Licenses
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ConfigureLicenseSourceRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***LicenseServerUnavailable***: if the license server is unreachable.
            
            ***CannotAccessLocalSource***: if the local source cannot be accessed.
            
            ***InvalidLicense***: if the new license source is LocalLicenseSource and the
            license file is not valid.
            
            ***NotEnoughLicenses***: if the new license source does not have enough licenses.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /LicenseManager/{moId}/DecodeLicense:
    post:
      tags: [LicenseManager]
      summary: |2
        Decodes licensing information on the license specified.
      operationId: LicenseManager_DecodeLicense
      description: |2
        Decodes licensing information on the license specified.
        
        ***Required privileges:*** Global.Licenses
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DecodeLicenseRequestType'
      responses:
        '200':
          description: |2
            Returns information about the license specified in licenseKey.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LicenseManagerLicenseInfo'

  /LicenseManager/{moId}/DisableFeature:
    post:
      tags: [LicenseManager]
      summary: |2
        Release licenses for an optional feature.
      operationId: LicenseManager_DisableFeature
      deprecated: true
      description: |2
        Deprecated as of vSphere API 4.0, use
        *LicenseAssignmentManager.RemoveAssignedLicense* instead.
        
        Release licenses for an optional feature.
        
        ***Required privileges:*** Global.Licenses
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DisableFeatureRequestType'
      responses:
        '200':
          description: |2
            Returns true if the feature was disabled and false if not.
          content:
            application/json:
              schema:
                type: boolean
        '500':
          description: |2
            ***InvalidArgument***: If a feature name is not found or it is not optional.
            
            ***LicenseServerUnavailable***: If the license server is unavailable.
            
            ***InvalidState***: If the feature is in use.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /LicenseManager/{moId}/EnableFeature:
    post:
      tags: [LicenseManager]
      summary: |2
        Enable a feature that has an optional state.
      operationId: LicenseManager_EnableFeature
      deprecated: true
      description: |2
        Deprecated as of vSphere API 4.0, use
        *LicenseAssignmentManager.UpdateAssignedLicense* instead.
        
        Enable a feature that has an optional state.
        
        ***Required privileges:*** Global.Licenses
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EnableFeatureRequestType'
      responses:
        '200':
          description: |2
            Returns true if enabling the feature was successful, false otherwise.
          content:
            application/json:
              schema:
                type: boolean
        '500':
          description: |2
            ***InvalidArgument***: If a feature name is not found or it is not optional.
            
            ***LicenseServerUnavailable***: If the license server is unavailable.
            
            ***InvalidState***: If the feature cannot be supported on the platform,
            potentially because the hardware configuration does not support it.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /LicenseManager/{moId}/QueryLicenseSourceAvailability:
    post:
      tags: [LicenseManager]
      summary: |2
        Queries the current license source for total and available licenses available for
        each feature known to this system.
      operationId: LicenseManager_QueryLicenseSourceAvailability
      deprecated: true
      description: |2
        Deprecated as of vSphere API 4.0, use
        *LicenseAssignmentManager.QueryAssignedLicenses* instead.
        
        Queries the current license source for total and available licenses available for
        each feature known to this system.
        
        ***Required privileges:*** Global.Licenses
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QueryLicenseSourceAvailabilityRequestType'
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/LicenseAvailabilityInfo'

  /LicenseManager/{moId}/QuerySupportedFeatures:
    post:
      tags: [LicenseManager]
      summary: |2
        Queries the current license source for a list of available licenses that can be
        licensed from this system.
      operationId: LicenseManager_QuerySupportedFeatures
      deprecated: true
      description: |2
        Deprecated as of vSphere API 4.0, use
        *LicenseAssignmentManager.QueryAssignedLicenses* instead.
        
        Queries the current license source for a list of available licenses that can be
        licensed from this system.
        
        ***Required privileges:*** Global.Licenses
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QuerySupportedFeaturesRequestType'
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/LicenseFeatureInfo'

  /LicenseManager/{moId}/QueryLicenseUsage:
    post:
      tags: [LicenseManager]
      summary: |2
        Returns the license usage.
      operationId: LicenseManager_QueryLicenseUsage
      deprecated: true
      description: |2
        Deprecated as of vSphere API 4.0, use
        *LicenseAssignmentManager.QueryAssignedLicenses* instead.
        
        Returns the license usage.
        
        The license usage is a list of supported features and
        the number of licenses that have been reserved.
        
        **PLATFORM Specific Notes:**
        VirtualCenter - Empty string returns the usage of non-host specific features.
        Must specify managed host to query.
        ESX Server - Host argument ignored.
        
        ***Required privileges:*** System.Read
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QueryLicenseUsageRequestType'
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LicenseUsageInfo'

  /LicenseManager/{moId}/RemoveLicenseLabel:
    post:
      tags: [LicenseManager]
      summary: |2
        Removed a license's label.
      operationId: LicenseManager_RemoveLicenseLabel
      description: |2
        Removed a license's label.
        
        ***Required privileges:*** Global.Licenses
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RemoveLicenseLabelRequestType'
      responses:
        '204':
          description: |2
            No Content

  /LicenseManager/{moId}/RemoveLicense:
    post:
      tags: [LicenseManager]
      summary: |2
        Remove license from the available set.
      operationId: LicenseManager_RemoveLicense
      description: |2
        Remove license from the available set.
        
        ***Required privileges:*** Global.Licenses
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RemoveLicenseRequestType'
      responses:
        '204':
          description: |2
            No Content

  /LicenseManager/{moId}/SetLicenseEdition:
    post:
      tags: [LicenseManager]
      summary: |2
        Defines the product's license edition.
      operationId: LicenseManager_SetLicenseEdition
      deprecated: true
      description: |2
        Deprecated as of vSphere API 4.0, use
        *LicenseAssignmentManager.QueryAssignedLicenses* instead.
        
        Defines the product's license edition.
        
        The edition defines which product license
        the server requires. This, in turn, determines the core set of functionality
        provided by the product and the additional features that can be licensed.
        
        To determine what featureKey the current platform will accept, use
        querySourceAvailablity() at runtime, or consult the documentation for the
        current platform.
        
        ***Required privileges:*** Global.Licenses
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SetLicenseEditionRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***InvalidArgument***: If a feature key is not an edition feature key.
            
            ***LicenseServerUnavailable***: If the license server is unavailable.
            
            ***InvalidState***: If the feature cannot be supported on the platform,
            potentially because the hardware configuration does not support it.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /LicenseManager/{moId}/UpdateLicenseLabel:
    post:
      tags: [LicenseManager]
      summary: |2
        Update a license's label.
      operationId: LicenseManager_UpdateLicenseLabel
      description: |2
        Update a license's label.
        
        It creates a label entry if the labelKey doesn't already exist
        
        ***Required privileges:*** Global.Licenses
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateLicenseLabelRequestType'
      responses:
        '204':
          description: |2
            No Content

  /LicenseManager/{moId}/UpdateLicense:
    post:
      tags: [LicenseManager]
      summary: |2
        Updates the available licenses to the one provided in licenseKey.
      operationId: LicenseManager_UpdateLicense
      description: |2
        Updates the available licenses to the one provided in licenseKey.
        
        This is the same as removing all the licenses using
        *LicenseManager.RemoveLicense* and adding licenseKey using
        *LicenseManager.AddLicense*
        If the optional parameter labels is specify this is the same as calling
        updateLicense without the optioal parameter and calling updateLabel for each pair
        in the labels array.
        
        ***Required privileges:*** Global.Licenses
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateLicenseRequestType'
      responses:
        '200':
          description: |2
            Returns information about the license specified in licenseKey.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LicenseManagerLicenseInfo'

  /LicenseManager/{moId}/diagnostics:
    get:
      tags: [LicenseManager]
      summary: |2
        Return current diagnostic information.
      operationId: LicenseManager_getDiagnostics
      deprecated: true
      description: |2
        Deprecated as of vSphere API 4.0, this property is not used by the system.
        
        Return current diagnostic information.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                $ref: '#/components/schemas/LicenseDiagnostics'

  /LicenseManager/{moId}/evaluation:
    get:
      tags: [LicenseManager]
      operationId: LicenseManager_getEvaluation
      description: |2
        ***Required privileges:*** System.Read
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LicenseManagerEvaluationInfo'

  /LicenseManager/{moId}/featureInfo:
    get:
      tags: [LicenseManager]
      summary: |2
        The list of features that can be licensed.
      operationId: LicenseManager_getFeatureInfo
      deprecated: true
      description: |2
        Deprecated as of VI API 2.5, use *LicenseManager.QuerySupportedFeatures*
        instead.
        
        The list of features that can be licensed.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/LicenseFeatureInfo'

  /LicenseManager/{moId}/licenseAssignmentManager:
    get:
      tags: [LicenseManager]
      summary: |2
        License Assignment Manager
      operationId: LicenseManager_getLicenseAssignmentManager
      description: |2
        License Assignment Manager
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            Refers instance of *LicenseAssignmentManager*.
          content:
            application/json:
              schema:
                nullable: true
                $ref: '#/components/schemas/ManagedObjectReference'

  /LicenseManager/{moId}/licensedEdition:
    get:
      tags: [LicenseManager]
      summary: |2
        The product's license edition.
      operationId: LicenseManager_getLicensedEdition
      deprecated: true
      description: |2
        Deprecated as of vSphere API 4.0, use
        *LicenseAssignmentManager.QueryAssignedLicenses* instead.
        
        The product's license edition.
        
        The edition defines which product license
        the server requires. This, in turn, determines the core set of functionalities
        provided by the product and the additional features that can be licensed. If
        no edition is set the property is set to the empty string ("").
        To set the edition use *LicenseManager.SetLicenseEdition*.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                type: string

  /LicenseManager/{moId}/licenses:
    get:
      tags: [LicenseManager]
      summary: |2
        Get information about all the licenses available.
      operationId: LicenseManager_getLicenses
      description: |2
        Get information about all the licenses available.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/LicenseManagerLicenseInfo'

  /LicenseManager/{moId}/source:
    get:
      tags: [LicenseManager]
      summary: |2
        Set or return a data object type of LocalLicense or LicenseServer.
      operationId: LicenseManager_getSource
      deprecated: true
      description: |2
        Deprecated as of vSphere API 4.0, use
        *LicenseAssignmentManager.QueryAssignedLicenses* to get evaluation information.
        
        Set or return a data object type of LocalLicense or LicenseServer.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LicenseSource'

  /LicenseManager/{moId}/sourceAvailable:
    get:
      tags: [LicenseManager]
      summary: |2
        Current state of the license source.
      operationId: LicenseManager_getSourceAvailable
      deprecated: true
      description: |2
        Deprecated as of vSphere API 4.0, this property is not used.
        
        Current state of the license source.
        
        License sources that are LocalSource
        are always available.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                type: boolean

  /ListView/{moId}/DestroyView:
    post:
      tags: [ListView]
      summary: |2
        Destroy this view.
      operationId: ListView_DestroyView
      description: |2
        Destroy this view.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '204':
          description: |2
            No Content

  /ListView/{moId}/ModifyListView:
    post:
      tags: [ListView]
      summary: |2
        Modify the list by giving a delta of entities to add and
        entities to remove.
      operationId: ListView_ModifyListView
      description: |2
        Modify the list by giving a delta of entities to add and
        entities to remove.
        
        May partially succeed if some objects could not be resolved. The operation
        will still succeed for all objects which could be resolved, and the
        list of those which failed is returned as the result.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ModifyListViewRequestType'
      responses:
        '200':
          description: |2
            A list containing any objects in 'add' that could not be resolved.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/ManagedObjectReference'

  /ListView/{moId}/ResetListView:
    post:
      tags: [ListView]
      summary: |2
        Replaces the list with an entirely new set of objects.
      operationId: ListView_ResetListView
      description: |2
        Replaces the list with an entirely new set of objects.
        
        If
        the entire set is changing, this is less data to send than a delta.
        
        May partially succeed if some objects could not be resolved. The operation
        will still succeed for all objects which could be resolved, and the
        list of those which failed is as the result.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ResetListViewRequestType'
      responses:
        '200':
          description: |2
            A list containing any objects in 'obj' that could not be resolved.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/ManagedObjectReference'

  /ListView/{moId}/ResetListViewFromView:
    post:
      tags: [ListView]
      summary: |2
        Replaces the list with the set of objects in a given view.
      operationId: ListView_ResetListViewFromView
      description: |2
        Replaces the list with the set of objects in a given view.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ResetListViewFromViewRequestType'
      responses:
        '204':
          description: |2
            No Content

  /ListView/{moId}/view:
    get:
      tags: [ListView]
      summary: |2
        The list of references to objects mapped by this view.
      operationId: ListView_getView
      description: |2
        The list of references to objects mapped by this view.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/ManagedObjectReference'

  /LocalizationManager/{moId}/catalog:
    get:
      tags: [LocalizationManager]
      summary: |2
        Fetches the descriptions of all the client-side localization message
        catalogs available for the current session locale.
      operationId: LocalizationManager_getCatalog
      description: |2
        Fetches the descriptions of all the client-side localization message
        catalogs available for the current session locale.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            the message catalogs for the current locale
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/LocalizationManagerMessageCatalog'

  /ManagedEntity/{moId}/Destroy_Task:
    post:
      tags: [ManagedEntity]
      summary: |2
        Destroys this object, deleting its contents and removing it from its parent
        folder (if any).
      operationId: ManagedEntity_Destroy_Task
      description: |2
        Destroys this object, deleting its contents and removing it from its parent
        folder (if any).
        
        NOTE: The appropriate privilege must be held on the parent of the destroyed
        entity as well as the entity itself.
        This method can throw one of several exceptions. The exact set of exceptions
        depends on the kind of entity that is being removed. See comments for
        each entity for more information on destroy behavior.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor the
            operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            Failure
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /ManagedEntity/{moId}/Reload:
    post:
      tags: [ManagedEntity]
      summary: |2
        Reload the entity state.
      operationId: ManagedEntity_Reload
      description: |2
        Reload the entity state.
        
        Clients only need to call this method
        if they changed some external state that affects the service
        without using the Web service interface to perform the change.
        For example, hand-editing a virtual machine configuration file
        affects the configuration of the associated virtual machine but
        the service managing the virtual machine might not monitor the
        file for changes. In this case, after such an edit, a client
        would call "reload" on the associated virtual machine to ensure
        the service and its clients have current data for the
        virtual machine.
        
        ***Required privileges:*** System.Read
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '204':
          description: |2
            No Content

  /ManagedEntity/{moId}/Rename_Task:
    post:
      tags: [ManagedEntity]
      summary: |2
        Renames this managed entity.
      operationId: ManagedEntity_Rename_Task
      description: |2
        Renames this managed entity.
        
        Any % (percent) character used in this name parameter
        must be escaped, unless it is used to start an escape
        sequence. Clients may also escape any other characters in
        this name parameter.
        
        See also *ManagedEntity.name*.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RenameRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor the
            operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***DuplicateName***: If another object in the same folder has the target name.
            
            ***InvalidName***: If the new name is not a valid entity name.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /ManagedEntity/{moId}/setCustomValue:
    post:
      tags: [ManagedEntity]
      summary: |2
        Assigns a value to a custom field.
      operationId: ManagedEntity_setCustomValue
      description: |2
        Assigns a value to a custom field.
        
        The setCustomValue method requires
        whichever updatePrivilege is defined as one of the
        *CustomFieldDef.fieldInstancePrivileges*
        for the CustomFieldDef whose value is being changed.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/setCustomValueRequestType'
      responses:
        '204':
          description: |2
            No Content

  /ManagedEntity/{moId}/alarmActionsEnabled:
    get:
      tags: [ManagedEntity]
      summary: |2
        Whether alarm actions are enabled for this entity.
      operationId: ManagedEntity_getAlarmActionsEnabled
      description: |2
        Whether alarm actions are enabled for this entity.
        
        True if enabled; false otherwise.
        
        ***Required privileges:*** System.Read
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: boolean

  /ManagedEntity/{moId}/availableField:
    get:
      tags: [ManagedEntity]
      summary: |2
        List of custom field definitions that are valid for the object's type.
      operationId: ManagedEntity_getAvailableField
      description: |2
        List of custom field definitions that are valid for the object's type.
        
        The fields are sorted by *CustomFieldDef.name*.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/CustomFieldDef'

  /ManagedEntity/{moId}/configIssue:
    get:
      tags: [ManagedEntity]
      summary: |2
        Current configuration issues that have been detected for this entity.
      operationId: ManagedEntity_getConfigIssue
      description: |2
        Current configuration issues that have been detected for this entity.
        
        Typically,
        these issues have already been logged as events. The entity stores these
        events as long as they are still current. The
        *configStatus* property provides an overall status
        based on these events.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/Event'

  /ManagedEntity/{moId}/configStatus:
    get:
      tags: [ManagedEntity]
      summary: |2
        The configStatus indicates whether or not the system has detected a configuration
        issue involving this entity.
      operationId: ManagedEntity_getConfigStatus
      description: |2
        The configStatus indicates whether or not the system has detected a configuration
        issue involving this entity.
        
        For example, it might have detected a
        duplicate IP address or MAC address, or a host in a cluster
        might be out of compliance. The meanings of the configStatus values are:
        - red: A problem has been detected involving the entity.
        - yellow: A problem is about to occur or a transient condition
          has occurred (For example, reconfigure fail-over policy).
        - green: No configuration issues have been detected.
        - gray: The configuration status of the entity is not being monitored.
          
        A green status indicates only that a problem has not been detected;
        it is not a guarantee that the entity is problem-free.
        
        The *configIssue* property contains a list of the
        problems that have been detected.
        In releases after vSphere API 5.0, vSphere Servers might not
        generate property collector update notifications for this property.
        To obtain the latest value of the property, you can use
        PropertyCollector methods RetrievePropertiesEx or WaitForUpdatesEx.
        If you use the PropertyCollector.WaitForUpdatesEx method, specify
        an empty string for the version parameter. Any other version value will not
        produce any property values as no updates are generated.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedEntityStatus_enum'

  /ManagedEntity/{moId}/customValue:
    get:
      tags: [ManagedEntity]
      summary: |2
        Custom field values.
      operationId: ManagedEntity_getCustomValue
      description: |2
        Custom field values.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/CustomFieldValue'

  /ManagedEntity/{moId}/declaredAlarmState:
    get:
      tags: [ManagedEntity]
      summary: |2
        A set of alarm states for alarms that apply to this managed entity.
      operationId: ManagedEntity_getDeclaredAlarmState
      description: |2
        A set of alarm states for alarms that apply to this managed entity.
        
        The set includes alarms defined on this entity
        and alarms inherited from the parent entity,
        or from any ancestors in the inventory hierarchy.
        
        Alarms are inherited if they can be triggered by this entity or its descendants.
        This set does not include alarms that are defined on descendants of this entity.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/AlarmState'

  /ManagedEntity/{moId}/disabledMethod:
    get:
      tags: [ManagedEntity]
      summary: |2
        List of operations that are disabled, given the current runtime
        state of the entity.
      operationId: ManagedEntity_getDisabledMethod
      description: |2
        List of operations that are disabled, given the current runtime
        state of the entity.
        
        For example, a power-on operation always fails if a
        virtual machine is already powered on. This list can be used by clients to
        enable or disable operations in a graphical user interface.
        
        Note: This list is determined by the current runtime state of an entity,
        not by its permissions.
        
        This list may include the following operations for a HostSystem:
        - *HostSystem.EnterMaintenanceMode_Task*
        - *HostSystem.ExitMaintenanceMode_Task*
        - *HostSystem.RebootHost_Task*
        - *HostSystem.ShutdownHost_Task*
        - *HostSystem.ReconnectHost_Task*
        - *HostSystem.DisconnectHost_Task*
          
        This list may include the following operations for a VirtualMachine:
        - *VirtualMachine.AnswerVM*
        - *ManagedEntity.Rename_Task*
        - *VirtualMachine.CloneVM_Task*
        - *VirtualMachine.PowerOffVM_Task*
        - *VirtualMachine.PowerOnVM_Task*
        - *VirtualMachine.SuspendVM_Task*
        - *VirtualMachine.ResetVM_Task*
        - *VirtualMachine.ReconfigVM_Task*
        - *VirtualMachine.RelocateVM_Task*
        - *VirtualMachine.MigrateVM_Task*
        - *VirtualMachine.CustomizeVM_Task*
        - *VirtualMachine.ShutdownGuest*
        - *VirtualMachine.StandbyGuest*
        - *VirtualMachine.RebootGuest*
        - *VirtualMachine.CreateSnapshot_Task*
        - *VirtualMachine.RemoveAllSnapshots_Task*
        - *VirtualMachine.RevertToCurrentSnapshot_Task*
        - *VirtualMachine.MarkAsTemplate*
        - *VirtualMachine.MarkAsVirtualMachine*
        - *VirtualMachine.ResetGuestInformation*
        - *VirtualMachine.MountToolsInstaller*
        - *VirtualMachine.UnmountToolsInstaller*
        - *ManagedEntity.Destroy_Task*
        - *VirtualMachine.UpgradeVM_Task*
        - *VirtualMachine.ExportVm*
          
        This list may include the following operations for a ResourcePool:
        - *ResourcePool.ImportVApp*
        - *ResourcePool.CreateChildVM_Task*
        - *ResourcePool.UpdateConfig*
        - *Folder.CreateVM_Task*
        - *ManagedEntity.Destroy_Task*
        - *ManagedEntity.Rename_Task*
          
        This list may include the following operations for a VirtualApp:
        - *ManagedEntity.Destroy_Task*
        - *VirtualApp.CloneVApp_Task*
        - *VirtualApp.unregisterVApp_Task*
        - *VirtualApp.ExportVApp*
        - *VirtualApp.PowerOnVApp_Task*
        - *VirtualApp.PowerOffVApp_Task*
        - *VirtualApp.UpdateVAppConfig*
          
        In releases after vSphere API 5.0, vSphere Servers might not
        generate property collector update notifications for this property.
        To obtain the latest value of the property, you can use
        PropertyCollector methods RetrievePropertiesEx or WaitForUpdatesEx.
        If you use the PropertyCollector.WaitForUpdatesEx method, specify
        an empty string for the version parameter. Any other version value will not
        produce any property values as no updates are generated.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  type: string

  /ManagedEntity/{moId}/effectiveRole:
    get:
      tags: [ManagedEntity]
      summary: |2
        Access rights the current session has to this entity.
      operationId: ManagedEntity_getEffectiveRole
      description: |2
        Access rights the current session has to this entity.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  type: integer
                  format: int32

  /ManagedEntity/{moId}/name:
    get:
      tags: [ManagedEntity]
      summary: |2
        Name of this entity, unique relative to its parent.
      operationId: ManagedEntity_getName
      description: |2
        Name of this entity, unique relative to its parent.
        
        Any / (slash), \\ (backslash), character used in this
        name element will be escaped. Similarly, any % (percent) character used in
        this name element will be escaped, unless it is used to start an escape
        sequence. A slash is escaped as %2F or %2f. A backslash is escaped as %5C or
        %5c, and a percent is escaped as %25.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                type: string

  /ManagedEntity/{moId}/overallStatus:
    get:
      tags: [ManagedEntity]
      summary: |2
        General health of this managed entity.
      operationId: ManagedEntity_getOverallStatus
      description: |2
        General health of this managed entity.
        
        The overall status of the managed entity is computed as the worst status
        among its alarms and the configuration issues detected on the entity.
        The status is reported as one of the following values:
        - red: The entity has alarms or configuration issues with a red status.
        - yellow: The entity does not have alarms or configuration issues with a
          red status, and has at least one with a yellow status.
        - green: The entity does not have alarms or configuration issues with a
          red or yellow status, and has at least one with a green status.
        - gray: All of the entity's alarms have a gray status and the
          configuration status of the entity is not being monitored.
          
        In releases after vSphere API 5.0, vSphere Servers might not
        generate property collector update notifications for this property.
        To obtain the latest value of the property, you can use
        PropertyCollector methods RetrievePropertiesEx or WaitForUpdatesEx.
        If you use the PropertyCollector.WaitForUpdatesEx method, specify
        an empty string for the version parameter. Any other version value will not
        produce any property values as no updates are generated.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedEntityStatus_enum'

  /ManagedEntity/{moId}/parent:
    get:
      tags: [ManagedEntity]
      summary: |2
        Parent of this entity.
      operationId: ManagedEntity_getParent
      description: |2
        Parent of this entity.
        
        This value is null for the root object and for
        *VirtualMachine* objects that are part of
        a *VirtualApp*.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            Refers instance of *ManagedEntity*.
          content:
            application/json:
              schema:
                nullable: true
                $ref: '#/components/schemas/ManagedObjectReference'

  /ManagedEntity/{moId}/permission:
    get:
      tags: [ManagedEntity]
      summary: |2
        List of permissions defined for this entity.
      operationId: ManagedEntity_getPermission
      description: |2
        List of permissions defined for this entity.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/Permission'

  /ManagedEntity/{moId}/recentTask:
    get:
      tags: [ManagedEntity]
      summary: |2
        The set of recent tasks operating on this managed entity.
      operationId: ManagedEntity_getRecentTask
      description: |2
        The set of recent tasks operating on this managed entity.
        
        This is a subset
        of *TaskManager.recentTask* belong to this entity. A task in this
        list could be in one of the four states: pending, running, success or error.
        
        This property can be used to deduce intermediate power states for
        a virtual machine entity. For example, if the current powerState is "poweredOn"
        and there is a running task performing the "suspend" operation, then the virtual
        machine's intermediate state might be described as "suspending."
        
        Most tasks (such as power operations) obtain exclusive access to the virtual
        machine, so it is unusual for this list to contain more than one running task.
        One exception, however, is the task of cloning a virtual machine.
        In releases after vSphere API 5.0, vSphere Servers might not
        generate property collector update notifications for this property.
        To obtain the latest value of the property, you can use
        PropertyCollector methods RetrievePropertiesEx or WaitForUpdatesEx.
        If you use the PropertyCollector.WaitForUpdatesEx method, specify
        an empty string for the version parameter. Any other version value will not
        produce any property values as no updates are generated.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            Refers instances of *Task*.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/ManagedObjectReference'

  /ManagedEntity/{moId}/tag:
    get:
      tags: [ManagedEntity]
      summary: |2
        The set of tags associated with this managed entity.
      operationId: ManagedEntity_getTag
      description: |2
        The set of tags associated with this managed entity.
        
        Experimental. Subject to change.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/Tag'

  /ManagedEntity/{moId}/triggeredAlarmState:
    get:
      tags: [ManagedEntity]
      summary: |2
        A set of alarm states for alarms triggered by this entity
        or by its descendants.
      operationId: ManagedEntity_getTriggeredAlarmState
      description: |2
        A set of alarm states for alarms triggered by this entity
        or by its descendants.
        
        Triggered alarms are propagated up the inventory hierarchy
        so that a user can readily tell when a descendant has triggered an alarm.
        In releases after vSphere API 5.0, vSphere Servers might not
        generate property collector update notifications for this property.
        To obtain the latest value of the property, you can use
        PropertyCollector methods RetrievePropertiesEx or WaitForUpdatesEx.
        If you use the PropertyCollector.WaitForUpdatesEx method, specify
        an empty string for the version parameter. Any other version value will not
        produce any property values as no updates are generated.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/AlarmState'

  /ManagedEntity/{moId}/value:
    get:
      tags: [ManagedEntity]
      summary: |2
        List of custom field values.
      operationId: ManagedEntity_getValue
      description: |2
        List of custom field values.
        
        Each value uses a key to associate
        an instance of a *CustomFieldStringValue* with
        a custom field definition.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/CustomFieldValue'

  /ManagedObjectView/{moId}/DestroyView:
    post:
      tags: [ManagedObjectView]
      summary: |2
        Destroy this view.
      operationId: ManagedObjectView_DestroyView
      description: |2
        Destroy this view.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '204':
          description: |2
            No Content

  /ManagedObjectView/{moId}/view:
    get:
      tags: [ManagedObjectView]
      summary: |2
        The list of references to objects mapped by this view.
      operationId: ManagedObjectView_getView
      description: |2
        The list of references to objects mapped by this view.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/ManagedObjectReference'

  /Network/{moId}/Destroy_Task:
    post:
      tags: [Network]
      summary: |2
        Destroys this object, deleting its contents and removing it from its parent
        folder (if any).
      operationId: Network_Destroy_Task
      description: |2
        Destroys this object, deleting its contents and removing it from its parent
        folder (if any).
        
        NOTE: The appropriate privilege must be held on the parent of the destroyed
        entity as well as the entity itself.
        This method can throw one of several exceptions. The exact set of exceptions
        depends on the kind of entity that is being removed. See comments for
        each entity for more information on destroy behavior.
        
        ***Required privileges:*** System.Read
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor the
            operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            Failure
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /Network/{moId}/DestroyNetwork:
    post:
      tags: [Network]
      summary: |2
        Removes a network.
      operationId: Network_DestroyNetwork
      deprecated: true
      description: |2
        Deprecated as of VI API 2.5 do not use this method. This method throws
        *ResourceInUse*. Networks are automatically
        removed when no longer in use, so this method is unnecessary.
        
        Removes a network.
        
        A network can be removed only if it is not used by any host or
        virtual machine.
        
        ***Required privileges:*** Network.Delete
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***ResourceInUse***: if one or more hosts or virtual machines are configured
            to use the network.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResourceInUse'

  /Network/{moId}/Reload:
    post:
      tags: [Network]
      summary: |2
        Reload the entity state.
      operationId: Network_Reload
      description: |2
        Reload the entity state.
        
        Clients only need to call this method
        if they changed some external state that affects the service
        without using the Web service interface to perform the change.
        For example, hand-editing a virtual machine configuration file
        affects the configuration of the associated virtual machine but
        the service managing the virtual machine might not monitor the
        file for changes. In this case, after such an edit, a client
        would call "reload" on the associated virtual machine to ensure
        the service and its clients have current data for the
        virtual machine.
        
        ***Required privileges:*** System.Read
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '204':
          description: |2
            No Content

  /Network/{moId}/Rename_Task:
    post:
      tags: [Network]
      summary: |2
        Renames this managed entity.
      operationId: Network_Rename_Task
      description: |2
        Renames this managed entity.
        
        Any % (percent) character used in this name parameter
        must be escaped, unless it is used to start an escape
        sequence. Clients may also escape any other characters in
        this name parameter.
        
        See also *ManagedEntity.name*.
        
        ***Required privileges:*** System.Read
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RenameRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor the
            operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***DuplicateName***: If another object in the same folder has the target name.
            
            ***InvalidName***: If the new name is not a valid entity name.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /Network/{moId}/setCustomValue:
    post:
      tags: [Network]
      summary: |2
        Assigns a value to a custom field.
      operationId: Network_setCustomValue
      description: |2
        Assigns a value to a custom field.
        
        The setCustomValue method requires
        whichever updatePrivilege is defined as one of the
        *CustomFieldDef.fieldInstancePrivileges*
        for the CustomFieldDef whose value is being changed.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/setCustomValueRequestType'
      responses:
        '204':
          description: |2
            No Content

  /Network/{moId}/alarmActionsEnabled:
    get:
      tags: [Network]
      summary: |2
        Whether alarm actions are enabled for this entity.
      operationId: Network_getAlarmActionsEnabled
      description: |2
        Whether alarm actions are enabled for this entity.
        
        True if enabled; false otherwise.
        
        ***Required privileges:*** System.Read
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: boolean

  /Network/{moId}/availableField:
    get:
      tags: [Network]
      summary: |2
        List of custom field definitions that are valid for the object's type.
      operationId: Network_getAvailableField
      description: |2
        List of custom field definitions that are valid for the object's type.
        
        The fields are sorted by *CustomFieldDef.name*.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/CustomFieldDef'

  /Network/{moId}/configIssue:
    get:
      tags: [Network]
      summary: |2
        Current configuration issues that have been detected for this entity.
      operationId: Network_getConfigIssue
      description: |2
        Current configuration issues that have been detected for this entity.
        
        Typically,
        these issues have already been logged as events. The entity stores these
        events as long as they are still current. The
        *configStatus* property provides an overall status
        based on these events.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/Event'

  /Network/{moId}/configStatus:
    get:
      tags: [Network]
      summary: |2
        The configStatus indicates whether or not the system has detected a configuration
        issue involving this entity.
      operationId: Network_getConfigStatus
      description: |2
        The configStatus indicates whether or not the system has detected a configuration
        issue involving this entity.
        
        For example, it might have detected a
        duplicate IP address or MAC address, or a host in a cluster
        might be out of compliance. The meanings of the configStatus values are:
        - red: A problem has been detected involving the entity.
        - yellow: A problem is about to occur or a transient condition
          has occurred (For example, reconfigure fail-over policy).
        - green: No configuration issues have been detected.
        - gray: The configuration status of the entity is not being monitored.
          
        A green status indicates only that a problem has not been detected;
        it is not a guarantee that the entity is problem-free.
        
        The *configIssue* property contains a list of the
        problems that have been detected.
        In releases after vSphere API 5.0, vSphere Servers might not
        generate property collector update notifications for this property.
        To obtain the latest value of the property, you can use
        PropertyCollector methods RetrievePropertiesEx or WaitForUpdatesEx.
        If you use the PropertyCollector.WaitForUpdatesEx method, specify
        an empty string for the version parameter. Any other version value will not
        produce any property values as no updates are generated.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedEntityStatus_enum'

  /Network/{moId}/customValue:
    get:
      tags: [Network]
      summary: |2
        Custom field values.
      operationId: Network_getCustomValue
      description: |2
        Custom field values.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/CustomFieldValue'

  /Network/{moId}/declaredAlarmState:
    get:
      tags: [Network]
      summary: |2
        A set of alarm states for alarms that apply to this managed entity.
      operationId: Network_getDeclaredAlarmState
      description: |2
        A set of alarm states for alarms that apply to this managed entity.
        
        The set includes alarms defined on this entity
        and alarms inherited from the parent entity,
        or from any ancestors in the inventory hierarchy.
        
        Alarms are inherited if they can be triggered by this entity or its descendants.
        This set does not include alarms that are defined on descendants of this entity.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/AlarmState'

  /Network/{moId}/disabledMethod:
    get:
      tags: [Network]
      summary: |2
        List of operations that are disabled, given the current runtime
        state of the entity.
      operationId: Network_getDisabledMethod
      description: |2
        List of operations that are disabled, given the current runtime
        state of the entity.
        
        For example, a power-on operation always fails if a
        virtual machine is already powered on. This list can be used by clients to
        enable or disable operations in a graphical user interface.
        
        Note: This list is determined by the current runtime state of an entity,
        not by its permissions.
        
        This list may include the following operations for a HostSystem:
        - *HostSystem.EnterMaintenanceMode_Task*
        - *HostSystem.ExitMaintenanceMode_Task*
        - *HostSystem.RebootHost_Task*
        - *HostSystem.ShutdownHost_Task*
        - *HostSystem.ReconnectHost_Task*
        - *HostSystem.DisconnectHost_Task*
          
        This list may include the following operations for a VirtualMachine:
        - *VirtualMachine.AnswerVM*
        - *ManagedEntity.Rename_Task*
        - *VirtualMachine.CloneVM_Task*
        - *VirtualMachine.PowerOffVM_Task*
        - *VirtualMachine.PowerOnVM_Task*
        - *VirtualMachine.SuspendVM_Task*
        - *VirtualMachine.ResetVM_Task*
        - *VirtualMachine.ReconfigVM_Task*
        - *VirtualMachine.RelocateVM_Task*
        - *VirtualMachine.MigrateVM_Task*
        - *VirtualMachine.CustomizeVM_Task*
        - *VirtualMachine.ShutdownGuest*
        - *VirtualMachine.StandbyGuest*
        - *VirtualMachine.RebootGuest*
        - *VirtualMachine.CreateSnapshot_Task*
        - *VirtualMachine.RemoveAllSnapshots_Task*
        - *VirtualMachine.RevertToCurrentSnapshot_Task*
        - *VirtualMachine.MarkAsTemplate*
        - *VirtualMachine.MarkAsVirtualMachine*
        - *VirtualMachine.ResetGuestInformation*
        - *VirtualMachine.MountToolsInstaller*
        - *VirtualMachine.UnmountToolsInstaller*
        - *ManagedEntity.Destroy_Task*
        - *VirtualMachine.UpgradeVM_Task*
        - *VirtualMachine.ExportVm*
          
        This list may include the following operations for a ResourcePool:
        - *ResourcePool.ImportVApp*
        - *ResourcePool.CreateChildVM_Task*
        - *ResourcePool.UpdateConfig*
        - *Folder.CreateVM_Task*
        - *ManagedEntity.Destroy_Task*
        - *ManagedEntity.Rename_Task*
          
        This list may include the following operations for a VirtualApp:
        - *ManagedEntity.Destroy_Task*
        - *VirtualApp.CloneVApp_Task*
        - *VirtualApp.unregisterVApp_Task*
        - *VirtualApp.ExportVApp*
        - *VirtualApp.PowerOnVApp_Task*
        - *VirtualApp.PowerOffVApp_Task*
        - *VirtualApp.UpdateVAppConfig*
          
        In releases after vSphere API 5.0, vSphere Servers might not
        generate property collector update notifications for this property.
        To obtain the latest value of the property, you can use
        PropertyCollector methods RetrievePropertiesEx or WaitForUpdatesEx.
        If you use the PropertyCollector.WaitForUpdatesEx method, specify
        an empty string for the version parameter. Any other version value will not
        produce any property values as no updates are generated.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  type: string

  /Network/{moId}/effectiveRole:
    get:
      tags: [Network]
      summary: |2
        Access rights the current session has to this entity.
      operationId: Network_getEffectiveRole
      description: |2
        Access rights the current session has to this entity.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  type: integer
                  format: int32

  /Network/{moId}/host:
    get:
      tags: [Network]
      summary: |2
        Hosts attached to this network.
      operationId: Network_getHost
      description: |2
        Hosts attached to this network.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            Refers instances of *HostSystem*.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/ManagedObjectReference'

  /Network/{moId}/name:
    get:
      tags: [Network]
      summary: |2
        Name of this entity, unique relative to its parent.
      operationId: Network_getName
      description: |2
        Name of this entity, unique relative to its parent.
        
        Any / (slash), \\ (backslash), character used in this
        name element will be escaped. Similarly, any % (percent) character used in
        this name element will be escaped, unless it is used to start an escape
        sequence. A slash is escaped as %2F or %2f. A backslash is escaped as %5C or
        %5c, and a percent is escaped as %25.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                type: string

  /Network/{moId}/overallStatus:
    get:
      tags: [Network]
      summary: |2
        General health of this managed entity.
      operationId: Network_getOverallStatus
      description: |2
        General health of this managed entity.
        
        The overall status of the managed entity is computed as the worst status
        among its alarms and the configuration issues detected on the entity.
        The status is reported as one of the following values:
        - red: The entity has alarms or configuration issues with a red status.
        - yellow: The entity does not have alarms or configuration issues with a
          red status, and has at least one with a yellow status.
        - green: The entity does not have alarms or configuration issues with a
          red or yellow status, and has at least one with a green status.
        - gray: All of the entity's alarms have a gray status and the
          configuration status of the entity is not being monitored.
          
        In releases after vSphere API 5.0, vSphere Servers might not
        generate property collector update notifications for this property.
        To obtain the latest value of the property, you can use
        PropertyCollector methods RetrievePropertiesEx or WaitForUpdatesEx.
        If you use the PropertyCollector.WaitForUpdatesEx method, specify
        an empty string for the version parameter. Any other version value will not
        produce any property values as no updates are generated.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedEntityStatus_enum'

  /Network/{moId}/parent:
    get:
      tags: [Network]
      summary: |2
        Parent of this entity.
      operationId: Network_getParent
      description: |2
        Parent of this entity.
        
        This value is null for the root object and for
        *VirtualMachine* objects that are part of
        a *VirtualApp*.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            Refers instance of *ManagedEntity*.
          content:
            application/json:
              schema:
                nullable: true
                $ref: '#/components/schemas/ManagedObjectReference'

  /Network/{moId}/permission:
    get:
      tags: [Network]
      summary: |2
        List of permissions defined for this entity.
      operationId: Network_getPermission
      description: |2
        List of permissions defined for this entity.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/Permission'

  /Network/{moId}/recentTask:
    get:
      tags: [Network]
      summary: |2
        The set of recent tasks operating on this managed entity.
      operationId: Network_getRecentTask
      description: |2
        The set of recent tasks operating on this managed entity.
        
        This is a subset
        of *TaskManager.recentTask* belong to this entity. A task in this
        list could be in one of the four states: pending, running, success or error.
        
        This property can be used to deduce intermediate power states for
        a virtual machine entity. For example, if the current powerState is "poweredOn"
        and there is a running task performing the "suspend" operation, then the virtual
        machine's intermediate state might be described as "suspending."
        
        Most tasks (such as power operations) obtain exclusive access to the virtual
        machine, so it is unusual for this list to contain more than one running task.
        One exception, however, is the task of cloning a virtual machine.
        In releases after vSphere API 5.0, vSphere Servers might not
        generate property collector update notifications for this property.
        To obtain the latest value of the property, you can use
        PropertyCollector methods RetrievePropertiesEx or WaitForUpdatesEx.
        If you use the PropertyCollector.WaitForUpdatesEx method, specify
        an empty string for the version parameter. Any other version value will not
        produce any property values as no updates are generated.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            Refers instances of *Task*.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/ManagedObjectReference'

  /Network/{moId}/summary:
    get:
      tags: [Network]
      summary: |2
        Properties of a network.
      operationId: Network_getSummary
      description: |2
        Properties of a network.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NetworkSummary'

  /Network/{moId}/tag:
    get:
      tags: [Network]
      summary: |2
        The set of tags associated with this managed entity.
      operationId: Network_getTag
      description: |2
        The set of tags associated with this managed entity.
        
        Experimental. Subject to change.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/Tag'

  /Network/{moId}/triggeredAlarmState:
    get:
      tags: [Network]
      summary: |2
        A set of alarm states for alarms triggered by this entity
        or by its descendants.
      operationId: Network_getTriggeredAlarmState
      description: |2
        A set of alarm states for alarms triggered by this entity
        or by its descendants.
        
        Triggered alarms are propagated up the inventory hierarchy
        so that a user can readily tell when a descendant has triggered an alarm.
        In releases after vSphere API 5.0, vSphere Servers might not
        generate property collector update notifications for this property.
        To obtain the latest value of the property, you can use
        PropertyCollector methods RetrievePropertiesEx or WaitForUpdatesEx.
        If you use the PropertyCollector.WaitForUpdatesEx method, specify
        an empty string for the version parameter. Any other version value will not
        produce any property values as no updates are generated.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/AlarmState'

  /Network/{moId}/value:
    get:
      tags: [Network]
      summary: |2
        List of custom field values.
      operationId: Network_getValue
      description: |2
        List of custom field values.
        
        Each value uses a key to associate
        an instance of a *CustomFieldStringValue* with
        a custom field definition.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/CustomFieldValue'

  /Network/{moId}/vm:
    get:
      tags: [Network]
      summary: |2
        Virtual machines using this network.
      operationId: Network_getVm
      description: |2
        Virtual machines using this network.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            Refers instances of *VirtualMachine*.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/ManagedObjectReference'

  /OpaqueNetwork/{moId}/Destroy_Task:
    post:
      tags: [OpaqueNetwork]
      summary: |2
        Destroys this object, deleting its contents and removing it from its parent
        folder (if any).
      operationId: OpaqueNetwork_Destroy_Task
      description: |2
        Destroys this object, deleting its contents and removing it from its parent
        folder (if any).
        
        NOTE: The appropriate privilege must be held on the parent of the destroyed
        entity as well as the entity itself.
        This method can throw one of several exceptions. The exact set of exceptions
        depends on the kind of entity that is being removed. See comments for
        each entity for more information on destroy behavior.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor the
            operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            Failure
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /OpaqueNetwork/{moId}/DestroyNetwork:
    post:
      tags: [OpaqueNetwork]
      summary: |2
        Removes a network.
      operationId: OpaqueNetwork_DestroyNetwork
      deprecated: true
      description: |2
        Deprecated as of VI API 2.5 do not use this method. This method throws
        *ResourceInUse*. Networks are automatically
        removed when no longer in use, so this method is unnecessary.
        
        Removes a network.
        
        A network can be removed only if it is not used by any host or
        virtual machine.
        
        ***Required privileges:*** Network.Delete
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***ResourceInUse***: if one or more hosts or virtual machines are configured
            to use the network.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResourceInUse'

  /OpaqueNetwork/{moId}/Reload:
    post:
      tags: [OpaqueNetwork]
      summary: |2
        Reload the entity state.
      operationId: OpaqueNetwork_Reload
      description: |2
        Reload the entity state.
        
        Clients only need to call this method
        if they changed some external state that affects the service
        without using the Web service interface to perform the change.
        For example, hand-editing a virtual machine configuration file
        affects the configuration of the associated virtual machine but
        the service managing the virtual machine might not monitor the
        file for changes. In this case, after such an edit, a client
        would call "reload" on the associated virtual machine to ensure
        the service and its clients have current data for the
        virtual machine.
        
        ***Required privileges:*** System.Read
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '204':
          description: |2
            No Content

  /OpaqueNetwork/{moId}/Rename_Task:
    post:
      tags: [OpaqueNetwork]
      summary: |2
        Renames this managed entity.
      operationId: OpaqueNetwork_Rename_Task
      description: |2
        Renames this managed entity.
        
        Any % (percent) character used in this name parameter
        must be escaped, unless it is used to start an escape
        sequence. Clients may also escape any other characters in
        this name parameter.
        
        See also *ManagedEntity.name*.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RenameRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor the
            operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***DuplicateName***: If another object in the same folder has the target name.
            
            ***InvalidName***: If the new name is not a valid entity name.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /OpaqueNetwork/{moId}/setCustomValue:
    post:
      tags: [OpaqueNetwork]
      summary: |2
        Assigns a value to a custom field.
      operationId: OpaqueNetwork_setCustomValue
      description: |2
        Assigns a value to a custom field.
        
        The setCustomValue method requires
        whichever updatePrivilege is defined as one of the
        *CustomFieldDef.fieldInstancePrivileges*
        for the CustomFieldDef whose value is being changed.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/setCustomValueRequestType'
      responses:
        '204':
          description: |2
            No Content

  /OpaqueNetwork/{moId}/alarmActionsEnabled:
    get:
      tags: [OpaqueNetwork]
      summary: |2
        Whether alarm actions are enabled for this entity.
      operationId: OpaqueNetwork_getAlarmActionsEnabled
      description: |2
        Whether alarm actions are enabled for this entity.
        
        True if enabled; false otherwise.
        
        ***Required privileges:*** System.Read
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: boolean

  /OpaqueNetwork/{moId}/availableField:
    get:
      tags: [OpaqueNetwork]
      summary: |2
        List of custom field definitions that are valid for the object's type.
      operationId: OpaqueNetwork_getAvailableField
      description: |2
        List of custom field definitions that are valid for the object's type.
        
        The fields are sorted by *CustomFieldDef.name*.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/CustomFieldDef'

  /OpaqueNetwork/{moId}/capability:
    get:
      tags: [OpaqueNetwork]
      summary: |2
        The capability of the Opaque Network.
      operationId: OpaqueNetwork_getCapability
      description: |2
        The capability of the Opaque Network.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                $ref: '#/components/schemas/OpaqueNetworkCapability'

  /OpaqueNetwork/{moId}/configIssue:
    get:
      tags: [OpaqueNetwork]
      summary: |2
        Current configuration issues that have been detected for this entity.
      operationId: OpaqueNetwork_getConfigIssue
      description: |2
        Current configuration issues that have been detected for this entity.
        
        Typically,
        these issues have already been logged as events. The entity stores these
        events as long as they are still current. The
        *configStatus* property provides an overall status
        based on these events.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/Event'

  /OpaqueNetwork/{moId}/configStatus:
    get:
      tags: [OpaqueNetwork]
      summary: |2
        The configStatus indicates whether or not the system has detected a configuration
        issue involving this entity.
      operationId: OpaqueNetwork_getConfigStatus
      description: |2
        The configStatus indicates whether or not the system has detected a configuration
        issue involving this entity.
        
        For example, it might have detected a
        duplicate IP address or MAC address, or a host in a cluster
        might be out of compliance. The meanings of the configStatus values are:
        - red: A problem has been detected involving the entity.
        - yellow: A problem is about to occur or a transient condition
          has occurred (For example, reconfigure fail-over policy).
        - green: No configuration issues have been detected.
        - gray: The configuration status of the entity is not being monitored.
          
        A green status indicates only that a problem has not been detected;
        it is not a guarantee that the entity is problem-free.
        
        The *configIssue* property contains a list of the
        problems that have been detected.
        In releases after vSphere API 5.0, vSphere Servers might not
        generate property collector update notifications for this property.
        To obtain the latest value of the property, you can use
        PropertyCollector methods RetrievePropertiesEx or WaitForUpdatesEx.
        If you use the PropertyCollector.WaitForUpdatesEx method, specify
        an empty string for the version parameter. Any other version value will not
        produce any property values as no updates are generated.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedEntityStatus_enum'

  /OpaqueNetwork/{moId}/customValue:
    get:
      tags: [OpaqueNetwork]
      summary: |2
        Custom field values.
      operationId: OpaqueNetwork_getCustomValue
      description: |2
        Custom field values.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/CustomFieldValue'

  /OpaqueNetwork/{moId}/declaredAlarmState:
    get:
      tags: [OpaqueNetwork]
      summary: |2
        A set of alarm states for alarms that apply to this managed entity.
      operationId: OpaqueNetwork_getDeclaredAlarmState
      description: |2
        A set of alarm states for alarms that apply to this managed entity.
        
        The set includes alarms defined on this entity
        and alarms inherited from the parent entity,
        or from any ancestors in the inventory hierarchy.
        
        Alarms are inherited if they can be triggered by this entity or its descendants.
        This set does not include alarms that are defined on descendants of this entity.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/AlarmState'

  /OpaqueNetwork/{moId}/disabledMethod:
    get:
      tags: [OpaqueNetwork]
      summary: |2
        List of operations that are disabled, given the current runtime
        state of the entity.
      operationId: OpaqueNetwork_getDisabledMethod
      description: |2
        List of operations that are disabled, given the current runtime
        state of the entity.
        
        For example, a power-on operation always fails if a
        virtual machine is already powered on. This list can be used by clients to
        enable or disable operations in a graphical user interface.
        
        Note: This list is determined by the current runtime state of an entity,
        not by its permissions.
        
        This list may include the following operations for a HostSystem:
        - *HostSystem.EnterMaintenanceMode_Task*
        - *HostSystem.ExitMaintenanceMode_Task*
        - *HostSystem.RebootHost_Task*
        - *HostSystem.ShutdownHost_Task*
        - *HostSystem.ReconnectHost_Task*
        - *HostSystem.DisconnectHost_Task*
          
        This list may include the following operations for a VirtualMachine:
        - *VirtualMachine.AnswerVM*
        - *ManagedEntity.Rename_Task*
        - *VirtualMachine.CloneVM_Task*
        - *VirtualMachine.PowerOffVM_Task*
        - *VirtualMachine.PowerOnVM_Task*
        - *VirtualMachine.SuspendVM_Task*
        - *VirtualMachine.ResetVM_Task*
        - *VirtualMachine.ReconfigVM_Task*
        - *VirtualMachine.RelocateVM_Task*
        - *VirtualMachine.MigrateVM_Task*
        - *VirtualMachine.CustomizeVM_Task*
        - *VirtualMachine.ShutdownGuest*
        - *VirtualMachine.StandbyGuest*
        - *VirtualMachine.RebootGuest*
        - *VirtualMachine.CreateSnapshot_Task*
        - *VirtualMachine.RemoveAllSnapshots_Task*
        - *VirtualMachine.RevertToCurrentSnapshot_Task*
        - *VirtualMachine.MarkAsTemplate*
        - *VirtualMachine.MarkAsVirtualMachine*
        - *VirtualMachine.ResetGuestInformation*
        - *VirtualMachine.MountToolsInstaller*
        - *VirtualMachine.UnmountToolsInstaller*
        - *ManagedEntity.Destroy_Task*
        - *VirtualMachine.UpgradeVM_Task*
        - *VirtualMachine.ExportVm*
          
        This list may include the following operations for a ResourcePool:
        - *ResourcePool.ImportVApp*
        - *ResourcePool.CreateChildVM_Task*
        - *ResourcePool.UpdateConfig*
        - *Folder.CreateVM_Task*
        - *ManagedEntity.Destroy_Task*
        - *ManagedEntity.Rename_Task*
          
        This list may include the following operations for a VirtualApp:
        - *ManagedEntity.Destroy_Task*
        - *VirtualApp.CloneVApp_Task*
        - *VirtualApp.unregisterVApp_Task*
        - *VirtualApp.ExportVApp*
        - *VirtualApp.PowerOnVApp_Task*
        - *VirtualApp.PowerOffVApp_Task*
        - *VirtualApp.UpdateVAppConfig*
          
        In releases after vSphere API 5.0, vSphere Servers might not
        generate property collector update notifications for this property.
        To obtain the latest value of the property, you can use
        PropertyCollector methods RetrievePropertiesEx or WaitForUpdatesEx.
        If you use the PropertyCollector.WaitForUpdatesEx method, specify
        an empty string for the version parameter. Any other version value will not
        produce any property values as no updates are generated.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  type: string

  /OpaqueNetwork/{moId}/effectiveRole:
    get:
      tags: [OpaqueNetwork]
      summary: |2
        Access rights the current session has to this entity.
      operationId: OpaqueNetwork_getEffectiveRole
      description: |2
        Access rights the current session has to this entity.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  type: integer
                  format: int32

  /OpaqueNetwork/{moId}/extraConfig:
    get:
      tags: [OpaqueNetwork]
      summary: |2
        Extra NSX specific properties for opaque network.
      operationId: OpaqueNetwork_getExtraConfig
      description: |2
        Extra NSX specific properties for opaque network.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/OptionValue'

  /OpaqueNetwork/{moId}/host:
    get:
      tags: [OpaqueNetwork]
      summary: |2
        Hosts attached to this network.
      operationId: OpaqueNetwork_getHost
      description: |2
        Hosts attached to this network.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            Refers instances of *HostSystem*.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/ManagedObjectReference'

  /OpaqueNetwork/{moId}/name:
    get:
      tags: [OpaqueNetwork]
      summary: |2
        Name of this entity, unique relative to its parent.
      operationId: OpaqueNetwork_getName
      description: |2
        Name of this entity, unique relative to its parent.
        
        Any / (slash), \\ (backslash), character used in this
        name element will be escaped. Similarly, any % (percent) character used in
        this name element will be escaped, unless it is used to start an escape
        sequence. A slash is escaped as %2F or %2f. A backslash is escaped as %5C or
        %5c, and a percent is escaped as %25.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                type: string

  /OpaqueNetwork/{moId}/overallStatus:
    get:
      tags: [OpaqueNetwork]
      summary: |2
        General health of this managed entity.
      operationId: OpaqueNetwork_getOverallStatus
      description: |2
        General health of this managed entity.
        
        The overall status of the managed entity is computed as the worst status
        among its alarms and the configuration issues detected on the entity.
        The status is reported as one of the following values:
        - red: The entity has alarms or configuration issues with a red status.
        - yellow: The entity does not have alarms or configuration issues with a
          red status, and has at least one with a yellow status.
        - green: The entity does not have alarms or configuration issues with a
          red or yellow status, and has at least one with a green status.
        - gray: All of the entity's alarms have a gray status and the
          configuration status of the entity is not being monitored.
          
        In releases after vSphere API 5.0, vSphere Servers might not
        generate property collector update notifications for this property.
        To obtain the latest value of the property, you can use
        PropertyCollector methods RetrievePropertiesEx or WaitForUpdatesEx.
        If you use the PropertyCollector.WaitForUpdatesEx method, specify
        an empty string for the version parameter. Any other version value will not
        produce any property values as no updates are generated.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedEntityStatus_enum'

  /OpaqueNetwork/{moId}/parent:
    get:
      tags: [OpaqueNetwork]
      summary: |2
        Parent of this entity.
      operationId: OpaqueNetwork_getParent
      description: |2
        Parent of this entity.
        
        This value is null for the root object and for
        *VirtualMachine* objects that are part of
        a *VirtualApp*.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            Refers instance of *ManagedEntity*.
          content:
            application/json:
              schema:
                nullable: true
                $ref: '#/components/schemas/ManagedObjectReference'

  /OpaqueNetwork/{moId}/permission:
    get:
      tags: [OpaqueNetwork]
      summary: |2
        List of permissions defined for this entity.
      operationId: OpaqueNetwork_getPermission
      description: |2
        List of permissions defined for this entity.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/Permission'

  /OpaqueNetwork/{moId}/recentTask:
    get:
      tags: [OpaqueNetwork]
      summary: |2
        The set of recent tasks operating on this managed entity.
      operationId: OpaqueNetwork_getRecentTask
      description: |2
        The set of recent tasks operating on this managed entity.
        
        This is a subset
        of *TaskManager.recentTask* belong to this entity. A task in this
        list could be in one of the four states: pending, running, success or error.
        
        This property can be used to deduce intermediate power states for
        a virtual machine entity. For example, if the current powerState is "poweredOn"
        and there is a running task performing the "suspend" operation, then the virtual
        machine's intermediate state might be described as "suspending."
        
        Most tasks (such as power operations) obtain exclusive access to the virtual
        machine, so it is unusual for this list to contain more than one running task.
        One exception, however, is the task of cloning a virtual machine.
        In releases after vSphere API 5.0, vSphere Servers might not
        generate property collector update notifications for this property.
        To obtain the latest value of the property, you can use
        PropertyCollector methods RetrievePropertiesEx or WaitForUpdatesEx.
        If you use the PropertyCollector.WaitForUpdatesEx method, specify
        an empty string for the version parameter. Any other version value will not
        produce any property values as no updates are generated.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            Refers instances of *Task*.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/ManagedObjectReference'

  /OpaqueNetwork/{moId}/summary:
    get:
      tags: [OpaqueNetwork]
      summary: |2
        Properties of a network.
      operationId: OpaqueNetwork_getSummary
      description: |2
        Properties of a network.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NetworkSummary'

  /OpaqueNetwork/{moId}/tag:
    get:
      tags: [OpaqueNetwork]
      summary: |2
        The set of tags associated with this managed entity.
      operationId: OpaqueNetwork_getTag
      description: |2
        The set of tags associated with this managed entity.
        
        Experimental. Subject to change.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/Tag'

  /OpaqueNetwork/{moId}/triggeredAlarmState:
    get:
      tags: [OpaqueNetwork]
      summary: |2
        A set of alarm states for alarms triggered by this entity
        or by its descendants.
      operationId: OpaqueNetwork_getTriggeredAlarmState
      description: |2
        A set of alarm states for alarms triggered by this entity
        or by its descendants.
        
        Triggered alarms are propagated up the inventory hierarchy
        so that a user can readily tell when a descendant has triggered an alarm.
        In releases after vSphere API 5.0, vSphere Servers might not
        generate property collector update notifications for this property.
        To obtain the latest value of the property, you can use
        PropertyCollector methods RetrievePropertiesEx or WaitForUpdatesEx.
        If you use the PropertyCollector.WaitForUpdatesEx method, specify
        an empty string for the version parameter. Any other version value will not
        produce any property values as no updates are generated.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/AlarmState'

  /OpaqueNetwork/{moId}/value:
    get:
      tags: [OpaqueNetwork]
      summary: |2
        List of custom field values.
      operationId: OpaqueNetwork_getValue
      description: |2
        List of custom field values.
        
        Each value uses a key to associate
        an instance of a *CustomFieldStringValue* with
        a custom field definition.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/CustomFieldValue'

  /OpaqueNetwork/{moId}/vm:
    get:
      tags: [OpaqueNetwork]
      summary: |2
        Virtual machines using this network.
      operationId: OpaqueNetwork_getVm
      description: |2
        Virtual machines using this network.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            Refers instances of *VirtualMachine*.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/ManagedObjectReference'

  /OptionManager/{moId}/QueryOptions:
    post:
      tags: [OptionManager]
      summary: |2
        Returns a specific node or nodes in the option hierarchy.
      operationId: OptionManager_QueryOptions
      description: |2
        Returns a specific node or nodes in the option hierarchy.
        
        This method might require any of the following privileges depending
        on where the property fits in the inventory tree.
        - System.View on the root folder, if this is used to read settings
          in the &quot;client&quot; subtree.
        - System.Read on the root folder, if this is used to read all settings
          or any settings beside those in the &quot;client&quot; subtree.
        - System.Read on the host, if this is used to read the advanced
          options for a host configuration.
          
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QueryOptionsRequestType'
      responses:
        '200':
          description: |2
            The option with the given name. If the name ends with a
            dot, all options for that subtree are returned.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/OptionValue'
        '500':
          description: |2
            ***InvalidName***: if no option or subtree exists with the
            given name.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InvalidName'

  /OptionManager/{moId}/UpdateOptions:
    post:
      tags: [OptionManager]
      summary: |2
        Updates one or more options.
      operationId: OptionManager_UpdateOptions
      description: |2
        Updates one or more options.
        
        The options are changed one by one, and the operation is not atomic.
        This means that on failure some of the options may not be changed.
        
        A nested option setting can be named using a dot notation; for example,
        system.cacheSize.
        
        This method might require any of the following privileges depending
        on where the property fits in the inventory tree.
        - Global.Settings on the root folder, if this is used to modify the
          settings in the service node.
        - Host.Config.AdvancedConfig on the host, if this is used to set the
          advanced options in the host configuration.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateOptionsRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***InvalidName***: if one or more OptionValue objects refers to a
            non-existent option.
            
            ***InvalidArgument***: if one or more OptionValue contains an
            invalid value.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InvalidName'

  /OptionManager/{moId}/setting:
    get:
      tags: [OptionManager]
      summary: |2
        A list of the current settings for the key/value pair options.
      operationId: OptionManager_getSetting
      description: |2
        A list of the current settings for the key/value pair options.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/OptionValue'

  /OptionManager/{moId}/supportedOption:
    get:
      tags: [OptionManager]
      summary: |2
        A list of supported key/value pair options including their
        type information.
      operationId: OptionManager_getSupportedOption
      description: |2
        A list of supported key/value pair options including their
        type information.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/OptionDef'

  /OverheadMemoryManager/{moId}/LookupVmOverheadMemory:
    post:
      tags: [OverheadMemoryManager]
      summary: |2
        Return static VM overhead memory value in bytes for a (vm, host) pair from
        the overhead memory module (OMM) in Virtual Center.
      operationId: OverheadMemoryManager_LookupVmOverheadMemory
      description: |2
        Return static VM overhead memory value in bytes for a (vm, host) pair from
        the overhead memory module (OMM) in Virtual Center.
        
        ***Required privileges:*** Global.VCServer
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LookupVmOverheadMemoryRequestType'
      responses:
        '200':
          description: |2
            Overhead memory value, if found in the OMM.
          content:
            application/json:
              schema:
                type: integer
                format: int64
        '500':
          description: |2
            ***NotFound***: If the overhead memory value is not found in the OMM.
            
            ***InvalidType***: If the MoRefs do not point to appropriate type of
            inventory objects - VM and Host respectively.
            
            ***InvalidArgument***: If any of the MoRefs are NULL.
            
            ***ManagedObjectNotFound***: If the inventory objects cannot be found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MethodFault'

  /OvfManager/{moId}/CreateDescriptor:
    post:
      tags: [OvfManager]
      summary: |2
        Create an OVF descriptor for the specified ManagedEntity, which may be a
        *VirtualMachine* or a *VirtualApp*.
      operationId: OvfManager_CreateDescriptor
      description: |2
        Create an OVF descriptor for the specified ManagedEntity, which may be a
        *VirtualMachine* or a *VirtualApp*.
        
        To create the complete OVF descriptor, the client must already have downloaded the
        files that are part of the entity, because information about these files
        (compression, chunking, filename etc.) is part of the descriptor.
        
        However, these downloads can be quite time-consuming, so if the descriptor for some
        reason cannot be generated, the client will want to know this before downloading
        the files.
        
        For this reason, the client may do an initial "dry run" with the ovfFiles
        parameter unset. Default filenames will then be used in the descriptor, and the
        client can examine any warnings and/or errors before downloading the files.
        
        After the final call to this method, client must release the lock on the entity
        given to it by *VirtualMachine.exportVm* or *VirtualApp.exportVApp*.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateDescriptorRequestType'
      responses:
        '200':
          description: |2
            An instance of CreateDescriptorResult
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OvfCreateDescriptorResult'
        '500':
          description: |2
            ***TaskInProgress***: if a required managed entity is busy.
            
            ***VmConfigFault***: if a configuration issue prevents the operation from
            succeeding. Typically, a more specific subclass is thrown.
            
            ***ConcurrentAccess***: if a concurrency issue prevents the operation from
            succeeding.
            
            ***FileFault***: if there is a generic file error
            
            ***InvalidState***: if the operation failed due to the current state of the system.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /OvfManager/{moId}/CreateImportSpec:
    post:
      tags: [OvfManager]
      summary: |2
        Validate the OVF descriptor against the hardware supported by the
        host system.
      operationId: OvfManager_CreateImportSpec
      description: |2
        Validate the OVF descriptor against the hardware supported by the
        host system.
        
        If the validation succeeds, return a result containing:
        - An *ImportSpec* to use when importing the entity.
        - A list of items to upload (for example disk backing files, ISO images etc.)
          
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateImportSpecRequestType'
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OvfCreateImportSpecResult'
        '500':
          description: |2
            ***TaskInProgress***: if a required managed entity is busy.
            
            ***VmConfigFault***: if a configuration issue prevents the operation from
            succeeding. Typically, a more specific subclass is thrown.
            
            ***ConcurrentAccess***: if a concurrency issue prevents the operation from
            succeeding.
            
            ***FileFault***: if there is a generic file error
            
            ***InvalidState***: if the operation failed due to the current state of the system.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /OvfManager/{moId}/ParseDescriptor:
    post:
      tags: [OvfManager]
      summary: |2
        Parse the OVF descriptor and return as much information about it as possible
        without knowing the host on which it will be imported.
      operationId: OvfManager_ParseDescriptor
      description: |2
        Parse the OVF descriptor and return as much information about it as possible
        without knowing the host on which it will be imported.
        
        Typically, this method is called once without a deploymentOption parameter to
        obtain the values for the default deployment option. Part of the result is the list
        of possible deployment options. To obtain the values for a particular deployment
        option, call this method again, specifying that option.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ParseDescriptorRequestType'
      responses:
        '200':
          description: |2
            The information about the descriptor
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OvfParseDescriptorResult'
        '500':
          description: |2
            ***TaskInProgress***: if a required managed entity is busy.
            
            ***VmConfigFault***: if a configuration issue prevents the operation from
            succeeding. Typically, a more specific subclass is thrown.
            
            ***ConcurrentAccess***: if a concurrency issue prevents the operation from
            succeeding.
            
            ***FileFault***: if there is a generic file error
            
            ***InvalidState***: if the operation failed due to the current state of the system.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /OvfManager/{moId}/ValidateHost:
    post:
      tags: [OvfManager]
      summary: |2
        Validate that the given OVF can be imported on the host.
      operationId: OvfManager_ValidateHost
      description: |2
        Validate that the given OVF can be imported on the host.
        
        More specifically, this means whether or not the host supports the virtual hardware
        required by the OVF descriptor.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ValidateHostRequestType'
      responses:
        '200':
          description: |2
            A ValidateResult instance containing any warnings and/or errors from the
            validation.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OvfValidateHostResult'
        '500':
          description: |2
            ***TaskInProgress***: if a required managed entity is busy.
            
            ***ConcurrentAccess***: if a concurrency issue prevents the operation from
            succeeding.
            
            ***FileFault***: if there is a generic file error
            
            ***InvalidState***: if the operation failed due to the current state of the system.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /OvfManager/{moId}/ovfExportOption:
    get:
      tags: [OvfManager]
      summary: |2
        Returns an array of *OvfOptionInfo* object that specifies what options the server
        support for exporting an OVF descriptor.
      operationId: OvfManager_getOvfExportOption
      description: |2
        Returns an array of *OvfOptionInfo* object that specifies what options the server
        support for exporting an OVF descriptor.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            An instance of *OvfOptionInfo*
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/OvfOptionInfo'

  /OvfManager/{moId}/ovfImportOption:
    get:
      tags: [OvfManager]
      summary: |2
        Returns an array of *OvfOptionInfo* object that specifies what options the server
        support for modifing/relaxing the OVF import process.
      operationId: OvfManager_getOvfImportOption
      description: |2
        Returns an array of *OvfOptionInfo* object that specifies what options the server
        support for modifing/relaxing the OVF import process.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            An instance of *OvfOptionInfo*
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/OvfOptionInfo'

  /PerformanceManager/{moId}/CreatePerfInterval:
    post:
      tags: [PerformanceManager]
      summary: |2
        Adds a new historical interval.
      operationId: PerformanceManager_CreatePerfInterval
      deprecated: true
      description: |2
        Deprecated as of API 2.5, use *PerformanceManager.UpdatePerfInterval*. The
        default historical intervals can be modified, but they cannot be created.
        
        Adds a new historical interval.
        
        Sampling period for new interval must be
        a multiple of an existing interval; must comprise a longer period of
        time; and must be uniquely named.
        
        ***Required privileges:*** Performance.ModifyIntervals
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreatePerfIntervalRequestType'
      responses:
        '204':
          description: |2
            No Content

  /PerformanceManager/{moId}/QueryAvailablePerfMetric:
    post:
      tags: [PerformanceManager]
      summary: |2
        Retrieves all performance counters for the specified *managed object* generated during a specified
        period of time.
      operationId: PerformanceManager_QueryAvailablePerfMetric
      description: |2
        Retrieves all performance counters for the specified *managed object* generated during a specified
        period of time.
        
        The time period can be specified using beginTime,
        endTime, or by interval ID.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QueryAvailablePerfMetricRequestType'
      responses:
        '200':
          description: |2
            An array of metrics, each of which comprises a
            *PerfMetricId.counterId* and an
            *name*.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/PerfMetricId'

  /PerformanceManager/{moId}/QueryPerfComposite:
    post:
      tags: [PerformanceManager]
      summary: |2
        Retrieves a *PerfCompositeMetric* data object
        that comprises statistics for the specified entity and its children
        entities.
      operationId: PerformanceManager_QueryPerfComposite
      description: |2
        Retrieves a *PerfCompositeMetric* data object
        that comprises statistics for the specified entity and its children
        entities.
        
        Only metrics for the first level of descendents are included in
        the *PerfCompositeMetric* object.
        
        Use this operation to obtain statistics for a *host* and its associated *virtual machines*, for
        example.
        
        Requires **system.read** privilege for every virtual machine on
        the target host, or the query fails with the &#147;NoPermission&#148;
        fault. Suported for *HostSystem* managed entities only.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QueryPerfCompositeRequestType'
      responses:
        '200':
          description: |2
            The metric values for the specified entity and its associated
            entities for a single interval.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PerfCompositeMetric'

  /PerformanceManager/{moId}/QueryPerfCounter:
    post:
      tags: [PerformanceManager]
      summary: |2
        Retrieves counter information for the specified list of counter IDs.
      operationId: PerformanceManager_QueryPerfCounter
      description: |2
        Retrieves counter information for the specified list of counter IDs.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QueryPerfCounterRequestType'
      responses:
        '200':
          description: |2
            An array consisting of performance counter information for the
            specified counterIds.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/PerfCounterInfo'

  /PerformanceManager/{moId}/QueryPerfCounterByLevel:
    post:
      tags: [PerformanceManager]
      summary: |2
        Retrieves the set of counters that are available at a specified
        collection *PerfInterval.level*.
      operationId: PerformanceManager_QueryPerfCounterByLevel
      description: |2
        Retrieves the set of counters that are available at a specified
        collection *PerfInterval.level*.
        
        The collection level
        determines the statistics that get stored in VirtualCenter. See *PerfInterval* for more information about VirtualCenter Server
        historical statistics collection.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QueryPerfCounterByLevelRequestType'
      responses:
        '200':
          description: |2
            An array of *PerfCounterInfo* objects that
            define the set of counters having the specified level number available
            for the entity.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/PerfCounterInfo'

  /PerformanceManager/{moId}/QueryPerfProviderSummary:
    post:
      tags: [PerformanceManager]
      summary: |2
        Retrieves the *PerfProviderSummary* data object that
        defines the capabilities of the specified managed object with respect to
        statistics, such as whether it supports current or summary
        statistics&#46;
      operationId: PerformanceManager_QueryPerfProviderSummary
      description: |2
        Retrieves the *PerfProviderSummary* data object that
        defines the capabilities of the specified managed object with respect to
        statistics, such as whether it supports current or summary
        statistics&#46;
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QueryPerfProviderSummaryRequestType'
      responses:
        '200':
          description: |2
            A data object containing metadata about the entity as a
            performance provider, such as the type of metrics (real-time, summary, or
            both) it generates and the *PerfProviderSummary.refreshRate*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PerfProviderSummary'

  /PerformanceManager/{moId}/QueryPerf:
    post:
      tags: [PerformanceManager]
      summary: |2
        Retrieves the performance metrics for the specified entity (or entities)
        based on the properties specified in the *PerfQuerySpec* data object.
      operationId: PerformanceManager_QueryPerf
      description: |2
        Retrieves the performance metrics for the specified entity (or entities)
        based on the properties specified in the *PerfQuerySpec* data object.
        
        **Query Performance for VirtualCenter Server**  
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QueryPerfRequestType'
      responses:
        '200':
          description: |2
            The metric values for the specified entity or entities.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/PerfEntityMetricBase'

  /PerformanceManager/{moId}/RemovePerfInterval:
    post:
      tags: [PerformanceManager]
      summary: |2
        Removes an interval from the list.
      operationId: PerformanceManager_RemovePerfInterval
      deprecated: true
      description: |2
        Deprecated as of API 2.5, use *PerformanceManager.UpdatePerfInterval*.
        Historical intervals cannot be removed.
        
        Removes an interval from the list.
        
        ***Required privileges:*** Performance.ModifyIntervals
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RemovePerfIntervalRequestType'
      responses:
        '204':
          description: |2
            No Content

  /PerformanceManager/{moId}/ResetCounterLevelMapping:
    post:
      tags: [PerformanceManager]
      summary: |2
        Restores a set of performance counters to the default level of data
        collection.
      operationId: PerformanceManager_ResetCounterLevelMapping
      description: |2
        Restores a set of performance counters to the default level of data
        collection.
        
        See the <a href="#counterTables">performance counter
        tables</a> for the default collection level for individual counters.
        
        ***Required privileges:*** Performance.ModifyIntervals
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ResetCounterLevelMappingRequestType'
      responses:
        '204':
          description: |2
            No Content

  /PerformanceManager/{moId}/UpdateCounterLevelMapping:
    post:
      tags: [PerformanceManager]
      summary: |2
        Changes the level of data collection for a set of performance counters.
      operationId: PerformanceManager_UpdateCounterLevelMapping
      description: |2
        Changes the level of data collection for a set of performance counters.
        
        See the <a href="#counterTables">performance counter tables</a>
        for the default collection level for individual counters.
        
        **Important:**
        
        Consider the performance and storage consequences of using this
        method. You may cause a significant increase in data collection and
        storage, along with a corresponding decrease in performance. vCenter
        Server performance and database storage requirements depend on the
        collection levels defined for the performance intervals
        (PerformanceManager.*PerformanceManager.historicalInterval*)
        and the collection levels specified for individual performance counters
        (*PerfCounterInfo*.*PerfCounterInfo.level*).
        
        <u>Performance Counter Data Collection</u>
        
        vSphere defines four levels of data collection for performance
        counters. Each performance counter specifies a level for collection. The
        historical performance intervals (PerformanceManager.*PerformanceManager.historicalInterval*) define the sampling period
        and length for a particular collection level.
        
        The amount of data collected for a performance counter depends
        on the performance interval and on the type of entity for which
        the counter is defined. For example, a datastore counter such as
        datastoreIops (the aggregate number of IO operations on the datastore)
        will generate a data set that corresponds to the number of datastores
        on a host. If a vCenter Server manages a large number of hosts
        with a large number of datastores, the Server will collect
        a large amount of data.
        
        There are other counters for which the vCenter Server collects
        a relatively smaller amount of data. For example, memory counters
        are collected as a single counter per virtual machine and a single
        counter per host.
        
        <u>Performance Counter Data Storage</u>
        
        The performance interval collection *PerfCounterInfo.level* defines the set of counters for
        which the vCenter Server stores performance data. The Server will store
        data for counters at the specified level and for counters at all lower
        levels.
        
        By default, all the performance intervals specify collection level
        one. Using these defaults, the vCenter Server stores performance counter
        data in the vCenter database for all counters that specify collection
        level one. It does not store data for counters that specify collection
        levels two through four.
        
        <u>Performance Manager Method Interaction</u>
        
        You can use the UpdateCounterLevelMapping method to change the
        collection level for individual counters. You can also use the *PerformanceManager.UpdatePerfInterval* method to change the
        collection level for the system-defined performance intervals. These
        methods can cause a significant increase in the amount of data collected
        and stored in the vCenter database.
        
        You may cause a significant increase in data collection and storage
        along with a corresponding decrease in performance under the following
        conditions:
        - By default the system-defined performance intervals use collection
          level one, storing data for all counters that specify collection
          level one. If you use the UpdateCounterLevelMapping method to change
          the collection level of performance counters to level one, you will
          increase the amount of stored performance data.
        - If you use the *PerformanceManager.UpdatePerfInterval* method to increase
          the collection level for the system-defined performance intervals,
          you will increase the amount of stored performance data. 
          
        To restore counter levels to default settings use the *PerformanceManager.ResetCounterLevelMapping* method.
        
        ***Required privileges:*** Performance.ModifyIntervals
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateCounterLevelMappingRequestType'
      responses:
        '204':
          description: |2
            No Content

  /PerformanceManager/{moId}/UpdatePerfInterval:
    post:
      tags: [PerformanceManager]
      summary: |2
        Modifies VirtualCenter Server's built-in *historical intervals*, within certain limits.
      operationId: PerformanceManager_UpdatePerfInterval
      description: |2
        Modifies VirtualCenter Server's built-in *historical intervals*, within certain limits.
        
        **Supported Modifications**
        <table border="1"width="100%">
        <tr>
        <th>key</th>
        <th>samplingPeriod</th>
        <th>length</th>
        <th>name</th>
        <th>level \[1\]</th>
        <th>enabled \[2\]</th>
        </tr>
        <tr>
        <td>1</td>
        <td>300 \[3\]</td>
        <td>86400 \[4\]</td>
        <td>Past&nbsp;day</td>
        <td>1</td>
        <td>true</td>
        </tr>
        <tr>
        <td>2</td>
        <td>1800</td>
        <td>604800</td>
        <td>Past&nbsp;week</td>
        <td>1</td>
        <td>true</td>
        </tr>
        <tr>
        <td>3</td>
        <td>7200</td>
        <td>2592000</td>
        <td>Past&nbsp;month</td>
        <td>1</td>
        <td>true</td>
        </tr>
        <tr>
        <td>4</td>
        <td>86400</td>
        <td>31536000 \[5\]</td>
        <td>Past&nbsp;year</td>
        <td>1</td>
        <td>true</td>
        </tr>
        </table>
        
        **\[1\]**&nbsp; The collection level for the *historical intervals* can be changed. However,
        the level specified for a lower-numbered interval cannot be smaller
        than that of a larger interval.  
        **\[2\]**&nbsp; An interval can be disabled. By default, all four
        intervals are enabled. Disabling an interval disables all higher
        intervals. For example, disabling interval 3 (&#147;Past month&#148;)
        also disables interval 4 (&#147;Past year&#148;).  
        **\[3\]**&nbsp; Can reduce this interval&#146;s *PerfInterval.samplingPeriod* from 5 minutes to 1, 2, or 3
        minutes.  
        **\[4\]**&nbsp; Can increase this interval&#146;s *PerfInterval.length* from 1 day to 2 or 3 days.  
        **\[5\]**&nbsp; Can increase interval&#146;s *PerfInterval.length* from 1 year to 2 or 3 years.  
        
        See *PerfInterval* for information about the four default
        intervals for VirtualCenter Server.
        
        ***Required privileges:*** Performance.ModifyIntervals
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdatePerfIntervalRequestType'
      responses:
        '204':
          description: |2
            No Content

  /PerformanceManager/{moId}/description:
    get:
      tags: [PerformanceManager]
      summary: |2
        The static description strings.
      operationId: PerformanceManager_getDescription
      description: |2
        The static description strings.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PerformanceDescription'

  /PerformanceManager/{moId}/historicalInterval:
    get:
      tags: [PerformanceManager]
      summary: |2
        A list of *intervals* configured on the
        system.
      operationId: PerformanceManager_getHistoricalInterval
      description: |2
        A list of *intervals* configured on the
        system.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/PerfInterval'

  /PerformanceManager/{moId}/perfCounter:
    get:
      tags: [PerformanceManager]
      summary: |2
        A list of all supported performance counters in the system.
      operationId: PerformanceManager_getPerfCounter
      description: |2
        A list of all supported performance counters in the system.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/PerfCounterInfo'

  /Profile/{moId}/AssociateProfile:
    post:
      tags: [Profile]
      summary: |2
        Associate a profile with a managed entity.
      operationId: Profile_AssociateProfile
      description: |2
        Associate a profile with a managed entity.
        
        You can check the compliance of
        entities associated with a profile by calling the
        *Profile.CheckProfileCompliance_Task* method.
        
        ***Required privileges:*** Profile.Edit
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AssociateProfileRequestType'
      responses:
        '204':
          description: |2
            No Content

  /Profile/{moId}/CheckProfileCompliance_Task:
    post:
      tags: [Profile]
      summary: |2
        Check compliance of an entity against a Profile.
      operationId: Profile_CheckProfileCompliance_Task
      description: |2
        Check compliance of an entity against a Profile.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CheckProfileComplianceRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor the
            operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'

  /Profile/{moId}/DestroyProfile:
    post:
      tags: [Profile]
      summary: |2
        Destroy the profile.
      operationId: Profile_DestroyProfile
      description: |2
        Destroy the profile.
        
        ***Required privileges:*** Profile.Delete
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '204':
          description: |2
            No Content

  /Profile/{moId}/DissociateProfile:
    post:
      tags: [Profile]
      summary: |2
        Remove the association between a profile and a managed entity.
      operationId: Profile_DissociateProfile
      description: |2
        Remove the association between a profile and a managed entity.
        
        ***Required privileges:*** Profile.Edit
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DissociateProfileRequestType'
      responses:
        '204':
          description: |2
            No Content

  /Profile/{moId}/ExportProfile:
    post:
      tags: [Profile]
      summary: |2
        Export the profile in a serialized form.
      operationId: Profile_ExportProfile
      description: |2
        Export the profile in a serialized form.
        
        To use the serialized string to create a profile,
        specify a *ProfileSerializedCreateSpec* when you call the
        *HostProfileManager*.*ProfileManager.CreateProfile*
        method.
        
        ***Required privileges:*** Profile.Export
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            Serialized form of the profile.
          content:
            application/json:
              schema:
                type: string

  /Profile/{moId}/RetrieveDescription:
    post:
      tags: [Profile]
      summary: |2
        Returns the localizable description for the profile.
      operationId: Profile_RetrieveDescription
      description: |2
        Returns the localizable description for the profile.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            Profile divided into sections containing element descriptions and messages.
          content:
            application/json:
              schema:
                nullable: true
                $ref: '#/components/schemas/ProfileDescription'

  /Profile/{moId}/complianceStatus:
    get:
      tags: [Profile]
      summary: |2
        Overall compliance of entities associated with this profile.
      operationId: Profile_getComplianceStatus
      description: |2
        Overall compliance of entities associated with this profile.
        
        If one of the entities is out of compliance, the profile is <code>nonCompliant</code>.
        If all entities are in compliance, the profile is <code>compliant</code>.
        If the compliance status of one of the entities is not known, compliance status
        of the profile is <code>unknown</code>.
        See *ComplianceResultStatus_enum*.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                type: string

  /Profile/{moId}/config:
    get:
      tags: [Profile]
      summary: |2
        Configuration data for the profile.
      operationId: Profile_getConfig
      description: |2
        Configuration data for the profile.
        
        ***Required privileges:*** Profile.Edit
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProfileConfigInfo'

  /Profile/{moId}/createdTime:
    get:
      tags: [Profile]
      summary: |2
        Time at which the profile was created.
      operationId: Profile_getCreatedTime
      description: |2
        Time at which the profile was created.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                type: string
                format: date-time

  /Profile/{moId}/description:
    get:
      tags: [Profile]
      summary: |2
        Localizable description of the profile
      operationId: Profile_getDescription
      deprecated: true
      description: |2
        Deprecated as of vSphere API 5.0. use *Profile.RetrieveDescription* instead.
        
        Localizable description of the profile
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                $ref: '#/components/schemas/ProfileDescription'

  /Profile/{moId}/entity:
    get:
      tags: [Profile]
      summary: |2
        List of managed entities associated with the profile.
      operationId: Profile_getEntity
      description: |2
        List of managed entities associated with the profile.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            Refers instances of *ManagedEntity*.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/ManagedObjectReference'

  /Profile/{moId}/modifiedTime:
    get:
      tags: [Profile]
      summary: |2
        Time at which the profile was last modified.
      operationId: Profile_getModifiedTime
      description: |2
        Time at which the profile was last modified.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                type: string
                format: date-time

  /Profile/{moId}/name:
    get:
      tags: [Profile]
      summary: |2
        Name of the profile.
      operationId: Profile_getName
      description: |2
        Name of the profile.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                type: string

  /ProfileComplianceManager/{moId}/CheckCompliance_Task:
    post:
      tags: [ProfileComplianceManager]
      summary: |2
        Check compliance of an entity against a Profile.
      operationId: ProfileComplianceManager_CheckCompliance_Task
      description: |2
        Check compliance of an entity against a Profile.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CheckComplianceRequestType'
      responses:
        '200':
          description: |2
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'

  /ProfileComplianceManager/{moId}/ClearComplianceStatus:
    post:
      tags: [ProfileComplianceManager]
      summary: |2
        Clear the saved ComplianceResult based on profile and entity filtering criteria.
      operationId: ProfileComplianceManager_ClearComplianceStatus
      description: |2
        Clear the saved ComplianceResult based on profile and entity filtering criteria.
        
        ***Required privileges:*** Profile.Clear
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ClearComplianceStatusRequestType'
      responses:
        '204':
          description: |2
            No Content

  /ProfileComplianceManager/{moId}/QueryComplianceStatus:
    post:
      tags: [ProfileComplianceManager]
      summary: |2
        Query the compliance status based on Profile and Entity filter.
      operationId: ProfileComplianceManager_QueryComplianceStatus
      description: |2
        Query the compliance status based on Profile and Entity filter.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QueryComplianceStatusRequestType'
      responses:
        '200':
          description: |2
            ComplianceResult. ComplianceResult information may not be
            available for all the entities. If the ComplianceResult is not available already,
            a new ComplianceCheck will not be triggered.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/ComplianceResult'

  /ProfileComplianceManager/{moId}/QueryExpressionMetadata:
    post:
      tags: [ProfileComplianceManager]
      summary: |2
        Query the metadata for the expressions.
      operationId: ProfileComplianceManager_QueryExpressionMetadata
      description: |2
        Query the metadata for the expressions.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QueryExpressionMetadataRequestType'
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/ProfileExpressionMetadata'

  /ProfileManager/{moId}/CreateProfile:
    post:
      tags: [ProfileManager]
      summary: |2
        Create a profile from the specified CreateSpec.
      operationId: ProfileManager_CreateProfile
      description: |2
        Create a profile from the specified CreateSpec.
        
        ***Required privileges:*** Profile.Create
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateProfileRequestType'
      responses:
        '200':
          description: |2
            Profile created from the specified createSpec.
            
            Refers instance of *Profile*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***DuplicateName***: If a profile with the specified name already
            exists.
            
            ***InvalidProfileReferenceHost***: if the specified reference host is
            incompatible or no reference host has been specified.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DuplicateName'

  /ProfileManager/{moId}/FindAssociatedProfile:
    post:
      tags: [ProfileManager]
      summary: |2
        Get the profile(s) to which this entity is associated.
      operationId: ProfileManager_FindAssociatedProfile
      description: |2
        Get the profile(s) to which this entity is associated.
        
        The list of profiles will only include profiles known to this
        profileManager.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/FindAssociatedProfileRequestType'
      responses:
        '200':
          description: |2
            Refers instances of *Profile*.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/ManagedObjectReference'

  /ProfileManager/{moId}/QueryPolicyMetadata:
    post:
      tags: [ProfileManager]
      summary: |2
        Get the Metadata information for the policyNames.
      operationId: ProfileManager_QueryPolicyMetadata
      description: |2
        Get the Metadata information for the policyNames.
        
        PolicyNames are available with the defaultProfile obtained by invoking the
        method createDefaultProfile.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QueryPolicyMetadataRequestType'
      responses:
        '200':
          description: |2
            The metadata information for the policy.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/ProfilePolicyMetadata'

  /ProfileManager/{moId}/profile:
    get:
      tags: [ProfileManager]
      summary: |2
        A list of profiles known to this ProfileManager.
      operationId: ProfileManager_getProfile
      description: |2
        A list of profiles known to this ProfileManager.
        
        ***Required privileges:*** Profile.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            Refers instances of *Profile*.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/ManagedObjectReference'

  /PropertyCollector/{moId}/CancelRetrievePropertiesEx:
    post:
      tags: [PropertyCollector]
      summary: |2
        Discards remaining results from a retrieval started by *PropertyCollector.RetrievePropertiesEx* on the same session on the same *PropertyCollector*.
      operationId: PropertyCollector_CancelRetrievePropertiesEx
      description: |2
        Discards remaining results from a retrieval started by *PropertyCollector.RetrievePropertiesEx* on the same session on the same *PropertyCollector*.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CancelRetrievePropertiesExRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***InvalidArgument***: If the token does not match the token from the
            previous *RetrieveResult* returned on the same
            session by the same *PropertyCollector*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InvalidProperty'

  /PropertyCollector/{moId}/CancelWaitForUpdates:
    post:
      tags: [PropertyCollector]
      summary: |2
        Attempts to cancel outstanding calls to *PropertyCollector.WaitForUpdates* or *PropertyCollector.WaitForUpdatesEx* in the current session.
      operationId: PropertyCollector_CancelWaitForUpdates
      description: |2
        Attempts to cancel outstanding calls to *PropertyCollector.WaitForUpdates* or *PropertyCollector.WaitForUpdatesEx* in the current session.
        
        If an update calculation is
        in process this method has no effect. If an update calculation is not in
        process any waiting calls complete quickly and report a *RequestCanceled* fault.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '204':
          description: |2
            No Content

  /PropertyCollector/{moId}/CheckForUpdates:
    post:
      tags: [PropertyCollector]
      summary: |2
        Checks for updates on properties specified by the union of all current
        filters.
      operationId: PropertyCollector_CheckForUpdates
      deprecated: true
      description: |2
        Deprecated as of vSphere API 4.1, use
        *PropertyCollector.WaitForUpdatesEx* with a
        *WaitOptions.maxWaitSeconds* of 0.
        
        Checks for updates on properties specified by the union of all current
        filters.
        
        If no updates are pending, this method returns null.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CheckForUpdatesRequestType'
      responses:
        '200':
          description: |2
            Changes since the passed in data version. If no updates are
            pending, then this method returns null.
          content:
            application/json:
              schema:
                nullable: true
                $ref: '#/components/schemas/UpdateSet'
        '500':
          description: |2
            ***InvalidCollectorVersion***: if the data version does not meet the
            requirements above.
            
            ***RequestCanceled***: if *PropertyCollector.CancelWaitForUpdates* has been called or the session was closed
            or the *PropertyCollector* was destroyed at some point after the call was
            received but before the update calculation was actually started
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InvalidCollectorVersion'

  /PropertyCollector/{moId}/ContinueRetrievePropertiesEx:
    post:
      tags: [PropertyCollector]
      summary: |2
        Retrieves additional results from a retrieval started by *PropertyCollector.RetrievePropertiesEx* on the same session on the same *PropertyCollector*.
      operationId: PropertyCollector_ContinueRetrievePropertiesEx
      description: |2
        Retrieves additional results from a retrieval started by *PropertyCollector.RetrievePropertiesEx* on the same session on the same *PropertyCollector*.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ContinueRetrievePropertiesExRequestType'
      responses:
        '200':
          description: |2
            retrieved objects.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RetrieveResult'
        '500':
          description: |2
            ***InvalidArgument***: If the token does not match the token from the
            previous *RetrieveResult* returned on the same
            session by the same *PropertyCollector*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InvalidProperty'

  /PropertyCollector/{moId}/CreateFilter:
    post:
      tags: [PropertyCollector]
      summary: |2
        Creates a new filter for the given set of managed objects.
      operationId: PropertyCollector_CreateFilter
      description: |2
        Creates a new filter for the given set of managed objects.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateFilterRequestType'
      responses:
        '200':
          description: |2
            A reference to the new filter.
            
            Refers instance of *PropertyFilter*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***InvalidArgument***: if any of the following is true:
            - "spec" is empty.
            - "spec" contains a selection with properties not defined on its
              type.
              
            ***InvalidProperty***: if "spec" has a property that is not defined on one of the objects.
            
            ***InvalidType***: if "spec" contains, directly or indirectly, a type name that
            does not refer to a known type.
            
            ***ManagedObjectNotFound***: See *PropertyFilterSpec.reportMissingObjectsInResults*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InvalidProperty'

  /PropertyCollector/{moId}/CreatePropertyCollector:
    post:
      tags: [PropertyCollector]
      summary: |2
        Creates a new session-specific *PropertyCollector* that can
        be used to retrieve property updates independent of any other
        *PropertyCollector*.
      operationId: PropertyCollector_CreatePropertyCollector
      description: |2
        Creates a new session-specific *PropertyCollector* that can
        be used to retrieve property updates independent of any other
        *PropertyCollector*.
        
        The newly created *PropertyCollector*
        is not tied to the creating *PropertyCollector* in any way and
        exists until it is destroyed
        by a call to *PropertyCollector.DestroyPropertyCollector* or until the session
        on which the PropertyCollector was created is closed. This is in contrast
        to the default *PropertyCollector*, which always exists, but still has
        session-specific data such as filters and unfinished update calculations
        that are discarded when the associated session is closed.
        
        A new *PropertyCollector* can be useful when multiple modules or even
        multiple clients that share the
        same session need to create their own *PropertyFilter*
        objects and process updates independently. They may also be useful
        to allow important updates to be seen on one *PropertyCollector* while
        a large update is being calculated on another. The underlying
        issue that this addresses is that any call to *PropertyCollector.WaitForUpdates*,
        *PropertyCollector.CheckForUpdates*, or *PropertyCollector.WaitForUpdatesEx* does updates on all the
        filters created on a given *PropertyCollector* on a given session.
        
        A more subtle use of multiple *PropertyCollector* objects is implied
        by the fact that the returned version value for the various updates
        calculations is strongly ordered. The only way this can make sense is that
        two different versions calculated on the same *PropertyCollector* on
        the same session cannot ever be created in parallel. This means that multiple
        calls to *PropertyCollector.WaitForUpdates*, *PropertyCollector.CheckForUpdates*, or
        *PropertyCollector.WaitForUpdatesEx* made to the same *PropertyCollector* on the
        same session on different threads of the same client, or even on different
        clients that share the same session are still handled on the server serially.
        Use of different *PropertyCollector* instances allows the server to
        handle these calculations in parallel.
        
        Typically a service that supports the *PropertyCollector* managed
        object type will automatically create a default *PropertyCollector*
        and provide some way to obtain a reference to this
        *PropertyCollector*. If not, it will have to provide some
        service-specific way to create the a *PropertyCollector*.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            A reference to the new *PropertyCollector*.
            
            Refers instance of *PropertyCollector*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'

  /PropertyCollector/{moId}/DestroyPropertyCollector:
    post:
      tags: [PropertyCollector]
      summary: |2
        Destroys this *PropertyCollector*.
      operationId: PropertyCollector_DestroyPropertyCollector
      description: |2
        Destroys this *PropertyCollector*.
        
        A *PropertyCollector* that was created by
        *PropertyCollector.CreatePropertyCollector* is automatically destroyed when the
        session on which it was created is closed. This method can be used to
        destroy them explicitly.
        
        An automatically created *PropertyCollector* provided by a service
        is not session specific and may not be destroyed.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '204':
          description: |2
            No Content

  /PropertyCollector/{moId}/RetrieveProperties:
    post:
      tags: [PropertyCollector]
      summary: |2
        Retrieves the specified properties of the specified managed objects.
      operationId: PropertyCollector_RetrieveProperties
      deprecated: true
      description: |2
        Deprecated as of vSphere API 4.1, use *PropertyCollector.RetrievePropertiesEx*.
        
        Retrieves the specified properties of the specified managed objects.
        
        This method is similar to creating the filters, receiving the
        property values, and destroying the filters. The main difference is that
        the output blends the results from all the filters and reports a given
        managed object at most once no matter how many filters apply.
        
        The method isn't requiring any privilege, because it's used to
        access properties that are publicly available, without authenticated
        session. That isn't sequrity isse, because the property collector is
        doing another explicit access evaluation and it's returning data only
        from objects to which the user has access.
        
        The filter creation step can throw all of the same faults as *PropertyCollector.CreateFilter*.
        
        ***Required privileges:*** System.Anonymous
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
        - {}
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RetrievePropertiesRequestType'
      responses:
        '200':
          description: |2
            The data contents of the specified objects.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/ObjectContent'
        '500':
          description: |2
            ***InvalidArgument***: See *PropertyCollector.CreateFilter*
            
            ***InvalidProperty***: See *PropertyCollector.CreateFilter*
            
            ***InvalidType***: See *PropertyCollector.CreateFilter*
            
            ***ManagedObjectNotFound***: See *PropertyCollector.CreateFilter*
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InvalidProperty'

  /PropertyCollector/{moId}/RetrievePropertiesEx:
    post:
      tags: [PropertyCollector]
      summary: |2
        Retrieves the specified properties of the specified managed objects.
      operationId: PropertyCollector_RetrievePropertiesEx
      description: |2
        Retrieves the specified properties of the specified managed objects.
        
        This method is similar to creating the filters, receiving the
        property values, and destroying the filters. The main difference is that
        the output blends the results from all the filters and reports a given
        managed object at most once no matter how many filters apply.
        
        The method isn't requiring any privilege, because it's used to
        access properties that are publicly available, without authenticated
        session. That isn't sequrity isse, because the property collector is
        doing another explicit access evaluation and it's returning data only
        from objects to which the user has access.
        
        The filter creation step can throw all of the same faults as *PropertyCollector.CreateFilter*.
        
        ***Required privileges:*** System.Anonymous
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
        - {}
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RetrievePropertiesExRequestType'
      responses:
        '200':
          description: |2
            retrieved objects or null if there are no matching objects.
          content:
            application/json:
              schema:
                nullable: true
                $ref: '#/components/schemas/RetrieveResult'
        '500':
          description: |2
            ***InvalidArgument***: if any of the following is true:
            See *PropertyCollector.CreateFilter*
            
            ***InvalidProperty***: See *PropertyCollector.CreateFilter*
            
            ***InvalidType***: See *PropertyCollector.CreateFilter*
            
            ***ManagedObjectNotFound***: See *PropertyCollector.CreateFilter*
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InvalidProperty'

  /PropertyCollector/{moId}/WaitForUpdates:
    post:
      tags: [PropertyCollector]
      summary: |2
        Calculate the set of updates for each existing filter in the session,
        returning when at least one filter has updates.
      operationId: PropertyCollector_WaitForUpdates
      deprecated: true
      description: |2
        Deprecated as of vSphere API 4.1, use *PropertyCollector.WaitForUpdatesEx*.
        
        Calculate the set of updates for each existing filter in the session,
        returning when at least one filter has updates.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WaitForUpdatesRequestType'
      responses:
        '200':
          description: |2
            Changes since the passed in data version.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UpdateSet'
        '500':
          description: |2
            ***InvalidCollectorVersion***: if the data version does not meet the
            requirements above.
            
            ***RequestCanceled***: if *PropertyCollector.CancelWaitForUpdates* has been called or the session was closed
            or the *PropertyCollector* was destroyed at some point after the call was
            received
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InvalidCollectorVersion'

  /PropertyCollector/{moId}/WaitForUpdatesEx:
    post:
      tags: [PropertyCollector]
      summary: |2
        Calculate the set of updates for each existing filter in the session.
      operationId: PropertyCollector_WaitForUpdatesEx
      description: |2
        Calculate the set of updates for each existing filter in the session.
        
        *PropertyCollector.WaitForUpdatesEx* may return only partial update
        calculations. See *UpdateSet.truncated* for a
        more detailed explanation. *PropertyCollector.WaitForUpdatesEx* may also return null
        after a timeout, either as requested by *WaitOptions.maxWaitSeconds* or due to *PropertyCollector*
        policy.
        
        If an application uses waitForUpdatesEx it is strongly recommended
        that it not make concurrent calls to *PropertyCollector.WaitForUpdates*, *PropertyCollector.CheckForUpdates*, or *PropertyCollector.WaitForUpdatesEx* in the same
        session. Concurrent calls may cause suspended change calculations to be
        discarded.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WaitForUpdatesExRequestType'
      responses:
        '200':
          description: |2
            Changes since the passed in version or null if there are no
            changes.
          content:
            application/json:
              schema:
                nullable: true
                $ref: '#/components/schemas/UpdateSet'
        '500':
          description: |2
            ***InvalidCollectorVersion***: if the data version does not meet the
            requirements above.
            
            ***RequestCanceled***: if *PropertyCollector.CancelWaitForUpdates* has been called or the session was closed
            or the *PropertyCollector* was destroyed at some point after the call was
            received
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InvalidCollectorVersion'

  /PropertyCollector/{moId}/filter:
    get:
      tags: [PropertyCollector]
      summary: |2
        The filters that this *PropertyCollector* uses to determine the list of
        properties for which it detects incremental changes.
      operationId: PropertyCollector_getFilter
      description: |2
        The filters that this *PropertyCollector* uses to determine the list of
        properties for which it detects incremental changes.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            Refers instances of *PropertyFilter*.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/ManagedObjectReference'

  /PropertyFilter/{moId}/DestroyPropertyFilter:
    post:
      tags: [PropertyFilter]
      summary: |2
        Destroys this filter.
      operationId: PropertyFilter_DestroyPropertyFilter
      description: |2
        Destroys this filter.
        
        This operation can be called explicitly, or it can take place
        implicitly when the session that created the filter is closed.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '204':
          description: |2
            No Content

  /PropertyFilter/{moId}/partialUpdates:
    get:
      tags: [PropertyFilter]
      summary: |2
        Flag to indicate if a change to a nested property reports only the
        nested change or the entire specified property value.
      operationId: PropertyFilter_getPartialUpdates
      description: |2
        Flag to indicate if a change to a nested property reports only the
        nested change or the entire specified property value.
        
        If the value is
        true, a change reports only the nested property. If the value is
        false, a change reports the enclosing property named in the filter.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                type: boolean

  /PropertyFilter/{moId}/spec:
    get:
      tags: [PropertyFilter]
      summary: |2
        Specifications for this filter.
      operationId: PropertyFilter_getSpec
      description: |2
        Specifications for this filter.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PropertyFilterSpec'

  /ResourcePlanningManager/{moId}/EstimateDatabaseSize:
    post:
      tags: [ResourcePlanningManager]
      summary: |2
        Estimates the database size required to store VirtualCenter data.
      operationId: ResourcePlanningManager_EstimateDatabaseSize
      description: |2
        Estimates the database size required to store VirtualCenter data.
        
        ***Required privileges:*** System.Read
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EstimateDatabaseSizeRequestType'
      responses:
        '200':
          description: |2
            *DatabaseSizeEstimate*
            Returns the size required in MB of the database and the number of database
            rows.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DatabaseSizeEstimate'

  /ResourcePool/{moId}/CreateResourcePool:
    post:
      tags: [ResourcePool]
      summary: |2
        Creates a new resource pool.
      operationId: ResourcePool_CreateResourcePool
      description: |2
        Creates a new resource pool.
        
        ***Required privileges:*** Resource.CreatePool
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateResourcePoolRequestType'
      responses:
        '200':
          description: |2
            A reference to the new resource pool.
            
            Refers instance of *ResourcePool*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***NotSupported***: if the ComputeResource does not support
            nested resource pools.
            
            ***InvalidName***: if the name is not a valid entity name.
            
            ***DuplicateName***: if this pool already contains an object
            with the given name.
            
            ***InvalidArgument***: if the pool specification is invalid.
            
            ***InsufficientResourcesFault***: if the operation would violate a resource
            usage policy. Typically, a more specific subclass, such as
            InsufficientCpuResourcesFault will be thrown.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /ResourcePool/{moId}/CreateVApp:
    post:
      tags: [ResourcePool]
      summary: |2
        Creates a new vApp container.
      operationId: ResourcePool_CreateVApp
      description: |2
        Creates a new vApp container.
        
        Any % (percent) character used in this name parameter must be escaped, unless it
        is used to start an escape sequence. Clients may also escape any other characters
        in this name parameter.
        
        ***Required privileges:*** VApp.Create
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateVAppRequestType'
      responses:
        '200':
          description: |2
            The created vApp object.
            
            Refers instance of *VirtualApp*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***NotSupported***: if the ComputeResource does not support
            nested resource pools.
            
            ***InvalidName***: if the name is not a valid entity name.
            
            ***DuplicateName***: if this pool already contains an object
            with the given name.
            
            ***InvalidArgument***: if the pool specification is invalid.
            
            ***InsufficientResourcesFault***: if the operation would violate a resource
            usage policy. Typically, a more specific subclass, such as
            InsufficientCpuResourcesFault will be thrown.
            
            ***InvalidState***: if the resource pool does not support the operation in
            its current state. This will typically be a subclass such
            as *NoActiveHostInCluster*.
            
            ***VmConfigFault***: or a more specific subclass, if errors are found in
            the supplied in VApp configuration.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /ResourcePool/{moId}/CreateChildVM_Task:
    post:
      tags: [ResourcePool]
      summary: |2
        Creates a new virtual machine in a vApp container.
      operationId: ResourcePool_CreateChildVM_Task
      description: |2
        Creates a new virtual machine in a vApp container.
        
        This method supports creating a virtual machine directly in a vApp. A
        virtual machine in a vApp is not associated with a VM folder and therefore
        cannot be created using the method on a *Folder*.
        
        This method can only be called directly on a *vApp*
        or on a resource pool that is a child of a vApp.
        
        The privilege VirtualMachine.Inventory.Create is required on this entity. Further,
        if this is a resource pool, the privilege Resource.AssignVMToPool is required. If
        this is a vApp, the privilege VApp.AssignVM is required.
        
        Depending on the properties of the virtual machine bring created, additional
        privileges may be required. See *Folder.CreateVM_Task* for a description of
        these privileges.
        
        ***Required privileges:*** VirtualMachine.Inventory.Create
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateChildVMRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor the
            operation. The *info.result* property in the
            *Task* contains the newly created *VirtualMachine*
            upon success.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***VmConfigFault***: if the configSpec has incorrect values. Typically, a more
            specific subclass is thrown.
            
            ***OutOfBounds***: if Host.capability.maxSupportedVMs is exceeded.
            
            ***FileAlreadyExists***: if the requested cfgPath for the virtual machine's
            configuration file already exists.
            
            ***FileFault***: if there is a problem creating the virtual machine on disk.
            Typically, a more specific subclass, such as NoDiskSpace, will be thrown.
            
            ***InvalidName***: if the name is not a valid entity name.
            
            ***InsufficientResourcesFault***: if this operation would violate a resource
            usage policy.
            
            ***InvalidDatastore***: if the operation cannot be performed on the
            target datastores.
            
            ***VmWwnConflict***: if the WWN of the virtual machine has been used by
            other virtual machines.
            
            ***NotSupported***: if this resource pool is not a vApp or is a child
            of a vApp.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /ResourcePool/{moId}/Destroy_Task:
    post:
      tags: [ResourcePool]
      summary: |2
        Destroys this object, deleting its contents and removing it from its parent
        folder (if any).
      operationId: ResourcePool_Destroy_Task
      description: |2
        Destroys this object, deleting its contents and removing it from its parent
        folder (if any).
        
        NOTE: The appropriate privilege must be held on the parent of the destroyed
        entity as well as the entity itself.
        This method can throw one of several exceptions. The exact set of exceptions
        depends on the kind of entity that is being removed. See comments for
        each entity for more information on destroy behavior.
        
        ***Required privileges:*** Resource.DeletePool
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor the
            operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            Failure
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /ResourcePool/{moId}/DestroyChildren:
    post:
      tags: [ResourcePool]
      summary: |2
        Removes all child resource pools recursively.
      operationId: ResourcePool_DestroyChildren
      description: |2
        Removes all child resource pools recursively.
        
        All virtual machines and vApps
        associated with the child resource pools get associated with this resource pool.
        
        Note that resource pools contained in child vApps are not affected.
        
        The privilege checks performed are the following.
        - Resource.DeletePool privilege must be held on this object and each of it's
          immediate children to be destroyed.
        - If VMs are being moved, the privilege Resource.AssignVMToPool must be held
          on this resource pool as well as on any virtual machines being moved.
        - If vApps are being moved, the privilege Resource.AssignVAppToPool
          must be held on this resource pool as well as on any vApps being
          moved.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '204':
          description: |2
            No Content

  /ResourcePool/{moId}/ImportVApp:
    post:
      tags: [ResourcePool]
      summary: |2
        Creates a new entity in this resource pool.
      operationId: ResourcePool_ImportVApp
      description: |2
        Creates a new entity in this resource pool.
        
        The import process consists of two
        steps:
        1. Create the VMs and/or vApps that make up the entity.
        2. Upload virtual disk contents.
           
        In step 1, the client must wait for the server to create all inventory
        objects. It does that by monitoring the *HttpNfcLease.state*
        property on the *HttpNfcLease* object returned from this call.
        When the server is done creating objects, the lease will change to the
        ready state, and step 2 begins. If an error occurs while the server is
        creating inventory objects, the lease will change to the error state, and
        the import process is aborted.
        
        In step 2, the client uploads disk contents using the URLs provided in the
        *HttpNfcLease.info* property of the lease. The client must call
        *HttpNfcLease.HttpNfcLeaseProgress* on the lease periodically to keep the
        lease alive and report progress to the server. Failure to do so will cause
        the lease to time out, and the import process will be aborted.
        
        When the client is done uploading disks, it completes the lease by calling
        *HttpNfcLease.HttpNfcLeaseComplete*. The client can also abort the import
        process by calling *HttpNfcLease.HttpNfcLeaseAbort*.
        
        If the import process fails, is aborted, or times out, all created inventory
        objects are removed, including all virtual disks.
        
        This operation only works if the folder's childType includes VirtualMachine.
        
        Depending on the properties of the virtual machine bring imported, additional
        privileges may be required. See *Folder.CreateVM_Task* for a description of
        these privileges.
        
        ***Required privileges:*** VApp.Import
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ImportVAppRequestType'
      responses:
        '200':
          description: |2
            a *HttpNfcLease* object which is used to drive the import
            session.
            
            Refers instance of *HttpNfcLease*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***VmConfigFault***: if a VM configSpec has incorrect values. Typically, a more
            specific subclass is thrown.
            
            ***OutOfBounds***: if Host.capability.maxSupportedVMs is exceeded.
            
            ***FileAlreadyExists***: if the requested cfgPath for the virtual machine's
            configuration file already exists.
            
            ***FileFault***: if there is a problem creating the virtual machine on disk.
            Typically, a more specific subclass, such as NoDiskSpace, will be thrown.
            
            ***DuplicateName***: if another virtual machine in the same folder already has
            the specified target name.
            
            ***InvalidName***: if the name is not a valid entity name.
            
            ***NotSupported***: if the virtual machine is being created within a folder
            whose *Folder.childType* property is not set to "VirtualMachine",
            a vApp is being imported into a resource pool that does not support
            nested resource pools, or a virtual machine is being imported into a resource
            pool and no folder is given.
            
            ***InsufficientResourcesFault***: if this operation would violate a resource
            usage policy.
            
            ***InvalidDatastore***: if the operation cannot be performed on the
            target datastores.
            
            ***VmWwnConflict***: if the WWN of the virtual machine has been used by
            other virtual machines.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /ResourcePool/{moId}/MoveIntoResourcePool:
    post:
      tags: [ResourcePool]
      summary: |2
        Moves a set of resource pools, vApps or virtual machines into this pool.
      operationId: ResourcePool_MoveIntoResourcePool
      description: |2
        Moves a set of resource pools, vApps or virtual machines into this pool.
        
        The
        pools, vApps and virtual machines must be part of the cluster or standalone
        host that contains this pool.
        
        For each entity being moved, the move is subject to the following privilege
        checks:
        - If the object being moved is a ResourcePool, then Resource.MovePool must be
          held on the pool being moved and it's former parent pool or vApp. If the
          target is a vApp, the privilege VApp.AssignResourcePool must be held on
          it. If the target is a ResourcePool, Resource.MovePool must be held on it.
        - If the object being moved is a VirtualApp, VApp.Move must be held on
          the vApp being moved and it's former parent pool or vApp. If the target
          entity is a resource pool, Resource.AssignVAppToPool must be held on the
          target. If the target is a vApp, the privilege VApp.AssignVApp must
          be held on the target vApp.
        - If the object being moved is a VirtualMachine, then if the target is a
          ResourcePool, Resource.AssignVMToPool is required on the VirtualMachine and the
          target pool. If the target is a vApp, VApp.AssignVM is required on both
          the VirtualMachine and the target pool.
          
        This operation is typically used by clients when they implement a drag-and-drop
        interface to move a set of objects into a folder.
        
        This operation is only transactional with respect to each individual entity.
        The set of entities is moved sequentially, as specified in the list,
        and committed one at a time. If a failure is detected, then the method
        terminates with an exception.
        
        The root resource pool cannot be moved.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MoveIntoResourcePoolRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***DuplicateName***: if this pool already contains an object with
            the given name.
            
            ***InvalidArgument***: if an ancestor of this pool is in the list.
            
            ***InsufficientResourcesFault***: if the move would violate the resource usage
            policy. Typically, a more specific subclass, such as
            InsufficientMemoryResourcesFault.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /ResourcePool/{moId}/QueryResourceConfigOption:
    post:
      tags: [ResourcePool]
      summary: |2
        Get a value range and default values for *ResourceConfigSpec*.
      operationId: ResourcePool_QueryResourceConfigOption
      deprecated: true
      description: |2
        Deprecated as of vSphere API 6.5.
        
        Get a value range and default values for *ResourceConfigSpec*.
        
        This API was never implemented, and there is no replacement for it.
        
        ***Required privileges:*** Resource.EditPool
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            *ResourceConfigOption* object.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResourceConfigOption'

  /ResourcePool/{moId}/RefreshRuntime:
    post:
      tags: [ResourcePool]
      summary: |2
        Refreshes the resource usage data that is available in
        *ResourcePoolRuntimeInfo*.
      operationId: ResourcePool_RefreshRuntime
      description: |2
        Refreshes the resource usage data that is available in
        *ResourcePoolRuntimeInfo*.
        
        The latest runtime resource usage of this resource pool may not be
        available immediately after operations that alter resource usage,
        such as powering on a virtual machine. Invoke this method when resource
        usage may have recently changed, and the most up-to-date value in the
        *ResourcePoolRuntimeInfo* is needed.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '204':
          description: |2
            No Content

  /ResourcePool/{moId}/RegisterChildVM_Task:
    post:
      tags: [ResourcePool]
      summary: |2
        Adds an existing virtual machine to this resource pool or vApp.
      operationId: ResourcePool_RegisterChildVM_Task
      description: |2
        Adds an existing virtual machine to this resource pool or vApp.
        
        This operation only works for vApps or resource pools that are children of
        vApps. To register a VM in a folder, see *Folder.RegisterVM_Task*.
        
        Any % (percent) character used in this name parameter must be escaped, unless it
        is used to start an escape sequence. Clients may also escape any other characters
        in this name parameter.
        In addition to the VirtualMachine.Inventory.Register privilege, it
        requires System.Read privilege on the datastore that the existing virtual
        machine resides on.
        
        ***Required privileges:*** VirtualMachine.Inventory.Register
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RegisterChildVMRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor the
            operation. The *info.result* property in the
            *Task* contains the newly registered *VirtualMachine*
            upon success.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***NotSupported***: if the operation is not supported. For example, if the
            operation is invoked on a resource pool that is unrelated to a vApp.
            
            ***OutOfBounds***: if the maximum number of VMs has been exceeded.
            
            ***AlreadyExists***: if the virtual machine is already registered.
            
            ***InvalidDatastore***: if the operation cannot be performed on the
            target datastores.
            
            ***NotFound***: if the configuration file is not found on the system.
            
            ***InvalidName***: if the entity name is invalid.
            
            ***InvalidArgument***: if any of the arguments are invalid and a more specific
            fault type does not apply.
            
            ***VmConfigFault***: if the format / configuration of the virtual machine
            is invalid. Typically, a more specific fault is thrown such as
            InvalidFormat if the configuration file cannot be read, or
            InvalidDiskFormat if the disks cannot be read.
            
            ***FileFault***: if there is an error accessing the files on disk.
            
            ***InsufficientResourcesFault***: if this operation would violate a resource
            usage policy.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /ResourcePool/{moId}/Reload:
    post:
      tags: [ResourcePool]
      summary: |2
        Reload the entity state.
      operationId: ResourcePool_Reload
      description: |2
        Reload the entity state.
        
        Clients only need to call this method
        if they changed some external state that affects the service
        without using the Web service interface to perform the change.
        For example, hand-editing a virtual machine configuration file
        affects the configuration of the associated virtual machine but
        the service managing the virtual machine might not monitor the
        file for changes. In this case, after such an edit, a client
        would call "reload" on the associated virtual machine to ensure
        the service and its clients have current data for the
        virtual machine.
        
        ***Required privileges:*** System.Read
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '204':
          description: |2
            No Content

  /ResourcePool/{moId}/Rename_Task:
    post:
      tags: [ResourcePool]
      summary: |2
        Renames this managed entity.
      operationId: ResourcePool_Rename_Task
      description: |2
        Renames this managed entity.
        
        Any % (percent) character used in this name parameter
        must be escaped, unless it is used to start an escape
        sequence. Clients may also escape any other characters in
        this name parameter.
        
        See also *ManagedEntity.name*.
        
        ***Required privileges:*** Resource.RenamePool
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RenameRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor the
            operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***DuplicateName***: If another object in the same folder has the target name.
            
            ***InvalidName***: If the new name is not a valid entity name.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /ResourcePool/{moId}/setCustomValue:
    post:
      tags: [ResourcePool]
      summary: |2
        Assigns a value to a custom field.
      operationId: ResourcePool_setCustomValue
      description: |2
        Assigns a value to a custom field.
        
        The setCustomValue method requires
        whichever updatePrivilege is defined as one of the
        *CustomFieldDef.fieldInstancePrivileges*
        for the CustomFieldDef whose value is being changed.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/setCustomValueRequestType'
      responses:
        '204':
          description: |2
            No Content

  /ResourcePool/{moId}/UpdateChildResourceConfiguration:
    post:
      tags: [ResourcePool]
      summary: |2
        Changes resource configuration of a set of children of this resource pool.
      operationId: ResourcePool_UpdateChildResourceConfiguration
      description: |2
        Changes resource configuration of a set of children of this resource pool.
        
        The
        method allows bulk modifications of the set of the direct children
        (virtual machines and resource pools).
        
        Bulk modifications are not transactional. Each modification is made individually.
        If a failure is encountered while applying the changes, then the processing stops,
        meaning at least one and as many as all of the changes are not applied.
        
        A set can include a subset of the resources. Children that are not
        mentioned in the list are not changed.
        
        For each ResourceConfigSpec, the following privilege checks apply:
        - If the ResourceConfigSpec refers to a child resource pool or a child
          vApp, the privileges required are the same as would be required for
          calling *ResourcePool.UpdateConfig* on that entity.
        - If the ResourceConfigSpec refers to a virtual machine,
          VirtualMachine.Config.Resource must be held on the virtual machine.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateChildResourceConfigurationRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***InvalidArgument***: if a managed entity that is not a child of this group
            is included.
            
            ***InsufficientResourcesFault***: if the operation would violate a resource
            usage policy. Typically, a more specific subclass, such as
            InsufficientMemoryResourcesFault will be thrown.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /ResourcePool/{moId}/UpdateConfig:
    post:
      tags: [ResourcePool]
      summary: |2
        Updates the configuration of the resource pool.
      operationId: ResourcePool_UpdateConfig
      description: |2
        Updates the configuration of the resource pool.
        
        Any % (percent) character used in this name parameter must be escaped, unless it
        is used to start an escape sequence. Clients may also escape any other characters
        in this name parameter.
        
        The privilege checks for this operation are as follows:
        - If this is a resource pool, the privilege Resource.EditPool is required on
          this and on the parent pool or vApp.
        - If this is a vApp, the privilege VApp.ResourceConfig is required on
          this and on the parent pool or vApp.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateConfigRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***InvalidName***: if the name is not a valid entity name.
            
            ***DuplicateName***: if the name is changed to an already existing name.
            
            ***InvalidArgument***: if the parameters are out of range,
            or if the reservationLimit field is set.
            
            ***InsufficientResourcesFault***: if the pool specification cannot be
            supported by the parent resource pool or vApp.
            
            ***ConcurrentAccess***: if the changeVersion does not match the server's
            changeVersion for the configuration.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /ResourcePool/{moId}/alarmActionsEnabled:
    get:
      tags: [ResourcePool]
      summary: |2
        Whether alarm actions are enabled for this entity.
      operationId: ResourcePool_getAlarmActionsEnabled
      description: |2
        Whether alarm actions are enabled for this entity.
        
        True if enabled; false otherwise.
        
        ***Required privileges:*** System.Read
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: boolean

  /ResourcePool/{moId}/availableField:
    get:
      tags: [ResourcePool]
      summary: |2
        List of custom field definitions that are valid for the object's type.
      operationId: ResourcePool_getAvailableField
      description: |2
        List of custom field definitions that are valid for the object's type.
        
        The fields are sorted by *CustomFieldDef.name*.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/CustomFieldDef'

  /ResourcePool/{moId}/childConfiguration:
    get:
      tags: [ResourcePool]
      summary: |2
        The resource configuration of all direct children (VirtualMachine and
        ResourcePool) of this resource group.
      operationId: ResourcePool_getChildConfiguration
      description: |2
        The resource configuration of all direct children (VirtualMachine and
        ResourcePool) of this resource group.
        
        Property collector update notifications might not be generated for this
        property. To listen for the child configuration change, please create
        PropertyCollector filter on the child entities directly.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/ResourceConfigSpec'

  /ResourcePool/{moId}/config:
    get:
      tags: [ResourcePool]
      summary: |2
        Configuration of this resource pool.
      operationId: ResourcePool_getConfig
      description: |2
        Configuration of this resource pool.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResourceConfigSpec'

  /ResourcePool/{moId}/configIssue:
    get:
      tags: [ResourcePool]
      summary: |2
        Current configuration issues that have been detected for this entity.
      operationId: ResourcePool_getConfigIssue
      description: |2
        Current configuration issues that have been detected for this entity.
        
        Typically,
        these issues have already been logged as events. The entity stores these
        events as long as they are still current. The
        *configStatus* property provides an overall status
        based on these events.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/Event'

  /ResourcePool/{moId}/configStatus:
    get:
      tags: [ResourcePool]
      summary: |2
        The configStatus indicates whether or not the system has detected a configuration
        issue involving this entity.
      operationId: ResourcePool_getConfigStatus
      description: |2
        The configStatus indicates whether or not the system has detected a configuration
        issue involving this entity.
        
        For example, it might have detected a
        duplicate IP address or MAC address, or a host in a cluster
        might be out of compliance. The meanings of the configStatus values are:
        - red: A problem has been detected involving the entity.
        - yellow: A problem is about to occur or a transient condition
          has occurred (For example, reconfigure fail-over policy).
        - green: No configuration issues have been detected.
        - gray: The configuration status of the entity is not being monitored.
          
        A green status indicates only that a problem has not been detected;
        it is not a guarantee that the entity is problem-free.
        
        The *configIssue* property contains a list of the
        problems that have been detected.
        In releases after vSphere API 5.0, vSphere Servers might not
        generate property collector update notifications for this property.
        To obtain the latest value of the property, you can use
        PropertyCollector methods RetrievePropertiesEx or WaitForUpdatesEx.
        If you use the PropertyCollector.WaitForUpdatesEx method, specify
        an empty string for the version parameter. Any other version value will not
        produce any property values as no updates are generated.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedEntityStatus_enum'

  /ResourcePool/{moId}/customValue:
    get:
      tags: [ResourcePool]
      summary: |2
        Custom field values.
      operationId: ResourcePool_getCustomValue
      description: |2
        Custom field values.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/CustomFieldValue'

  /ResourcePool/{moId}/declaredAlarmState:
    get:
      tags: [ResourcePool]
      summary: |2
        A set of alarm states for alarms that apply to this managed entity.
      operationId: ResourcePool_getDeclaredAlarmState
      description: |2
        A set of alarm states for alarms that apply to this managed entity.
        
        The set includes alarms defined on this entity
        and alarms inherited from the parent entity,
        or from any ancestors in the inventory hierarchy.
        
        Alarms are inherited if they can be triggered by this entity or its descendants.
        This set does not include alarms that are defined on descendants of this entity.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/AlarmState'

  /ResourcePool/{moId}/disabledMethod:
    get:
      tags: [ResourcePool]
      summary: |2
        List of operations that are disabled, given the current runtime
        state of the entity.
      operationId: ResourcePool_getDisabledMethod
      description: |2
        List of operations that are disabled, given the current runtime
        state of the entity.
        
        For example, a power-on operation always fails if a
        virtual machine is already powered on. This list can be used by clients to
        enable or disable operations in a graphical user interface.
        
        Note: This list is determined by the current runtime state of an entity,
        not by its permissions.
        
        This list may include the following operations for a HostSystem:
        - *HostSystem.EnterMaintenanceMode_Task*
        - *HostSystem.ExitMaintenanceMode_Task*
        - *HostSystem.RebootHost_Task*
        - *HostSystem.ShutdownHost_Task*
        - *HostSystem.ReconnectHost_Task*
        - *HostSystem.DisconnectHost_Task*
          
        This list may include the following operations for a VirtualMachine:
        - *VirtualMachine.AnswerVM*
        - *ManagedEntity.Rename_Task*
        - *VirtualMachine.CloneVM_Task*
        - *VirtualMachine.PowerOffVM_Task*
        - *VirtualMachine.PowerOnVM_Task*
        - *VirtualMachine.SuspendVM_Task*
        - *VirtualMachine.ResetVM_Task*
        - *VirtualMachine.ReconfigVM_Task*
        - *VirtualMachine.RelocateVM_Task*
        - *VirtualMachine.MigrateVM_Task*
        - *VirtualMachine.CustomizeVM_Task*
        - *VirtualMachine.ShutdownGuest*
        - *VirtualMachine.StandbyGuest*
        - *VirtualMachine.RebootGuest*
        - *VirtualMachine.CreateSnapshot_Task*
        - *VirtualMachine.RemoveAllSnapshots_Task*
        - *VirtualMachine.RevertToCurrentSnapshot_Task*
        - *VirtualMachine.MarkAsTemplate*
        - *VirtualMachine.MarkAsVirtualMachine*
        - *VirtualMachine.ResetGuestInformation*
        - *VirtualMachine.MountToolsInstaller*
        - *VirtualMachine.UnmountToolsInstaller*
        - *ManagedEntity.Destroy_Task*
        - *VirtualMachine.UpgradeVM_Task*
        - *VirtualMachine.ExportVm*
          
        This list may include the following operations for a ResourcePool:
        - *ResourcePool.ImportVApp*
        - *ResourcePool.CreateChildVM_Task*
        - *ResourcePool.UpdateConfig*
        - *Folder.CreateVM_Task*
        - *ManagedEntity.Destroy_Task*
        - *ManagedEntity.Rename_Task*
          
        This list may include the following operations for a VirtualApp:
        - *ManagedEntity.Destroy_Task*
        - *VirtualApp.CloneVApp_Task*
        - *VirtualApp.unregisterVApp_Task*
        - *VirtualApp.ExportVApp*
        - *VirtualApp.PowerOnVApp_Task*
        - *VirtualApp.PowerOffVApp_Task*
        - *VirtualApp.UpdateVAppConfig*
          
        In releases after vSphere API 5.0, vSphere Servers might not
        generate property collector update notifications for this property.
        To obtain the latest value of the property, you can use
        PropertyCollector methods RetrievePropertiesEx or WaitForUpdatesEx.
        If you use the PropertyCollector.WaitForUpdatesEx method, specify
        an empty string for the version parameter. Any other version value will not
        produce any property values as no updates are generated.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  type: string

  /ResourcePool/{moId}/effectiveRole:
    get:
      tags: [ResourcePool]
      summary: |2
        Access rights the current session has to this entity.
      operationId: ResourcePool_getEffectiveRole
      description: |2
        Access rights the current session has to this entity.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  type: integer
                  format: int32

  /ResourcePool/{moId}/name:
    get:
      tags: [ResourcePool]
      summary: |2
        Name of this entity, unique relative to its parent.
      operationId: ResourcePool_getName
      description: |2
        Name of this entity, unique relative to its parent.
        
        Any / (slash), \\ (backslash), character used in this
        name element will be escaped. Similarly, any % (percent) character used in
        this name element will be escaped, unless it is used to start an escape
        sequence. A slash is escaped as %2F or %2f. A backslash is escaped as %5C or
        %5c, and a percent is escaped as %25.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                type: string

  /ResourcePool/{moId}/namespace:
    get:
      tags: [ResourcePool]
      summary: |2
        The namespace with which the ResourcePool is associated.
      operationId: ResourcePool_getNamespace
      description: |2
        The namespace with which the ResourcePool is associated.
        
        Namespace is a
        vAPI resource which divides cluster resources and allows administrators
        to give Kubernetes environments to their development teams.
        This property is set only at the time of creation and cannot change.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: string

  /ResourcePool/{moId}/overallStatus:
    get:
      tags: [ResourcePool]
      summary: |2
        General health of this managed entity.
      operationId: ResourcePool_getOverallStatus
      description: |2
        General health of this managed entity.
        
        The overall status of the managed entity is computed as the worst status
        among its alarms and the configuration issues detected on the entity.
        The status is reported as one of the following values:
        - red: The entity has alarms or configuration issues with a red status.
        - yellow: The entity does not have alarms or configuration issues with a
          red status, and has at least one with a yellow status.
        - green: The entity does not have alarms or configuration issues with a
          red or yellow status, and has at least one with a green status.
        - gray: All of the entity's alarms have a gray status and the
          configuration status of the entity is not being monitored.
          
        In releases after vSphere API 5.0, vSphere Servers might not
        generate property collector update notifications for this property.
        To obtain the latest value of the property, you can use
        PropertyCollector methods RetrievePropertiesEx or WaitForUpdatesEx.
        If you use the PropertyCollector.WaitForUpdatesEx method, specify
        an empty string for the version parameter. Any other version value will not
        produce any property values as no updates are generated.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedEntityStatus_enum'

  /ResourcePool/{moId}/owner:
    get:
      tags: [ResourcePool]
      summary: |2
        The ComputeResource to which this set of one or more nested resource pools
        belong.
      operationId: ResourcePool_getOwner
      description: |2
        The ComputeResource to which this set of one or more nested resource pools
        belong.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            Refers instance of *ComputeResource*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'

  /ResourcePool/{moId}/parent:
    get:
      tags: [ResourcePool]
      summary: |2
        Parent of this entity.
      operationId: ResourcePool_getParent
      description: |2
        Parent of this entity.
        
        This value is null for the root object and for
        *VirtualMachine* objects that are part of
        a *VirtualApp*.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            Refers instance of *ManagedEntity*.
          content:
            application/json:
              schema:
                nullable: true
                $ref: '#/components/schemas/ManagedObjectReference'

  /ResourcePool/{moId}/permission:
    get:
      tags: [ResourcePool]
      summary: |2
        List of permissions defined for this entity.
      operationId: ResourcePool_getPermission
      description: |2
        List of permissions defined for this entity.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/Permission'

  /ResourcePool/{moId}/recentTask:
    get:
      tags: [ResourcePool]
      summary: |2
        The set of recent tasks operating on this managed entity.
      operationId: ResourcePool_getRecentTask
      description: |2
        The set of recent tasks operating on this managed entity.
        
        This is a subset
        of *TaskManager.recentTask* belong to this entity. A task in this
        list could be in one of the four states: pending, running, success or error.
        
        This property can be used to deduce intermediate power states for
        a virtual machine entity. For example, if the current powerState is "poweredOn"
        and there is a running task performing the "suspend" operation, then the virtual
        machine's intermediate state might be described as "suspending."
        
        Most tasks (such as power operations) obtain exclusive access to the virtual
        machine, so it is unusual for this list to contain more than one running task.
        One exception, however, is the task of cloning a virtual machine.
        In releases after vSphere API 5.0, vSphere Servers might not
        generate property collector update notifications for this property.
        To obtain the latest value of the property, you can use
        PropertyCollector methods RetrievePropertiesEx or WaitForUpdatesEx.
        If you use the PropertyCollector.WaitForUpdatesEx method, specify
        an empty string for the version parameter. Any other version value will not
        produce any property values as no updates are generated.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            Refers instances of *Task*.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/ManagedObjectReference'

  /ResourcePool/{moId}/resourcePool:
    get:
      tags: [ResourcePool]
      summary: |2
        The set of child resource pools.
      operationId: ResourcePool_getResourcePool
      description: |2
        The set of child resource pools.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            Refers instances of *ResourcePool*.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/ManagedObjectReference'

  /ResourcePool/{moId}/runtime:
    get:
      tags: [ResourcePool]
      summary: |2
        Runtime information about a resource pool.
      operationId: ResourcePool_getRuntime
      description: |2
        Runtime information about a resource pool.
        
        The *ResourcePoolResourceUsage* information within
        *ResourcePoolRuntimeInfo* can be transiently stale.
        Use *ResourcePool.RefreshRuntime* method to
        update the information.
        In releases after vSphere API 5.0, vSphere Servers might not
        generate property collector update notifications for this property.
        To obtain the latest value of the property, you can use
        PropertyCollector methods RetrievePropertiesEx or WaitForUpdatesEx.
        If you use the PropertyCollector.WaitForUpdatesEx method, specify
        an empty string for the version parameter. Any other version value will not
        produce any property values as no updates are generated.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResourcePoolRuntimeInfo'

  /ResourcePool/{moId}/summary:
    get:
      tags: [ResourcePool]
      summary: |2
        Basic information about a resource pool.
      operationId: ResourcePool_getSummary
      description: |2
        Basic information about a resource pool.
        
        In releases after vSphere API 5.0, vSphere Servers might not
        generate property collector update notifications for this property.
        To obtain the latest value of the property, you can use
        PropertyCollector methods RetrievePropertiesEx or WaitForUpdatesEx.
        If you use the PropertyCollector.WaitForUpdatesEx method, specify
        an empty string for the version parameter. Any other version value will not
        produce any property values as no updates are generated.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResourcePoolSummary'

  /ResourcePool/{moId}/tag:
    get:
      tags: [ResourcePool]
      summary: |2
        The set of tags associated with this managed entity.
      operationId: ResourcePool_getTag
      description: |2
        The set of tags associated with this managed entity.
        
        Experimental. Subject to change.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/Tag'

  /ResourcePool/{moId}/triggeredAlarmState:
    get:
      tags: [ResourcePool]
      summary: |2
        A set of alarm states for alarms triggered by this entity
        or by its descendants.
      operationId: ResourcePool_getTriggeredAlarmState
      description: |2
        A set of alarm states for alarms triggered by this entity
        or by its descendants.
        
        Triggered alarms are propagated up the inventory hierarchy
        so that a user can readily tell when a descendant has triggered an alarm.
        In releases after vSphere API 5.0, vSphere Servers might not
        generate property collector update notifications for this property.
        To obtain the latest value of the property, you can use
        PropertyCollector methods RetrievePropertiesEx or WaitForUpdatesEx.
        If you use the PropertyCollector.WaitForUpdatesEx method, specify
        an empty string for the version parameter. Any other version value will not
        produce any property values as no updates are generated.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/AlarmState'

  /ResourcePool/{moId}/value:
    get:
      tags: [ResourcePool]
      summary: |2
        List of custom field values.
      operationId: ResourcePool_getValue
      description: |2
        List of custom field values.
        
        Each value uses a key to associate
        an instance of a *CustomFieldStringValue* with
        a custom field definition.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/CustomFieldValue'

  /ResourcePool/{moId}/vm:
    get:
      tags: [ResourcePool]
      summary: |2
        The set of virtual machines associated with this resource pool.
      operationId: ResourcePool_getVm
      description: |2
        The set of virtual machines associated with this resource pool.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            Refers instances of *VirtualMachine*.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/ManagedObjectReference'

  /ScheduledTask/{moId}/ReconfigureScheduledTask:
    post:
      tags: [ScheduledTask]
      summary: |2
        Reconfigures the scheduled task properties.
      operationId: ScheduledTask_ReconfigureScheduledTask
      description: |2
        Reconfigures the scheduled task properties.
        
        ***Required privileges:*** ScheduledTask.Edit
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ReconfigureScheduledTaskRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***InvalidState***: if the scheduled task is running.
            
            ***InvalidName***: if the scheduled task name is empty or too long.
            
            ***DuplicateName***: if a scheduled task with the name already exists.
            
            ***InvalidArgument***: if the specification is invalid.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /ScheduledTask/{moId}/RemoveScheduledTask:
    post:
      tags: [ScheduledTask]
      summary: |2
        Removes the scheduled task.
      operationId: ScheduledTask_RemoveScheduledTask
      description: |2
        Removes the scheduled task.
        
        ***Required privileges:*** ScheduledTask.Delete
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***InvalidState***: if the scheduled task is running.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InvalidState'

  /ScheduledTask/{moId}/RunScheduledTask:
    post:
      tags: [ScheduledTask]
      summary: |2
        Runs the scheduled task immediately.
      operationId: ScheduledTask_RunScheduledTask
      description: |2
        Runs the scheduled task immediately.
        
        The schedule for future runs remains in effect.
        
        ***Required privileges:*** ScheduledTask.Run
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***InvalidState***: if the scheduled task is running already.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InvalidState'

  /ScheduledTask/{moId}/setCustomValue:
    post:
      tags: [ScheduledTask]
      summary: |2
        Assigns a value to a custom field.
      operationId: ScheduledTask_setCustomValue
      description: |2
        Assigns a value to a custom field.
        
        The setCustomValue method requires
        whichever updatePrivilege is defined as one of the
        *CustomFieldDef.fieldInstancePrivileges*
        for the CustomFieldDef whose value is being changed.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/setCustomValueRequestType'
      responses:
        '204':
          description: |2
            No Content

  /ScheduledTask/{moId}/availableField:
    get:
      tags: [ScheduledTask]
      summary: |2
        List of custom field definitions that are valid for the object's type.
      operationId: ScheduledTask_getAvailableField
      description: |2
        List of custom field definitions that are valid for the object's type.
        
        The fields are sorted by *CustomFieldDef.name*.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/CustomFieldDef'

  /ScheduledTask/{moId}/info:
    get:
      tags: [ScheduledTask]
      summary: |2
        Information about the current scheduled task.
      operationId: ScheduledTask_getInfo
      description: |2
        Information about the current scheduled task.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ScheduledTaskInfo'

  /ScheduledTask/{moId}/value:
    get:
      tags: [ScheduledTask]
      summary: |2
        List of custom field values.
      operationId: ScheduledTask_getValue
      description: |2
        List of custom field values.
        
        Each value uses a key to associate
        an instance of a *CustomFieldStringValue* with
        a custom field definition.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/CustomFieldValue'

  /ScheduledTaskManager/{moId}/CreateScheduledTask:
    post:
      tags: [ScheduledTaskManager]
      summary: |2
        Creates a scheduled task.
      operationId: ScheduledTaskManager_CreateScheduledTask
      description: |2
        Creates a scheduled task.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateScheduledTaskRequestType'
      responses:
        '200':
          description: |2
            The scheduled task created by the operation.
            
            Refers instance of *ScheduledTask*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***InvalidName***: if the scheduled task name is empty or too long.
            
            ***DuplicateName***: if a scheduled task with the name already exists.
            
            ***InvalidArgument***: if the specification is invalid.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /ScheduledTaskManager/{moId}/CreateObjectScheduledTask:
    post:
      tags: [ScheduledTaskManager]
      summary: |2
        Creates a scheduled task.
      operationId: ScheduledTaskManager_CreateObjectScheduledTask
      description: |2
        Creates a scheduled task.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateObjectScheduledTaskRequestType'
      responses:
        '200':
          description: |2
            The scheduled task created by the operation.
            
            Refers instance of *ScheduledTask*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***InvalidName***: if the scheduled task name is empty or too long.
            
            ***DuplicateName***: if a scheduled task with the name already exists.
            
            ***InvalidArgument***: if the specification is invalid.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /ScheduledTaskManager/{moId}/RetrieveEntityScheduledTask:
    post:
      tags: [ScheduledTaskManager]
      summary: |2
        Available scheduled tasks defined on the entity.
      operationId: ScheduledTaskManager_RetrieveEntityScheduledTask
      description: |2
        Available scheduled tasks defined on the entity.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RetrieveEntityScheduledTaskRequestType'
      responses:
        '200':
          description: |2
            The scheduled tasks.
            
            Refers instances of *ScheduledTask*.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/ManagedObjectReference'

  /ScheduledTaskManager/{moId}/RetrieveObjectScheduledTask:
    post:
      tags: [ScheduledTaskManager]
      summary: |2
        Available scheduled tasks defined on the object.
      operationId: ScheduledTaskManager_RetrieveObjectScheduledTask
      description: |2
        Available scheduled tasks defined on the object.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RetrieveObjectScheduledTaskRequestType'
      responses:
        '200':
          description: |2
            The scheduled tasks.
            
            Refers instances of *ScheduledTask*.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/ManagedObjectReference'

  /ScheduledTaskManager/{moId}/description:
    get:
      tags: [ScheduledTaskManager]
      summary: |2
        Static descriptive strings used in scheduled tasks.
      operationId: ScheduledTaskManager_getDescription
      description: |2
        Static descriptive strings used in scheduled tasks.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ScheduledTaskDescription'

  /ScheduledTaskManager/{moId}/scheduledTask:
    get:
      tags: [ScheduledTaskManager]
      summary: |2
        All available scheduled tasks.
      operationId: ScheduledTaskManager_getScheduledTask
      description: |2
        All available scheduled tasks.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            Refers instances of *ScheduledTask*.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/ManagedObjectReference'

  /SearchIndex/{moId}/FindAllByDnsName:
    post:
      tags: [SearchIndex]
      summary: |2
        Finds all virtual machines or hosts by DNS name.
      operationId: SearchIndex_FindAllByDnsName
      description: |2
        Finds all virtual machines or hosts by DNS name.
        
        The DNS name for a virtual
        machine is the one returned from VMware tools, *GuestInfo.hostName*.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/FindAllByDnsNameRequestType'
      responses:
        '200':
          description: |2
            The list of all virtual machines or hosts that are found. If no managed
            entities are found, an empty list is returned. If there are multiple
            matches, all matching entities are returned.
            
            Refers instances of *ManagedEntity*.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ManagedObjectReference'

  /SearchIndex/{moId}/FindAllByIp:
    post:
      tags: [SearchIndex]
      summary: |2
        Finds all virtual machines or hosts by IP address, where the IP address is
        in dot-decimal notation.
      operationId: SearchIndex_FindAllByIp
      description: |2
        Finds all virtual machines or hosts by IP address, where the IP address is
        in dot-decimal notation.
        
        For example, 10.17.12.12. The IP address for a virtual
        machine is the one returned from VMware tools, *GuestInfo.ipAddress*.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/FindAllByIpRequestType'
      responses:
        '200':
          description: |2
            The list of all virtual machines or hosts that are found. If no
            managed entities are found, an empty list is returned. If there
            are multiple matches, all matching entities are returned.
            
            Refers instances of *ManagedEntity*.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ManagedObjectReference'

  /SearchIndex/{moId}/FindAllByUuid:
    post:
      tags: [SearchIndex]
      summary: |2
        Finds all virtual machines or hosts by UUID.
      operationId: SearchIndex_FindAllByUuid
      description: |2
        Finds all virtual machines or hosts by UUID.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/FindAllByUuidRequestType'
      responses:
        '200':
          description: |2
            The list of all virtual machines or hosts that are matching with
            the given UUID. If no managed entities are found, an empty list
            is returned. If there are multiple matches, all matching entities
            are returned.
            
            Refers instances of *ManagedEntity*.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ManagedObjectReference'

  /SearchIndex/{moId}/FindByDatastorePath:
    post:
      tags: [SearchIndex]
      summary: |2
        Finds a virtual machine by its location on a datastore.
      operationId: SearchIndex_FindByDatastorePath
      description: |2
        Finds a virtual machine by its location on a datastore.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/FindByDatastorePathRequestType'
      responses:
        '200':
          description: |2
            The virtual machine that is found. If no virtual machine is found, null
            is returned. Only a single entity is returned, even if there are multiple
            matches.
            
            Refers instance of *VirtualMachine*.
          content:
            application/json:
              schema:
                nullable: true
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***InvalidDatastore***: if a datastore has not been specified in the path or if
            the specified datastore does not exist on the specified datacenter.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InvalidDatastore'

  /SearchIndex/{moId}/FindByDnsName:
    post:
      tags: [SearchIndex]
      summary: |2
        Finds a virtual machine or host by DNS name.
      operationId: SearchIndex_FindByDnsName
      description: |2
        Finds a virtual machine or host by DNS name.
        
        The DNS name for a virtual
        machine is the one returned from VMware tools, *GuestInfo.hostName*.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/FindByDnsNameRequestType'
      responses:
        '200':
          description: |2
            The virtual machine or host managed entity that is found. If no managed
            entities are found, null is returned. Only a single entity is returned, even if
            there are multiple matches.
            
            Refers instance of *ManagedEntity*.
          content:
            application/json:
              schema:
                nullable: true
                $ref: '#/components/schemas/ManagedObjectReference'

  /SearchIndex/{moId}/FindByInventoryPath:
    post:
      tags: [SearchIndex]
      summary: |2
        Finds a managed entity based on its location in the inventory.
      operationId: SearchIndex_FindByInventoryPath
      description: |2
        Finds a managed entity based on its location in the inventory.
        
        The path is
        separated by slashes ('/'). For example, a path should be of the form
        "My Folder/My Datacenter/vm/Discovered VM/VM1". A leading slash or trailing
        slash is ignored. Thus, the following paths all represents the same object:
        "a/b", "/a/b", "a/b/", and '/a/b/'. Slashes in names must be represented using
        %2f, following the standard URL syntax. Any object in the inventory can be
        retrieved using this method, including resource pools and hosts.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/FindByInventoryPathRequestType'
      responses:
        '200':
          description: |2
            The managed entity that is found. If no match is found, null is
            returned.
            
            Refers instance of *ManagedEntity*.
          content:
            application/json:
              schema:
                nullable: true
                $ref: '#/components/schemas/ManagedObjectReference'

  /SearchIndex/{moId}/FindByIp:
    post:
      tags: [SearchIndex]
      summary: |2
        Finds a virtual machine or host by IP address, where the IP address is in
        dot-decimal notation.
      operationId: SearchIndex_FindByIp
      description: |2
        Finds a virtual machine or host by IP address, where the IP address is in
        dot-decimal notation.
        
        For example, 10.17.12.12. The IP address for a virtual
        machine is the one returned from VMware tools, *GuestInfo.ipAddress*.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/FindByIpRequestType'
      responses:
        '200':
          description: |2
            The virtual machine or host managed entity that is found. If no managed
            entities are found, null is returned. Only a single entity is returned,
            even if there are multiple matches. If called directly on an ESX server
            with vmSearch set to false, returns the host managed entity if the address
            matches any of the Console OS IP addresses.
            
            Refers instance of *ManagedEntity*.
          content:
            application/json:
              schema:
                nullable: true
                $ref: '#/components/schemas/ManagedObjectReference'

  /SearchIndex/{moId}/FindByUuid:
    post:
      tags: [SearchIndex]
      summary: |2
        Finds a virtual machine or host by BIOS or instance UUID.
      operationId: SearchIndex_FindByUuid
      description: |2
        Finds a virtual machine or host by BIOS or instance UUID.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/FindByUuidRequestType'
      responses:
        '200':
          description: |2
            The virtual machine or host managed entity that is found. If no managed
            entities are found, null is returned. Only a single entity is
            returned, even if there are multiple matches.
            
            Refers instance of *ManagedEntity*.
          content:
            application/json:
              schema:
                nullable: true
                $ref: '#/components/schemas/ManagedObjectReference'

  /SearchIndex/{moId}/FindChild:
    post:
      tags: [SearchIndex]
      summary: |2
        Finds a particular child based on a managed entity
        name.
      operationId: SearchIndex_FindChild
      description: |2
        Finds a particular child based on a managed entity
        name.
        
        This only searches the immediate children of a managed entity.
        For a *Datacenter*, the host and vm folders are
        considered children. For a *ComputeResource*,
        the hosts and root *ResourcePool* are considered
        children.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/FindChildRequestType'
      responses:
        '200':
          description: |2
            The managed entity that is found, or null if no match is found.
            
            Refers instance of *ManagedEntity*.
          content:
            application/json:
              schema:
                nullable: true
                $ref: '#/components/schemas/ManagedObjectReference'

  /ServiceInstance/{moId}/CurrentTime:
    post:
      tags: [ServiceInstance]
      summary: |2
        Returns the current time on the server.
      operationId: ServiceInstance_CurrentTime
      description: |2
        Returns the current time on the server.
        
        To monitor non-linear time changes,
        use the *serverClock* property.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            The date and time on the server.
          content:
            application/json:
              schema:
                type: string
                format: date-time

  /ServiceInstance/{moId}/QueryVMotionCompatibility:
    post:
      tags: [ServiceInstance]
      summary: |2
        Investigates the general VMotion compatibility of a virtual machine with
        a set of hosts.
      operationId: ServiceInstance_QueryVMotionCompatibility
      deprecated: true
      description: |2
        Deprecated as of vSphere API 4.0, use
        *VirtualMachineProvisioningChecker.QueryVMotionCompatibilityEx_Task* instead.
        
        Investigates the general VMotion compatibility of a virtual machine with
        a set of hosts.
        
        The virtual machine may be in any power state. Hosts
        may be in any connection state and also may be in maintenance mode.
        
        ***Required privileges:*** Resource.QueryVMotion
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QueryVMotionCompatibilityRequestType'
      responses:
        '200':
          description: |2
            An array where each element, associated with one of the input
            hosts, specifies which of the requested compatibility types
            applies to that host. If an input host has never been connected
            and therefore has no information available for determining its
            compatibility, it is omitted from the return list.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/HostVMotionCompatibility'

  /ServiceInstance/{moId}/RetrieveServiceContent:
    post:
      tags: [ServiceInstance]
      summary: |2
        Retrieves the properties of the service instance.
      operationId: ServiceInstance_RetrieveServiceContent
      description: |2
        Retrieves the properties of the service instance.
        
        ***Required privileges:*** System.Anonymous
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
        - {}
      responses:
        '200':
          description: |2
            The properties belonging to the service instance,
            including various object managers.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServiceContent'

  /ServiceInstance/{moId}/RetrieveProductComponents:
    post:
      tags: [ServiceInstance]
      summary: |2
        Component information for bundled products
      operationId: ServiceInstance_RetrieveProductComponents
      description: |2
        Component information for bundled products
        
        ***Required privileges:*** System.Anonymous
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
        - {}
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/ProductComponentInfo'

  /ServiceInstance/{moId}/ValidateMigration:
    post:
      tags: [ServiceInstance]
      summary: |2
        Checks the validity of a set of proposed migrations.
      operationId: ServiceInstance_ValidateMigration
      deprecated: true
      description: |2
        Deprecated as of vSphere API 4.0, use *VirtualMachineProvisioningChecker*
        instead.
        
        Checks the validity of a set of proposed migrations.
        
        A migration
        is the act of changing the assigned execution host of a virtual
        machine, which can result from invoking
        *VirtualMachine.MigrateVM_Task* or
        *VirtualMachine.RelocateVM_Task*.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ValidateMigrationRequestType'
      responses:
        '200':
          description: |2
            A set of events that describe the warnings or errors that would
            apply if the proposed set of migrations were executed.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/Event'
        '500':
          description: |2
            ***InvalidArgument***: if the target host(s) and target pool for a
            migration are not associated with the same compute resource,
            or if the host parameter is left unset when the target pool is
            associated with a non-DRS cluster.
            
            ***InvalidPowerState***: if the state argument is set and at least one
            of the specified virtual machines is not in that power state.
            
            ***NoActiveHostInCluster***: if a target host is not specified and a
            cluster associated with a target pool does not contain at least one
            potential target host. A host must be connected and not in maintenance
            mode in order to be considered as a potential target host.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InvalidState'

  /ServiceInstance/{moId}/capability:
    get:
      tags: [ServiceInstance]
      summary: |2
        API-wide capabilities.
      operationId: ServiceInstance_getCapability
      description: |2
        API-wide capabilities.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Capability'

  /ServiceInstance/{moId}/content:
    get:
      tags: [ServiceInstance]
      summary: |2
        The properties of the ServiceInstance managed object.
      operationId: ServiceInstance_getContent
      description: |2
        The properties of the ServiceInstance managed object.
        
        The content property
        is identical to the return value from the
        *ServiceInstance.RetrieveServiceContent* method.
        
        Use the content property with the *PropertyCollector*
        to perform inventory traversal that includes the ServiceInstance.
        (In the absence of a content property, a traversal that encounters
        the *ServiceInstance* would require calling
        the *ServiceInstance.RetrieveServiceContent* method,
        and then invoking a second traversal to continue.)
        
        ***Required privileges:*** System.Anonymous
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
        - {}
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServiceContent'

  /ServiceInstance/{moId}/serverClock:
    get:
      tags: [ServiceInstance]
      summary: |2
        Contains the time most recently obtained from the server.
      operationId: ServiceInstance_getServerClock
      description: |2
        Contains the time most recently obtained from the server.
        
        The time is not necessarily current. This property is intended for use
        with the PropertyCollector *PropertyCollector.WaitForUpdates*
        method. The PropertyCollector will provide notification if some event occurs
        that changes the server clock time in a non-linear fashion.
        
        You should not rely on the serverClock property to get the current time
        on the server; instead, use the *ServiceInstance.CurrentTime* method.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                type: string
                format: date-time

  /ServiceManager/{moId}/QueryServiceList:
    post:
      tags: [ServiceManager]
      summary: |2
        A query interface that returns a list of services that match certain criteria.
      operationId: ServiceManager_QueryServiceList
      description: |2
        A query interface that returns a list of services that match certain criteria.
        
        Besides a basic service name entry, an arbitrary list of matching locations
        can also be specified. The location array is assumed to be a list of AND expressions,
        ie, all locations must match for an entry to be considered a match.
        Regular expressions are not allowed in the query service.
        
        ***Required privileges:*** Global.ServiceManagers
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QueryServiceListRequestType'
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/ServiceManagerServiceInfo'

  /ServiceManager/{moId}/service:
    get:
      tags: [ServiceManager]
      summary: |2
        The full list of services available in this directory.
      operationId: ServiceManager_getService
      description: |2
        The full list of services available in this directory.
        
        ***Required privileges:*** Global.ServiceManagers
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/ServiceManagerServiceInfo'

  /SessionManager/{moId}/AcquireCloneTicket:
    post:
      tags: [SessionManager]
      summary: |2
        Acquire a session-specific ticket string which can be used to clone
        the current session.
      operationId: SessionManager_AcquireCloneTicket
      description: |2
        Acquire a session-specific ticket string which can be used to clone
        the current session.
        
        The caller of this operation can pass the ticket
        value to another entity on the client. The recipient can then call
        *SessionManager.CloneSession* with the ticket string on an unauthenticated
        session and avoid having to re-enter credentials.
        
        The ticket may only be used once and becomes invalid after use. The
        ticket is also invalidated when the corresponding session is closed or
        expires. The ticket is only valid on the server which issued it.
        
        This sequence of operations is conceptually similar to the
        functionality provided by *SessionManager.AcquireLocalTicket*, however the
        methods can be used by remote clients and do not require a shared
        filesystem for transport.
        
        See also *SessionManager.CloneSession*.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            one-time secret ticket string.
          content:
            application/json:
              schema:
                type: string
                format: password

  /SessionManager/{moId}/AcquireGenericServiceTicket:
    post:
      tags: [SessionManager]
      summary: |2
        Creates and returns a one-time credential that may be used to make the
        specified request.
      operationId: SessionManager_AcquireGenericServiceTicket
      description: |2
        Creates and returns a one-time credential that may be used to make the
        specified request.
        
        ***Required privileges:*** System.Anonymous
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
        - {}
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AcquireGenericServiceTicketRequestType'
      responses:
        '200':
          description: |2
            a ticket that may be used to invoke the specified request.
            The first choice for authenticating the host is
            *GenericServiceTicket#sslCertificate*.
            If *GenericServiceTicket#sslCertificate* is unset, the
            following logic is used to authenticate the host:
            1\. If the VC system supports the crypto hash algorithm of
            the *SessionManagerGenericServiceTicket.sslThumbprint* or
            *SessionManagerGenericServiceTicket.certThumbprintList* (if set),
            they will be verified against that of the server certificate. If
            they doesn't match, the CA certificates will be used to
            authenticate the host.
            2\. If the VC system does not support the crypto hash algorithm
            of *SessionManagerGenericServiceTicket.sslThumbprint* or
            *SessionManagerGenericServiceTicket.certThumbprintList*, only the CA
            certificates will be used to authenticate the host.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SessionManagerGenericServiceTicket'

  /SessionManager/{moId}/AcquireLocalTicket:
    post:
      tags: [SessionManager]
      summary: |2
        Acquires a one-time ticket for mutual authentication between a server and client.
      operationId: SessionManager_AcquireLocalTicket
      description: |2
        Acquires a one-time ticket for mutual authentication between a server and client.
        
        The caller of this operation can use the user name and file content of
        the returned object as the userName and password arguments for login
        operation. The local ticket that is returned becomes invalid either
        after it is used or after a server-determined ticket expiration time
        passes. This operation can be used by servers and clients to avoid
        re-entering user credentials after authentication by the operating
        system has already happened.
        
        For example, service console utilities that connect to a host agent
        should not require users to re-enter their passwords every time the
        utilities run. Since the one-time password file is readable only by
        the given user, the identity of the one-time password user is protected
        by the operating system file permission.
        
        Only local clients are allowed to call this operation. Remote clients
        receive an InvalidRequest fault upon calling this operation.
        
        ***Required privileges:*** System.Anonymous
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
        - {}
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AcquireLocalTicketRequestType'
      responses:
        '200':
          description: |2
            LocalTicket object containing userName and path to file
            containing one-time password for use in login operation.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SessionManagerLocalTicket'
        '500':
          description: |2
            ***InvalidLogin***: if the userName is invalid.
            
            ***NoPermission***: if the user and password are valid, but the user has no access
            granted.
            
            ***NotSupported***: if the server does not support this operation.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InvalidLogin'

  /SessionManager/{moId}/CloneSession:
    post:
      tags: [SessionManager]
      summary: |2
        Clone the session specified by the clone ticket and associate it with
        the current connection.
      operationId: SessionManager_CloneSession
      description: |2
        Clone the session specified by the clone ticket and associate it with
        the current connection.
        
        The current session will take on the identity
        and authorization level of the UserSession associated with the
        specified cloning ticket.
        
        See also *SessionManager.AcquireCloneTicket*, *SessionManager.AcquireGenericServiceTicket*.
        
        ***Required privileges:*** System.Anonymous
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
        - {}
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CloneSessionRequestType'
      responses:
        '200':
          description: |2
            The new/cloned UserSession object.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserSession'
        '500':
          description: |2
            ***InvalidLogin***: if the specified ticket value is not valid.
            
            ***NotSupported***: if the server does not support this operation.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InvalidLogin'

  /SessionManager/{moId}/ImpersonateUser:
    post:
      tags: [SessionManager]
      summary: |2
        Converts current session to impersonate the specified user.
      operationId: SessionManager_ImpersonateUser
      description: |2
        Converts current session to impersonate the specified user.
        
        The current session will take on the identity and authorization level of
        the user. That user must have a currently-active session.
        If the given userName is an extension key and this key does
        not overlap with a user name of any currently-active session, it will
        take on the identity and authorization level of that extension provided
        the current session has the same authorization level of that extension.
        
        ***Required privileges:*** Sessions.ImpersonateUser
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ImpersonateUserRequestType'
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserSession'
        '500':
          description: |2
            Failure
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /SessionManager/{moId}/Login:
    post:
      tags: [SessionManager]
      summary: |2
        Log on to the server.
      operationId: SessionManager_Login
      description: |2
        Log on to the server.
        
        This method fails if the user name and password are
        incorrect, or if the user is valid but has no permissions granted.
        
        ***Required privileges:*** System.Anonymous
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
        - {}
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LoginRequestType'
      responses:
        '200':
          description: |2
            The UserSession object.
            
            As of vSphere API 5.1 for VirtualCenter login use SSO style
            *SessionManager.LoginByToken*
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserSession'
        '500':
          description: |2
            ***InvalidLogin***: if the user and password combination is invalid.
            
            ***NoPermission***: if the user is valid, but has no access granted.
            
            ***InvalidLocale***: if the locale is invalid or unknown to the server.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /SessionManager/{moId}/LoginBySSPI:
    post:
      tags: [SessionManager]
      summary: |2
        Log on to the server using SSPI pass-through authentication.
      operationId: SessionManager_LoginBySSPI
      deprecated: true
      description: |2
        Deprecated as of vSphere API 5.1 for VirtualCenter login use SSO style
        *SessionManager.LoginByToken*.
        
        Log on to the server using SSPI pass-through authentication.
        
        This method provides support for passing credentials of the calling
        process to the server without using a password, by leveraging the
        Windows Security Support Provider Interface (SSPI) library.
        
        If the function is not supported, this throws a NotSupported fault.
        
        The client first calls AcquireCredentialsHandle(). If Kerberos is
        used, this should include the desired credential to pass. The client then
        calls InitializeSecurityContext(). The resulting partially-formed
        context is passed in Base-64 encoded form to this method.
        
        If the context has been successfully formed, the server proceeds with
        login and behaves like *SessionManager.Login*. If further
        negotiation is needed, the server throws an SSPIChallenge fault with
        a challenge token, which the client should again pass to
        InitializeSecurityContext(), followed by calling this method again.
        
        For more information, see the MSDN documentation on SSPI.
        
        ***Required privileges:*** System.Anonymous
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
        - {}
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LoginBySSPIRequestType'
      responses:
        '200':
          description: |2
            The UserSession object.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserSession'
        '500':
          description: |2
            ***SSPIChallenge***: if further negotiation is required.
            
            ***InvalidLogin***: if the user context could not be passed successfully,
            or the context is not valid on the server.
            
            ***NoPermission***: if the user is valid, but has no access granted.
            
            ***InvalidLocale***: if the locale is invalid or unknown to the server.
            
            ***NotSupported***: if the service does not support SSPI authentication.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /SessionManager/{moId}/LoginByToken:
    post:
      tags: [SessionManager]
      summary: |2
        Log on to the server through token representing principal identity.
      operationId: SessionManager_LoginByToken
      description: |2
        Log on to the server through token representing principal identity.
        
        The token is obtained from SSO (single sign-on) service. This method
        fails if the token is not valid, or the principal has no permissions
        granted. Two type of sso tokens are supported by this method: Bearer
        and Holder-of-Key (HoK). If the token type obliges the method caller
        to prove his rights to present this token (HoK), then a signature is
        supplied as well. The token and the security signature if available
        are provided in a transport specific way.
        
        If the communication with the VirtualCenter is SOAP based read the
        WS-Security specification (SAML Token profile) to understand how
        to transport the SSO token and signature.
        
        Usual login scenario:
        1. Acquire HoK token from the SSO service. Different authentication
           mechanisms are available for acquiring token (user/password,
           certificate, SSPI and so on). For more details consult the SSO
           documentation. To find the location of your SSO service consult the
           Virtual Infrastructure documentation.
        2. Once SSO token is acquired successfully *SessionManager.LoginByToken* could be
           invoked.
           
        ***Required privileges:*** System.Anonymous
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
        - {}
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LoginByTokenRequestType'
      responses:
        '200':
          description: |2
            The UserSession object.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserSession'
        '500':
          description: |2
            ***InvalidLogin***: if there is no token provided or the token
            could not be validated.
            
            ***NoPermission***: if the principal is valid, but has no access granted.
            
            ***InvalidLocale***: if the locale is invalid or unknown to the server.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /SessionManager/{moId}/LoginExtension:
    post:
      tags: [SessionManager]
      summary: |2
        Creates a special privileged session that includes
        the Sessions.ImpersonateUser privilege.
      operationId: SessionManager_LoginExtension
      deprecated: true
      description: |2
        Deprecated as of vSphere API 4.0, use SSO style of login instead
        *SessionManager.LoginByToken*.
        
        Creates a special privileged session that includes
        the Sessions.ImpersonateUser privilege.
        
        Requires exchange of
        a message signed with the extension's registered public key
        and base-64 encoded.
        
        As of vSphere API 4.0, the NotFound fault is no longer thrown. Instead, InvalidLogin
        is thrown if the specified extension is not registered.
        
        As of vSphere API 5.0, this method always throws a NotSupported exception.
        
        ***Required privileges:*** System.Anonymous
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
        - {}
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LoginExtensionRequestType'
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserSession'
        '500':
          description: |2
            Failure
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /SessionManager/{moId}/LoginExtensionByCertificate:
    post:
      tags: [SessionManager]
      summary: |2
        Creates a special privileged session that includes
        the Sessions.ImpersonateUser privilege.
      operationId: SessionManager_LoginExtensionByCertificate
      deprecated: true
      description: |2
        Deprecated as of vSphere API 6.0, use SSO style of login instead
        *SessionManager.LoginByToken*.
        
        Creates a special privileged session that includes
        the Sessions.ImpersonateUser privilege.
        
        Requires that the client connect
        over SSL and provide an X.509 certificate for which they hold the private key.
        The certificate must match the certificate used in an earlier call to
        *ExtensionManager.SetExtensionCertificate*.
        
        NOTE: Verification of the received certificate (such as expiry, revocation,
        and trust chain) is not required for successful authentication using
        this method. If certificate verification is desired, use the
        *SessionManager.LoginExtensionBySubjectName* method instead.
        
        ***Required privileges:*** System.Anonymous
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
        - {}
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LoginExtensionByCertificateRequestType'
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserSession'
        '500':
          description: |2
            ***InvalidLogin***: if the extension is not registered, or the
            certificate does not match the expected value.
            
            ***InvalidLocale***: if the supplied locale is not valid
            
            ***NoClientCertificate***: if no certificate was used by the client to connect
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /SessionManager/{moId}/LoginExtensionBySubjectName:
    post:
      tags: [SessionManager]
      summary: |2
        Creates a special privileged session that includes
        the Sessions.ImpersonateUser privilege.
      operationId: SessionManager_LoginExtensionBySubjectName
      deprecated: true
      description: |2
        Deprecated as of vSphere API 6.0, use SSO style of login instead
        *SessionManager.LoginByToken*.
        
        Creates a special privileged session that includes
        the Sessions.ImpersonateUser privilege.
        
        Requires that the extension connected
        using SSL, with a certificate that has a subject name that matches the subject
        name registered for the extension.
        
        As of vSphere API 4.0, the NotFound fault is no longer thrown. Instead, InvalidLogin
        is thrown if the specified extension is not registered.
        
        ***Required privileges:*** System.Anonymous
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
        - {}
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LoginExtensionBySubjectNameRequestType'
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserSession'
        '500':
          description: |2
            ***InvalidLogin***: if the extension is not registered, or the subject name
            doesn't match the subject name of the extension.
            
            ***InvalidLocale***: if the supplied locale is not valid
            
            ***NotFound***: if no extension is associated with the given key
            
            ***NoClientCertificate***: if no certificate was used by the client to connect
            
            ***NoSubjectName***: if the extension was registered without a subject name
            
            ***InvalidClientCertificate***: if the client cerificate fails the verification at the server
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /SessionManager/{moId}/Logout:
    post:
      tags: [SessionManager]
      summary: |2
        Log out and terminate the current session.
      operationId: SessionManager_Logout
      description: |2
        Log out and terminate the current session.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '204':
          description: |2
            No Content

  /SessionManager/{moId}/SessionIsActive:
    post:
      tags: [SessionManager]
      summary: |2
        Validates that a currently-active session exists with the specified
        sessionID and userName associated with it.
      operationId: SessionManager_SessionIsActive
      description: |2
        Validates that a currently-active session exists with the specified
        sessionID and userName associated with it.
        
        Returns true
        if session exists.
        
        ***Required privileges:*** Sessions.ValidateSession
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SessionIsActiveRequestType'
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                type: boolean

  /SessionManager/{moId}/SetLocale:
    post:
      tags: [SessionManager]
      summary: |2
        Sets the session locale.
      operationId: SessionManager_SetLocale
      description: |2
        Sets the session locale.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SetLocaleRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***InvalidLocale***: if the locale is invalid or unknown to the server.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InvalidLocale'

  /SessionManager/{moId}/TerminateSession:
    post:
      tags: [SessionManager]
      summary: |2
        Log off and terminate the provided list of sessions.
      operationId: SessionManager_TerminateSession
      description: |2
        Log off and terminate the provided list of sessions.
        
        This method is only transactional for each session ID. The set of sessions
        are terminated sequentially, as specified in the list. If a failure
        occurs, for example, because of an unknown sessionID, the method aborts with
        an exception. When the method aborts, any sessions that have not yet been
        terminated are left in their unterminated state.
        
        ***Required privileges:*** Sessions.TerminateSession
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TerminateSessionRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***NotFound***: if a sessionId could not be found as a valid logged-on session.
            
            ***InvalidArgument***: if a sessionId matches the current session. Use
            the logout method to terminate the current session.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFound'

  /SessionManager/{moId}/UpdateServiceMessage:
    post:
      tags: [SessionManager]
      summary: |2
        Updates the system global message.
      operationId: SessionManager_UpdateServiceMessage
      description: |2
        Updates the system global message.
        
        If not blank, the message is immediately
        displayed to currently logged-on users. When set, the message is shown by new
        clients upon logging in.
        
        ***Required privileges:*** Sessions.GlobalMessage
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateServiceMessageRequestType'
      responses:
        '204':
          description: |2
            No Content

  /SessionManager/{moId}/currentSession:
    get:
      tags: [SessionManager]
      summary: |2
        This property contains information about the client's current session.
      operationId: SessionManager_getCurrentSession
      description: |2
        This property contains information about the client's current session.
        
        If the client is not logged on, the value is null.
        
        ***Required privileges:*** System.Anonymous
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
        - {}
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                $ref: '#/components/schemas/UserSession'

  /SessionManager/{moId}/defaultLocale:
    get:
      tags: [SessionManager]
      summary: |2
        This is the default server locale.
      operationId: SessionManager_getDefaultLocale
      description: |2
        This is the default server locale.
        
        ***Required privileges:*** System.Anonymous
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
        - {}
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                type: string

  /SessionManager/{moId}/message:
    get:
      tags: [SessionManager]
      summary: |2
        The system global message from the server.
      operationId: SessionManager_getMessage
      description: |2
        The system global message from the server.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: string

  /SessionManager/{moId}/messageLocaleList:
    get:
      tags: [SessionManager]
      summary: |2
        Provides the list of locales for which the server has localized messages.
      operationId: SessionManager_getMessageLocaleList
      description: |2
        Provides the list of locales for which the server has localized messages.
        
        ***Required privileges:*** System.Anonymous
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
        - {}
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  type: string

  /SessionManager/{moId}/sessionList:
    get:
      tags: [SessionManager]
      summary: |2
        The list of currently active sessions.
      operationId: SessionManager_getSessionList
      description: |2
        The list of currently active sessions.
        
        ***Required privileges:*** Sessions.TerminateSession
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/UserSession'

  /SessionManager/{moId}/supportedLocaleList:
    get:
      tags: [SessionManager]
      summary: |2
        Provides the list of locales that the server supports.
      operationId: SessionManager_getSupportedLocaleList
      description: |2
        Provides the list of locales that the server supports.
        
        Listing a locale ensures that some standardized information such as dates appear
        in the appropriate format. Other localized information, such as error messages,
        are displayed, if available. If localized information is not available, the
        message is returned using the system locale.
        
        ***Required privileges:*** System.Anonymous
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
        - {}
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  type: string

  /SimpleCommand/{moId}/ExecuteSimpleCommand:
    post:
      tags: [SimpleCommand]
      summary: |2
        The single function execution point for this simple command.
      operationId: SimpleCommand_ExecuteSimpleCommand
      description: |2
        The single function execution point for this simple command.
        
        The actual effects of
        this command depend upon the service handler registered for this instance.
        
        ***Required privileges:*** Global.ServiceManagers
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ExecuteSimpleCommandRequestType'
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                type: string

  /SimpleCommand/{moId}/encodingType:
    get:
      tags: [SimpleCommand]
      summary: |2
        The encoding type used in the result.
      operationId: SimpleCommand_getEncodingType
      description: |2
        The encoding type used in the result.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SimpleCommandEncoding_enum'

  /SimpleCommand/{moId}/entity:
    get:
      tags: [SimpleCommand]
      summary: |2
        A description of the service.
      operationId: SimpleCommand_getEntity
      description: |2
        A description of the service.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServiceManagerServiceInfo'

  /SiteInfoManager/{moId}/GetSiteInfo:
    post:
      tags: [SiteInfoManager]
      summary: |2
        Returns the *SiteInfo* object associated with this vCenter.
      operationId: SiteInfoManager_GetSiteInfo
      description: |2
        Returns the *SiteInfo* object associated with this vCenter.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SiteInfo'

  /StoragePod/{moId}/AddStandaloneHost_Task:
    post:
      tags: [StoragePod]
      summary: |2
        Creates a new single-host compute resource.
      operationId: StoragePod_AddStandaloneHost_Task
      description: |2
        Creates a new single-host compute resource.
        
        The name provided can be an
        IP address, such as 192.168.0.120, or a string, such as esx120.
        If a name is specified, a DNS lookup is used to resolve it to a fully-qualified
        name, such as esx120.vmware.com. If the DNS lookup fails, the string is
        stored as specified.
        
        Licenses for the host are allocated when making the first connection to
        the host. This is because the license needed typically depends on the type
        of host and the number of CPUs.
        
        In addition to the Host.Inventory.AddStandaloneHost privilege, it
        requires System.View privilege on the VM folder that the VMs of the
        host will be placed on.
        
        ***Required privileges:*** Host.Inventory.AddStandaloneHost
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AddStandaloneHostRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor the
            operation. The *info.result* property in the
            *Task* contains the newly added *ComputeResource* upon
            success.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***InvalidLogin***: if authentication with the host fails.
            
            ***InvalidArgument***: if an argument is specified incorrectly.
            
            ***AlreadyBeingManaged***: if the host is already being managed by a
            vCenter server. If the host is being managed by a different
            vCenter server, this can be overridden by the "force" flag in the
            connection specification.
            
            ***NotEnoughLicenses***: if there are not enough licenses to add the host.
            
            ***NoHost***: if the host cannot be contacted.
            
            ***NotSupported***: if the host is being added to a folder whose
            *Folder.childType* property does not contain
            "ComputeResource".
            
            ***NotSupportedHost***: if the host is running a software version that is not
            supported.
            
            ***AgentInstallFailed***: if there is an error installing the vCenter
            agent on the new host.
            
            ***AlreadyConnected***: if addConnected is true and the host is already
            connected to vCenter.
            
            ***HostConnectFault***: if an error occurred when attempting to connect
            to a host. Typically, a more specific subclass, such as
            AlreadyBeingManaged, is thrown.
            
            ***SSLVerifyFault***: if the host certificate could not be authenticated
            
            ***DuplicateName***: if another host in the same folder has the name.
            
            ***NoPermission***: if there are crypto keys to be sent to the host,
            but the user does not have Cryptographer.RegisterHost privilege
            on the Folder.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /StoragePod/{moId}/BatchAddHostsToCluster_Task:
    post:
      tags: [StoragePod]
      summary: |2
        Adds a set of new and existing hosts to the cluster.
      operationId: StoragePod_BatchAddHostsToCluster_Task
      description: |2
        Adds a set of new and existing hosts to the cluster.
        
        This API is a composite API and performs the following tasks before hosts
        become part of the specified cluter -
        - Adds all new hosts as standalone hosts.
        - Move each host to the desired state.
        - Move each host to the cluster.
          
        The dynamic privilege check will ensure that appropriate privileges
        are acquired to allow this API to perform multiple actions on hosts
        and cluster. Required privileges -
        - Host.Inventory.EditCluster on cluster
        - Host.Config.Maintenance on the hosts if desiredState is set
        - Privileges for *Folder.BatchAddStandaloneHosts_Task* if newHosts is
          set
        - Host.Inventory.EditCluster on the hosts' source ComputeResource
        - Host.Inventory.MoveHost on the hosts
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BatchAddHostsToClusterRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor
            the operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'

  /StoragePod/{moId}/BatchAddStandaloneHosts_Task:
    post:
      tags: [StoragePod]
      summary: |2
        Adds a list of hosts to inventory, as standalone hosts,
        in a single invocation.
      operationId: StoragePod_BatchAddStandaloneHosts_Task
      description: |2
        Adds a list of hosts to inventory, as standalone hosts,
        in a single invocation.
        
        The operation returns a result containing
        a list of hosts that are successfully added.
        
        In addition to the Host.Inventory.AddStandaloneHost privilege, the operation
        requires System.View privilege on the VM folder that the VMs of the
        host will be placed on.
        
        ***Required privileges:*** Host.Inventory.AddStandaloneHost
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BatchAddStandaloneHostsRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor
            the operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'

  /StoragePod/{moId}/CreateCluster:
    post:
      tags: [StoragePod]
      summary: |2
        Creates a new cluster compute resource in this folder.
      operationId: StoragePod_CreateCluster
      deprecated: true
      description: |2
        Deprecated as of VI API 2.5, use *Folder.CreateClusterEx*.
        
        Creates a new cluster compute resource in this folder.
        
        Any % (percent) character used in this name parameter must be escaped, unless it
        is used to start an escape sequence. Clients may also escape any other characters
        in this name parameter.
        
        ***Required privileges:*** Host.Inventory.CreateCluster
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateClusterRequestType'
      responses:
        '200':
          description: |2
            A new ClusterComputeResource instance.
            
            Refers instance of *ClusterComputeResource*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***DuplicateName***: if an entity with that name already exists.
            
            ***InvalidArgument***: if the cluster configuration specification parameter is
            invalid.
            
            ***InvalidName***: if the name is not a valid entity name.
            
            ***NotSupported***: if the cluster is being added to a folder whose
            *Folder.childType* property value does not contain
            "ComputeResource" or "ClusterComputeResource".
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /StoragePod/{moId}/CreateClusterEx:
    post:
      tags: [StoragePod]
      summary: |2
        Creates a new cluster compute resource in this folder.
      operationId: StoragePod_CreateClusterEx
      description: |2
        Creates a new cluster compute resource in this folder.
        
        Any % (percent) character used in this name parameter must be escaped, unless it
        is used to start an escape sequence. Clients may also escape any other characters
        in this name parameter.
        
        ***Required privileges:*** Host.Inventory.CreateCluster
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateClusterExRequestType'
      responses:
        '200':
          description: |2
            A new ClusterComputeResource instance.
            
            Refers instance of *ClusterComputeResource*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***DuplicateName***: if an entity with that name already exists.
            
            ***InvalidArgument***: if the cluster configuration specification parameter is
            invalid.
            
            ***InvalidName***: if the name is not a valid entity name.
            
            ***NotSupported***: if the cluster is being added to a folder whose
            *Folder.childType* property value does not contain
            "ComputeResource" or "ClusterComputeResource".
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /StoragePod/{moId}/CreateDatacenter:
    post:
      tags: [StoragePod]
      summary: |2
        Creates a new datacenter with the given name.
      operationId: StoragePod_CreateDatacenter
      description: |2
        Creates a new datacenter with the given name.
        
        Any % (percent) character used in this name parameter must be escaped, unless it
        is used to start an escape sequence. Clients may also escape any other characters
        in this name parameter.
        
        ***Required privileges:*** Datacenter.Create
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateDatacenterRequestType'
      responses:
        '200':
          description: |2
            A new Datacenter instance.
            
            Refers instance of *Datacenter*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***DuplicateName***: if an entity with that name already exists.
            
            ***InvalidName***: if the new name is not a valid entity name.
            
            ***NotSupported***: if the datacenter is being created within a folder whose
            *Folder.childType* property value does not contain
            "Datacenter".
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /StoragePod/{moId}/CreateDVS_Task:
    post:
      tags: [StoragePod]
      summary: |2
        Create a *DistributedVirtualSwitch* in the folder according to the
        specified *DVSCreateSpec*.
      operationId: StoragePod_CreateDVS_Task
      description: |2
        Create a *DistributedVirtualSwitch* in the folder according to the
        specified *DVSCreateSpec*.
        
        The specified Folder
        must be a Network entity folder.
        
        ***Required privileges:*** DVSwitch.Create
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateDVSRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor
            the operation. After successful completion, the
            *Task*.*Task.info*.*TaskInfo.result* property
            contains the newly registered *DistributedVirtualSwitch*.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***NotSupported***: if called directly on a host.
            
            ***DvsNotAuthorized***: if login-session's extension key does not match
            (*DVSConfigInfo.extensionKey*).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /StoragePod/{moId}/CreateFolder:
    post:
      tags: [StoragePod]
      summary: |2
        Creates a new sub-folder with the specified name.
      operationId: StoragePod_CreateFolder
      description: |2
        Creates a new sub-folder with the specified name.
        
        The *Folder.childType* property of the new folder is the same as
        the *Folder.childType* property of the current folder.
        
        ***Required privileges:*** Folder.Create
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateFolderRequestType'
      responses:
        '200':
          description: |2
            A reference to the new folder.
            
            Refers instance of *Folder*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***DuplicateName***: if another object in the same folder has the
            target name.
            
            ***InvalidName***: if the name is not a valid entity name.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /StoragePod/{moId}/CreateStoragePod:
    post:
      tags: [StoragePod]
      summary: |2
        Creates a new storage pod in this folder.
      operationId: StoragePod_CreateStoragePod
      description: |2
        Creates a new storage pod in this folder.
        
        Any % (percent) character used in this name parameter must be escaped, unless it
        is used to start an escape sequence. Clients may also escape any other characters
        in this name parameter.
        
        ***Required privileges:*** Folder.Create
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateStoragePodRequestType'
      responses:
        '200':
          description: |2
            A new StoragePod instance.
            
            Refers instance of *StoragePod*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***DuplicateName***: if an entity with that name already exists.
            
            ***InvalidName***: if the name is not a valid entity name.
            
            ***NotSupported***: if the storage pod is being added to a folder whose
            *Folder.childType* property value does not contain
            "StoragePod".
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /StoragePod/{moId}/CreateVM_Task:
    post:
      tags: [StoragePod]
      summary: |2
        Creates a new virtual machine in the current folder and attaches it to the
        specified resource pool.
      operationId: StoragePod_CreateVM_Task
      description: |2
        Creates a new virtual machine in the current folder and attaches it to the
        specified resource pool.
        
        This operation creates a virtual machine,
        instead of cloning a virtual machine from an existing one.
        
        The server does not support creating templates using this method.
        Instead, you should create templates by marking existing virtual
        machines as templates, or by cloning an existing virtual machine or
        template.
        
        This operation only works if the folder's childType includes VirtualMachine.
        In addition to the VirtualMachine.Inventory.Create privilege, may also require
        any of the following privileges depending on the properties of the virtual
        machine bring created:
        - VirtualMachine.Config.AddExistingDisk if including a virtual disk device
          that refers to an existing virtual disk file (not RDM)
        - VirtualMachine.Config.AddNewDisk if including a virtual disk device that
          creates a new virtual disk file (not RDM)
        - VirtualMachine.Config.RawDevice if including a raw device mapping
          (RDM) or SCSI passthrough device
        - VirtualMachine.Config.HostUSBDevice if including a VirtualUSB device
          backed by a host USB device
        - VirtualMachine.Config.AdvancedConfig if setting values in
          ConfigSpec.extraConfig
        - VirtualMachine.Config.SwapPlacement if setting swapPlacement
        - VirtualMachine.Config.ChangeTracking if setting changed
          block tracking for the virtual machine's disks.
        - Datastore.AllocateSpace required on all datastores where the
          virtual machine and its virtual disks will be created
        - Network.Assign required on the network which is assigned to the
          new virtual machine that is being created
        - Cryptographer.EncryptNew on the folder if the created virtual
          machine is encrypted
        - Cryptographer.RegisterHost on the host if the created virtual
          machine is encrypted, but encryption is not enabled on the host
          
        To create a VirtualDisk on a persistent memory storage, the storage
        must be specified via
        *profile* while the datastore
        property of corresponding VirtualDisk backing must be unset.
        
        To create a VirtualNVDIMM device, the storage
        *profile* must be set to the
        default persistent memory storage profile while the datastore property of
        *the device backing* must be
        unset.
        
        ***Required privileges:*** VirtualMachine.Inventory.Create
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateVMRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor the
            operation. The *info.result* property in the
            *Task* contains the newly created *VirtualMachine*
            upon success.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***VmConfigFault***: if the configSpec has incorrect values. Typically, a more
            specific subclass is thrown.
            
            ***OutOfBounds***: if Host.capability.maxSupportedVMs is exceeded.
            
            ***FileAlreadyExists***: if the requested cfgPath for the virtual machine's
            configuration file already exists.
            
            ***FileFault***: if there is a problem creating the virtual machine on disk.
            Typically, a more specific subclass, such as NoDiskSpace, will be thrown.
            
            ***DuplicateName***: if another virtual machine in the same folder already has
            the specified target name.
            
            ***InvalidName***: if the name is not a valid entity name.
            
            ***NotSupported***: if the virtual machine is being created within a folder
            whose *Folder.childType* property is not set to
            "VirtualMachine".
            
            ***InsufficientResourcesFault***: if this operation would violate a resource
            usage policy.
            
            ***InvalidDatastore***: if the operation cannot be performed on the
            target datastores.
            
            ***VmWwnConflict***: if the WWN of the virtual machine has been used by
            other virtual machines.
            
            ***AlreadyExists***: if the requested cfgPath (or the default cfgPath)
            for the virtual machine's configuration file is already loaded
            in the inventory.
            
            ***InvalidState***: if the operation is not allowed in current state of
            the entities involved.
            
            ***NoPermission***: if the created virtual machine is encrypted but the
            user does not have Cryptographer.EncryptNew on the folder.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /StoragePod/{moId}/Destroy_Task:
    post:
      tags: [StoragePod]
      summary: |2
        Destroys this object, deleting its contents and removing it from its parent
        folder (if any).
      operationId: StoragePod_Destroy_Task
      description: |2
        Destroys this object, deleting its contents and removing it from its parent
        folder (if any).
        
        NOTE: The appropriate privilege must be held on the parent of the destroyed
        entity as well as the entity itself.
        This method can throw one of several exceptions. The exact set of exceptions
        depends on the kind of entity that is being removed. See comments for
        each entity for more information on destroy behavior.
        
        ***Required privileges:*** Folder.Delete
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor the
            operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            Failure
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /StoragePod/{moId}/MoveIntoFolder_Task:
    post:
      tags: [StoragePod]
      summary: |2
        Moves a set of managed entities into this folder.
      operationId: StoragePod_MoveIntoFolder_Task
      description: |2
        Moves a set of managed entities into this folder.
        
        This operation is typically used by clients when they implement a drag-and-drop
        interface to move a set of objects into a folder.
        
        This operation is transactional only with respect to each individual entity.
        The set of entities is moved sequentially as specified in the list, and
        committed one at a time. If the *Folder.MoveIntoFolder_Task* method fails on an object, the
        method terminates at that point with an exception, leaving the rest of the
        managed entities in their original location.
        
        The objects that can be moved into a folder depends on the folder's
        type (as defined by the folder's *Folder.childType* property).
        For a datacenter folder, only datacenters and datacenter folders can be
        moved into the folder. For a virtual machine folder, only virtual machines
        and virtual machine folders can be moved into the folder.
        For a host folder, ComputeResource objects, host folder objects, and
        HostSystem objects can be moved into the folder.
        
        Moving a HostSystem into a host folder creates a stand-alone host from a
        host that is currently part of a ClusterComputeResource. The host must be part
        of a ClusterComputeResource in the same datacenter and the host must be in
        maintenance mode. Otherwise, the operation fails.
        
        A ComputeResource with a single root resource pool is created for each
        HostSystem. The name of the ComputeResource is the DNS or IP address of the
        host. This operation moves the (physical) host resources out of a cluster.
        It does not move or change the ResourcePool configuration that is part of the
        ClusterComputeResource with which the host was associated.
        
        Note that all virtual machines associated with a host are moved with the host
        into the folder. If there are virtual machines that should not be moved
        with the host, then migrate them from the host before initiating this operation.
        
        vSphere Lifecycle Manager baselines (previously called vSphere Update
        Manager VUM) is
        <a href="https://kb.vmware.com/s/article/89519">deprecated</a> in vCenter 8.0.
        You can instead manage the lifecycle of the
        hosts in your environment by using vSphere Lifecycle Manager images (vLCM).
        A Host moved from image managed cluster to datacenter/host folder will become
        baseline managed stand-alone host.
        
        For a HostSystem move, the privileges required are Host.Inventory.EditCluster
        on the source ClusterComputeResource, Host.Inventory.MoveHost on the HostSystem,
        and Host.Inventory.AddStandaloneHost on the target Folder.
        
        Otherwise, the privilege required for this operation varies depending on this
        folder's type and is checked against the source container, destination container,
        and the object:
        - Folder.Move if the object is a Folder
        - Datacenter.Move if the object is a Datacenter
        - Host.Inventory.MoveCluster if the object is a ComputeResource
        - VirtualMachine.Inventory.Move if the object is a virtual machine
          or virtual machine template
        - DVSwitch.Move if the object is a DistributedVirtualSwitch
        - Datastore.Move if the object is a datastore
        - Network.Move if the object is a network
          
        If the object is a HostSystem, the privileges required are
        Host.Inventory.AddStandaloneHost on the folder, Host.Inventory.MoveHost on
        the HostSystem, and Host.Inventory.EditCluster on the host's original
        ComputeResource.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MoveIntoFolderRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor the
            operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***DuplicateName***: if this folder already contains an object with
            the specified name.
            
            ***InvalidFolder***: if a Folder that is a parent of this Folder is part
            of the list of objects.
            
            ***InvalidState***: if a HostSystem is not part of the same
            datacenter, not part of a ClusterComputeResource, or not in
            maintenance mode.
            
            ***NotSupported***: if the entity is being moved into a folder
            whose *Folder.childType* property is not set to
            the appropriate value. For example, a VirtualMachine entity
            cannot be moved into a folder whose ChildType property value
            does not contain "VirtualMachine".
            
            ***DisallowedOperationOnFailoverHost***: if the host is being moved
            out of a cluster and was configured as a failover host in that
            cluster. See *ClusterFailoverHostAdmissionControlPolicy*.
            
            ***VmAlreadyExistsInDatacenter***: if moving a standalone host between
            datacenters, and one or more of the host's virtual machines is
            already registered to a host in the destination datacenter.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /StoragePod/{moId}/RegisterVM_Task:
    post:
      tags: [StoragePod]
      summary: |2
        Adds an existing virtual machine to the folder.
      operationId: StoragePod_RegisterVM_Task
      description: |2
        Adds an existing virtual machine to the folder.
        
        Any % (percent) character used in this name parameter must be escaped, unless it
        is used to start an escape sequence. Clients may also escape any other characters
        in this name parameter.
        
        This operation only works if the folder's type is VirtualMachine.
        In addition to the VirtualMachine.Inventory.Register and
        Resource.AssignVMToPool privileges, it requires System.Read privilege
        on the datastore that the existing virtual machine resides on. If the
        virtual machine is encrypted Cryptographer.RegisterVM is required on the
        folder, in which the virtual machine is registered. Otherwise, the VM is
        registered successfully, but is left in the locked state.
        
        ***Required privileges:*** VirtualMachine.Inventory.Register
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RegisterVMRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor the
            operation. The *info.result* property in the
            *Task* contains the newly registered *VirtualMachine*
            upon success.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***NotSupported***: if the operation is not supported. For example,
            templates are not supported directly on hosts. Also, if the operation
            is invoked on a folder whose *Folder.childType* property is
            not set to "VirtualMachine".
            
            ***OutOfBounds***: if the maximum number of VMs for this folder has been
            exceeded. The maximum number is determined by
            Host.capability.maxSupportedVMs.
            
            ***DuplicateName***: if another virtual machine in the same folder has
            the target name.
            
            ***AlreadyExists***: if the virtual machine is already registered.
            
            ***InvalidDatastore***: if the operation cannot be performed on the
            target datastores.
            
            ***NotFound***: if the configuration file is not found on the system.
            
            ***InvalidName***: if the entity name is invalid.
            
            ***InvalidArgument***: if any of the arguments such as host or resource pool
            are not set to valid values.
            
            ***VmConfigFault***: if the format / configuration of the virtual machine
            is invalid. Typically, a more specific fault is thrown such as
            InvalidFormat if the configuration file cannot be read, or
            InvalidDiskFormat if the disks cannot be read.
            
            ***FileFault***: if there is an error accessing the files on disk.
            
            ***InsufficientResourcesFault***: if this operation would violate a resource
            usage policy.
            
            ***InvalidState***: if the operation is not allowed in current state of
            the entities involved.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /StoragePod/{moId}/Reload:
    post:
      tags: [StoragePod]
      summary: |2
        Reload the entity state.
      operationId: StoragePod_Reload
      description: |2
        Reload the entity state.
        
        Clients only need to call this method
        if they changed some external state that affects the service
        without using the Web service interface to perform the change.
        For example, hand-editing a virtual machine configuration file
        affects the configuration of the associated virtual machine but
        the service managing the virtual machine might not monitor the
        file for changes. In this case, after such an edit, a client
        would call "reload" on the associated virtual machine to ensure
        the service and its clients have current data for the
        virtual machine.
        
        ***Required privileges:*** System.Read
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '204':
          description: |2
            No Content

  /StoragePod/{moId}/Rename_Task:
    post:
      tags: [StoragePod]
      summary: |2
        Renames this managed entity.
      operationId: StoragePod_Rename_Task
      description: |2
        Renames this managed entity.
        
        Any % (percent) character used in this name parameter
        must be escaped, unless it is used to start an escape
        sequence. Clients may also escape any other characters in
        this name parameter.
        
        See also *ManagedEntity.name*.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RenameRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor the
            operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***DuplicateName***: If another object in the same folder has the target name.
            
            ***InvalidName***: If the new name is not a valid entity name.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /StoragePod/{moId}/setCustomValue:
    post:
      tags: [StoragePod]
      summary: |2
        Assigns a value to a custom field.
      operationId: StoragePod_setCustomValue
      description: |2
        Assigns a value to a custom field.
        
        The setCustomValue method requires
        whichever updatePrivilege is defined as one of the
        *CustomFieldDef.fieldInstancePrivileges*
        for the CustomFieldDef whose value is being changed.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/setCustomValueRequestType'
      responses:
        '204':
          description: |2
            No Content

  /StoragePod/{moId}/UnregisterAndDestroy_Task:
    post:
      tags: [StoragePod]
      summary: |2
        Recursively unregisters all virtual machines and vApps, and destroys
        all child virtual machine folders.
      operationId: StoragePod_UnregisterAndDestroy_Task
      description: |2
        Recursively unregisters all virtual machines and vApps, and destroys
        all child virtual machine folders.
        
        This is similar to the Destroy\_Task method,
        but this method calls UnregisterAndDestroy\_Task on each virtual machine
        object instead of calling Destroy\_Task.
        This operation applies only to VirtualMachine folders.
        
        UnregisterAndDestroy\_Task is a recursive operation that destroys the specified
        virtual machine folder, unregisters all child virtual machine objects, and destroys
        all child virtual machine folders. When you call UnregisterAndDestroy\_Task
        to destroy a virtual machine folder, the system uses the specified folder
        as a root and traverses its descendant hierarchy, calling UnregisterAndDestroy\_Task
        on each virtual machine object and Destroy\_Task on each virtual machine folder.
        UnregisterAndDestroy\_Task is a single operation that treats each recursive call
        as a single transaction, committing each call to remove an object individually.
        If a failure occurs, the method terminates at that point with an exception, leaving
        some or all objects unaffected.
        
        If you are removing virtual machines, you must hold the VirtualMachine.Delete
        privilege on all of the virtual machines to be unregistered, and on their parent folders.
        If you are removing virtual applications, you must hold the VApp.Delete
        privilege on all of the virtual applications to be unregistered, and on their
        parent folders.
        
        ***Required privileges:*** Folder.Delete
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor the
            operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***InvalidState***: if a virtual machine is not powered off or suspended.
            
            ***ConcurrentAccess***: if another client modifies the folder contents
            before this operation completes.
            
            ***NotSupported***: if the *Folder.childType* property of the
            folder is not set to "VirtualMachine".
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /StoragePod/{moId}/alarmActionsEnabled:
    get:
      tags: [StoragePod]
      summary: |2
        Whether alarm actions are enabled for this entity.
      operationId: StoragePod_getAlarmActionsEnabled
      description: |2
        Whether alarm actions are enabled for this entity.
        
        True if enabled; false otherwise.
        
        ***Required privileges:*** System.Read
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: boolean

  /StoragePod/{moId}/availableField:
    get:
      tags: [StoragePod]
      summary: |2
        List of custom field definitions that are valid for the object's type.
      operationId: StoragePod_getAvailableField
      description: |2
        List of custom field definitions that are valid for the object's type.
        
        The fields are sorted by *CustomFieldDef.name*.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/CustomFieldDef'

  /StoragePod/{moId}/childEntity:
    get:
      tags: [StoragePod]
      summary: |2
        An array of managed object references.
      operationId: StoragePod_getChildEntity
      description: |2
        An array of managed object references.
        
        Each entry is a reference to a child entity.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            Refers instances of *ManagedEntity*.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/ManagedObjectReference'

  /StoragePod/{moId}/childType:
    get:
      tags: [StoragePod]
      summary: |2
        Specifies the object types a folder may contain.
      operationId: StoragePod_getChildType
      description: |2
        Specifies the object types a folder may contain.
        
        When you create a folder, it inherits its childType from the parent folder
        in which it is created. childType is an array of strings. Each array entry
        identifies a set of object types - Folder and one or more managed object
        types. The following list shows childType values for the different folders:
        - { "vim.Folder", "vim.Datacenter" } - Identifies the root folder
          and its descendant folders. Data center folders can contain
          child data center folders and Datacenter managed objects.
          Datacenter objects contain virtual machine, compute resource,
          network entity, and datastore folders.
        - { "vim.Folder", "vim.Virtualmachine", "vim.VirtualApp" } - Identifies
          a virtual machine folder. A virtual machine folder may contain child
          virtual machine folders. It also can contain VirtualMachine managed objects,
          templates, and VirtualApp managed objects.
        - { "vim.Folder", "vim.ComputeResource" } - Identifies a
          compute resource folder, which contains child compute resource folders
          and ComputeResource hierarchies.
        - { "vim.Folder", "vim.Network" } - Identifies a network entity folder.
          Network entity folders on a vCenter Server can contain Network,
          DistributedVirtualSwitch, and DistributedVirtualPortgroup managed
          objects. Network entity folders on an ESXi host can contain only
          Network objects.
        - { "vim.Folder", "vim.Datastore" } - Identifies a datastore folder.
          Datastore folders can contain child datastore folders and Datastore
          managed objects.
          
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  type: string

  /StoragePod/{moId}/configIssue:
    get:
      tags: [StoragePod]
      summary: |2
        Current configuration issues that have been detected for this entity.
      operationId: StoragePod_getConfigIssue
      description: |2
        Current configuration issues that have been detected for this entity.
        
        Typically,
        these issues have already been logged as events. The entity stores these
        events as long as they are still current. The
        *configStatus* property provides an overall status
        based on these events.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/Event'

  /StoragePod/{moId}/configStatus:
    get:
      tags: [StoragePod]
      summary: |2
        The configStatus indicates whether or not the system has detected a configuration
        issue involving this entity.
      operationId: StoragePod_getConfigStatus
      description: |2
        The configStatus indicates whether or not the system has detected a configuration
        issue involving this entity.
        
        For example, it might have detected a
        duplicate IP address or MAC address, or a host in a cluster
        might be out of compliance. The meanings of the configStatus values are:
        - red: A problem has been detected involving the entity.
        - yellow: A problem is about to occur or a transient condition
          has occurred (For example, reconfigure fail-over policy).
        - green: No configuration issues have been detected.
        - gray: The configuration status of the entity is not being monitored.
          
        A green status indicates only that a problem has not been detected;
        it is not a guarantee that the entity is problem-free.
        
        The *configIssue* property contains a list of the
        problems that have been detected.
        In releases after vSphere API 5.0, vSphere Servers might not
        generate property collector update notifications for this property.
        To obtain the latest value of the property, you can use
        PropertyCollector methods RetrievePropertiesEx or WaitForUpdatesEx.
        If you use the PropertyCollector.WaitForUpdatesEx method, specify
        an empty string for the version parameter. Any other version value will not
        produce any property values as no updates are generated.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedEntityStatus_enum'

  /StoragePod/{moId}/customValue:
    get:
      tags: [StoragePod]
      summary: |2
        Custom field values.
      operationId: StoragePod_getCustomValue
      description: |2
        Custom field values.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/CustomFieldValue'

  /StoragePod/{moId}/declaredAlarmState:
    get:
      tags: [StoragePod]
      summary: |2
        A set of alarm states for alarms that apply to this managed entity.
      operationId: StoragePod_getDeclaredAlarmState
      description: |2
        A set of alarm states for alarms that apply to this managed entity.
        
        The set includes alarms defined on this entity
        and alarms inherited from the parent entity,
        or from any ancestors in the inventory hierarchy.
        
        Alarms are inherited if they can be triggered by this entity or its descendants.
        This set does not include alarms that are defined on descendants of this entity.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/AlarmState'

  /StoragePod/{moId}/disabledMethod:
    get:
      tags: [StoragePod]
      summary: |2
        List of operations that are disabled, given the current runtime
        state of the entity.
      operationId: StoragePod_getDisabledMethod
      description: |2
        List of operations that are disabled, given the current runtime
        state of the entity.
        
        For example, a power-on operation always fails if a
        virtual machine is already powered on. This list can be used by clients to
        enable or disable operations in a graphical user interface.
        
        Note: This list is determined by the current runtime state of an entity,
        not by its permissions.
        
        This list may include the following operations for a HostSystem:
        - *HostSystem.EnterMaintenanceMode_Task*
        - *HostSystem.ExitMaintenanceMode_Task*
        - *HostSystem.RebootHost_Task*
        - *HostSystem.ShutdownHost_Task*
        - *HostSystem.ReconnectHost_Task*
        - *HostSystem.DisconnectHost_Task*
          
        This list may include the following operations for a VirtualMachine:
        - *VirtualMachine.AnswerVM*
        - *ManagedEntity.Rename_Task*
        - *VirtualMachine.CloneVM_Task*
        - *VirtualMachine.PowerOffVM_Task*
        - *VirtualMachine.PowerOnVM_Task*
        - *VirtualMachine.SuspendVM_Task*
        - *VirtualMachine.ResetVM_Task*
        - *VirtualMachine.ReconfigVM_Task*
        - *VirtualMachine.RelocateVM_Task*
        - *VirtualMachine.MigrateVM_Task*
        - *VirtualMachine.CustomizeVM_Task*
        - *VirtualMachine.ShutdownGuest*
        - *VirtualMachine.StandbyGuest*
        - *VirtualMachine.RebootGuest*
        - *VirtualMachine.CreateSnapshot_Task*
        - *VirtualMachine.RemoveAllSnapshots_Task*
        - *VirtualMachine.RevertToCurrentSnapshot_Task*
        - *VirtualMachine.MarkAsTemplate*
        - *VirtualMachine.MarkAsVirtualMachine*
        - *VirtualMachine.ResetGuestInformation*
        - *VirtualMachine.MountToolsInstaller*
        - *VirtualMachine.UnmountToolsInstaller*
        - *ManagedEntity.Destroy_Task*
        - *VirtualMachine.UpgradeVM_Task*
        - *VirtualMachine.ExportVm*
          
        This list may include the following operations for a ResourcePool:
        - *ResourcePool.ImportVApp*
        - *ResourcePool.CreateChildVM_Task*
        - *ResourcePool.UpdateConfig*
        - *Folder.CreateVM_Task*
        - *ManagedEntity.Destroy_Task*
        - *ManagedEntity.Rename_Task*
          
        This list may include the following operations for a VirtualApp:
        - *ManagedEntity.Destroy_Task*
        - *VirtualApp.CloneVApp_Task*
        - *VirtualApp.unregisterVApp_Task*
        - *VirtualApp.ExportVApp*
        - *VirtualApp.PowerOnVApp_Task*
        - *VirtualApp.PowerOffVApp_Task*
        - *VirtualApp.UpdateVAppConfig*
          
        In releases after vSphere API 5.0, vSphere Servers might not
        generate property collector update notifications for this property.
        To obtain the latest value of the property, you can use
        PropertyCollector methods RetrievePropertiesEx or WaitForUpdatesEx.
        If you use the PropertyCollector.WaitForUpdatesEx method, specify
        an empty string for the version parameter. Any other version value will not
        produce any property values as no updates are generated.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  type: string

  /StoragePod/{moId}/effectiveRole:
    get:
      tags: [StoragePod]
      summary: |2
        Access rights the current session has to this entity.
      operationId: StoragePod_getEffectiveRole
      description: |2
        Access rights the current session has to this entity.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  type: integer
                  format: int32

  /StoragePod/{moId}/name:
    get:
      tags: [StoragePod]
      summary: |2
        Name of this entity, unique relative to its parent.
      operationId: StoragePod_getName
      description: |2
        Name of this entity, unique relative to its parent.
        
        Any / (slash), \\ (backslash), character used in this
        name element will be escaped. Similarly, any % (percent) character used in
        this name element will be escaped, unless it is used to start an escape
        sequence. A slash is escaped as %2F or %2f. A backslash is escaped as %5C or
        %5c, and a percent is escaped as %25.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                type: string

  /StoragePod/{moId}/namespace:
    get:
      tags: [StoragePod]
      summary: |2
        The namespace with which the Folder is associated.
      operationId: StoragePod_getNamespace
      description: |2
        The namespace with which the Folder is associated.
        
        Namespace is a vAPI
        resource which divides cluster resources and allows administrators to
        give Kubernetes environments to their development teams.
        This property is set only at the time of creation and cannot change.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: string

  /StoragePod/{moId}/overallStatus:
    get:
      tags: [StoragePod]
      summary: |2
        General health of this managed entity.
      operationId: StoragePod_getOverallStatus
      description: |2
        General health of this managed entity.
        
        The overall status of the managed entity is computed as the worst status
        among its alarms and the configuration issues detected on the entity.
        The status is reported as one of the following values:
        - red: The entity has alarms or configuration issues with a red status.
        - yellow: The entity does not have alarms or configuration issues with a
          red status, and has at least one with a yellow status.
        - green: The entity does not have alarms or configuration issues with a
          red or yellow status, and has at least one with a green status.
        - gray: All of the entity's alarms have a gray status and the
          configuration status of the entity is not being monitored.
          
        In releases after vSphere API 5.0, vSphere Servers might not
        generate property collector update notifications for this property.
        To obtain the latest value of the property, you can use
        PropertyCollector methods RetrievePropertiesEx or WaitForUpdatesEx.
        If you use the PropertyCollector.WaitForUpdatesEx method, specify
        an empty string for the version parameter. Any other version value will not
        produce any property values as no updates are generated.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedEntityStatus_enum'

  /StoragePod/{moId}/parent:
    get:
      tags: [StoragePod]
      summary: |2
        Parent of this entity.
      operationId: StoragePod_getParent
      description: |2
        Parent of this entity.
        
        This value is null for the root object and for
        *VirtualMachine* objects that are part of
        a *VirtualApp*.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            Refers instance of *ManagedEntity*.
          content:
            application/json:
              schema:
                nullable: true
                $ref: '#/components/schemas/ManagedObjectReference'

  /StoragePod/{moId}/permission:
    get:
      tags: [StoragePod]
      summary: |2
        List of permissions defined for this entity.
      operationId: StoragePod_getPermission
      description: |2
        List of permissions defined for this entity.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/Permission'

  /StoragePod/{moId}/podStorageDrsEntry:
    get:
      tags: [StoragePod]
      summary: |2
        Storage DRS related attributes of the Storage Pod.
      operationId: StoragePod_getPodStorageDrsEntry
      description: |2
        Storage DRS related attributes of the Storage Pod.
        
        ***Required privileges:*** System.Read
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                $ref: '#/components/schemas/PodStorageDrsEntry'

  /StoragePod/{moId}/recentTask:
    get:
      tags: [StoragePod]
      summary: |2
        The set of recent tasks operating on this managed entity.
      operationId: StoragePod_getRecentTask
      description: |2
        The set of recent tasks operating on this managed entity.
        
        This is a subset
        of *TaskManager.recentTask* belong to this entity. A task in this
        list could be in one of the four states: pending, running, success or error.
        
        This property can be used to deduce intermediate power states for
        a virtual machine entity. For example, if the current powerState is "poweredOn"
        and there is a running task performing the "suspend" operation, then the virtual
        machine's intermediate state might be described as "suspending."
        
        Most tasks (such as power operations) obtain exclusive access to the virtual
        machine, so it is unusual for this list to contain more than one running task.
        One exception, however, is the task of cloning a virtual machine.
        In releases after vSphere API 5.0, vSphere Servers might not
        generate property collector update notifications for this property.
        To obtain the latest value of the property, you can use
        PropertyCollector methods RetrievePropertiesEx or WaitForUpdatesEx.
        If you use the PropertyCollector.WaitForUpdatesEx method, specify
        an empty string for the version parameter. Any other version value will not
        produce any property values as no updates are generated.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            Refers instances of *Task*.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/ManagedObjectReference'

  /StoragePod/{moId}/summary:
    get:
      tags: [StoragePod]
      summary: |2
        Storage pod summary.
      operationId: StoragePod_getSummary
      description: |2
        Storage pod summary.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                $ref: '#/components/schemas/StoragePodSummary'

  /StoragePod/{moId}/tag:
    get:
      tags: [StoragePod]
      summary: |2
        The set of tags associated with this managed entity.
      operationId: StoragePod_getTag
      description: |2
        The set of tags associated with this managed entity.
        
        Experimental. Subject to change.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/Tag'

  /StoragePod/{moId}/triggeredAlarmState:
    get:
      tags: [StoragePod]
      summary: |2
        A set of alarm states for alarms triggered by this entity
        or by its descendants.
      operationId: StoragePod_getTriggeredAlarmState
      description: |2
        A set of alarm states for alarms triggered by this entity
        or by its descendants.
        
        Triggered alarms are propagated up the inventory hierarchy
        so that a user can readily tell when a descendant has triggered an alarm.
        In releases after vSphere API 5.0, vSphere Servers might not
        generate property collector update notifications for this property.
        To obtain the latest value of the property, you can use
        PropertyCollector methods RetrievePropertiesEx or WaitForUpdatesEx.
        If you use the PropertyCollector.WaitForUpdatesEx method, specify
        an empty string for the version parameter. Any other version value will not
        produce any property values as no updates are generated.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/AlarmState'

  /StoragePod/{moId}/value:
    get:
      tags: [StoragePod]
      summary: |2
        List of custom field values.
      operationId: StoragePod_getValue
      description: |2
        List of custom field values.
        
        Each value uses a key to associate
        an instance of a *CustomFieldStringValue* with
        a custom field definition.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/CustomFieldValue'

  /StorageQueryManager/{moId}/QueryHostsWithAttachedLun:
    post:
      tags: [StorageQueryManager]
      summary: |2
        Query the set of all hosts which have the specified lun attached.
      operationId: StorageQueryManager_QueryHostsWithAttachedLun
      description: |2
        Query the set of all hosts which have the specified lun attached.
        
        Requires Host.Config.Storage privilege on the hosts which have
        the lun in attached state.
        
        ***Required privileges:*** System.Read
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QueryHostsWithAttachedLunRequestType'
      responses:
        '200':
          description: |2
            HostSystem The set of hosts which have the specified lun attached.
            No values are returned if there are no hosts with the
            specified lun in attached state.
            
            Refers instances of *HostSystem*.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/ManagedObjectReference'

  /StorageResourceManager/{moId}/ConfigureDatastoreIORM_Task:
    post:
      tags: [StorageResourceManager]
      summary: |2
        Changes configuration of storage I/O resource management for a given datastore.
      operationId: StorageResourceManager_ConfigureDatastoreIORM_Task
      deprecated: true
      description: |2
        Deprecated as of vSphere8.0 U3, and there is no replacement for it.
        
        Changes configuration of storage I/O resource management for a given datastore.
        
        The changes are applied to all the backing storage devices for the datastore.
        Currently we only support storage I/O resource management on VMFS volumes.
        In order to enable storage I/O resource management on a datstore, we require
        that all the hosts that are attached to the datastore support this feature.
        The privilege Datastore.ConfigIOManagement is required on the target
        datastore.
        
        This method is only supported by vCenter server.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ConfigureDatastoreIORMRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to
            monitor the operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***NotSupported***: if called directly on a host or if called on a datastore
            that does not have VMFS Volume.
            
            ***InvalidArgument***: if
            1\. IORMConfigSpec.congestionThreshold is not within the
            desired range (5 to 100 milliseconds).
            2\. IORMConfigSpec.congestionThresholdMode is not specified and
            IORMConfigSpec.congestionThreshold is specified. To set
            congestionThreshold, congestionThresholdMode should be set to
            manual
            
            ***IORMNotSupportedHostOnDatastore***: if called on a datastore that is
            connected to a host that does not support storage I/O resource
            management.
            
            ***InaccessibleDatastore***: if cannot access the datastore from any of the
            hosts.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /StorageResourceManager/{moId}/QueryIORMConfigOption:
    post:
      tags: [StorageResourceManager]
      summary: |2
        Query configuration options for storage I/O resource management.
      operationId: StorageResourceManager_QueryIORMConfigOption
      deprecated: true
      description: |2
        Deprecated as of vSphere8.0 U3, and there is no replacement for it.
        
        Query configuration options for storage I/O resource management.
        
        ***Required privileges:*** Datastore.Config
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QueryIORMConfigOptionRequestType'
      responses:
        '200':
          description: |2
            configuration option object.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StorageIORMConfigOption'

  /StorageResourceManager/{moId}/ApplyStorageDrsRecommendation_Task:
    post:
      tags: [StorageResourceManager]
      summary: |2
        Applies a recommendation from the recommendation list that is generated
        by SDRS initial placement invoked by RecommendDatastore method.
      operationId: StorageResourceManager_ApplyStorageDrsRecommendation_Task
      description: |2
        Applies a recommendation from the recommendation list that is generated
        by SDRS initial placement invoked by RecommendDatastore method.
        
        In the case of CreateVm and CloneVm a VirtualMachine is returned. Other
        workflows don't have a return value.
        
        Requires Resource. ApplyRecommendation privilege on the storage pod.
        Additionally, depending on the workflow where this API is called from,
        it may require the privileges of invoking one of following APIs:
        - CreateVm *Folder.CreateVM_Task*
        - AddDisk *VirtualMachine.ReconfigVM_Task*
        - RelocateVm *VirtualMachine.RelocateVM_Task*
        - CloneVm *VirtualMachine.CloneVM_Task*
          
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ApplyStorageDrsRecommendationRequestType'
      responses:
        '200':
          description: |2
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'

  /StorageResourceManager/{moId}/ApplyStorageDrsRecommendationToPod_Task:
    post:
      tags: [StorageResourceManager]
      summary: |2
        Applies a recommendation from the recommendation list that is generated
        by SDRS load balancing activity.
      operationId: StorageResourceManager_ApplyStorageDrsRecommendationToPod_Task
      description: |2
        Applies a recommendation from the recommendation list that is generated
        by SDRS load balancing activity.
        
        Each recommendation can be applied
        only once.
        
        Requires Resource.ApplyRecommendation privilege on the storage pod. And
        requires Resource.ColdMigrate privilege on the virtual machine(s) that
        are relocated. Additionally requires Resource.HotMigrate privilege if
        the virtual machine is powered on (for Storage VMotion). Also requires
        Datastore.AllocateSpace on any datastore the virtual machine or its disks
        are relocated to.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ApplyStorageDrsRecommendationToPodRequestType'
      responses:
        '200':
          description: |2
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'

  /StorageResourceManager/{moId}/CancelStorageDrsRecommendation:
    post:
      tags: [StorageResourceManager]
      summary: |2
        Cancels a recommendation.
      operationId: StorageResourceManager_CancelStorageDrsRecommendation
      description: |2
        Cancels a recommendation.
        
        Currently only initial placement
        recommendations can be cancelled. Migration recommendations cannot.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CancelStorageDrsRecommendationRequestType'
      responses:
        '204':
          description: |2
            No Content

  /StorageResourceManager/{moId}/ConfigureStorageDrsForPod_Task:
    post:
      tags: [StorageResourceManager]
      summary: |2
        Change the storage DRS configuration for a pod *StoragePod*.
      operationId: StorageResourceManager_ConfigureStorageDrsForPod_Task
      description: |2
        Change the storage DRS configuration for a pod *StoragePod*.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ConfigureStorageDrsForPodRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor
            the operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'

  /StorageResourceManager/{moId}/QueryDatastorePerformanceSummary:
    post:
      tags: [StorageResourceManager]
      summary: |2
        Returns datastore summary performance statistics.
      operationId: StorageResourceManager_QueryDatastorePerformanceSummary
      deprecated: true
      description: |2
        Deprecated as of vSphere8.0 U3, and there is no replacement for it.
        
        Returns datastore summary performance statistics.
        
        This is an experimental interface that is not intended for
        use in production code.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QueryDatastorePerformanceSummaryRequestType'
      responses:
        '200':
          description: |2
            Summary performance statistics for the datastore. The summary
            contains latency, throughput, and SIOC activity.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/StoragePerformanceSummary'
        '500':
          description: |2
            ***NotFound***: if input datastore cannot be found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFound'

  /StorageResourceManager/{moId}/RecommendDatastores:
    post:
      tags: [StorageResourceManager]
      operationId: StorageResourceManager_RecommendDatastores
      description: |2
        This method returns a *StoragePlacementResult* object.
        This API is intended to replace the following existing APIs for
        SDRS-enabled pods:
        CreateVm: StoragePlacementSpec::type == create =
        *Folder.CreateVM_Task*
        AddDisk: StoragePlacementSpec::type == reconfigure =
        *VirtualMachine.ReconfigVM_Task*
        RelocateVm: StoragePlacementSpec::type == relocate =
        *VirtualMachine.RelocateVM_Task*
        CloneVm: StoragePlacementSpec::type == clone =
        *VirtualMachine.CloneVM_Task*
        The PodSelectionSpec parameter in StoragePlacementSpec is required
        for all workflows. It specifies which SDRS-enabled pod the user
        has selected for the VM and/or for each disk.
        For CreateVm, RelocateVm and CloneVm, PodSelectionSpec.storagePod is
        the user selected SDRS pod for the VM, i.e., its system files.
        For all workflows, PodSelectionSpec.disk.storagePod is the
        user selected SDRS pod for the given disk. Note that a
        DiskLocator must be specified for each disk that the user
        requests to create, migrate or clone into an SDRS pod, even if it's
        the same pod as the VM or the user has manually selected a datastore
        within the pod. If the user has manually selected a datastore, the
        datastore must be specified in the workflow specific fields as
        described below.
        For CreateVm, AddDisk, the manually selected datastore
        must be specified in ConfigSpec.files or
        ConfigSpec.deviceChange.device.backing.datastore, the fields
        should will be unset if the user wants SDRS to recommend the datastore.
        For RelocateVm, the manually selected datastore must be specified in
        RelocateSpec.datastore or RelocateSpec.disk.datastore; the fields should
        be unset iff the user wants SDRS recommendations. For CloneVm, the
        manually selected datastore must be specified in
        CloneSpec.location.datastore or CloneSpec.location.disk\[\].datastore;
        the fields should be unset iff the user wants SDRS recommendations.
        The remaining expected input parameters in StoragePlacementSpec
        will be the same as those for the existing API as determined by
        StoragePlacementSpec::type. If a parameter is optional in the
        existing API, it will also be optional in the new API.
        - For CreateVm, the Folder, ConfigSpec, ResourcePool and HostSystem
          parameters will be expected in StoragePlacementSpec. The disks
          to be created can be determined by ConfigSpec -&gt;
          VirtualDeviceSpec\[\] (deviceChange) -&gt; VirtualDevice (device) -&gt;
          VirtualDisk (subclass).
        - For AddDisk, the VirtualMachine and ConfigSpec parameters will
          be expected. The use of the ConfigSpec for determining the disks
          to add will be the same as that in CreateVm.
        - For ExpandDisk, the VirtualMachine and ConfigSpec parameters will
          be expected. The use of the ConfigSpec for determining the disks
          to be expanded will be the same as the disks IDs of existing VM disks.
        - For RelocateVm, the VirtualMachine, RelocateSpec and
          MovePriority parameters will be expected.
        - For CloneVm, the VirtualMachine, CloneSpec, Folder and cloneName
          parameters will be expected.
          
        SDRS takes into account constraints such as space usages,
        (anti-) affinity rules, datastore maintenance mode, etc. when
        making placement recommendations. Given that the constraints are
        satisfied, SDRS tries to balance space usages and I/O loads in
        the placement.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RecommendDatastoresRequestType'
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StoragePlacementResult'

  /StorageResourceManager/{moId}/RefreshStorageDrsRecommendation:
    post:
      tags: [StorageResourceManager]
      summary: |2
        Make Storage DRS invoke again on the specified pod *StoragePod*
        and return a new list of recommendations.
      operationId: StorageResourceManager_RefreshStorageDrsRecommendation
      description: |2
        Make Storage DRS invoke again on the specified pod *StoragePod*
        and return a new list of recommendations.
        
        Concurrent "refresh" requests
        may be combined together and trigger only one Storage DRS invocation.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RefreshStorageDrsRecommendationRequestType'
      responses:
        '204':
          description: |2
            No Content

  /StorageResourceManager/{moId}/RefreshStorageDrsRecommendationsForPod_Task:
    post:
      tags: [StorageResourceManager]
      summary: |2
        Invoke Storage DRS on a specific pod *StoragePod*
        and return a new list of recommendations.
      operationId: StorageResourceManager_RefreshStorageDrsRecommendationsForPod_Task
      description: |2
        Invoke Storage DRS on a specific pod *StoragePod*
        and return a new list of recommendations.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RefreshStorageDrsRecommendationsForPodRequestType'
      responses:
        '200':
          description: |2
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            Failure
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InvalidArgument'

  /StorageResourceManager/{moId}/ValidateStoragePodConfig:
    post:
      tags: [StorageResourceManager]
      summary: |2
        Validate the new storage DRS configuration for a pod
        *StoragePod*.
      operationId: StorageResourceManager_ValidateStoragePodConfig
      description: |2
        Validate the new storage DRS configuration for a pod
        *StoragePod*.
        
        If validation fails, it will return with InvalidArgument fault.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ValidateStoragePodConfigRequestType'
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                $ref: '#/components/schemas/MethodFault'

  /Task/{moId}/SetTaskDescription:
    post:
      tags: [Task]
      summary: |2
        Updates task description to describe the current phase of the task.
      operationId: Task_SetTaskDescription
      description: |2
        Updates task description to describe the current phase of the task.
        
        ***Required privileges:*** Task.Update
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SetTaskDescriptionRequestType'
      responses:
        '204':
          description: |2
            No Content

  /Task/{moId}/UpdateProgress:
    post:
      tags: [Task]
      summary: |2
        Sets percentage done for this task and recalculates overall
        percentage done.
      operationId: Task_UpdateProgress
      description: |2
        Sets percentage done for this task and recalculates overall
        percentage done.
        
        If a percentDone value of less than zero or
        greater than 100 is specified, a value of zero or 100
        respectively is used.
        
        ***Required privileges:*** Task.Update
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateProgressRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***InvalidState***: If task is not running
            
            ***OutOfBounds***: VirtualCenter 2.x servers throw
            this fault if percentDone is less than 0 or greater than 100. Newer
            versions behave as described above, and never throw this fault.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /Task/{moId}/CancelTask:
    post:
      tags: [Task]
      summary: |2
        Cancels a running or queued task.
      operationId: Task_CancelTask
      description: |2
        Cancels a running or queued task.
        
        A task may only be canceled if it is
        cancelable. Multiple cancel requests will be treated as a single
        cancelation request. Canceling a completed or already canceled task
        will throw an InvalidState exception.
        
        If a task is canceled, its runtime state will be set to error and its
        error state will be set to *RequestCanceled*.
        
        A cancel operation is asynchronous. The operation may return before
        the task is canceled.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***NotSupported***: If the task is not cancelable.
            
            ***InvalidState***: If the task is already canceled or completed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InvalidState'

  /Task/{moId}/setCustomValue:
    post:
      tags: [Task]
      summary: |2
        Assigns a value to a custom field.
      operationId: Task_setCustomValue
      description: |2
        Assigns a value to a custom field.
        
        The setCustomValue method requires
        whichever updatePrivilege is defined as one of the
        *CustomFieldDef.fieldInstancePrivileges*
        for the CustomFieldDef whose value is being changed.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/setCustomValueRequestType'
      responses:
        '204':
          description: |2
            No Content

  /Task/{moId}/SetTaskState:
    post:
      tags: [Task]
      summary: |2
        Sets task state and optionally sets results or fault,
        as appropriate for state
      operationId: Task_SetTaskState
      description: |2
        Sets task state and optionally sets results or fault,
        as appropriate for state
        
        ***Required privileges:*** Task.Update
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SetTaskStateRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***InvalidState***: If attempting to change states after
            task is completed or in error, or attempting to set the
            result or fault incorrectly
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InvalidState'

  /Task/{moId}/availableField:
    get:
      tags: [Task]
      summary: |2
        List of custom field definitions that are valid for the object's type.
      operationId: Task_getAvailableField
      description: |2
        List of custom field definitions that are valid for the object's type.
        
        The fields are sorted by *CustomFieldDef.name*.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/CustomFieldDef'

  /Task/{moId}/info:
    get:
      tags: [Task]
      summary: |2
        Detailed information about this task.
      operationId: Task_getInfo
      description: |2
        Detailed information about this task.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TaskInfo'

  /Task/{moId}/value:
    get:
      tags: [Task]
      summary: |2
        List of custom field values.
      operationId: Task_getValue
      description: |2
        List of custom field values.
        
        Each value uses a key to associate
        an instance of a *CustomFieldStringValue* with
        a custom field definition.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/CustomFieldValue'

  /TaskHistoryCollector/{moId}/ReadNextTasks:
    post:
      tags: [TaskHistoryCollector]
      summary: |2
        Reads the 'scrollable view' from the current position.
      operationId: TaskHistoryCollector_ReadNextTasks
      description: |2
        Reads the 'scrollable view' from the current position.
        
        The scrollable
        position is moved to the next newer page after the read. No item is
        returned when the end of the collector is reached.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ReadNextTasksRequestType'
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/TaskInfo'

  /TaskHistoryCollector/{moId}/ReadPreviousTasks:
    post:
      tags: [TaskHistoryCollector]
      summary: |2
        Reads the 'scrollable view' from the current position.
      operationId: TaskHistoryCollector_ReadPreviousTasks
      description: |2
        Reads the 'scrollable view' from the current position.
        
        The scrollable
        position is then moved to the next older page after the read. No item is
        returned when the head of the collector is reached.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ReadPreviousTasksRequestType'
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/TaskInfo'

  /TaskHistoryCollector/{moId}/DestroyCollector:
    post:
      tags: [TaskHistoryCollector]
      summary: |2
        Destroys this collector.
      operationId: TaskHistoryCollector_DestroyCollector
      description: |2
        Destroys this collector.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '204':
          description: |2
            No Content

  /TaskHistoryCollector/{moId}/ResetCollector:
    post:
      tags: [TaskHistoryCollector]
      summary: |2
        Moves the "scrollable view" to the item immediately preceding the
        "viewable latest page".
      operationId: TaskHistoryCollector_ResetCollector
      description: |2
        Moves the "scrollable view" to the item immediately preceding the
        "viewable latest page".
        
        If you use "readPrev",
        *ReadPreviousTasks* or
        *ReadPreviousEvents*,
        all items
        are retrieved from the newest item to the oldest item.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '204':
          description: |2
            No Content

  /TaskHistoryCollector/{moId}/RewindCollector:
    post:
      tags: [TaskHistoryCollector]
      summary: |2
        Moves the "scrollable view" to the oldest item.
      operationId: TaskHistoryCollector_RewindCollector
      description: |2
        Moves the "scrollable view" to the oldest item.
        
        If you use
        *ReadNextTasks* or
        *ReadNextEvents*,
        all items are retrieved from the oldest item to the newest item. This
        is the default setting when the collector is created.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '204':
          description: |2
            No Content

  /TaskHistoryCollector/{moId}/SetCollectorPageSize:
    post:
      tags: [TaskHistoryCollector]
      summary: |2
        Sets the "viewable latest page" size to contain at most the
        number of items specified by the maxCount parameter).
      operationId: TaskHistoryCollector_SetCollectorPageSize
      description: |2
        Sets the "viewable latest page" size to contain at most the
        number of items specified by the maxCount parameter).
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SetCollectorPageSizeRequestType'
      responses:
        '204':
          description: |2
            No Content

  /TaskHistoryCollector/{moId}/filter:
    get:
      tags: [TaskHistoryCollector]
      summary: |2
        The filter used to create this collector.
      operationId: TaskHistoryCollector_getFilter
      description: |2
        The filter used to create this collector.
        
        The type of the returned filter is determined by the managed object
        for which the collector is created.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Any'

  /TaskHistoryCollector/{moId}/latestPage:
    get:
      tags: [TaskHistoryCollector]
      summary: |2
        The items in the 'viewable latest page'.
      operationId: TaskHistoryCollector_getLatestPage
      description: |2
        The items in the 'viewable latest page'.
        
        As new tasks that match the
        collector's *TaskFilterSpec* are created, they are added to this
        page, and the oldest tasks are removed from the collector to keep the
        size of the page to that allowed by
        *HistoryCollector.SetCollectorPageSize*.
        
        The "oldest task" is the one with the oldest creation time. The
        tasks in the returned page are unordered.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/TaskInfo'

  /TaskManager/{moId}/CreateCollectorForTasks:
    post:
      tags: [TaskManager]
      summary: |2
        Creates a *TaskHistoryCollector*, a
        specialized *HistoryCollector* that gathers
        *TaskInfo* data objects.
      operationId: TaskManager_CreateCollectorForTasks
      description: |2
        Creates a *TaskHistoryCollector*, a
        specialized *HistoryCollector* that gathers
        *TaskInfo* data objects.
        
        A *TaskHistoryCollector* does not persist
        beyond the current client session.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateCollectorForTasksRequestType'
      responses:
        '200':
          description: |2
            The task collector based on the filter.
            
            Refers instance of *TaskHistoryCollector*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***InvalidArgument***: if the filter is null or unknown.
            
            ***InvalidState***: if there are more than the maximum number of
            task collectors.
            
            ***NotSupported***: if called directly on a host.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InvalidState'

  /TaskManager/{moId}/CreateCollectorWithInfoFilterForTasks:
    post:
      tags: [TaskManager]
      summary: |2
        Creates a *TaskHistoryCollector*, a
        specialized *HistoryCollector* that gathers
        *TaskInfo* data objects.
      operationId: TaskManager_CreateCollectorWithInfoFilterForTasks
      description: |2
        Creates a *TaskHistoryCollector*, a
        specialized *HistoryCollector* that gathers
        *TaskInfo* data objects.
        
        A *TaskHistoryCollector* does not persist
        beyond the current client session.
        
        ***Since:*** vSphere API Release 8.0.3.0
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateCollectorWithInfoFilterForTasksRequestType'
      responses:
        '200':
          description: |2
            The task collector based on the filter.
            
            Refers instance of *TaskHistoryCollector*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***InvalidArgument***: if the filter is null or unknown.
            
            ***InvalidState***: if there are more than the maximum number of
            task collectors.
            
            ***NotSupported***: if called directly on a host.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InvalidState'

  /TaskManager/{moId}/CreateTask:
    post:
      tags: [TaskManager]
      summary: |2
        Creates a new *Task*, specifying the object with which
        the *Task* is associated, the type of task,
        and whether the task is cancelable.
      operationId: TaskManager_CreateTask
      description: |2
        Creates a new *Task*, specifying the object with which
        the *Task* is associated, the type of task,
        and whether the task is cancelable.
        
        Use this operation in conjunction
        with the *ExtensionManager*.
        
        ***Required privileges:*** Task.Create
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateTaskRequestType'
      responses:
        '200':
          description: |2
            *TaskInfo* data object describing the new task
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TaskInfo'

  /TaskManager/{moId}/description:
    get:
      tags: [TaskManager]
      summary: |2
        Locale-specific, static strings that describe *Task*
        information to users.
      operationId: TaskManager_getDescription
      description: |2
        Locale-specific, static strings that describe *Task*
        information to users.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TaskDescription'

  /TaskManager/{moId}/maxCollector:
    get:
      tags: [TaskManager]
      summary: |2
        Maximum number of *TaskHistoryCollector*
        data objects that can exist concurrently, per client.
      operationId: TaskManager_getMaxCollector
      description: |2
        Maximum number of *TaskHistoryCollector*
        data objects that can exist concurrently, per client.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                type: integer
                format: int32

  /TaskManager/{moId}/recentTask:
    get:
      tags: [TaskManager]
      summary: |2
        A list of *Task* managed objects that completed recently,
        that are currently running, or that are queued to run.
      operationId: TaskManager_getRecentTask
      description: |2
        A list of *Task* managed objects that completed recently,
        that are currently running, or that are queued to run.
        
        The list contains only *Task* objects that the client
        has permission to access, which is determined by having permission to
        access the *Task* object's managed *entity*.
        
        The completed *Task* objects by default include only
        *Task* objects that completed within the past 10 minutes.
        When connected to vCenter Server, there is an additional default limitation
        that each of the completed *Task* objects in this list is one
        of the last 200 completed *Task* objects.
        
        This property should not be used for tracking *Task*
        completion. Generally, a *ListView* is a better way to
        monitor a specific set of *Task* objects.
        In releases after vSphere API 5.0, vSphere Servers might not
        generate property collector update notifications for this property.
        To obtain the latest value of the property, you can use
        PropertyCollector methods RetrievePropertiesEx or WaitForUpdatesEx.
        If you use the PropertyCollector.WaitForUpdatesEx method, specify
        an empty string for the version parameter. Any other version value will not
        produce any property values as no updates are generated.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            Refers instances of *Task*.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/ManagedObjectReference'

  /TenantTenantManager/{moId}/MarkServiceProviderEntities:
    post:
      tags: [TenantTenantManager]
      summary: |2
        Define a set of ManagedEntity objects as used for tenant management.
      operationId: TenantTenantManager_MarkServiceProviderEntities
      description: |2
        Define a set of ManagedEntity objects as used for tenant management.
        
        Those entities are a starting point of an inventory hierarchy
        (sub-tree) that functionally exists in the tenant's inventory but are
        owned by the system user of the vCenter Server.
        The operations which the tenant may perform on these objects depend
        on the permissions granted to the tenant by the SaaS provisioning
        layer.
        Permissions that the tenant may create on the parent objects of the
        management entities do not propagate to the hierarchies of
        management entities and thus have no effect on them.
        This operation will fail for all the entities if any of them does
        not exist.
        The method behaviour is transactional - either all entities are
        marked or none if an error occurs while processing them.
        The user calling this method should hold TenantManager.Update on the
        root folder and TenantManager.Update on each entity currently
        being marked as a service provider one. These are strict privilege
        requirements allowing only administrators to call the method.
        
        ***Required privileges:*** TenantManager.Update
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MarkServiceProviderEntitiesRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***ManagedObjectNotFound***: if any of the entities doesn't exist.
            
            ***AuthMinimumAdminPermission***: if this change will leave the
            system with no Administrator permission on the root folder
            of the service provider inventory.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MethodFault'

  /TenantTenantManager/{moId}/RetrieveServiceProviderEntities:
    post:
      tags: [TenantTenantManager]
      summary: |2
        Retrieves the list of tenant management entities.
      operationId: TenantTenantManager_RetrieveServiceProviderEntities
      description: |2
        Retrieves the list of tenant management entities.
        
        ***Required privileges:*** TenantManager.Query
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            the array of tenant management resources.
            
            Refers instances of *ManagedEntity*.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/ManagedObjectReference'

  /TenantTenantManager/{moId}/UnmarkServiceProviderEntities:
    post:
      tags: [TenantTenantManager]
      summary: |2
        Resets the management type of an array of ManagedEntity objects.
      operationId: TenantTenantManager_UnmarkServiceProviderEntities
      description: |2
        Resets the management type of an array of ManagedEntity objects.
        
        This operation will fail if any of the entities does not exist.
        The method behaviour is transactional - either all entities are
        unmarked or none if an error occurs while processing them.
        The user calling this method should hold TenantManager.Update on the
        root folder and TenantManager.Update on each entity currently
        being unmarked as a service provider one. These are strict privilege
        requirements allowing only administrators to call the method.
        
        ***Required privileges:*** TenantManager.Update
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UnmarkServiceProviderEntitiesRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***ManagedObjectNotFound***: if any of the entities doesn't exist.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectNotFound'

  /UserDirectory/{moId}/RetrieveUserGroups:
    post:
      tags: [UserDirectory]
      summary: |2
        Returns a list of *UserSearchResult* objects describing the
        users and groups defined for the server.
      operationId: UserDirectory_RetrieveUserGroups
      description: |2
        Returns a list of *UserSearchResult* objects describing the
        users and groups defined for the server.
        - On Windows, the search for users and groups is restricted to
          the given domain. If you omit the domain argument, then
          the search is performed on local users and groups.
        - On ESX Server (or Linux systems), the method returns the list
          of users and groups that are specified in the /etc/passwd file.
          If the password file contains Sun NIS or NIS+ users and groups,
          the returned list includes information about those as well.
          
        You must hold the Authorization.ModifyPermissions privilege to invoke this
        method. If you hold the privilege on any ManagedEntity, you will
        have access to user and group information for the server.
        
        As of vSphere API 5.1:
        - Local user groups on ESXi are not supported and this method will
          not return information about local groups on the ESXi host.
          Information about Active Directory groups is not affected.
        - Some special system users on ESXi like 'nfsnobody' and 'daemon'
          will be filtered out by this method.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RetrieveUserGroupsRequestType'
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/UserSearchResult'
        '500':
          description: |2
            ***NotSupported***: If you specify a domain for systems that do not support
            domains, such as an ESX Server. The method also throws
            NotSupported if you specify membership (belongsToGroup or
            belongsToUser) and the server does not support
            by-membership queries.
            
            ***NotFound***: If any of the domain, belongsToGroup, or belongsToUser
            arguments refer to entities that do not exist.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFound'

  /UserDirectory/{moId}/domainList:
    get:
      tags: [UserDirectory]
      summary: |2
        List of Windows domains available for user searches, if the underlying
        system supports windows domain membership.
      operationId: UserDirectory_getDomainList
      description: |2
        List of Windows domains available for user searches, if the underlying
        system supports windows domain membership.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  type: string

  /VStorageObjectManagerBase/{moId}/VStorageObjectCreateSnapshotEx_Task:
    post:
      tags: [VStorageObjectManagerBase]
      summary: |2
        Creates a snapshot of a given VStorageObject.
      operationId: VStorageObjectManagerBase_VStorageObjectCreateSnapshotEx_Task
      description: |2
        Creates a snapshot of a given VStorageObject.
        
        Requires Datastore.FileManagement privilege.
        
        ***Since:*** vSphere API Release 8.0.2.0
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VStorageObjectCreateSnapshotExRequestType'
      responses:
        '200':
          description: |2
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***FileFault***: If an error occurs while snapshotting the virtual
            storage object.
            
            ***InvalidDatastore***: If the operation cannot be performed on the
            datastore.
            
            ***InvalidState***: If the operation cannot be performed on the disk.
            
            ***NotFound***: If specified virtual storage object cannot be found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /VStorageObjectManagerBase/{moId}/VStorageObjectDeleteSnapshotEx_Task:
    post:
      tags: [VStorageObjectManagerBase]
      summary: |2
        Deletes a given snapshot of a VStorageObject.
      operationId: VStorageObjectManagerBase_VStorageObjectDeleteSnapshotEx_Task
      description: |2
        Deletes a given snapshot of a VStorageObject.
        
        Requires Datastore.FileManagement privilege.
        
        ***Since:*** vSphere API Release 8.0.2.0
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VStorageObjectDeleteSnapshotExRequestType'
      responses:
        '200':
          description: |2
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***FileFault***: If an error occurs while snapshotting the virtual
            storage object.
            
            ***InvalidDatastore***: If the operation cannot be performed on the
            datastore.
            
            ***InvalidState***: If the operation cannot be performed on the disk.
            
            ***NotFound***: If specified virtual storage object cannot be found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /VStorageObjectManagerBase/{moId}/VStorageObjectExtendDiskEx_Task:
    post:
      tags: [VStorageObjectManagerBase]
      summary: |2
        Expand the capacity of a virtual disk, which is a storage object with
        *disk*, to the new
        capacity.
      operationId: VStorageObjectManagerBase_VStorageObjectExtendDiskEx_Task
      description: |2
        Expand the capacity of a virtual disk, which is a storage object with
        *disk*, to the new
        capacity.
        
        If new capacity is smaller than current disk capacity, then
        operation fails due to invalid capacity. If new capacity is greater
        than current disk capacity, then operation proceeds. If new capacity
        is equal to current disk ccapcity, then operation succeeds without
        any actual extension.
        The extended disk region will be the same as the original disk:
        \- For a zerothick disk, the extended disk region will be zeroedthick.
        \- For an eagerzerothick disk, the extended disk region will be
        eagerzeroedthick
        \- A thin-provisioned disk will always be extended as a thin-provisioned
        disk.
        
        ***Since:*** vSphere API Release 8.0.2.0
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VStorageObjectExtendDiskExRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to
            monitor the operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***FileFault***: If an error occurs while extending the virtual disk.
            
            ***NotFound***: If the specified virtual storage object cannot be
            found.
            
            ***InvalidDatastore***: If the operation cannot be performed on the
            datastore.
            
            ***InvalidState***: If the operation cannot be performed on the disk.
            The disk may be consumed and cannot be extended.
            
            ***TaskInProgress***: If the virtual storage object is busy.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /VStorageObjectManagerBase/{moId}/RenameVStorageObjectEx:
    post:
      tags: [VStorageObjectManagerBase]
      summary: |2
        Rename a virtual storage object.
      operationId: VStorageObjectManagerBase_RenameVStorageObjectEx
      description: |2
        Rename a virtual storage object.
        
        ***Since:*** vSphere API Release 8.0.2.0
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RenameVStorageObjectExRequestType'
      responses:
        '200':
          description: |2
            The vclock info of this operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/vslmVClockInfo'
        '500':
          description: |2
            ***FileFault***: If an error occurs while renaming the virtual storage
            object.
            
            ***NotFound***: If the specified virtual storage object cannot be
            found.
            
            ***InvalidDatastore***: If the operation cannot be performed on the
            datastore.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /VStorageObjectManagerBase/{moId}/RevertVStorageObjectEx_Task:
    post:
      tags: [VStorageObjectManagerBase]
      summary: |2
        Reverts to a given snapshot of a VStorageObject.
      operationId: VStorageObjectManagerBase_RevertVStorageObjectEx_Task
      description: |2
        Reverts to a given snapshot of a VStorageObject.
        
        This operation is supported on detached VirtualDisks
        During revert all the snapshots which were taken after the specified
        snapshot would get deleted.
        
        E.g. Consider Disk with 4 snapshots
        
        BaseDisk -&gt; Snap-2 -&gt; Snap-3 -&gt; Snap-4 -&gt; Running-Point
        
        If user chooses to revert to snap-2 then snap-4 and snap-3 would also
        be deleted. After revert operation disk would have below configuration:
        
        BaseDisk -&gt; Snap-2 -&gt; Running-Point
        
        Requires Datastore.FileManagement privilege.
        
        ***Since:*** vSphere API Release 8.0.2.0
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RevertVStorageObjectExRequestType'
      responses:
        '200':
          description: |2
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***FileFault***: If an error occurs while snapshotting the virtual
            storage object.
            
            ***InvalidDatastore***: If the operation cannot be performed on the
            datastore.
            
            ***InvalidState***: If the operation cannot be performed on the disk.
            
            ***NotFound***: If specified virtual storage object cannot be found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /VcenterVStorageObjectManager/{moId}/RevertVStorageObject_Task:
    post:
      tags: [VcenterVStorageObjectManager]
      summary: |2
        Reverts to a given snapshot of a VStorageObject.
      operationId: VcenterVStorageObjectManager_RevertVStorageObject_Task
      description: |2
        Reverts to a given snapshot of a VStorageObject.
        
        This operation is supported on detached VirtualDisks
        During revert all the snapshots which were taken after the specified
        snapshot would get deleted.
        
        E.g. Consider Disk with 4 snapshots
        
        BaseDisk -&gt; Snap-2 -&gt; Snap-3 -&gt; Snap-4 -&gt; Running-Point
        
        If user chooses to revert to snap-2 then snap-4 and snap-3 would also
        be deleted. After revert operation disk would have below configuration:
        
        BaseDisk -&gt; Snap-2 -&gt; Running-Point
        
        Requires Datastore.FileManagement privilege.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RevertVStorageObjectRequestType'
      responses:
        '200':
          description: |2
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***FileFault***: If an error occurs while snapshotting the virtual
            storage object.
            
            ***InvalidDatastore***: If the operation cannot be performed on the
            datastore.
            
            ***InvalidState***: If the operation cannot be performed on the disk.
            
            ***NotFound***: If specified virtual storage object cannot be found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /VcenterVStorageObjectManager/{moId}/AttachTagToVStorageObject:
    post:
      tags: [VcenterVStorageObjectManager]
      summary: |2
        Attach a tag to a virtual storage object.
      operationId: VcenterVStorageObjectManager_AttachTagToVStorageObject
      description: |2
        Attach a tag to a virtual storage object.
        
        Requires privilege InventoryService.Tagging.AttachTag on root folder
        
        ***Required privileges:*** System.Read
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AttachTagToVStorageObjectRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***NotFound***: If the specified category or tag cannot be found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFound'

  /VcenterVStorageObjectManager/{moId}/ClearVStorageObjectControlFlags:
    post:
      tags: [VcenterVStorageObjectManager]
      summary: |2
        Clear control flags on VStorageObject.
      operationId: VcenterVStorageObjectManager_ClearVStorageObjectControlFlags
      description: |2
        Clear control flags on VStorageObject.
        
        The control flags are defined in
        *vslmVStorageObjectControlFlag_enum*.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ClearVStorageObjectControlFlagsRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***InvalidDatastore***: If the operation cannot be performed on
            the datastore.
            
            ***InvalidState***: If the operation cannot be performed on the disk.
            The disk may be consumed.
            
            ***NotFound***: If specified virtual storage object cannot
            be found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /VcenterVStorageObjectManager/{moId}/CloneVStorageObject_Task:
    post:
      tags: [VcenterVStorageObjectManager]
      summary: |2
        Clone a virtual storage object.
      operationId: VcenterVStorageObjectManager_CloneVStorageObject_Task
      description: |2
        Clone a virtual storage object.
        
        Requires Datastore.FileManagement privilege on both source and
        destination datastore.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CloneVStorageObjectRequestType'
      responses:
        '200':
          description: |2
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***FileFault***: If an error occurs while cloning the virtual
            storage object.
            
            ***InvalidDatastore***: If the operation cannot be performed on the
            datastore.
            
            ***NotFound***: If specified virtual storage object cannot be
            found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /VcenterVStorageObjectManager/{moId}/CreateDisk_Task:
    post:
      tags: [VcenterVStorageObjectManager]
      summary: |2
        Create a virtual disk, which is a storage object with
        *disk*
        as consumption type.
      operationId: VcenterVStorageObjectManager_CreateDisk_Task
      description: |2
        Create a virtual disk, which is a storage object with
        *disk*
        as consumption type.
        
        Requires Datastore.FileManagement privilege on the datastore where the
        virtual disk object is created.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateDiskRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor
            monitor the operation. The *info.result*
            property in the *Task* contains the newly created
            *VStorageObject* upon success.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***FileFault***: If an error occurs when creating the virtual disk.
            
            ***InvalidDatastore***: If the operation cannot be performed on the
            datastore.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /VcenterVStorageObjectManager/{moId}/CreateDiskFromSnapshot_Task:
    post:
      tags: [VcenterVStorageObjectManager]
      summary: |2
        Creates a new Disk from given snapshot of a VStorageObject.
      operationId: VcenterVStorageObjectManager_CreateDiskFromSnapshot_Task
      description: |2
        Creates a new Disk from given snapshot of a VStorageObject.
        
        Requires Datastore.FileManagement privilege.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateDiskFromSnapshotRequestType'
      responses:
        '200':
          description: |2
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***FileFault***: If an error occurs while snapshotting the virtual
            storage object.
            
            ***InvalidDatastore***: If the operation cannot be performed on the
            datastore.
            
            ***InvalidState***: If the operation cannot be performed on the disk.
            
            ***NotFound***: If specified virtual storage object cannot be found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /VcenterVStorageObjectManager/{moId}/VStorageObjectCreateSnapshot_Task:
    post:
      tags: [VcenterVStorageObjectManager]
      summary: |2
        Creates a snapshot of a given VStorageObject.
      operationId: VcenterVStorageObjectManager_VStorageObjectCreateSnapshot_Task
      description: |2
        Creates a snapshot of a given VStorageObject.
        
        Requires Datastore.FileManagement privilege.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VStorageObjectCreateSnapshotRequestType'
      responses:
        '200':
          description: |2
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***FileFault***: If an error occurs while snapshotting the virtual
            storage object.
            
            ***InvalidDatastore***: If the operation cannot be performed on the
            datastore.
            
            ***InvalidState***: If the operation cannot be performed on the disk.
            
            ***NotFound***: If specified virtual storage object cannot be found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /VcenterVStorageObjectManager/{moId}/VStorageObjectCreateSnapshotEx_Task:
    post:
      tags: [VcenterVStorageObjectManager]
      summary: |2
        Creates a snapshot of a given VStorageObject.
      operationId: VcenterVStorageObjectManager_VStorageObjectCreateSnapshotEx_Task
      description: |2
        Creates a snapshot of a given VStorageObject.
        
        Requires Datastore.FileManagement privilege.
        
        ***Since:*** vSphere API Release 8.0.2.0
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VStorageObjectCreateSnapshotExRequestType'
      responses:
        '200':
          description: |2
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***FileFault***: If an error occurs while snapshotting the virtual
            storage object.
            
            ***InvalidDatastore***: If the operation cannot be performed on the
            datastore.
            
            ***InvalidState***: If the operation cannot be performed on the disk.
            
            ***NotFound***: If specified virtual storage object cannot be found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /VcenterVStorageObjectManager/{moId}/DeleteSnapshot_Task:
    post:
      tags: [VcenterVStorageObjectManager]
      summary: |2
        Deletes a given snapshot of a VStorageObject.
      operationId: VcenterVStorageObjectManager_DeleteSnapshot_Task
      description: |2
        Deletes a given snapshot of a VStorageObject.
        
        Requires Datastore.FileManagement privilege.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DeleteSnapshotRequestType'
      responses:
        '200':
          description: |2
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***FileFault***: If an error occurs while snapshotting the virtual
            storage object.
            
            ***InvalidDatastore***: If the operation cannot be performed on the
            datastore.
            
            ***InvalidState***: If the operation cannot be performed on the disk.
            
            ***NotFound***: If specified virtual storage object cannot be found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /VcenterVStorageObjectManager/{moId}/VStorageObjectDeleteSnapshotEx_Task:
    post:
      tags: [VcenterVStorageObjectManager]
      summary: |2
        Deletes a given snapshot of a VStorageObject.
      operationId: VcenterVStorageObjectManager_VStorageObjectDeleteSnapshotEx_Task
      description: |2
        Deletes a given snapshot of a VStorageObject.
        
        Requires Datastore.FileManagement privilege.
        
        ***Since:*** vSphere API Release 8.0.2.0
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VStorageObjectDeleteSnapshotExRequestType'
      responses:
        '200':
          description: |2
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***FileFault***: If an error occurs while snapshotting the virtual
            storage object.
            
            ***InvalidDatastore***: If the operation cannot be performed on the
            datastore.
            
            ***InvalidState***: If the operation cannot be performed on the disk.
            
            ***NotFound***: If specified virtual storage object cannot be found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /VcenterVStorageObjectManager/{moId}/DeleteVStorageObject_Task:
    post:
      tags: [VcenterVStorageObjectManager]
      summary: |2
        Delete a virtual storage object and its associated backings.
      operationId: VcenterVStorageObjectManager_DeleteVStorageObject_Task
      description: |2
        Delete a virtual storage object and its associated backings.
        
        Requires Datastore.FileManagement privilege on the datastore where the
        virtual storage object is located.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DeleteVStorageObjectRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to
            monitor the operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***FileFault***: If an error occurs when deleting the virtual storage
            object.
            
            ***NotFound***: If the specified virtual storage object cannot be
            found.
            
            ***InvalidDatastore***: If the operation cannot be performed on the
            datastore.
            
            ***InvalidState***: If the operation cannot be performed on the disk.
            The disk may be consumed and cannot be deleted.
            
            ***TaskInProgress***: If the virtual storage object is busy.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /VcenterVStorageObjectManager/{moId}/DeleteVStorageObjectEx_Task:
    post:
      tags: [VcenterVStorageObjectManager]
      summary: |2
        Delete a virtual storage object and its associated backings.
      operationId: VcenterVStorageObjectManager_DeleteVStorageObjectEx_Task
      description: |2
        Delete a virtual storage object and its associated backings.
        
        Returns
        the corresponding vclock upon succeess.
        
        Requires Datastore.FileManagement privilege on the datastore where the
        virtual storage object is located.
        
        ***Since:*** vSphere API Release 7.0.2.0
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DeleteVStorageObjectExRequestType'
      responses:
        '200':
          description: |2
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***FileFault***: If an error occurs when deleting the virtual storage
            object.
            
            ***NotFound***: If the specified virtual storage object cannot be
            found.
            
            ***InvalidDatastore***: If the operation cannot be performed on the
            datastore.
            
            ***InvalidState***: If the operation cannot be performed on the disk.
            The disk may be consumed and cannot be deleted.
            
            ***TaskInProgress***: If the virtual storage object is busy.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /VcenterVStorageObjectManager/{moId}/DetachTagFromVStorageObject:
    post:
      tags: [VcenterVStorageObjectManager]
      summary: |2
        Detach a tag from a virtual storage object.
      operationId: VcenterVStorageObjectManager_DetachTagFromVStorageObject
      description: |2
        Detach a tag from a virtual storage object.
        
        Requires privilege InventoryService.Tagging.AttachTag on root folder
        
        ***Required privileges:*** System.Read
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DetachTagFromVStorageObjectRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***NotFound***: If the specified category or tag cannot be found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFound'

  /VcenterVStorageObjectManager/{moId}/ExtendDisk_Task:
    post:
      tags: [VcenterVStorageObjectManager]
      summary: |2
        Expand the capacity of a virtual disk, which is a storage object with
        *disk*, to the new
        capacity.
      operationId: VcenterVStorageObjectManager_ExtendDisk_Task
      description: |2
        Expand the capacity of a virtual disk, which is a storage object with
        *disk*, to the new
        capacity.
        
        If new capacity is smaller than current disk capacity, then
        operation fails due to invalid capacity. If new capacity is greater
        than current disk capacity, then operation proceeds. If new capacity
        is equal to current disk ccapcity, then operation succeeds without
        any actual extension.
        The extended disk region will be the same as the original disk:
        \- For a zerothick disk, the extended disk region will be zeroedthick.
        \- For an eagerzerothick disk, the extended disk region will be
        eagerzeroedthick
        \- A thin-provisioned disk will always be extended as a thin-provisioned
        disk.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ExtendDiskRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to
            monitor the operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***FileFault***: If an error occurs while extending the virtual disk.
            
            ***NotFound***: If the specified virtual storage object cannot be
            found.
            
            ***InvalidDatastore***: If the operation cannot be performed on the
            datastore.
            
            ***InvalidState***: If the operation cannot be performed on the disk.
            The disk may be consumed and cannot be extended.
            
            ***TaskInProgress***: If the virtual storage object is busy.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /VcenterVStorageObjectManager/{moId}/VStorageObjectExtendDiskEx_Task:
    post:
      tags: [VcenterVStorageObjectManager]
      summary: |2
        Expand the capacity of a virtual disk, which is a storage object with
        *disk*, to the new
        capacity.
      operationId: VcenterVStorageObjectManager_VStorageObjectExtendDiskEx_Task
      description: |2
        Expand the capacity of a virtual disk, which is a storage object with
        *disk*, to the new
        capacity.
        
        If new capacity is smaller than current disk capacity, then
        operation fails due to invalid capacity. If new capacity is greater
        than current disk capacity, then operation proceeds. If new capacity
        is equal to current disk ccapcity, then operation succeeds without
        any actual extension.
        The extended disk region will be the same as the original disk:
        \- For a zerothick disk, the extended disk region will be zeroedthick.
        \- For an eagerzerothick disk, the extended disk region will be
        eagerzeroedthick
        \- A thin-provisioned disk will always be extended as a thin-provisioned
        disk.
        
        ***Since:*** vSphere API Release 8.0.2.0
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VStorageObjectExtendDiskExRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to
            monitor the operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***FileFault***: If an error occurs while extending the virtual disk.
            
            ***NotFound***: If the specified virtual storage object cannot be
            found.
            
            ***InvalidDatastore***: If the operation cannot be performed on the
            datastore.
            
            ***InvalidState***: If the operation cannot be performed on the disk.
            The disk may be consumed and cannot be extended.
            
            ***TaskInProgress***: If the virtual storage object is busy.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /VcenterVStorageObjectManager/{moId}/InflateDisk_Task:
    post:
      tags: [VcenterVStorageObjectManager]
      summary: |2
        Inflate a sparse or thin-provisioned virtual disk up to the full size.
      operationId: VcenterVStorageObjectManager_InflateDisk_Task
      description: |2
        Inflate a sparse or thin-provisioned virtual disk up to the full size.
        
        Additional space allocated to the disk as a result of this operation
        will be filled with zeros.
        
        Currently inflateDisk API only supports the following combinations:
        Valid provisioning type: THIN;
        Valid Datastore: VMFS, NFS.
        Inflating a disk is not applicable for VVol/VSAN datastore.
        
        Requires Datastore.FileManagement privilege on the datastore where the
        virtual storage object is located.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/InflateDiskRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to
            monitor the operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***FileFault***: If an error occurs while inflating the virtual disk.
            
            ***NotFound***: If the specified virtual storage object cannot be
            found.
            
            ***InvalidDatastore***: If the operation cannot be performed on the
            datastore.
            
            ***InvalidState***: If the operation cannot be performed on the disk.
            The disk may be consumed and cannot be extended.
            
            ***TaskInProgress***: If the virtual storage object is busy.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /VcenterVStorageObjectManager/{moId}/ListTagsAttachedToVStorageObject:
    post:
      tags: [VcenterVStorageObjectManager]
      summary: |2
        Lists all tags attached to virtual storage object.
      operationId: VcenterVStorageObjectManager_ListTagsAttachedToVStorageObject
      description: |2
        Lists all tags attached to virtual storage object.
        
        ***Required privileges:*** System.Read
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ListTagsAttachedToVStorageObjectRequestType'
      responses:
        '200':
          description: |2
            The list of Tag-association tuples associated with the
            virtual storage object.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/VslmTagEntry'
        '500':
          description: |2
            ***NotFound***: If the specified category or tag cannot be found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFound'

  /VcenterVStorageObjectManager/{moId}/ListVStorageObject:
    post:
      tags: [VcenterVStorageObjectManager]
      summary: |2
        List all virtual storage objects located on a datastore.
      operationId: VcenterVStorageObjectManager_ListVStorageObject
      description: |2
        List all virtual storage objects located on a datastore.
        
        Requires Datastore.FileManagement privilege on the datastore where the
        virtual storage object is located.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ListVStorageObjectRequestType'
      responses:
        '200':
          description: |2
            The list of IDs of the virtual storage objects located on the
            datastore.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/ID'
        '500':
          description: |2
            ***InvalidDatastore***: If the operation cannot be performed on the
            datastore, such as datastore cannot be found or
            is inaccessible.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InvalidDatastore'

  /VcenterVStorageObjectManager/{moId}/ListVStorageObjectsAttachedToTag:
    post:
      tags: [VcenterVStorageObjectManager]
      summary: |2
        Lists all virtual storage objects attached to the tag.
      operationId: VcenterVStorageObjectManager_ListVStorageObjectsAttachedToTag
      description: |2
        Lists all virtual storage objects attached to the tag.
        
        ***Required privileges:*** System.Read
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ListVStorageObjectsAttachedToTagRequestType'
      responses:
        '200':
          description: |2
            The list of IDs of the virtual storage objects.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/ID'
        '500':
          description: |2
            ***NotFound***: If the specified category or tag cannot be found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFound'

  /VcenterVStorageObjectManager/{moId}/VstorageObjectVCenterQueryChangedDiskAreas:
    post:
      tags: [VcenterVStorageObjectManager]
      summary: |2
        Get a list of areas of a virtual disk that have been modified since a
        well-defined point in the past.
      operationId: VcenterVStorageObjectManager_VstorageObjectVCenterQueryChangedDiskAreas
      description: |2
        Get a list of areas of a virtual disk that have been modified since a
        well-defined point in the past.
        
        The beginning of the change interval is
        identified by "changeId", while the end of the change interval is implied
        by the snapshot ID passed in.
        
        Note that the result of this function may contain "false positives"
        (i.e: flag areas of the disk as modified that are not). However, it is
        guaranteed that no changes will be missed.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VstorageObjectVCenterQueryChangedDiskAreasRequestType'
      responses:
        '200':
          description: |2
            Returns a data structure specifying extents of the virtual disk
            that have changed since the thime the changeId string was
            obtained.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DiskChangeInfo'
        '500':
          description: |2
            ***InvalidDatastore***: If the operation cannot be performed on the
            datastore.
            
            ***NotFound***: If specified virtual storage object or snapshot
            cannot be found.
            
            ***FileFault***: if the virtual disk files cannot be accessed/queried.
            
            ***InvalidState***: if change tracking is not supported for this
            particular disk.
            
            ***InvalidArgument***: if startOffset is beyond the end of the virtual
            disk or changeId is invalid.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MethodFault'

  /VcenterVStorageObjectManager/{moId}/QueryVirtualDiskUuidEx:
    post:
      tags: [VcenterVStorageObjectManager]
      summary: |2
        Get the virtual disk UUID.
      operationId: VcenterVStorageObjectManager_QueryVirtualDiskUuidEx
      description: |2
        Get the virtual disk UUID.
        
        The datacenter parameter may be omitted if a URL is used to name the disk.
        A URL has the form
        > _scheme_://_authority_/folder/_path_?dcPath=_dcPath_&amp;dsName=_dsName_
        
        where
        - _scheme_ is <code>http</code> or <code>https</code>.
        - _authority_ specifies the hostname or IP address of the VirtualCenter or
          ESX server and optionally the port.
        - _dcPath_ is the inventory path to the Datacenter containing the
          Datastore.
        - _dsName_ is the name of the Datastore.
        - _path_ is a slash-delimited path from the root of the datastore.
        
        ***Since:*** vSphere API Release 8.0.3.0
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QueryVirtualDiskUuidExRequestType'
      responses:
        '200':
          description: |2
            The hex representation of the unique ID for this virtual disk.
          content:
            application/json:
              schema:
                type: string
        '500':
          description: |2
            ***FileFault***: if an error occurs reading the virtual disk.
            
            ***InvalidDatastore***: if the operation cannot be performed on the datastore.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /VcenterVStorageObjectManager/{moId}/ReconcileDatastoreInventory_Task:
    post:
      tags: [VcenterVStorageObjectManager]
      summary: |2
        Reconcile the datastore inventory info of virtual storage objects.
      operationId: VcenterVStorageObjectManager_ReconcileDatastoreInventory_Task
      description: |2
        Reconcile the datastore inventory info of virtual storage objects.
        
        Requires Datastore.FileManagement privilege.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ReconcileDatastoreInventoryRequestType'
      responses:
        '200':
          description: |2
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***InvalidDatastore***: If the operation cannot be performed on
            the datastore.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /VcenterVStorageObjectManager/{moId}/RegisterDisk:
    post:
      tags: [VcenterVStorageObjectManager]
      summary: |2
        Promote a virtual disk to a First Class Disk.
      operationId: VcenterVStorageObjectManager_RegisterDisk
      description: |2
        Promote a virtual disk to a First Class Disk.
        
        Requires Datastore.FileManagement privilege on the datastore where the
        virtual disk resides.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RegisterDiskRequestType'
      responses:
        '200':
          description: |2
            The registered virtual storage object for the disk.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VStorageObject'
        '500':
          description: |2
            ***FileFault***: If an error occurs while registering the virtual disk.
            
            ***InvalidDatastore***: If datastore cannot be found or the operation
            cannot be performed on the datastore.
            
            ***AlreadyExists***: If disk is already registered as a
            virtual storage object.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /VcenterVStorageObjectManager/{moId}/RelocateVStorageObject_Task:
    post:
      tags: [VcenterVStorageObjectManager]
      summary: |2
        Relocate a virtual storage object.
      operationId: VcenterVStorageObjectManager_RelocateVStorageObject_Task
      description: |2
        Relocate a virtual storage object.
        
        Requires Datastore.FileManagement privilege on both source and
        destination datastore.
        
        If there is no host that has access to both source and destination datastore,
        then limited number of concurrent relocations are supported. This number is
        set to 10.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RelocateVStorageObjectRequestType'
      responses:
        '200':
          description: |2
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***FileFault***: If an error occurs while relocating the virtual
            storage object.
            
            ***InvalidDatastore***: If the operation cannot be performed on the
            datastore.
            
            ***InvalidState***: If the operation cannot be performed on the disk.
            The disk may be consumed and cannot be relocated.
            
            ***NotFound***: If specified virtual storage object cannot
            be found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /VcenterVStorageObjectManager/{moId}/RenameVStorageObject:
    post:
      tags: [VcenterVStorageObjectManager]
      summary: |2
        Rename a virtual storage object.
      operationId: VcenterVStorageObjectManager_RenameVStorageObject
      description: |2
        Rename a virtual storage object.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RenameVStorageObjectRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***FileFault***: If an error occurs while renaming the virtual storage
            object.
            
            ***NotFound***: If the specified virtual storage object cannot be
            found.
            
            ***InvalidDatastore***: If the operation cannot be performed on the
            datastore.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /VcenterVStorageObjectManager/{moId}/RenameVStorageObjectEx:
    post:
      tags: [VcenterVStorageObjectManager]
      summary: |2
        Rename a virtual storage object.
      operationId: VcenterVStorageObjectManager_RenameVStorageObjectEx
      description: |2
        Rename a virtual storage object.
        
        ***Since:*** vSphere API Release 8.0.2.0
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RenameVStorageObjectExRequestType'
      responses:
        '200':
          description: |2
            The vclock info of this operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/vslmVClockInfo'
        '500':
          description: |2
            ***FileFault***: If an error occurs while renaming the virtual storage
            object.
            
            ***NotFound***: If the specified virtual storage object cannot be
            found.
            
            ***InvalidDatastore***: If the operation cannot be performed on the
            datastore.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /VcenterVStorageObjectManager/{moId}/RetrieveSnapshotDetails:
    post:
      tags: [VcenterVStorageObjectManager]
      summary: |2
        Retrieves snapshot disk details of a given snapshot.
      operationId: VcenterVStorageObjectManager_RetrieveSnapshotDetails
      description: |2
        Retrieves snapshot disk details of a given snapshot.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RetrieveSnapshotDetailsRequestType'
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VStorageObjectSnapshotDetails'
        '500':
          description: |2
            ***FileFault***: If an error occurs while snapshotting the virtual
            storage object.
            
            ***InvalidDatastore***: If the operation cannot be performed on the
            datastore.
            
            ***InvalidState***: If the operation cannot be performed on the disk.
            
            ***NotFound***: If specified virtual storage object cannot be found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /VcenterVStorageObjectManager/{moId}/RetrieveSnapshotInfo:
    post:
      tags: [VcenterVStorageObjectManager]
      summary: |2
        Retrieves snapshot information of a given VStorageObject.
      operationId: VcenterVStorageObjectManager_RetrieveSnapshotInfo
      description: |2
        Retrieves snapshot information of a given VStorageObject.
        
        Requires Datastore.FileManagement privilege.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RetrieveSnapshotInfoRequestType'
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VStorageObjectSnapshotInfo'
        '500':
          description: |2
            ***FileFault***: If an error occurs while snapshotting the virtual
            storage object.
            
            ***InvalidDatastore***: If the operation cannot be performed on the
            datastore.
            
            ***InvalidState***: If the operation cannot be performed on the disk.
            
            ***NotFound***: If specified virtual storage object cannot be found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /VcenterVStorageObjectManager/{moId}/RetrieveVStorageInfrastructureObjectPolicy:
    post:
      tags: [VcenterVStorageObjectManager]
      summary: |2
        Retrieve virtual storage infrastructure object SBPM policy on given
        datastore.
      operationId: VcenterVStorageObjectManager_RetrieveVStorageInfrastructureObjectPolicy
      description: |2
        Retrieve virtual storage infrastructure object SBPM policy on given
        datastore.
        
        Only support VSAN datastore.
        
        Requires Datastore.FileManagement privilege on the datastore where the
        virtual storage infrastructure object is located.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RetrieveVStorageInfrastructureObjectPolicyRequestType'
      responses:
        '200':
          description: |2
            The policy object of virtual storage object.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/vslmInfrastructureObjectPolicy'
        '500':
          description: |2
            ***InvalidDatastore***: If the operation cannot be performed on the
            datastore.
            
            ***InvalidState***: If the operation cannot be performed on the disk.
            
            ***NotFound***: If specified virtual storage object cannot be found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /VcenterVStorageObjectManager/{moId}/RetrieveVStorageObject:
    post:
      tags: [VcenterVStorageObjectManager]
      summary: |2
        Retrieve a virtual storage object.
      operationId: VcenterVStorageObjectManager_RetrieveVStorageObject
      description: |2
        Retrieve a virtual storage object.
        
        Requires Datastore.FileManagement privilege on the datastore where the
        virtual storage object is located.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RetrieveVStorageObjectRequestType'
      responses:
        '200':
          description: |2
            The required virtual storage object.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VStorageObject'
        '500':
          description: |2
            ***FileFault***: If an error occurs when retrieving the virtual object.
            
            ***InvalidDatastore***: If the operation cannot be performed on the
            datastore.
            
            ***NotFound***: If specified virtual storage object cannot be found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /VcenterVStorageObjectManager/{moId}/RetrieveVStorageObjectAssociations:
    post:
      tags: [VcenterVStorageObjectManager]
      summary: |2
        Retrieve vm associations for each virtual storage object in the query.
      operationId: VcenterVStorageObjectManager_RetrieveVStorageObjectAssociations
      description: |2
        Retrieve vm associations for each virtual storage object in the query.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RetrieveVStorageObjectAssociationsRequestType'
      responses:
        '200':
          description: |2
            The list of VStorageObjectVmAssociations which provides virtual
            storage object id to vm associations mapping.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/VStorageObjectAssociations'

  /VcenterVStorageObjectManager/{moId}/RetrieveVStorageObjectState:
    post:
      tags: [VcenterVStorageObjectManager]
      summary: |2
        Retrieve a virtual storage object state.
      operationId: VcenterVStorageObjectManager_RetrieveVStorageObjectState
      description: |2
        Retrieve a virtual storage object state.
        
        Requires Datastore.FileManagement privilege on the datastore where the
        virtual storage object is located.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RetrieveVStorageObjectStateRequestType'
      responses:
        '200':
          description: |2
            The required virtual storage object state.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VStorageObjectStateInfo'
        '500':
          description: |2
            ***FileFault***: If an error occurs when retrieving the virtual object
            state.
            
            ***InvalidDatastore***: If the operation cannot be performed on the
            datastore.
            
            ***NotFound***: If specified virtual storage object cannot be found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /VcenterVStorageObjectManager/{moId}/RevertVStorageObjectEx_Task:
    post:
      tags: [VcenterVStorageObjectManager]
      summary: |2
        Reverts to a given snapshot of a VStorageObject.
      operationId: VcenterVStorageObjectManager_RevertVStorageObjectEx_Task
      description: |2
        Reverts to a given snapshot of a VStorageObject.
        
        This operation is supported on detached VirtualDisks
        During revert all the snapshots which were taken after the specified
        snapshot would get deleted.
        
        E.g. Consider Disk with 4 snapshots
        
        BaseDisk -&gt; Snap-2 -&gt; Snap-3 -&gt; Snap-4 -&gt; Running-Point
        
        If user chooses to revert to snap-2 then snap-4 and snap-3 would also
        be deleted. After revert operation disk would have below configuration:
        
        BaseDisk -&gt; Snap-2 -&gt; Running-Point
        
        Requires Datastore.FileManagement privilege.
        
        ***Since:*** vSphere API Release 8.0.2.0
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RevertVStorageObjectExRequestType'
      responses:
        '200':
          description: |2
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***FileFault***: If an error occurs while snapshotting the virtual
            storage object.
            
            ***InvalidDatastore***: If the operation cannot be performed on the
            datastore.
            
            ***InvalidState***: If the operation cannot be performed on the disk.
            
            ***NotFound***: If specified virtual storage object cannot be found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /VcenterVStorageObjectManager/{moId}/ScheduleReconcileDatastoreInventory:
    post:
      tags: [VcenterVStorageObjectManager]
      summary: |2
        Schedules reconcile of the inventory info of virtual storage objects on
        one of the hosts that is connected with the datastore.
      operationId: VcenterVStorageObjectManager_ScheduleReconcileDatastoreInventory
      description: |2
        Schedules reconcile of the inventory info of virtual storage objects on
        one of the hosts that is connected with the datastore.
        
        This method just
        schedules the reconcile operation for the nearby future and returns. Note
        that since the reconcile operation will be executed after this method
        already returns the success of this method should not be considered as
        success of the actual reconcile operation.
        
        Requires Datastore.FileManagement privilege.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ScheduleReconcileDatastoreInventoryRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***InvalidDatastore***: If the operation cannot be performed on
            the datastore.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /VcenterVStorageObjectManager/{moId}/SetVStorageObjectControlFlags:
    post:
      tags: [VcenterVStorageObjectManager]
      summary: |2
        Set control flags on VStorageObject.
      operationId: VcenterVStorageObjectManager_SetVStorageObjectControlFlags
      description: |2
        Set control flags on VStorageObject.
        
        The control flags are defined in
        *vslmVStorageObjectControlFlag_enum*.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SetVStorageObjectControlFlagsRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***InvalidDatastore***: If the operation cannot be performed on
            the datastore.
            
            ***InvalidState***: If the operation cannot be performed on the disk.
            The disk may be consumed.
            
            ***NotFound***: If specified virtual storage object cannot
            be found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /VcenterVStorageObjectManager/{moId}/SetVirtualDiskUuidEx_Task:
    post:
      tags: [VcenterVStorageObjectManager]
      summary: |2
        Set the virtual disk Uuid.
      operationId: VcenterVStorageObjectManager_SetVirtualDiskUuidEx_Task
      description: |2
        Set the virtual disk Uuid.
        
        The datacenter parameter may be omitted if a URL is used to name the disk.
        A URL has the form
        > _scheme_://_authority_/folder/_path_?dcPath=_dcPath_&amp;dsName=_dsName_
        
        where
        - _scheme_ is <code>http</code> or <code>https</code>.
        - _authority_ specifies the hostname or IP address of the VirtualCenter or
          ESX server and optionally the port.
        - _dcPath_ is the inventory path to the Datacenter containing the
          Datastore.
        - _dsName_ is the name of the Datastore.
        - _path_ is a slash-delimited path from the root of the datastore.
        
        ***Since:*** vSphere API Release 8.0.3.0
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SetVirtualDiskUuidExRequestType'
      responses:
        '200':
          description: |2
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***FileFault***: if an error occurs updating the virtual disk.
            
            ***InvalidDatastore***: if the operation cannot be performed on the datastore.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /VcenterVStorageObjectManager/{moId}/UpdateVStorageInfrastructureObjectPolicy_Task:
    post:
      tags: [VcenterVStorageObjectManager]
      summary: |2
        Assigns specified SBPM policy to the given virtual storage
        infrastructure object.
      operationId: VcenterVStorageObjectManager_UpdateVStorageInfrastructureObjectPolicy_Task
      description: |2
        Assigns specified SBPM policy to the given virtual storage
        infrastructure object.
        
        Only support VSAN datastore.
        
        Requires Datastore.FileManagement privilege on the datastore where the
        virtual storage infrastructure object is located.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateVStorageInfrastructureObjectPolicyRequestType'
      responses:
        '200':
          description: |2
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***InvalidDatastore***: If the operation cannot be performed on the
            datastore.
            
            ***InvalidState***: If there is issue with profile spec.
            
            ***NotFound***: If specified virtual storage object cannot be found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /VcenterVStorageObjectManager/{moId}/UpdateVStorageObjectCrypto_Task:
    post:
      tags: [VcenterVStorageObjectManager]
      summary: |2
        Update the crypto on a virtual storage object.
      operationId: VcenterVStorageObjectManager_UpdateVStorageObjectCrypto_Task
      description: |2
        Update the crypto on a virtual storage object.
        
        This is also intended for disk encryption, decryption and re-encryption.
        To encrypt the disk, profile must contain an encryption component.
        disksCrypto can be left as blank, which means caller doesn't care
        which key is used to encrypt the disk. If it's not blank, it has to
        be of type CryptoSpecEncrypt.
        To decrypt the disk, profile must not contain an encryption component.
        disksCrypto can be left as blank, if not, it has be of type
        CryptoSpecDecrypt.
        To re-encrypt the disk, profile must contain an encryption component.
        disksCrypto cannot be left as blank. It has to be of type either
        CryptoSpecShallowRecrypt or CryptoSpecDeepRecrypt.
        
        Requires Datastore.FileManagement privilege on the datastore where the
        virtual storage object is located.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateVStorageObjectCryptoRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to
            monitor the operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***FileFault***: If an error occurs while updating the virtual storage
            object policy.
            
            ***NotFound***: If the specified virtual storage object cannot be
            found.
            
            ***InvalidDatastore***: If the operation cannot be performed on the
            datastore.
            
            ***TaskInProgress***: If the virtual storage object is busy.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /VcenterVStorageObjectManager/{moId}/VCenterUpdateVStorageObjectMetadataEx_Task:
    post:
      tags: [VcenterVStorageObjectManager]
      summary: |2
        Update metadata KV pairs to a virtual storage object and
        returns the corresponding vclock upon success.
      operationId: VcenterVStorageObjectManager_VCenterUpdateVStorageObjectMetadataEx_Task
      description: |2
        Update metadata KV pairs to a virtual storage object and
        returns the corresponding vclock upon success.
        
        ***Since:*** vSphere API Release 7.0.2.0
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VCenterUpdateVStorageObjectMetadataExRequestType'
      responses:
        '200':
          description: |2
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***InvalidDatastore***: If the operation cannot be performed on the
            datastore, such as datastore cannot be found
            or is inaccessible.
            
            ***InvalidState***: If the operation cannot be performed on the disk.
            
            ***NotFound***: If specified virtual storage object cannot be found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /VcenterVStorageObjectManager/{moId}/UpdateVStorageObjectPolicy_Task:
    post:
      tags: [VcenterVStorageObjectManager]
      summary: |2
        Update the storage policy on a virtual storage object.
      operationId: VcenterVStorageObjectManager_UpdateVStorageObjectPolicy_Task
      description: |2
        Update the storage policy on a virtual storage object.
        
        Requires Datastore.FileManagement privilege on the datastore where the
        virtual storage object is located.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateVStorageObjectPolicyRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to
            monitor the operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***FileFault***: If an error occurs while updating the virtual storage
            object policy.
            
            ***NotFound***: If the specified virtual storage object cannot be
            found.
            
            ***InvalidDatastore***: If the operation cannot be performed on the
            datastore.
            
            ***TaskInProgress***: If the virtual storage object is busy.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /View/{moId}/DestroyView:
    post:
      tags: [View]
      summary: |2
        Destroy this view.
      operationId: View_DestroyView
      description: |2
        Destroy this view.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '204':
          description: |2
            No Content

  /ViewManager/{moId}/CreateContainerView:
    post:
      tags: [ViewManager]
      summary: |2
        Create a *ContainerView* managed object for this session.
      operationId: ViewManager_CreateContainerView
      description: |2
        Create a *ContainerView* managed object for this session.
        
        The method returns
        a reference to a *ContainerView* object that has a list of managed object references.
        The list references objects in the container and may include references to objects from
        additional containers. You can configure the resulting list of objects by specifying
        a type list and recursion. Once you have created the view, the object list always
        represents the current configuration of the virtual environment and reflects any
        subsequent changes that occur.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateContainerViewRequestType'
      responses:
        '200':
          description: |2
            Refers instance of *ContainerView*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'

  /ViewManager/{moId}/CreateInventoryView:
    post:
      tags: [ViewManager]
      summary: |2
        Create a new *InventoryView* managed object for this session.
      operationId: ViewManager_CreateInventoryView
      description: |2
        Create a new *InventoryView* managed object for this session.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            Refers instance of *InventoryView*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'

  /ViewManager/{moId}/CreateListView:
    post:
      tags: [ViewManager]
      summary: |2
        Create a *ListView* object for this session.
      operationId: ViewManager_CreateListView
      description: |2
        Create a *ListView* object for this session.
        
        The method returns
        a session object that has a list of managed object references. The list
        of references corresponds to the input object list.
        You can modify the resulting list after you have created the object.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateListViewRequestType'
      responses:
        '200':
          description: |2
            Refers instance of *ListView*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'

  /ViewManager/{moId}/CreateListViewFromView:
    post:
      tags: [ViewManager]
      summary: |2
        Create a *ListView* object for this session.
      operationId: ViewManager_CreateListViewFromView
      description: |2
        Create a *ListView* object for this session.
        
        This method uses an existing
        view to construct the object list for the new view.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateListViewFromViewRequestType'
      responses:
        '200':
          description: |2
            Refers instance of *ListView*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'

  /ViewManager/{moId}/viewList:
    get:
      tags: [ViewManager]
      summary: |2
        An array of view references.
      operationId: ViewManager_getViewList
      description: |2
        An array of view references.
        
        Each array entry is a managed object reference
        to a view created by this ViewManager.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            Refers instances of *View*.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/ManagedObjectReference'

  /VirtualApp/{moId}/CloneVApp_Task:
    post:
      tags: [VirtualApp]
      summary: |2
        Creates a clone of this vApp.
      operationId: VirtualApp_CloneVApp_Task
      description: |2
        Creates a clone of this vApp.
        
        Any % (percent) character used in this name parameter must be escaped, unless it
        is used to start an escape sequence. Clients may also escape any other characters
        in this name parameter.
        
        When invoking this method, the following privilege checks occur:
        - The privilege VApp.Clone is required on this vApp.
        - If the target is a resource pool, the privilege
          Resource.AssignVAppToPool is required on it.
        - If the target is a vApp, the privileges VApp.Clone and
          VApp.AssignVApp are required on it.
          
        Additional privileges are required by the clone spec provided. See *VAppCloneSpec* for details.
        
        ***Required privileges:*** VApp.Clone
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CloneVAppRequestType'
      responses:
        '200':
          description: |2
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***InvalidPowerState***: if the vApp is powered on.
            
            ***TaskInProgress***: if the vApp is busy.
            
            ***NotSupported***: if the operation is not supported by the current agent.
            
            ***InvalidState***: if the operation cannot be performed because of the
            vApp's current state. For example, if the virtual machine
            configuration information is not available, or if the vApp
            is running.
            
            ***InvalidDatastore***: if the operation cannot be performed on the
            target datastores.
            
            ***FileFault***: if there was an error accessing one of the virtual machine files.
            
            ***VmConfigFault***: if one of the virtual machines are not compatible with a
            destination host. Typically, a specific subclass of this exception is
            thrown, such as IDEDiskNotSupported.
            
            ***MigrationFault***: if it is not possible to migrate one of the virtual machines
            to the destination. This is typically due to hosts being incompatible,
            such as mismatch in network polices or access to networks and datastores.
            Typically, a more specific subclass is thrown.
            
            ***InsufficientResourcesFault***: if this operation would violate a resource
            usage policy.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /VirtualApp/{moId}/CreateResourcePool:
    post:
      tags: [VirtualApp]
      summary: |2
        Creates a new resource pool.
      operationId: VirtualApp_CreateResourcePool
      description: |2
        Creates a new resource pool.
        
        ***Required privileges:*** Resource.CreatePool
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateResourcePoolRequestType'
      responses:
        '200':
          description: |2
            A reference to the new resource pool.
            
            Refers instance of *ResourcePool*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***NotSupported***: if the ComputeResource does not support
            nested resource pools.
            
            ***InvalidName***: if the name is not a valid entity name.
            
            ***DuplicateName***: if this pool already contains an object
            with the given name.
            
            ***InvalidArgument***: if the pool specification is invalid.
            
            ***InsufficientResourcesFault***: if the operation would violate a resource
            usage policy. Typically, a more specific subclass, such as
            InsufficientCpuResourcesFault will be thrown.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /VirtualApp/{moId}/CreateVApp:
    post:
      tags: [VirtualApp]
      summary: |2
        Creates a new vApp container.
      operationId: VirtualApp_CreateVApp
      description: |2
        Creates a new vApp container.
        
        Any % (percent) character used in this name parameter must be escaped, unless it
        is used to start an escape sequence. Clients may also escape any other characters
        in this name parameter.
        
        ***Required privileges:*** VApp.Create
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateVAppRequestType'
      responses:
        '200':
          description: |2
            The created vApp object.
            
            Refers instance of *VirtualApp*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***NotSupported***: if the ComputeResource does not support
            nested resource pools.
            
            ***InvalidName***: if the name is not a valid entity name.
            
            ***DuplicateName***: if this pool already contains an object
            with the given name.
            
            ***InvalidArgument***: if the pool specification is invalid.
            
            ***InsufficientResourcesFault***: if the operation would violate a resource
            usage policy. Typically, a more specific subclass, such as
            InsufficientCpuResourcesFault will be thrown.
            
            ***InvalidState***: if the resource pool does not support the operation in
            its current state. This will typically be a subclass such
            as *NoActiveHostInCluster*.
            
            ***VmConfigFault***: or a more specific subclass, if errors are found in
            the supplied in VApp configuration.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /VirtualApp/{moId}/CreateChildVM_Task:
    post:
      tags: [VirtualApp]
      summary: |2
        Creates a new virtual machine in a vApp container.
      operationId: VirtualApp_CreateChildVM_Task
      description: |2
        Creates a new virtual machine in a vApp container.
        
        This method supports creating a virtual machine directly in a vApp. A
        virtual machine in a vApp is not associated with a VM folder and therefore
        cannot be created using the method on a *Folder*.
        
        This method can only be called directly on a *vApp*
        or on a resource pool that is a child of a vApp.
        
        The privilege VirtualMachine.Inventory.Create is required on this entity. Further,
        if this is a resource pool, the privilege Resource.AssignVMToPool is required. If
        this is a vApp, the privilege VApp.AssignVM is required.
        
        Depending on the properties of the virtual machine bring created, additional
        privileges may be required. See *Folder.CreateVM_Task* for a description of
        these privileges.
        
        ***Required privileges:*** VirtualMachine.Inventory.Create
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateChildVMRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor the
            operation. The *info.result* property in the
            *Task* contains the newly created *VirtualMachine*
            upon success.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***VmConfigFault***: if the configSpec has incorrect values. Typically, a more
            specific subclass is thrown.
            
            ***OutOfBounds***: if Host.capability.maxSupportedVMs is exceeded.
            
            ***FileAlreadyExists***: if the requested cfgPath for the virtual machine's
            configuration file already exists.
            
            ***FileFault***: if there is a problem creating the virtual machine on disk.
            Typically, a more specific subclass, such as NoDiskSpace, will be thrown.
            
            ***InvalidName***: if the name is not a valid entity name.
            
            ***InsufficientResourcesFault***: if this operation would violate a resource
            usage policy.
            
            ***InvalidDatastore***: if the operation cannot be performed on the
            target datastores.
            
            ***VmWwnConflict***: if the WWN of the virtual machine has been used by
            other virtual machines.
            
            ***NotSupported***: if this resource pool is not a vApp or is a child
            of a vApp.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /VirtualApp/{moId}/Destroy_Task:
    post:
      tags: [VirtualApp]
      summary: |2
        Destroys this object, deleting its contents and removing it from its parent
        folder (if any).
      operationId: VirtualApp_Destroy_Task
      description: |2
        Destroys this object, deleting its contents and removing it from its parent
        folder (if any).
        
        NOTE: The appropriate privilege must be held on the parent of the destroyed
        entity as well as the entity itself.
        This method can throw one of several exceptions. The exact set of exceptions
        depends on the kind of entity that is being removed. See comments for
        each entity for more information on destroy behavior.
        
        ***Required privileges:*** VApp.Delete
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor the
            operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            Failure
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /VirtualApp/{moId}/DestroyChildren:
    post:
      tags: [VirtualApp]
      summary: |2
        Removes all child resource pools recursively.
      operationId: VirtualApp_DestroyChildren
      description: |2
        Removes all child resource pools recursively.
        
        All virtual machines and vApps
        associated with the child resource pools get associated with this resource pool.
        
        Note that resource pools contained in child vApps are not affected.
        
        The privilege checks performed are the following.
        - Resource.DeletePool privilege must be held on this object and each of it's
          immediate children to be destroyed.
        - If VMs are being moved, the privilege Resource.AssignVMToPool must be held
          on this resource pool as well as on any virtual machines being moved.
        - If vApps are being moved, the privilege Resource.AssignVAppToPool
          must be held on this resource pool as well as on any vApps being
          moved.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '204':
          description: |2
            No Content

  /VirtualApp/{moId}/ExportVApp:
    post:
      tags: [VirtualApp]
      summary: |2
        Obtains an export lease on this vApp.
      operationId: VirtualApp_ExportVApp
      description: |2
        Obtains an export lease on this vApp.
        
        The export lease contains a list
        of URLs for the disks of the virtual machines in this vApp, as well as
        a ticket that gives access to these URLs.
        
        See *HttpNfcLease* for information on how to use the lease.
        
        ***Required privileges:*** VApp.Export
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            the export lease on this vApp. The export task continues
            running until the lease is completed or aborted.
            
            Refers instance of *HttpNfcLease*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***InvalidPowerState***: if the vApp is powered on.
            
            ***TaskInProgress***: if the vApp is busy.
            
            ***InvalidState***: if the operation cannot be performed because of the
            vApp's current state. For example, if the virtual machine
            configuration information is not available, or if the vApp
            is running or already powering on.
            
            ***FileFault***: if there was an error accessing one of the virtual machine files.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /VirtualApp/{moId}/ImportVApp:
    post:
      tags: [VirtualApp]
      summary: |2
        Creates a new entity in this resource pool.
      operationId: VirtualApp_ImportVApp
      description: |2
        Creates a new entity in this resource pool.
        
        The import process consists of two
        steps:
        1. Create the VMs and/or vApps that make up the entity.
        2. Upload virtual disk contents.
           
        In step 1, the client must wait for the server to create all inventory
        objects. It does that by monitoring the *HttpNfcLease.state*
        property on the *HttpNfcLease* object returned from this call.
        When the server is done creating objects, the lease will change to the
        ready state, and step 2 begins. If an error occurs while the server is
        creating inventory objects, the lease will change to the error state, and
        the import process is aborted.
        
        In step 2, the client uploads disk contents using the URLs provided in the
        *HttpNfcLease.info* property of the lease. The client must call
        *HttpNfcLease.HttpNfcLeaseProgress* on the lease periodically to keep the
        lease alive and report progress to the server. Failure to do so will cause
        the lease to time out, and the import process will be aborted.
        
        When the client is done uploading disks, it completes the lease by calling
        *HttpNfcLease.HttpNfcLeaseComplete*. The client can also abort the import
        process by calling *HttpNfcLease.HttpNfcLeaseAbort*.
        
        If the import process fails, is aborted, or times out, all created inventory
        objects are removed, including all virtual disks.
        
        This operation only works if the folder's childType includes VirtualMachine.
        
        Depending on the properties of the virtual machine bring imported, additional
        privileges may be required. See *Folder.CreateVM_Task* for a description of
        these privileges.
        
        ***Required privileges:*** VApp.Import
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ImportVAppRequestType'
      responses:
        '200':
          description: |2
            a *HttpNfcLease* object which is used to drive the import
            session.
            
            Refers instance of *HttpNfcLease*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***VmConfigFault***: if a VM configSpec has incorrect values. Typically, a more
            specific subclass is thrown.
            
            ***OutOfBounds***: if Host.capability.maxSupportedVMs is exceeded.
            
            ***FileAlreadyExists***: if the requested cfgPath for the virtual machine's
            configuration file already exists.
            
            ***FileFault***: if there is a problem creating the virtual machine on disk.
            Typically, a more specific subclass, such as NoDiskSpace, will be thrown.
            
            ***DuplicateName***: if another virtual machine in the same folder already has
            the specified target name.
            
            ***InvalidName***: if the name is not a valid entity name.
            
            ***NotSupported***: if the virtual machine is being created within a folder
            whose *Folder.childType* property is not set to "VirtualMachine",
            a vApp is being imported into a resource pool that does not support
            nested resource pools, or a virtual machine is being imported into a resource
            pool and no folder is given.
            
            ***InsufficientResourcesFault***: if this operation would violate a resource
            usage policy.
            
            ***InvalidDatastore***: if the operation cannot be performed on the
            target datastores.
            
            ***VmWwnConflict***: if the WWN of the virtual machine has been used by
            other virtual machines.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /VirtualApp/{moId}/MoveIntoResourcePool:
    post:
      tags: [VirtualApp]
      summary: |2
        Moves a set of resource pools, vApps or virtual machines into this pool.
      operationId: VirtualApp_MoveIntoResourcePool
      description: |2
        Moves a set of resource pools, vApps or virtual machines into this pool.
        
        The
        pools, vApps and virtual machines must be part of the cluster or standalone
        host that contains this pool.
        
        For each entity being moved, the move is subject to the following privilege
        checks:
        - If the object being moved is a ResourcePool, then Resource.MovePool must be
          held on the pool being moved and it's former parent pool or vApp. If the
          target is a vApp, the privilege VApp.AssignResourcePool must be held on
          it. If the target is a ResourcePool, Resource.MovePool must be held on it.
        - If the object being moved is a VirtualApp, VApp.Move must be held on
          the vApp being moved and it's former parent pool or vApp. If the target
          entity is a resource pool, Resource.AssignVAppToPool must be held on the
          target. If the target is a vApp, the privilege VApp.AssignVApp must
          be held on the target vApp.
        - If the object being moved is a VirtualMachine, then if the target is a
          ResourcePool, Resource.AssignVMToPool is required on the VirtualMachine and the
          target pool. If the target is a vApp, VApp.AssignVM is required on both
          the VirtualMachine and the target pool.
          
        This operation is typically used by clients when they implement a drag-and-drop
        interface to move a set of objects into a folder.
        
        This operation is only transactional with respect to each individual entity.
        The set of entities is moved sequentially, as specified in the list,
        and committed one at a time. If a failure is detected, then the method
        terminates with an exception.
        
        The root resource pool cannot be moved.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MoveIntoResourcePoolRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***DuplicateName***: if this pool already contains an object with
            the given name.
            
            ***InvalidArgument***: if an ancestor of this pool is in the list.
            
            ***InsufficientResourcesFault***: if the move would violate the resource usage
            policy. Typically, a more specific subclass, such as
            InsufficientMemoryResourcesFault.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /VirtualApp/{moId}/PowerOffVApp_Task:
    post:
      tags: [VirtualApp]
      summary: |2
        Stops this vApp.
      operationId: VirtualApp_PowerOffVApp_Task
      description: |2
        Stops this vApp.
        
        The virtual machines (or child vApps) will be stopped in the order
        specified in the vApp configuration, if force is false. If force is set
        to true, all virtual machines are powered-off (in no specific order and
        possibly in parallel) regardless of the vApp auto-start configuration.
        
        While a vApp is stopping, all power operations performed on sub entities are
        disabled through the VIM API. They will throw TaskInProgress.
        
        ***Required privileges:*** VApp.PowerOff
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PowerOffVAppRequestType'
      responses:
        '200':
          description: |2
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***InvalidPowerState***: if the vApp is not running
            
            ***TaskInProgress***: if the vApp is busy.
            
            ***InvalidState***: if the operation cannot be performed because of the
            vApp's current state. For example, if the vApp is in the
            process of being started.
            
            ***MissingPowerOffConfiguration***: if no vApp powerOff configuration
            has been specified.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /VirtualApp/{moId}/PowerOnVApp_Task:
    post:
      tags: [VirtualApp]
      summary: |2
        Starts this vApp.
      operationId: VirtualApp_PowerOnVApp_Task
      description: |2
        Starts this vApp.
        
        The virtual machines (or sub vApps) will be started in the order
        specified in the vApp configuration. If the vApp is suspended
        (@see vim.VirtualApp.Summary#suspended), all suspended virtual machines
        will be powered-on based on the defined start-up order.
        
        While a vApp is starting, all power operations performed on sub entities are
        disabled through the VIM API. They will throw TaskInProgress.
        
        In case of a failure to power-on a virtual machine, the exception from the virtual
        machine power on is returned, and the power-on sequence will be terminated. In
        case of a failure, virtual machines that are already started will remain
        powered-on.
        
        ***Required privileges:*** VApp.PowerOn
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***InvalidPowerState***: if the vApp is already running
            
            ***TaskInProgress***: if the vApp is busy
            
            ***NotEnoughLicenses***: if there are not enough licenses to power on one or more
            virtual machines.
            
            ***NotSupported***: if the vApp is marked as a template.
            
            ***InvalidState***: if it fails to power on a virtual machine due to no host
            availability, or unable to access the configuration file of a VM.
            
            ***InsufficientResourcesFault***: if this operation would violate a resource
            usage policy.
            
            ***VmConfigFault***: if a configuration issue on the vApp or a virtual
            machine in the vApp prevents the power-on to complete. Typically, a
            more specific fault, such as InvalidPropertyType is thrown.
            
            ***VAppConfigFault***: if a configuration issue on a vApp prevents the
            power-on. Typically, a more specific fault, MissingPowerOnConfiguration,
            is thrown.
            
            ***FileFault***: if there is a problem accessing the virtual machine on the
            filesystem.
            
            ***MissingNetworkIpConfig***: if no network configuration exists for the primary
            network for the vApp.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /VirtualApp/{moId}/QueryResourceConfigOption:
    post:
      tags: [VirtualApp]
      summary: |2
        Get a value range and default values for *ResourceConfigSpec*.
      operationId: VirtualApp_QueryResourceConfigOption
      deprecated: true
      description: |2
        Deprecated as of vSphere API 6.5.
        
        Get a value range and default values for *ResourceConfigSpec*.
        
        This API was never implemented, and there is no replacement for it.
        
        ***Required privileges:*** Resource.EditPool
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            *ResourceConfigOption* object.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResourceConfigOption'

  /VirtualApp/{moId}/RefreshRuntime:
    post:
      tags: [VirtualApp]
      summary: |2
        Refreshes the resource usage data that is available in
        *ResourcePoolRuntimeInfo*.
      operationId: VirtualApp_RefreshRuntime
      description: |2
        Refreshes the resource usage data that is available in
        *ResourcePoolRuntimeInfo*.
        
        The latest runtime resource usage of this resource pool may not be
        available immediately after operations that alter resource usage,
        such as powering on a virtual machine. Invoke this method when resource
        usage may have recently changed, and the most up-to-date value in the
        *ResourcePoolRuntimeInfo* is needed.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '204':
          description: |2
            No Content

  /VirtualApp/{moId}/RegisterChildVM_Task:
    post:
      tags: [VirtualApp]
      summary: |2
        Adds an existing virtual machine to this resource pool or vApp.
      operationId: VirtualApp_RegisterChildVM_Task
      description: |2
        Adds an existing virtual machine to this resource pool or vApp.
        
        This operation only works for vApps or resource pools that are children of
        vApps. To register a VM in a folder, see *Folder.RegisterVM_Task*.
        
        Any % (percent) character used in this name parameter must be escaped, unless it
        is used to start an escape sequence. Clients may also escape any other characters
        in this name parameter.
        In addition to the VirtualMachine.Inventory.Register privilege, it
        requires System.Read privilege on the datastore that the existing virtual
        machine resides on.
        
        ***Required privileges:*** VirtualMachine.Inventory.Register
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RegisterChildVMRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor the
            operation. The *info.result* property in the
            *Task* contains the newly registered *VirtualMachine*
            upon success.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***NotSupported***: if the operation is not supported. For example, if the
            operation is invoked on a resource pool that is unrelated to a vApp.
            
            ***OutOfBounds***: if the maximum number of VMs has been exceeded.
            
            ***AlreadyExists***: if the virtual machine is already registered.
            
            ***InvalidDatastore***: if the operation cannot be performed on the
            target datastores.
            
            ***NotFound***: if the configuration file is not found on the system.
            
            ***InvalidName***: if the entity name is invalid.
            
            ***InvalidArgument***: if any of the arguments are invalid and a more specific
            fault type does not apply.
            
            ***VmConfigFault***: if the format / configuration of the virtual machine
            is invalid. Typically, a more specific fault is thrown such as
            InvalidFormat if the configuration file cannot be read, or
            InvalidDiskFormat if the disks cannot be read.
            
            ***FileFault***: if there is an error accessing the files on disk.
            
            ***InsufficientResourcesFault***: if this operation would violate a resource
            usage policy.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /VirtualApp/{moId}/Reload:
    post:
      tags: [VirtualApp]
      summary: |2
        Reload the entity state.
      operationId: VirtualApp_Reload
      description: |2
        Reload the entity state.
        
        Clients only need to call this method
        if they changed some external state that affects the service
        without using the Web service interface to perform the change.
        For example, hand-editing a virtual machine configuration file
        affects the configuration of the associated virtual machine but
        the service managing the virtual machine might not monitor the
        file for changes. In this case, after such an edit, a client
        would call "reload" on the associated virtual machine to ensure
        the service and its clients have current data for the
        virtual machine.
        
        ***Required privileges:*** System.Read
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '204':
          description: |2
            No Content

  /VirtualApp/{moId}/Rename_Task:
    post:
      tags: [VirtualApp]
      summary: |2
        Renames this managed entity.
      operationId: VirtualApp_Rename_Task
      description: |2
        Renames this managed entity.
        
        Any % (percent) character used in this name parameter
        must be escaped, unless it is used to start an escape
        sequence. Clients may also escape any other characters in
        this name parameter.
        
        See also *ManagedEntity.name*.
        
        ***Required privileges:*** VApp.Rename
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RenameRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor the
            operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***DuplicateName***: If another object in the same folder has the target name.
            
            ***InvalidName***: If the new name is not a valid entity name.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /VirtualApp/{moId}/setCustomValue:
    post:
      tags: [VirtualApp]
      summary: |2
        Assigns a value to a custom field.
      operationId: VirtualApp_setCustomValue
      description: |2
        Assigns a value to a custom field.
        
        The setCustomValue method requires
        whichever updatePrivilege is defined as one of the
        *CustomFieldDef.fieldInstancePrivileges*
        for the CustomFieldDef whose value is being changed.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/setCustomValueRequestType'
      responses:
        '204':
          description: |2
            No Content

  /VirtualApp/{moId}/SuspendVApp_Task:
    post:
      tags: [VirtualApp]
      summary: |2
        Suspends this vApp.
      operationId: VirtualApp_SuspendVApp_Task
      description: |2
        Suspends this vApp.
        
        Suspends all powered-on virtual machines in a vApp, including virtual machines
        in child vApps. The virtual machines are suspended in the same order as
        used for a power-off operation (reverse power-on sequence).
        
        While a vApp is being suspended, all power operations performed on sub entities
        are disabled through the VIM API. They will throw TaskInProgress.
        
        ***Required privileges:*** VApp.Suspend
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***InvalidPowerState***: if the vApp is not running
            
            ***TaskInProgress***: if the vApp is busy.
            
            ***InvalidState***: if the operation cannot be performed because of the
            vApp's current state. For example, if the vApp is in the
            process of being started.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /VirtualApp/{moId}/unregisterVApp_Task:
    post:
      tags: [VirtualApp]
      summary: |2
        Removes this vApp from the inventory without removing
        any of the virtual machine's files on disk.
      operationId: VirtualApp_unregisterVApp_Task
      description: |2
        Removes this vApp from the inventory without removing
        any of the virtual machine's files on disk.
        
        All high-level information
        stored with the management server (ESX Server or VirtualCenter) is
        removed, including information such as vApp configuration, statistics,
        permissions, and alarms.
        
        ***Required privileges:*** VApp.Unregister
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***InvalidPowerState***: if the vApp is running.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /VirtualApp/{moId}/UpdateChildResourceConfiguration:
    post:
      tags: [VirtualApp]
      summary: |2
        Changes resource configuration of a set of children of this resource pool.
      operationId: VirtualApp_UpdateChildResourceConfiguration
      description: |2
        Changes resource configuration of a set of children of this resource pool.
        
        The
        method allows bulk modifications of the set of the direct children
        (virtual machines and resource pools).
        
        Bulk modifications are not transactional. Each modification is made individually.
        If a failure is encountered while applying the changes, then the processing stops,
        meaning at least one and as many as all of the changes are not applied.
        
        A set can include a subset of the resources. Children that are not
        mentioned in the list are not changed.
        
        For each ResourceConfigSpec, the following privilege checks apply:
        - If the ResourceConfigSpec refers to a child resource pool or a child
          vApp, the privileges required are the same as would be required for
          calling *ResourcePool.UpdateConfig* on that entity.
        - If the ResourceConfigSpec refers to a virtual machine,
          VirtualMachine.Config.Resource must be held on the virtual machine.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateChildResourceConfigurationRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***InvalidArgument***: if a managed entity that is not a child of this group
            is included.
            
            ***InsufficientResourcesFault***: if the operation would violate a resource
            usage policy. Typically, a more specific subclass, such as
            InsufficientMemoryResourcesFault will be thrown.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /VirtualApp/{moId}/UpdateConfig:
    post:
      tags: [VirtualApp]
      summary: |2
        Updates the configuration of the resource pool.
      operationId: VirtualApp_UpdateConfig
      description: |2
        Updates the configuration of the resource pool.
        
        Any % (percent) character used in this name parameter must be escaped, unless it
        is used to start an escape sequence. Clients may also escape any other characters
        in this name parameter.
        
        The privilege checks for this operation are as follows:
        - If this is a resource pool, the privilege Resource.EditPool is required on
          this and on the parent pool or vApp.
        - If this is a vApp, the privilege VApp.ResourceConfig is required on
          this and on the parent pool or vApp.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateConfigRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***InvalidName***: if the name is not a valid entity name.
            
            ***DuplicateName***: if the name is changed to an already existing name.
            
            ***InvalidArgument***: if the parameters are out of range,
            or if the reservationLimit field is set.
            
            ***InsufficientResourcesFault***: if the pool specification cannot be
            supported by the parent resource pool or vApp.
            
            ***ConcurrentAccess***: if the changeVersion does not match the server's
            changeVersion for the configuration.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /VirtualApp/{moId}/UpdateLinkedChildren:
    post:
      tags: [VirtualApp]
      summary: |2
        Reconfigure the set of linked children.
      operationId: VirtualApp_UpdateLinkedChildren
      deprecated: true
      description: |2
        Deprecated as of vSphere API 5.1.
        
        Reconfigure the set of linked children.
        
        A VirtualMachine and vApp can be added as a linked child as long as it
        is not a direct child of another vApp. In case it is a linked child, the
        existing link is removed and replaced with the new link specified in this
        call.
        
        An InvalidArgument fault is thrown if a link target is a direct child
        of another vApp, or if the addition of the link will result in a vApp
        with a cycle. For example, a vApp cannot be linked to itself.
        
        The removeSet must refer to managed entities that are currently linked
        children. Otherwise, an InvalidArgument exception is thrown.
        
        For each entity being linked, the operation is subject to the following privilege
        checks:
        - If the object being linked is a vApp, VApp.Move must be held on
          the vApp being linked and its former parent vApp (if any). The privilege
          VApp.AssignVApp must be held on this vApp.
        - If the object being linked is a VirtualMachine, VApp.AssignVM is required on
          both the target vApp, the VirtualMachine, and its former parent vApp (if any).
          
        Privilege checks for each entity in the removeSet are similar to the entities
        in the addChangeSet, except that there is no target vApp.
        
        This operation is only transactional with respect to each individual link change.
        The changes are processed sequentially and committed one at a time. The
        addChangeSet is processed first, followed by the removeSet. If a failure is
        detected, then the method terminates with an exception.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateLinkedChildrenRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***InvalidArgument***: See above description.
            
            ***ConcurrentAccess***: If a concurrent modification happens while adding the link.
            
            ***NotSupported***: If the target of the link is not in the same datacenter.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConcurrentAccess'

  /VirtualApp/{moId}/UpdateVAppConfig:
    post:
      tags: [VirtualApp]
      summary: |2
        Updates the vApp configuration.
      operationId: VirtualApp_UpdateVAppConfig
      description: |2
        Updates the vApp configuration.
        
        Updates in different areas require different privileges. See
        *VAppConfigSpec* for a full description.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateVAppConfigRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***InvalidPowerState***: if the reconfiguration is not possible given the
            current powerState of the vApp.
            
            ***TaskInProgress***: if the vApp is busy.
            
            ***ConcurrentAccess***: if another operation conflicted with this operation.
            
            ***InvalidArgument***: for wrong input.
            
            ***InvalidIndexArgument***: if a wrong key is used in one of the arrays. For
            example, for duplicated entries in entityConfig.
            
            ***VmConfigFault***: for bad configuration, such as invalid
            property types.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /VirtualApp/{moId}/alarmActionsEnabled:
    get:
      tags: [VirtualApp]
      summary: |2
        Whether alarm actions are enabled for this entity.
      operationId: VirtualApp_getAlarmActionsEnabled
      description: |2
        Whether alarm actions are enabled for this entity.
        
        True if enabled; false otherwise.
        
        ***Required privileges:*** System.Read
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: boolean

  /VirtualApp/{moId}/availableField:
    get:
      tags: [VirtualApp]
      summary: |2
        List of custom field definitions that are valid for the object's type.
      operationId: VirtualApp_getAvailableField
      description: |2
        List of custom field definitions that are valid for the object's type.
        
        The fields are sorted by *CustomFieldDef.name*.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/CustomFieldDef'

  /VirtualApp/{moId}/childConfiguration:
    get:
      tags: [VirtualApp]
      summary: |2
        The resource configuration of all direct children (VirtualMachine and
        ResourcePool) of this resource group.
      operationId: VirtualApp_getChildConfiguration
      description: |2
        The resource configuration of all direct children (VirtualMachine and
        ResourcePool) of this resource group.
        
        Property collector update notifications might not be generated for this
        property. To listen for the child configuration change, please create
        PropertyCollector filter on the child entities directly.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/ResourceConfigSpec'

  /VirtualApp/{moId}/childLink:
    get:
      tags: [VirtualApp]
      summary: |2
        List of linked children.
      operationId: VirtualApp_getChildLink
      deprecated: true
      description: |2
        Deprecated as of vSphere API 5.1.
        
        List of linked children.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/VirtualAppLinkInfo'

  /VirtualApp/{moId}/config:
    get:
      tags: [VirtualApp]
      summary: |2
        Configuration of this resource pool.
      operationId: VirtualApp_getConfig
      description: |2
        Configuration of this resource pool.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResourceConfigSpec'

  /VirtualApp/{moId}/configIssue:
    get:
      tags: [VirtualApp]
      summary: |2
        Current configuration issues that have been detected for this entity.
      operationId: VirtualApp_getConfigIssue
      description: |2
        Current configuration issues that have been detected for this entity.
        
        Typically,
        these issues have already been logged as events. The entity stores these
        events as long as they are still current. The
        *configStatus* property provides an overall status
        based on these events.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/Event'

  /VirtualApp/{moId}/configStatus:
    get:
      tags: [VirtualApp]
      summary: |2
        The configStatus indicates whether or not the system has detected a configuration
        issue involving this entity.
      operationId: VirtualApp_getConfigStatus
      description: |2
        The configStatus indicates whether or not the system has detected a configuration
        issue involving this entity.
        
        For example, it might have detected a
        duplicate IP address or MAC address, or a host in a cluster
        might be out of compliance. The meanings of the configStatus values are:
        - red: A problem has been detected involving the entity.
        - yellow: A problem is about to occur or a transient condition
          has occurred (For example, reconfigure fail-over policy).
        - green: No configuration issues have been detected.
        - gray: The configuration status of the entity is not being monitored.
          
        A green status indicates only that a problem has not been detected;
        it is not a guarantee that the entity is problem-free.
        
        The *configIssue* property contains a list of the
        problems that have been detected.
        In releases after vSphere API 5.0, vSphere Servers might not
        generate property collector update notifications for this property.
        To obtain the latest value of the property, you can use
        PropertyCollector methods RetrievePropertiesEx or WaitForUpdatesEx.
        If you use the PropertyCollector.WaitForUpdatesEx method, specify
        an empty string for the version parameter. Any other version value will not
        produce any property values as no updates are generated.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedEntityStatus_enum'

  /VirtualApp/{moId}/customValue:
    get:
      tags: [VirtualApp]
      summary: |2
        Custom field values.
      operationId: VirtualApp_getCustomValue
      description: |2
        Custom field values.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/CustomFieldValue'

  /VirtualApp/{moId}/datastore:
    get:
      tags: [VirtualApp]
      summary: |2
        A collection of references to the subset of datastore objects used by this
        vApp.
      operationId: VirtualApp_getDatastore
      description: |2
        A collection of references to the subset of datastore objects used by this
        vApp.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            Refers instances of *Datastore*.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/ManagedObjectReference'

  /VirtualApp/{moId}/declaredAlarmState:
    get:
      tags: [VirtualApp]
      summary: |2
        A set of alarm states for alarms that apply to this managed entity.
      operationId: VirtualApp_getDeclaredAlarmState
      description: |2
        A set of alarm states for alarms that apply to this managed entity.
        
        The set includes alarms defined on this entity
        and alarms inherited from the parent entity,
        or from any ancestors in the inventory hierarchy.
        
        Alarms are inherited if they can be triggered by this entity or its descendants.
        This set does not include alarms that are defined on descendants of this entity.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/AlarmState'

  /VirtualApp/{moId}/disabledMethod:
    get:
      tags: [VirtualApp]
      summary: |2
        List of operations that are disabled, given the current runtime
        state of the entity.
      operationId: VirtualApp_getDisabledMethod
      description: |2
        List of operations that are disabled, given the current runtime
        state of the entity.
        
        For example, a power-on operation always fails if a
        virtual machine is already powered on. This list can be used by clients to
        enable or disable operations in a graphical user interface.
        
        Note: This list is determined by the current runtime state of an entity,
        not by its permissions.
        
        This list may include the following operations for a HostSystem:
        - *HostSystem.EnterMaintenanceMode_Task*
        - *HostSystem.ExitMaintenanceMode_Task*
        - *HostSystem.RebootHost_Task*
        - *HostSystem.ShutdownHost_Task*
        - *HostSystem.ReconnectHost_Task*
        - *HostSystem.DisconnectHost_Task*
          
        This list may include the following operations for a VirtualMachine:
        - *VirtualMachine.AnswerVM*
        - *ManagedEntity.Rename_Task*
        - *VirtualMachine.CloneVM_Task*
        - *VirtualMachine.PowerOffVM_Task*
        - *VirtualMachine.PowerOnVM_Task*
        - *VirtualMachine.SuspendVM_Task*
        - *VirtualMachine.ResetVM_Task*
        - *VirtualMachine.ReconfigVM_Task*
        - *VirtualMachine.RelocateVM_Task*
        - *VirtualMachine.MigrateVM_Task*
        - *VirtualMachine.CustomizeVM_Task*
        - *VirtualMachine.ShutdownGuest*
        - *VirtualMachine.StandbyGuest*
        - *VirtualMachine.RebootGuest*
        - *VirtualMachine.CreateSnapshot_Task*
        - *VirtualMachine.RemoveAllSnapshots_Task*
        - *VirtualMachine.RevertToCurrentSnapshot_Task*
        - *VirtualMachine.MarkAsTemplate*
        - *VirtualMachine.MarkAsVirtualMachine*
        - *VirtualMachine.ResetGuestInformation*
        - *VirtualMachine.MountToolsInstaller*
        - *VirtualMachine.UnmountToolsInstaller*
        - *ManagedEntity.Destroy_Task*
        - *VirtualMachine.UpgradeVM_Task*
        - *VirtualMachine.ExportVm*
          
        This list may include the following operations for a ResourcePool:
        - *ResourcePool.ImportVApp*
        - *ResourcePool.CreateChildVM_Task*
        - *ResourcePool.UpdateConfig*
        - *Folder.CreateVM_Task*
        - *ManagedEntity.Destroy_Task*
        - *ManagedEntity.Rename_Task*
          
        This list may include the following operations for a VirtualApp:
        - *ManagedEntity.Destroy_Task*
        - *VirtualApp.CloneVApp_Task*
        - *VirtualApp.unregisterVApp_Task*
        - *VirtualApp.ExportVApp*
        - *VirtualApp.PowerOnVApp_Task*
        - *VirtualApp.PowerOffVApp_Task*
        - *VirtualApp.UpdateVAppConfig*
          
        In releases after vSphere API 5.0, vSphere Servers might not
        generate property collector update notifications for this property.
        To obtain the latest value of the property, you can use
        PropertyCollector methods RetrievePropertiesEx or WaitForUpdatesEx.
        If you use the PropertyCollector.WaitForUpdatesEx method, specify
        an empty string for the version parameter. Any other version value will not
        produce any property values as no updates are generated.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  type: string

  /VirtualApp/{moId}/effectiveRole:
    get:
      tags: [VirtualApp]
      summary: |2
        Access rights the current session has to this entity.
      operationId: VirtualApp_getEffectiveRole
      description: |2
        Access rights the current session has to this entity.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  type: integer
                  format: int32

  /VirtualApp/{moId}/name:
    get:
      tags: [VirtualApp]
      summary: |2
        Name of this entity, unique relative to its parent.
      operationId: VirtualApp_getName
      description: |2
        Name of this entity, unique relative to its parent.
        
        Any / (slash), \\ (backslash), character used in this
        name element will be escaped. Similarly, any % (percent) character used in
        this name element will be escaped, unless it is used to start an escape
        sequence. A slash is escaped as %2F or %2f. A backslash is escaped as %5C or
        %5c, and a percent is escaped as %25.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                type: string

  /VirtualApp/{moId}/namespace:
    get:
      tags: [VirtualApp]
      summary: |2
        The namespace with which the ResourcePool is associated.
      operationId: VirtualApp_getNamespace
      description: |2
        The namespace with which the ResourcePool is associated.
        
        Namespace is a
        vAPI resource which divides cluster resources and allows administrators
        to give Kubernetes environments to their development teams.
        This property is set only at the time of creation and cannot change.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: string

  /VirtualApp/{moId}/network:
    get:
      tags: [VirtualApp]
      summary: |2
        A collection of references to the subset of network objects that
        is used by this virtual machine.
      operationId: VirtualApp_getNetwork
      description: |2
        A collection of references to the subset of network objects that
        is used by this virtual machine.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            Refers instances of *Network*.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/ManagedObjectReference'

  /VirtualApp/{moId}/overallStatus:
    get:
      tags: [VirtualApp]
      summary: |2
        General health of this managed entity.
      operationId: VirtualApp_getOverallStatus
      description: |2
        General health of this managed entity.
        
        The overall status of the managed entity is computed as the worst status
        among its alarms and the configuration issues detected on the entity.
        The status is reported as one of the following values:
        - red: The entity has alarms or configuration issues with a red status.
        - yellow: The entity does not have alarms or configuration issues with a
          red status, and has at least one with a yellow status.
        - green: The entity does not have alarms or configuration issues with a
          red or yellow status, and has at least one with a green status.
        - gray: All of the entity's alarms have a gray status and the
          configuration status of the entity is not being monitored.
          
        In releases after vSphere API 5.0, vSphere Servers might not
        generate property collector update notifications for this property.
        To obtain the latest value of the property, you can use
        PropertyCollector methods RetrievePropertiesEx or WaitForUpdatesEx.
        If you use the PropertyCollector.WaitForUpdatesEx method, specify
        an empty string for the version parameter. Any other version value will not
        produce any property values as no updates are generated.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedEntityStatus_enum'

  /VirtualApp/{moId}/owner:
    get:
      tags: [VirtualApp]
      summary: |2
        The ComputeResource to which this set of one or more nested resource pools
        belong.
      operationId: VirtualApp_getOwner
      description: |2
        The ComputeResource to which this set of one or more nested resource pools
        belong.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            Refers instance of *ComputeResource*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'

  /VirtualApp/{moId}/parent:
    get:
      tags: [VirtualApp]
      summary: |2
        Parent of this entity.
      operationId: VirtualApp_getParent
      description: |2
        Parent of this entity.
        
        This value is null for the root object and for
        *VirtualMachine* objects that are part of
        a *VirtualApp*.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            Refers instance of *ManagedEntity*.
          content:
            application/json:
              schema:
                nullable: true
                $ref: '#/components/schemas/ManagedObjectReference'

  /VirtualApp/{moId}/parentFolder:
    get:
      tags: [VirtualApp]
      summary: |2
        A reference to the parent folder in the VM and Template folder hierarchy.
      operationId: VirtualApp_getParentFolder
      description: |2
        A reference to the parent folder in the VM and Template folder hierarchy.
        
        This
        is only set for a root vApp. A root vApp is a vApp that is not a child of
        another vApp.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            Refers instance of *Folder*.
          content:
            application/json:
              schema:
                nullable: true
                $ref: '#/components/schemas/ManagedObjectReference'

  /VirtualApp/{moId}/parentVApp:
    get:
      tags: [VirtualApp]
      summary: |2
        Reference to the parent vApp.
      operationId: VirtualApp_getParentVApp
      description: |2
        Reference to the parent vApp.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            Refers instance of *ManagedEntity*.
          content:
            application/json:
              schema:
                nullable: true
                $ref: '#/components/schemas/ManagedObjectReference'

  /VirtualApp/{moId}/permission:
    get:
      tags: [VirtualApp]
      summary: |2
        List of permissions defined for this entity.
      operationId: VirtualApp_getPermission
      description: |2
        List of permissions defined for this entity.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/Permission'

  /VirtualApp/{moId}/recentTask:
    get:
      tags: [VirtualApp]
      summary: |2
        The set of recent tasks operating on this managed entity.
      operationId: VirtualApp_getRecentTask
      description: |2
        The set of recent tasks operating on this managed entity.
        
        This is a subset
        of *TaskManager.recentTask* belong to this entity. A task in this
        list could be in one of the four states: pending, running, success or error.
        
        This property can be used to deduce intermediate power states for
        a virtual machine entity. For example, if the current powerState is "poweredOn"
        and there is a running task performing the "suspend" operation, then the virtual
        machine's intermediate state might be described as "suspending."
        
        Most tasks (such as power operations) obtain exclusive access to the virtual
        machine, so it is unusual for this list to contain more than one running task.
        One exception, however, is the task of cloning a virtual machine.
        In releases after vSphere API 5.0, vSphere Servers might not
        generate property collector update notifications for this property.
        To obtain the latest value of the property, you can use
        PropertyCollector methods RetrievePropertiesEx or WaitForUpdatesEx.
        If you use the PropertyCollector.WaitForUpdatesEx method, specify
        an empty string for the version parameter. Any other version value will not
        produce any property values as no updates are generated.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            Refers instances of *Task*.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/ManagedObjectReference'

  /VirtualApp/{moId}/resourcePool:
    get:
      tags: [VirtualApp]
      summary: |2
        The set of child resource pools.
      operationId: VirtualApp_getResourcePool
      description: |2
        The set of child resource pools.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            Refers instances of *ResourcePool*.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/ManagedObjectReference'

  /VirtualApp/{moId}/runtime:
    get:
      tags: [VirtualApp]
      summary: |2
        Runtime information about a resource pool.
      operationId: VirtualApp_getRuntime
      description: |2
        Runtime information about a resource pool.
        
        The *ResourcePoolResourceUsage* information within
        *ResourcePoolRuntimeInfo* can be transiently stale.
        Use *ResourcePool.RefreshRuntime* method to
        update the information.
        In releases after vSphere API 5.0, vSphere Servers might not
        generate property collector update notifications for this property.
        To obtain the latest value of the property, you can use
        PropertyCollector methods RetrievePropertiesEx or WaitForUpdatesEx.
        If you use the PropertyCollector.WaitForUpdatesEx method, specify
        an empty string for the version parameter. Any other version value will not
        produce any property values as no updates are generated.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResourcePoolRuntimeInfo'

  /VirtualApp/{moId}/summary:
    get:
      tags: [VirtualApp]
      summary: |2
        Basic information about a resource pool.
      operationId: VirtualApp_getSummary
      description: |2
        Basic information about a resource pool.
        
        In releases after vSphere API 5.0, vSphere Servers might not
        generate property collector update notifications for this property.
        To obtain the latest value of the property, you can use
        PropertyCollector methods RetrievePropertiesEx or WaitForUpdatesEx.
        If you use the PropertyCollector.WaitForUpdatesEx method, specify
        an empty string for the version parameter. Any other version value will not
        produce any property values as no updates are generated.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResourcePoolSummary'

  /VirtualApp/{moId}/tag:
    get:
      tags: [VirtualApp]
      summary: |2
        The set of tags associated with this managed entity.
      operationId: VirtualApp_getTag
      description: |2
        The set of tags associated with this managed entity.
        
        Experimental. Subject to change.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/Tag'

  /VirtualApp/{moId}/triggeredAlarmState:
    get:
      tags: [VirtualApp]
      summary: |2
        A set of alarm states for alarms triggered by this entity
        or by its descendants.
      operationId: VirtualApp_getTriggeredAlarmState
      description: |2
        A set of alarm states for alarms triggered by this entity
        or by its descendants.
        
        Triggered alarms are propagated up the inventory hierarchy
        so that a user can readily tell when a descendant has triggered an alarm.
        In releases after vSphere API 5.0, vSphere Servers might not
        generate property collector update notifications for this property.
        To obtain the latest value of the property, you can use
        PropertyCollector methods RetrievePropertiesEx or WaitForUpdatesEx.
        If you use the PropertyCollector.WaitForUpdatesEx method, specify
        an empty string for the version parameter. Any other version value will not
        produce any property values as no updates are generated.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/AlarmState'

  /VirtualApp/{moId}/vAppConfig:
    get:
      tags: [VirtualApp]
      summary: |2
        Configuration of this package.
      operationId: VirtualApp_getVAppConfig
      description: |2
        Configuration of this package.
        
        ***Required privileges:*** System.Read
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                $ref: '#/components/schemas/VAppConfigInfo'

  /VirtualApp/{moId}/value:
    get:
      tags: [VirtualApp]
      summary: |2
        List of custom field values.
      operationId: VirtualApp_getValue
      description: |2
        List of custom field values.
        
        Each value uses a key to associate
        an instance of a *CustomFieldStringValue* with
        a custom field definition.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/CustomFieldValue'

  /VirtualApp/{moId}/vm:
    get:
      tags: [VirtualApp]
      summary: |2
        The set of virtual machines associated with this resource pool.
      operationId: VirtualApp_getVm
      description: |2
        The set of virtual machines associated with this resource pool.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            Refers instances of *VirtualMachine*.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/ManagedObjectReference'

  /VirtualDiskManager/{moId}/CopyVirtualDisk_Task:
    post:
      tags: [VirtualDiskManager]
      summary: |2
        Copy a virtual disk, performing conversions as specified in the spec.
      operationId: VirtualDiskManager_CopyVirtualDisk_Task
      description: |2
        Copy a virtual disk, performing conversions as specified in the spec.
        
        If source (or destination) name is specified as a URL, then the
        corresponding datacenter parameter may be omitted.
        
        If source and destination resolve to the same file system location,
        the call has no effect, regardless of destSpec content.
        
        Requires Datastore.FileManagement privilege on both source and destination
        datastores.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CopyVirtualDiskRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor the
            operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***FileFault***: if an error occurs cloning the virtual disk.
            
            ***InvalidDatastore***: if the operation cannot be performed on the source
            or destination datastore.
            
            ***InvalidDiskFormat***: if the destination's format is not supported.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /VirtualDiskManager/{moId}/CreateVirtualDisk_Task:
    post:
      tags: [VirtualDiskManager]
      summary: |2
        Create a virtual disk.
      operationId: VirtualDiskManager_CreateVirtualDisk_Task
      deprecated: true
      description: |2
        Deprecated as of vSphere 6.5, use
        *HostVStorageObjectManager.HostCreateDisk_Task* instead.
        
        Create a virtual disk.
        
        The datacenter parameter may be omitted if a URL is used to name the disk.
        
        Requires Datastore.FileManagement privilege on the datastore where the
        virtual disk is created.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateVirtualDiskRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor the
            operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***FileFault***: if an error occurs creating the virtual disk.
            
            ***InvalidDatastore***: if the operation cannot be performed on the datastore.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /VirtualDiskManager/{moId}/DefragmentVirtualDisk_Task:
    post:
      tags: [VirtualDiskManager]
      summary: |2
        Defragment a sparse virtual disk.
      operationId: VirtualDiskManager_DefragmentVirtualDisk_Task
      deprecated: true
      description: |2
        Deprecated as of vSphere 6.5, use
        *VirtualMachine.DefragmentAllDisks* instead.
        
        Defragment a sparse virtual disk.
        
        This is defragmentation of the virtual disk file(s) in the host operating
        system, not defragmentation of the guest operating system filesystem inside
        the virtual disk.
        
        The datacenter parameter may be omitted if a URL is used to name the disk.
        
        Requires Datastore.FileManagement privilege on the datastore where the
        virtual disk resides.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DefragmentVirtualDiskRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor the
            operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***FileFault***: if an error occurs defragmenting the virtual disk.
            
            ***InvalidDatastore***: if the operation cannot be performed on the datastore.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /VirtualDiskManager/{moId}/DeleteVirtualDisk_Task:
    post:
      tags: [VirtualDiskManager]
      summary: |2
        Delete a virtual disk.
      operationId: VirtualDiskManager_DeleteVirtualDisk_Task
      deprecated: true
      description: |2
        Deprecated as of vSphere 6.5, use
        *HostVStorageObjectManager.HostDeleteVStorageObject_Task* instead.
        
        Delete a virtual disk.
        
        All files relating to the disk
        will be deleted.
        
        Deletion of virtual disk is prohibited if it is attached to VMs.
        
        The datacenter parameter may be omitted if a URL is used to name the disk.
        
        Requires Datastore.FileManagement privilege on the datastore where the
        virtual disk is removed.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DeleteVirtualDiskRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor the
            operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***FileFault***: if an error occurs deleting the virtual disk.
            
            ***InvalidDatastore***: if the operation cannot be performed on the datastore.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /VirtualDiskManager/{moId}/EagerZeroVirtualDisk_Task:
    post:
      tags: [VirtualDiskManager]
      summary: |2
        Explicitly zero out unaccessed parts zeroedthick disk.
      operationId: VirtualDiskManager_EagerZeroVirtualDisk_Task
      description: |2
        Explicitly zero out unaccessed parts zeroedthick disk.
        
        Effectively a no-op if the disk is already eagerZeroedThick.
        Unlike zeroFillVirtualDisk, which wipes the entire disk, this
        operation only affects previously unaccessed parts of the disk.
        
        The datacenter parameter may be omitted if a URL is used to name the disk.
        
        Requires Datastore.FileManagement privilege on the datastore where the
        virtual disk resides.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EagerZeroVirtualDiskRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor the
            operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***FileFault***: if an error occurs while eager-zeroing the virtual disk.
            
            ***InvalidDatastore***: if the operation cannot be performed on the datastore.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /VirtualDiskManager/{moId}/ExtendVirtualDisk_Task:
    post:
      tags: [VirtualDiskManager]
      summary: |2
        Expand the capacity of a virtual disk to the new capacity.
      operationId: VirtualDiskManager_ExtendVirtualDisk_Task
      deprecated: true
      description: |2
        Deprecated as of vSphere 6.5, use
        *HostVStorageObjectManager.HostExtendDisk_Task* instead.
        
        Expand the capacity of a virtual disk to the new capacity.
        
        If the eagerZero flag is not specified,
        \- the extended disk region of a zerothick disk will be zeroedthick
        \- the extended disk region of a eagerzerothick disk will be eagerzeroedthick
        \- a thin-provisioned disk will always be extended as a thin-provisioned disk.
        If the eagerZero flag TRUE, the extended region of the disk will
        always be eagerly zeroed.
        If the eagerZero flag FALSE, the extended region of a zeroedthick or
        eagerzeroedthick the disk will not be eagerly zeroed. This condition has
        no effect on a thin source disk.
        
        The datacenter parameter may be omitted if a URL is used to name the disk.
        
        Requires Datastore.FileManagement privilege on the datastore where the
        virtual disk resides.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ExtendVirtualDiskRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor the
            operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***FileFault***: if an error occurs extending the virtual disk.
            
            ***InvalidDatastore***: if the operation cannot be performed on the datastore.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /VirtualDiskManager/{moId}/ImportUnmanagedSnapshot:
    post:
      tags: [VirtualDiskManager]
      summary: |2
        Import an unmanaged-snapshot from Virtual-Volume(VVol) enabled
        Storage Array.
      operationId: VirtualDiskManager_ImportUnmanagedSnapshot
      description: |2
        Import an unmanaged-snapshot from Virtual-Volume(VVol) enabled
        Storage Array.
        
        Storage Array may support users to take snapshots indepedent of
        VMware stack. Such copies or snapshots are known as
        'Unmanaged-Snapshots'.
        We are providing an ability to end-users to import such
        unmanaged-snapshots as Virtual Disks.
        
        End-user needs to know the VVol-Identifier to import unmanaged
        snapshot as VirtualDisk.
        
        Once VirtualDisk is created, user can use 'Datastore Browser' to use
        with rest of Virtual Machine provisioning APIs.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ImportUnmanagedSnapshotRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***NotFound***: if VVol is not found
            
            ***InvalidDatastore***: if the operation cannot be performed on the
            datastore.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /VirtualDiskManager/{moId}/InflateVirtualDisk_Task:
    post:
      tags: [VirtualDiskManager]
      summary: |2
        Inflate a sparse or thin-provisioned virtual disk up to the full size.
      operationId: VirtualDiskManager_InflateVirtualDisk_Task
      deprecated: true
      description: |2
        Deprecated as of vSphere 6.5, use
        *HostVStorageObjectManager.HostInflateDisk_Task* instead.
        
        Inflate a sparse or thin-provisioned virtual disk up to the full size.
        
        Additional space allocated to the disk as a result of this operation
        will be filled with zeroes.
        
        The datacenter parameter may be omitted if a URL is used to name the disk.
        
        Requires Datastore.FileManagement privilege on the datastore where the
        virtual disk resides.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/InflateVirtualDiskRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor the
            operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***FileFault***: if an error occurs inflating the virtual disk.
            
            ***InvalidDatastore***: if the operation cannot be performed on the datastore.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /VirtualDiskManager/{moId}/MoveVirtualDisk_Task:
    post:
      tags: [VirtualDiskManager]
      summary: |2
        Move a virtual disk and all related files from the source location specified
        by <code>sourceName</code> and <code>sourceDatacenter</code> to the destination
        location specified by <code>destName</code> and <code>destDatacenter</code>.
      operationId: VirtualDiskManager_MoveVirtualDisk_Task
      description: |2
        Move a virtual disk and all related files from the source location specified
        by <code>sourceName</code> and <code>sourceDatacenter</code> to the destination
        location specified by <code>destName</code> and <code>destDatacenter</code>.
        
        If source (or destination) name is specified as a URL, then the
        corresponding datacenter parameter may be omitted.
        
        If source and destination resolve to the same file system location,
        the call has no effect.
        
        Requires Datastore.FileManagement privilege on both source and destination
        datastores.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MoveVirtualDiskRequestType'
      responses:
        '200':
          description: |2
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***FileFault***: if an error occurs renaming the virtual disk.
            
            ***InvalidDatastore***: if the operation cannot be performed on the source
            or destination datastore.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /VirtualDiskManager/{moId}/QueryVirtualDiskFragmentation:
    post:
      tags: [VirtualDiskManager]
      summary: |2
        Return the percentage of fragmentation of the sparse virtual disk.
      operationId: VirtualDiskManager_QueryVirtualDiskFragmentation
      description: |2
        Return the percentage of fragmentation of the sparse virtual disk.
        
        This is the fragmentation of virtual disk file(s) in the host operating
        system, not the fragmentation of the guest operating systemS filesystem
        inside the virtual disk.
        
        The datacenter parameter may be omitted if a URL is used to name the disk.
        
        Requires Datastore.FileManagement privilege on the datastore where the
        virtual disk resides.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QueryVirtualDiskFragmentationRequestType'
      responses:
        '200':
          description: |2
            the percentage of fragmentation (as an integer between 0 and 100)
            of the sparse virtual disk.
          content:
            application/json:
              schema:
                type: integer
                format: int32
        '500':
          description: |2
            ***FileFault***: if an error occurs reading the virtual disk.
            
            ***InvalidDatastore***: if the operation cannot be performed on the datastore.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /VirtualDiskManager/{moId}/QueryVirtualDiskGeometry:
    post:
      tags: [VirtualDiskManager]
      summary: |2
        Get the disk geometry information for the virtual disk.
      operationId: VirtualDiskManager_QueryVirtualDiskGeometry
      description: |2
        Get the disk geometry information for the virtual disk.
        
        The datacenter parameter may be omitted if a URL is used to name the disk.
        
        Requires Datastore.FileManagement privilege on the datastore where the
        virtual disk resides.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QueryVirtualDiskGeometryRequestType'
      responses:
        '200':
          description: |2
            The geometry information for this virtual disk.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HostDiskDimensionsChs'
        '500':
          description: |2
            ***FileFault***: if an error occurs reading the virtual disk.
            
            ***InvalidDatastore***: if the operation cannot be performed on the datastore.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /VirtualDiskManager/{moId}/QueryVirtualDiskUuid:
    post:
      tags: [VirtualDiskManager]
      summary: |2
        Get the virtual disk SCSI inquiry page 0x83 data.
      operationId: VirtualDiskManager_QueryVirtualDiskUuid
      deprecated: true
      description: |2
        Deprecated as of vSphere 6.5, use
        *HostVStorageObjectManager.HostRetrieveVStorageObject*
        instead.
        
        Get the virtual disk SCSI inquiry page 0x83 data.
        
        The datacenter parameter may be omitted if a URL is used to name the disk.
        
        Requires Datastore.FileManagement privilege on the datastore where the
        virtual disk resides.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QueryVirtualDiskUuidRequestType'
      responses:
        '200':
          description: |2
            The hex representation of the unique ID for this virtual disk.
          content:
            application/json:
              schema:
                type: string
        '500':
          description: |2
            ***FileFault***: if an error occurs reading the virtual disk.
            
            ***InvalidDatastore***: if the operation cannot be performed on the datastore.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /VirtualDiskManager/{moId}/ReleaseManagedSnapshot:
    post:
      tags: [VirtualDiskManager]
      summary: |2
        Release a snapshot previously imported with importUnmanagedSnapshot
      operationId: VirtualDiskManager_ReleaseManagedSnapshot
      description: |2
        Release a snapshot previously imported with importUnmanagedSnapshot
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ReleaseManagedSnapshotRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***FileNotFound***: if vdisk is not found
            
            ***InvalidDatastore***: if the operation cannot be performed on the
            datastore.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /VirtualDiskManager/{moId}/SetVirtualDiskUuid:
    post:
      tags: [VirtualDiskManager]
      summary: |2
        Set the virtual disk SCSI inquiry page 0x83 data.
      operationId: VirtualDiskManager_SetVirtualDiskUuid
      deprecated: true
      description: |2
        Deprecated as of vSphere 6.5, use
        *HostVStorageObjectManager.HostRegisterDisk* to register
        a disk as vStorageObject with new unique UUID.
        
        Set the virtual disk SCSI inquiry page 0x83 data.
        
        The datacenter parameter may be omitted if a URL is used to name the disk.
        
        Requires Datastore.FileManagement privilege on the datastore where the
        virtual disk resides.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SetVirtualDiskUuidRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***FileFault***: if an error occurs updating the virtual disk.
            
            ***InvalidDatastore***: if the operation cannot be performed on the datastore.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /VirtualDiskManager/{moId}/ShrinkVirtualDisk_Task:
    post:
      tags: [VirtualDiskManager]
      summary: |2
        Shrink a sparse virtual disk.
      operationId: VirtualDiskManager_ShrinkVirtualDisk_Task
      deprecated: true
      description: |2
        Deprecated as of vSphere 6.5, use
        *VirtualMachine.ShrinkDisk_Task* instead.
        
        Shrink a sparse virtual disk.
        
        The datacenter parameter may be omitted if a URL is used to name the disk.
        
        The optional parameter <code>copy</code> specifies whether to shrink the
        disk in copy-shrink mode or in-place mode. In copy-shrink mode,
        additional space is required, but will result in a shrunk disk that is
        also defragmented. In-place shrink does not require additional space,
        but will increase fragmentation. The default behavior is to perform
        copy-shrink if the parameter is not specified.
        
        Requires Datastore.FileManagement privilege on the datastore where the
        virtual disk resides.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ShrinkVirtualDiskRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor the
            operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***FileFault***: if an error occurs shrinking the virtual disk.
            
            ***InvalidDatastore***: if the operation cannot be performed on the datastore.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /VirtualDiskManager/{moId}/ZeroFillVirtualDisk_Task:
    post:
      tags: [VirtualDiskManager]
      summary: |2
        Overwrite all blocks of the virtual disk with zeros.
      operationId: VirtualDiskManager_ZeroFillVirtualDisk_Task
      description: |2
        Overwrite all blocks of the virtual disk with zeros.
        
        All data will be lost.
        
        The datacenter parameter may be omitted if a URL is used to name the disk.
        
        Requires Datastore.FileManagement privilege on the datastore where the
        virtual disk resides.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ZeroFillVirtualDiskRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor the
            operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***FileFault***: if an error occurs zero filling the virtual disk.
            
            ***InvalidDatastore***: if the operation cannot be performed on the datastore.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /VirtualMachine/{moId}/AcquireMksTicket:
    post:
      tags: [VirtualMachine]
      summary: |2
        Creates and returns a one-time credential used in establishing a
        remote mouse-keyboard-screen connection to this virtual
        machine.
      operationId: VirtualMachine_AcquireMksTicket
      deprecated: true
      description: |2
        Deprecated as of vSphere API 4.1, use *VirtualMachine.AcquireTicket* instead.
        
        Creates and returns a one-time credential used in establishing a
        remote mouse-keyboard-screen connection to this virtual
        machine.
        
        The correct function of this method depends on being able to
        retrieve TCP binding information about the server end of the
        client connection that is requesting the ticket. If such
        information is not available, the NotSupported fault is thrown.
        This method is appropriate for SOAP and authenticated connections,
        which are both TCP-based connections.
        
        ***Required privileges:*** VirtualMachine.Interact.ConsoleInteract
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            A one-time credential used in establishing a remote
            mouse-keyboard-screen connection.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VirtualMachineMksTicket'

  /VirtualMachine/{moId}/AcquireTicket:
    post:
      tags: [VirtualMachine]
      summary: |2
        Creates and returns a one-time credential used in establishing a
        specific connection to this virtual machine, for example, a ticket
        type of mks can be used to establish a remote mouse-keyboard-screen
        connection.
      operationId: VirtualMachine_AcquireTicket
      description: |2
        Creates and returns a one-time credential used in establishing a
        specific connection to this virtual machine, for example, a ticket
        type of mks can be used to establish a remote mouse-keyboard-screen
        connection.
        
        A client using this ticketing mechanism must have network
        connectivity to the ESX server where the virtual machine is running,
        and the ESX server must be reachable to the management client from
        the address made available to the client via the ticket.
        
        Acquiring a virtual machine ticket requires different privileges
        depending on the types of ticket:
        - VirtualMachine.Interact.DeviceConnection if requesting a device
          ticket.
        - VirtualMachine.Interact.GuestControl if requesting a guestControl
          or guestIntegrity ticket.
        - VirtualMachine.Interact.ConsoleInteract if requesting an mks
          or webmks ticket.
        - VirtualMachine.Interact.DnD if requesting a drag and drop
          ticket.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AcquireTicketRequestType'
      responses:
        '200':
          description: |2
            A one-time credential used in establishing a remote
            connection to this virtual machine.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VirtualMachineTicket'
        '500':
          description: |2
            ***InvalidState***: if the virtual machine is not connected.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InvalidState'

  /VirtualMachine/{moId}/AnswerVM:
    post:
      tags: [VirtualMachine]
      summary: |2
        Responds to a question that is blocking this virtual machine.
      operationId: VirtualMachine_AnswerVM
      description: |2
        Responds to a question that is blocking this virtual machine.
        
        ***Required privileges:*** VirtualMachine.Interact.AnswerQuestion
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AnswerVMRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***InvalidArgument***: if the questionId does not apply to this virtual machine.
            For example, this can happen if another client already answered the message.
            
            ***ConcurrentAccess***: if the question has been or is being answered by
            another thread or user.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConcurrentAccess'

  /VirtualMachine/{moId}/ApplyEvcModeVM_Task:
    post:
      tags: [VirtualMachine]
      summary: |2
        Applies the EVC mode masks to the virtual machine.
      operationId: VirtualMachine_ApplyEvcModeVM_Task
      description: |2
        Applies the EVC mode masks to the virtual machine.
        
        Existing masks will be replaced by the input masks.
        If the mask parameter is not set, then the masks on the virtual machine
        are removed.
        See *EVCMode.featureMask* for the list of masks to provide.
        These can be retrieved from *Capability.supportedEVCMode*,
        which is accessible in *ServiceInstance.capability*.
        
        This operation is only supported if
        *VirtualMachineCapability.perVmEvcSupported* is true.
        
        ***Required privileges:*** VirtualMachine.Config.Settings
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ApplyEvcModeVMRequestType'
      responses:
        '200':
          description: |2
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***InvalidPowerState***: if the power state is not poweredOff.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InvalidState'

  /VirtualMachine/{moId}/AttachDisk_Task:
    post:
      tags: [VirtualMachine]
      summary: |2
        Attach an existing disk to this virtual machine.
      operationId: VirtualMachine_AttachDisk_Task
      description: |2
        Attach an existing disk to this virtual machine.
        
        A minimum virtual machine version of 'vmx-13' is required for this
        operation to succeed. If a compatible VM version is not satisfied,
        a *DeviceUnsupportedForVmVersion* fault will be thrown.
        
        ***Required privileges:*** VirtualMachine.Config.AddExistingDisk
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AttachDiskRequestType'
      responses:
        '200':
          description: |2
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***NotFound***: if the disk object cannot be found.
            
            ***VmConfigFault***: if the virtual machine's configuration is invalid.
            
            ***FileFault***: if there is a problem creating or accessing the virtual
            machine's files for this operation.
            
            ***InvalidState***: if the operation cannot be performed in the current
            state of the virtual machine. For example, because the virtual
            machine's configuration is not available.
            
            ***InvalidDatastore***: If the datastore cannot be found or inaccessible.
            
            ***InvalidController***: If the specified controller cannot be found or
            the specified unitNumber is already taken, or
            the controller has no free slots.
            
            ***MissingController***: If the virtual machine has no or more than one
            available controllers when controllerKey is
            unset.
            
            ***DeviceUnsupportedForVmVersion***: If the virtual machine's version is
            incompatible for the given device.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /VirtualMachine/{moId}/CheckCustomizationSpec:
    post:
      tags: [VirtualMachine]
      summary: |2
        Checks the customization specification against the virtual machine configuration.
      operationId: VirtualMachine_CheckCustomizationSpec
      description: |2
        Checks the customization specification against the virtual machine configuration.
        
        For example, this is used on a source virtual machine before a clone operation to
        catch customization failure before the disk copy. This checks the specification's
        internal consistency as well as for compatibility with this virtual machine's
        configuration.
        
        ***Required privileges:*** VirtualMachine.Provisioning.Customize
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CheckCustomizationSpecRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***CustomizationFault***: A subclass of CustomizationFault is thrown.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomizationFault'

  /VirtualMachine/{moId}/CloneVM_Task:
    post:
      tags: [VirtualMachine]
      summary: |2
        Creates a clone of this virtual machine.
      operationId: VirtualMachine_CloneVM_Task
      description: |2
        Creates a clone of this virtual machine.
        
        If the virtual machine
        is used as a template, this method corresponds to the deploy command.
        
        Any % (percent) character used in this name parameter must be escaped, unless it
        is used to start an escape sequence. Clients may also escape any other characters
        in this name parameter.
        
        The privilege required on the source virtual machine depends on the source
        and destination types:
        - source is virtual machine, destination is virtual machine -
          VirtualMachine.Provisioning.Clone
        - source is virtual machine, destination is template -
          VirtualMachine.Provisioning.CreateTemplateFromVM
        - source is template, destination is virtual machine -
          VirtualMachine.Provisioning.DeployTemplate
        - source is template, destination is template -
          VirtualMachine.Provisioning.CloneTemplate
        - source is encrypted virtual machine - Cryptographer.Clone
          
        If customization is requested in the CloneSpec, then the
        VirtualMachine.Provisioning.Customize privilege must also be
        held on the source virtual machine.
        
        The Resource.AssignVMToPool privilege is also required for the
        resource pool specified in the CloneSpec, if the destination is not a
        template.
        The Datastore.AllocateSpace privilege is required on all datastores
        where the clone is created.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CloneVMRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor the
            operation. The *info.result* property in the
            *Task* contains the newly added *VirtualMachine* upon
            success.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***InvalidArgument***: if the host cannot run this virtual machine.
            
            ***CustomizationFault***: if a customization error happens.
            Typically, a specific subclass of this exception is thrown.
            
            ***TaskInProgress***: if the virtual machine is busy.
            
            ***NotSupported***: if the operation is not supported by the current agent.
            
            ***InvalidState***: if the operation cannot be performed because of the
            virtual machine's current state. For example, if the virtual machine
            configuration information is not available.
            
            ***InvalidDatastore***: if the operation cannot be performed on the
            target datastores.
            
            ***FileFault***: if there is an error accessing the virtual machine files.
            
            ***VmConfigFault***: if the virtual machine is not compatible with the
            destination host. Typically, a specific subclass of this exception is
            thrown, such as IDEDiskNotSupported.
            
            ***MigrationFault***: if it is not possible to migrate the virtual machine to
            the destination host. This is typically due to hosts being incompatible,
            such as mismatch in network polices or access to networks and datastores.
            Typically, a more specific subclass is thrown.
            
            ***InsufficientResourcesFault***: if this operation would violate a resource
            usage policy.
            
            ***NoPermission***: if the virtual machine is encrypted, but encryption
            is not enabled on the destination and the user does not have
            Cryptographer.RegisterHost permission on the host.
            
            ***NoPermission***: if source virtual machine is encrypted, but the
            the user does not have Cryptographer.Clone permission on it.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /VirtualMachine/{moId}/ConsolidateVMDisks_Task:
    post:
      tags: [VirtualMachine]
      summary: |2
        Consolidate the virtual disk files of the virtual machine by finding hierarchies
        of redo logs that can be combined without violating data dependency.
      operationId: VirtualMachine_ConsolidateVMDisks_Task
      description: |2
        Consolidate the virtual disk files of the virtual machine by finding hierarchies
        of redo logs that can be combined without violating data dependency.
        
        The
        redundant redo logs after merging are then deleted.
        Consolidation improves I/O performance since less number of virtual disk
        files need to be traversed; it also reduces the storage usage. However
        additional space is temporarily required to perform the operation. Use *VirtualMachine.EstimateStorageForConsolidateSnapshots_Task* to estimate the
        temporary space required.
        Consolidation can be I/O intensive, it is advisable to invoke this operation
        when guest is not under heavy I/O usage.
        
        ***Required privileges:*** VirtualMachine.State.RemoveSnapshot
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor the
            operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***TaskInProgress***: if the virtual machine is busy.
            
            ***FileFault***: if if there is a problem creating or accessing the
            virtual machine's files for this operation. Typically a more
            specific fault for example *NoDiskSpace* is
            thrown.
            
            ***InvalidState***: if the operation cannot be performed because of the
            virtual machine's current state. For example, if the virtual
            machine configuration information is not available.
            
            ***VmConfigFault***: if a virtual machine configuration issue prevents
            consolidation. Typically, a more specific fault is thrown
            such as *InvalidDiskFormat* if a disk cannot
            be read, or *InvalidSnapshotFormat* if the
            snapshot configuration is invalid.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /VirtualMachine/{moId}/CreateScreenshot_Task:
    post:
      tags: [VirtualMachine]
      summary: |2
        Create a screen shot of a virtual machine.
      operationId: VirtualMachine_CreateScreenshot_Task
      description: |2
        Create a screen shot of a virtual machine.
        
        ***Required privileges:*** VirtualMachine.Interact.CreateScreenshot
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***TaskInProgress***: if the virtual machine is busy.
            
            ***FileFault***: if there is a problem with creating or accessing one
            or more files needed for this operation.
            
            ***InvalidPowerState***: if the virtual machine is not powered on.
            
            ***InvalidState***: if the virtual machine is not ready to respond to
            such requests.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /VirtualMachine/{moId}/CreateSecondaryVM_Task:
    post:
      tags: [VirtualMachine]
      summary: |2
        Creates a secondary virtual machine to be part of this fault tolerant group.
      operationId: VirtualMachine_CreateSecondaryVM_Task
      deprecated: true
      description: |2
        Deprecated as of vSphere API 6.0, use *VirtualMachine.CreateSecondaryVMEx_Task* instead.
        
        Creates a secondary virtual machine to be part of this fault tolerant group.
        
        If a host is specified, the secondary virtual machine will be created on it.
        Otherwise, a host will be selected by the system.
        
        If the primary virtual machine (i.e., this virtual machine) is powered on when
        the secondary is created, an attempt will be made to power on the secondary on
        a system selected host. If the cluster is a DRS cluster, DRS will be
        invoked to obtain a placement for the new secondary virtual machine. If the DRS
        recommendation (see *ClusterRecommendation*)
        is automatic, it will be automatically executed. Otherwise, the recommendation will
        be returned to the caller of this method and the secondary will remain powered off
        until the recommendation is approved using *ClusterComputeResource.ApplyRecommendation*.
        Failure to power on the secondary virtual machine will not fail the creation of the secondary.
        
        ***Required privileges:*** VirtualMachine.Interact.CreateSecondary
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateSecondaryVMRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor the
            operation. The *info.result* property in the
            *Task* returns an instance of the
            *FaultToleranceSecondaryOpResult* data object, which
            contains a reference to the created *VirtualMachine*
            and the status of powering it on, if attempted.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***TaskInProgress***: if the virtual machine is busy.
            
            ***NotSupported***: if the virtual machine is marked as a template, or
            it is not in a vSphere HA enabled cluster.
            
            ***InvalidState***: if the virtual machine's configuration information
            is not available.
            
            ***ManagedObjectNotFound***: if a host is specified and it does not exist.
            
            ***InsufficientResourcesFault***: if this operation would violate a resource
            usage policy.
            
            ***VmFaultToleranceIssue***: if any error is encountered with the
            fault tolerance configuration of the virtual machine. Typically,
            a more specific fault like FaultToleranceNotLicensed is thrown.
            
            ***FileFault***: if there is a problem accessing the virtual machine on the
            filesystem.
            
            ***VmConfigFault***: if a configuration issue prevents creating the secondary.
            Typically, a more specific fault such as
            VmConfigIncompatibleForFaultTolerance is thrown.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /VirtualMachine/{moId}/CreateSecondaryVMEx_Task:
    post:
      tags: [VirtualMachine]
      summary: |2
        Creates a secondary virtual machine to be part of this fault tolerant group.
      operationId: VirtualMachine_CreateSecondaryVMEx_Task
      description: |2
        Creates a secondary virtual machine to be part of this fault tolerant group.
        
        If a host is specified, the secondary virtual machine will be created on it.
        Otherwise, a host will be selected by the system.
        
        If a FaultToleranceConfigSpec is specified, the virtual machine's
        configuration files and disks will be created in the specified datastores.
        
        If the primary virtual machine (i.e., this virtual machine) is powered on when
        the secondary is created, an attempt will be made to power on the secondary on
        a system selected host. If the cluster is a DRS cluster, DRS will be
        invoked to obtain a placement for the new secondary virtual machine. If the DRS
        recommendation (see *ClusterRecommendation*)
        is automatic, it will be automatically executed. Otherwise, the recommendation will
        be returned to the caller of this method and the secondary will remain powered off
        until the recommendation is approved using *ClusterComputeResource.ApplyRecommendation*.
        Failure to power on the secondary virtual machine will not fail the creation of the secondary.
        
        ***Required privileges:*** VirtualMachine.Interact.CreateSecondary
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateSecondaryVMExRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor the
            operation. The *info.result* property in the
            *Task* returns an instance of the
            *FaultToleranceSecondaryOpResult* data object, which
            contains a reference to the created *VirtualMachine*
            and the status of powering it on, if attempted.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***TaskInProgress***: if the virtual machine is busy.
            
            ***NotSupported***: if the virtual machine is marked as a template, or
            it is not in a vSphere HA enabled cluster.
            
            ***InvalidState***: if the virtual machine's configuration information
            is not available.
            
            ***ManagedObjectNotFound***: if a host is specified and it does not exist.
            
            ***InsufficientResourcesFault***: if this operation would violate a resource
            usage policy.
            
            ***VmFaultToleranceIssue***: if any error is encountered with the
            fault tolerance configuration of the virtual machine. Typically,
            a more specific fault like FaultToleranceNotLicensed is thrown.
            
            ***FileFault***: if there is a problem accessing the virtual machine on the
            filesystem.
            
            ***VmConfigFault***: if a configuration issue prevents creating the secondary.
            Typically, a more specific fault such as
            VmConfigIncompatibleForFaultTolerance is thrown.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /VirtualMachine/{moId}/CreateSnapshot_Task:
    post:
      tags: [VirtualMachine]
      summary: |2
        Creates a new snapshot of this virtual machine.
      operationId: VirtualMachine_CreateSnapshot_Task
      deprecated: true
      description: |2
        Deprecated as of vSphere 8.0GA, this method is deprecated. Please
        use *VirtualMachine.CreateSnapshotEx_Task* instead.
        
        Creates a new snapshot of this virtual machine.
        
        As a side effect,
        this updates the current snapshot.
        
        Snapshots are not supported for Fault Tolerance primary and secondary
        virtual machines.
        
        Any % (percent) character used in this name parameter must be escaped, unless it
        is used to start an escape sequence. Clients may also escape any other characters
        in this name parameter.
        
        ***Required privileges:*** VirtualMachine.State.CreateSnapshot
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateSnapshotRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor the
            operation. The *info.result* property in the
            *Task* contains the newly created *VirtualMachineSnapshot* upon
            success.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***TaskInProgress***: if the virtual machine is busy.
            
            ***NotSupported***: if the host product does not support snapshots or if the host
            does not support quiesced snapshots and the quiesce parameter is set to true; or
            if the virtual machine is a Fault Tolerance primary or secondary
            
            ***SnapshotFault***: if an error occurs during the snapshot operation.
            Typically a more specific fault like MultipleSnapshotsNotSupported
            is thrown.
            
            ***FileFault***: if there is a problem with creating or accessing one
            or more files needed for this operation.
            
            ***VmConfigFault***: if the virtual machine's configuration is invalid.
            Typically, a more specific fault like InvalidSnapshotState is thrown.
            
            ***InvalidName***: if the specified snapshot name is invalid.
            
            ***InvalidPowerState***: if the operation cannot be performed in the current
            power state of the virtual machine.
            
            ***InvalidState***: if the operation cannot be performed because of the
            virtual machine's current state. For example, the virtual machine
            configuration information is not available.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /VirtualMachine/{moId}/CreateSnapshotEx_Task:
    post:
      tags: [VirtualMachine]
      summary: |2
        Creates a new snapshot of this virtual machine.
      operationId: VirtualMachine_CreateSnapshotEx_Task
      description: |2
        Creates a new snapshot of this virtual machine.
        
        As a side effect,
        this updates the current snapshot.
        
        Snapshots are not supported for Fault Tolerance primary and secondary
        virtual machines.
        
        Any % (percent) character used in this name parameter must be escaped,
        unless it is used to start an escape sequence. Clients may also escape
        any other characters in this name parameter.
        
        ***Required privileges:*** VirtualMachine.State.CreateSnapshot
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateSnapshotExRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor
            the operation. The *info.result* property
            in the *Task* contains the newly created
            *VirtualMachineSnapshot* upon success.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***InvalidArgument***: if quiesceSpec is invalid.
            
            ***TaskInProgress***: if the virtual machine is busy.
            
            ***NotSupported***: if the host product does not support snapshots or
            if the host does not support quiesced snapshots and the quiesce
            spec is set; or if the virtual machine is a Fault
            Tolerance primary or secondary; or if an unsupported quiesce
            spec is set.
            
            ***SnapshotFault***: if an error occurs during the snapshot operation.
            Typically a more specific fault like MultipleSnapshotsNotSupported
            is thrown.
            
            ***FileFault***: if there is a problem with creating or accessing one
            or more files needed for this operation.
            
            ***VmConfigFault***: if the virtual machine's configuration is invalid.
            Typically, a more specific fault like InvalidSnapshotState is
            thrown.
            
            ***InvalidName***: if the specified snapshot name is invalid.
            
            ***InvalidPowerState***: if the operation cannot be performed in the
            current power state of the virtual machine.
            
            ***InvalidState***: if the operation cannot be performed because of the
            virtual machine's current state. For example, the virtual machine
            configuration information is not available.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /VirtualMachine/{moId}/CryptoUnlock_Task:
    post:
      tags: [VirtualMachine]
      summary: |2
        Unlocks an encrypted virtual machine by sending the encryption keys for
        the Virtual Machine Home and all the Virtual Disks to the ESX Server.
      operationId: VirtualMachine_CryptoUnlock_Task
      description: |2
        Unlocks an encrypted virtual machine by sending the encryption keys for
        the Virtual Machine Home and all the Virtual Disks to the ESX Server.
        
        ***Required privileges:*** Cryptographer.RegisterVM
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***InvalidState***: when the required Key Management Server is not
            configured.
            
            ***InvalidVmState***: when the virtual machine failed to unlock.
            
            ***NotSupported***: if the ESX server doesn't support encryption.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MethodFault'

  /VirtualMachine/{moId}/CustomizeVM_Task:
    post:
      tags: [VirtualMachine]
      summary: |2
        Customizes a virtual machine's guest operating system.
      operationId: VirtualMachine_CustomizeVM_Task
      description: |2
        Customizes a virtual machine's guest operating system.
        
        ***Required privileges:*** VirtualMachine.Provisioning.Customize
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CustomizeVMRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor the
            operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***CustomizationFault***: A subclass of CustomizationFault is thrown.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomizationFault'

  /VirtualMachine/{moId}/DefragmentAllDisks:
    post:
      tags: [VirtualMachine]
      summary: |2
        Defragment all virtual disks attached to this virtual machine.
      operationId: VirtualMachine_DefragmentAllDisks
      description: |2
        Defragment all virtual disks attached to this virtual machine.
        
        ***Required privileges:*** VirtualMachine.Interact.DefragmentAllDisks
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***InvalidState***: if the virtual machine is not connected.
            
            ***InvalidPowerState***: if the virtual machine is poweredOn.
            
            ***TaskInProgress***: if the virtual machine is busy.
            
            ***FileFault***: if there is an error accessing the disk files.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /VirtualMachine/{moId}/Destroy_Task:
    post:
      tags: [VirtualMachine]
      summary: |2
        Destroys this object, deleting its contents and removing it from its parent
        folder (if any).
      operationId: VirtualMachine_Destroy_Task
      description: |2
        Destroys this object, deleting its contents and removing it from its parent
        folder (if any).
        
        NOTE: The appropriate privilege must be held on the parent of the destroyed
        entity as well as the entity itself.
        This method can throw one of several exceptions. The exact set of exceptions
        depends on the kind of entity that is being removed. See comments for
        each entity for more information on destroy behavior.
        
        ***Required privileges:*** VirtualMachine.Inventory.Delete
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor the
            operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            Failure
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /VirtualMachine/{moId}/DetachDisk_Task:
    post:
      tags: [VirtualMachine]
      summary: |2
        Detach a disk from this virtual machine.
      operationId: VirtualMachine_DetachDisk_Task
      description: |2
        Detach a disk from this virtual machine.
        
        ***Required privileges:*** VirtualMachine.Config.RemoveDisk
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DetachDiskRequestType'
      responses:
        '200':
          description: |2
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***NotFound***: if the disk object cannot be found.
            
            ***VmConfigFault***: if the virtual machine's configuration is invalid.
            
            ***FileFault***: if there is a problem creating or accessing the virtual
            machine's files for this operation.
            
            ***InvalidState***: if the operation cannot be performed in the current
            state of the virtual machine. For example, because the virtual
            machine's configuration is not available.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /VirtualMachine/{moId}/DisableSecondaryVM_Task:
    post:
      tags: [VirtualMachine]
      summary: |2
        Disables the specified secondary virtual machine in this fault tolerant group.
      operationId: VirtualMachine_DisableSecondaryVM_Task
      description: |2
        Disables the specified secondary virtual machine in this fault tolerant group.
        
        The specified secondary will not be automatically started on a subsequent
        power-on of the primary virtual machine.
        This operation could leave the primary virtual machine in a non-fault
        tolerant state.
        
        ***Required privileges:*** VirtualMachine.Interact.DisableSecondary
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DisableSecondaryVMRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor the
            operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***VmFaultToleranceIssue***: if any error is encountered with the
            fault tolerance configuration of the virtual machine. Typically,
            a more specific fault like InvalidOperationOnSecondaryVm is thrown.
            
            ***TaskInProgress***: if the virtual machine is busy.
            
            ***InvalidState***: if the host is in maintenance mode or if
            the virtual machine's configuration information is not available.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /VirtualMachine/{moId}/DropConnections:
    post:
      tags: [VirtualMachine]
      summary: |2
        Force the virtual machine to drop the specified connections.
      operationId: VirtualMachine_DropConnections
      description: |2
        Force the virtual machine to drop the specified connections.
        
        Attempt to drop the specified virtual machine connections. An attempt
        will be made to drop all of the specified connections before returning.
        
        ***Since:*** vSphere API Release 7.0.1.0
        
        ***Required privileges:*** VirtualMachine.Interact.ConsoleInteract
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DropConnectionsRequestType'
      responses:
        '200':
          description: |2
            true All of the specified connections have been dropped.
          content:
            application/json:
              schema:
                type: boolean
        '500':
          description: |2
            ***InvalidPowerState***: If the virtual machine is not powered on.
            No connection drop actions will have been
            attempted if this is thrown.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InvalidState'

  /VirtualMachine/{moId}/EnableSecondaryVM_Task:
    post:
      tags: [VirtualMachine]
      summary: |2
        Enables the specified secondary virtual machine in this fault tolerant group.
      operationId: VirtualMachine_EnableSecondaryVM_Task
      description: |2
        Enables the specified secondary virtual machine in this fault tolerant group.
        
        This operation is used to enable a secondary virtual machine that was
        previously disabled by the *VirtualMachine.DisableSecondaryVM_Task*
        call. The specified secondary will be automatically started whenever the
        primary is powered on.
        
        If the primary virtual machine (i.e., this virtual machine) is powered on when
        the secondary is enabled, an attempt will be made to power on the secondary. If
        a host was specified in the method call, this host will be used. If a host is
        not specified, one will be selected by the system. In the latter case, if the cluster
        is a DRS cluster, DRS will be invoked to obtain a placement for the new secondary
        virtual machine. If the DRS recommendation (see *ClusterRecommendation*)
        is automatic, it will be executed. Otherwise, the recommendation will be
        returned to the caller of this method and the secondary will remain powered off
        until the recommendation is approved using *ClusterComputeResource.ApplyRecommendation*.
        
        ***Required privileges:*** VirtualMachine.Interact.EnableSecondary
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EnableSecondaryVMRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor the
            operation. The *info.result* property in the
            *Task* returns an instance of the
            *FaultToleranceSecondaryOpResult* data object, which
            contains a reference to the *VirtualMachine*
            and the status of powering it on, if attempted.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***VmConfigFault***: if a configuration issue prevents enabling the secondary.
            Typically, a more specific fault such as
            VmConfigIncompatibleForFaultTolerance is thrown.
            
            ***VmFaultToleranceIssue***: if any error is encountered with the
            fault tolerance configuration of the virtual machine. Typically,
            a more specific fault like InvalidOperationOnSecondaryVm is thrown.
            
            ***TaskInProgress***: if the virtual machine is busy.
            
            ***ManagedObjectNotFound***: if a host is specified and it does not exist.
            
            ***InvalidState***: if the virtual machine's configuration information is not
            available, if the secondary virtual machine is not disabled, or if a
            power-on is attempted and one is already in progress.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /VirtualMachine/{moId}/EstimateStorageForConsolidateSnapshots_Task:
    post:
      tags: [VirtualMachine]
      summary: |2
        Estimate the temporary space required to consolidation disk
        files.
      operationId: VirtualMachine_EstimateStorageForConsolidateSnapshots_Task
      description: |2
        Estimate the temporary space required to consolidation disk
        files.
        
        The estimation is a lower bound if the childmost writable disk
        file will be consolidated for an online virtual machine, it is
        accurate for all other situations. This is because the space
        requirement depending on the size of the childmost disk file and how
        write intensive the guest is.
        
        This method can be used prior to invoke consolidation via
        *VirtualMachine.ConsolidateVMDisks_Task*.
        
        ***Required privileges:*** VirtualMachine.State.RemoveSnapshot
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor the
            operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***TaskInProgress***: if the virtual machine is busy.
            
            ***InvalidState***: if the operation cannot be performed because of the
            virtual machine's current state. For example, if the virtual machine
            configuration information is not available.
            
            ***FileFault***: if if there is a problem accessing the
            virtual machine's files for this operation. Typically a more
            specific fault *FileLocked* is thrown.
            
            ***VmConfigFault***: if a virtual machine configuration issue prevents
            the estimation. Typically, a more specific fault is thrown.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /VirtualMachine/{moId}/ExportVm:
    post:
      tags: [VirtualMachine]
      summary: |2
        Obtains an export lease on this virtual machine.
      operationId: VirtualMachine_ExportVm
      description: |2
        Obtains an export lease on this virtual machine.
        
        The export lease contains
        a list of URLs for the virtual disks for this virtual machine, as well as
        a ticket giving access to the URLs.
        
        See *HttpNfcLease* for information on how to use the lease.
        
        ***Required privileges:*** VApp.Export
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            The export lease on this *VirtualMachine*. The
            export task continues running until the lease is completed by the
            caller.
            
            Refers instance of *HttpNfcLease*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***InvalidPowerState***: if the virtual machine is powered on.
            
            ***TaskInProgress***: if the virtual machine is busy.
            
            ***InvalidState***: if the operation cannot be performed because of the
            virtual machine's current state. For example, if the virtual machine
            configuration information is not available.
            
            ***FileFault***: if there is an error accessing the virtual machine files.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /VirtualMachine/{moId}/ExtractOvfEnvironment:
    post:
      tags: [VirtualMachine]
      summary: |2
        Returns the OVF environment for a virtual machine.
      operationId: VirtualMachine_ExtractOvfEnvironment
      description: |2
        Returns the OVF environment for a virtual machine.
        
        If the virtual machine has no
        vApp configuration, an empty string is returned. Also, sensitive information
        is omitted, so this method is not guaranteed to return the complete OVF
        environment.
        
        ***Required privileges:*** VApp.ExtractOvfEnvironment
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                type: string
        '500':
          description: |2
            ***InvalidState***: if the virtual machine is not running
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InvalidState'

  /VirtualMachine/{moId}/InstantClone_Task:
    post:
      tags: [VirtualMachine]
      summary: |2
        Creates a powered-on Instant Clone of a virtual machine.
      operationId: VirtualMachine_InstantClone_Task
      description: |2
        Creates a powered-on Instant Clone of a virtual machine.
        
        The new
        virtual machine will be created on the same host and start with the
        identical running point as the original virtual machine, sharing memory
        state when possible and sharing disk state.
        The original virtual machine must be in a powered-on state.
        The privilege required for Instant Clone operation are:
        - VirtualMachine.Provisioning.Clone
        - VirtualMachine.Interact.PowerOn
        - VirtualMachine.Inventory.CreateFromExisting
        - Datastore.AllocateSpace
        - Resource.AssignVMToPool
          
        ***Required privileges:*** VirtualMachine.Provisioning.Clone
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/InstantCloneRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor
            the operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***InvalidArgument***: in the following cases:
            - Source virtual machine is not powered on
            - Source virtual machine configuration is not supported for
              Instant Clone operation
            - Relocation specification has unsupported settings 
              
            ***InvalidState***: if the operation cannot be performed because of the
            host or virtual machine's current state. For example, if the host
            is in maintenance mode or if the source virtual machine is not
            powered on.
            
            ***InvalidDatastore***: if the operation cannot be performed on the
            target datastores.
            
            ***FileFault***: if there is an error accessing the virtual machine
            files.
            
            ***InsufficientResourcesFault***: if this operation would violate a
            resource usage policy.
            
            ***DisallowedMigrationDeviceAttached***: if any of the devices attached
            to the source virtual machine are not supported for the Instant
            Clone operation or if device change specification contains
            changes that are not supported.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /VirtualMachine/{moId}/MakePrimaryVM_Task:
    post:
      tags: [VirtualMachine]
      summary: |2
        Makes the specified secondary virtual machine from this fault tolerant group as
        the primary virtual machine.
      operationId: VirtualMachine_MakePrimaryVM_Task
      description: |2
        Makes the specified secondary virtual machine from this fault tolerant group as
        the primary virtual machine.
        
        ***Required privileges:*** VirtualMachine.Interact.MakePrimary
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MakePrimaryVMRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor the
            operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***VmFaultToleranceIssue***: if any error is encountered with the
            fault tolerance configuration of the virtual machine. Typically,
            a more specific fault like InvalidOperationOnSecondaryVm is thrown.
            
            ***TaskInProgress***: if the virtual machine is busy.
            
            ***InvalidState***: if the host is in maintenance mode or if
            the virtual machine's configuration information is not available.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /VirtualMachine/{moId}/MarkAsTemplate:
    post:
      tags: [VirtualMachine]
      summary: |2
        Marks a VirtualMachine object as being used as a template.
      operationId: VirtualMachine_MarkAsTemplate
      description: |2
        Marks a VirtualMachine object as being used as a template.
        
        Note: A VirtualMachine marked as a template cannot be powered on.
        
        ***Required privileges:*** VirtualMachine.Provisioning.MarkAsTemplate
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***NotSupported***: if marking a virtual machine as a template is not supported.
            
            ***InvalidPowerState***: if the virtual machine is not powered off.
            
            ***InvalidState***: if the operation cannot be performed because of the
            virtual machine's current state. For example, if the virtual machine
            configuration information is not available.
            
            ***VmConfigFault***: if the template is incompatible with the host, such
            as the files are not accessible.
            
            ***FileFault***: if there is an error accessing the virtual machine files.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /VirtualMachine/{moId}/MarkAsVirtualMachine:
    post:
      tags: [VirtualMachine]
      summary: |2
        Clears the 'isTemplate' flag and reassociates the virtual machine with
        a resource pool and host.
      operationId: VirtualMachine_MarkAsVirtualMachine
      description: |2
        Clears the 'isTemplate' flag and reassociates the virtual machine with
        a resource pool and host.
        
        ***Required privileges:*** VirtualMachine.Provisioning.MarkAsVM
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MarkAsVirtualMachineRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***NotSupported***: if marking a template as a virtual machine is not
            supported.
            
            ***InvalidState***: if the virtual machine is not marked as a template.
            
            ***InvalidDatastore***: if the operation cannot be performed on the
            target datastores.
            
            ***VmConfigFault***: if the virtual machine is not compatible with the
            host. For example, a DisksNotSupported fault if the destination host
            does not support the disk backings of the template.
            
            ***FileFault***: if there is an error accessing the virtual machine files.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /VirtualMachine/{moId}/MigrateVM_Task:
    post:
      tags: [VirtualMachine]
      summary: |2
        Migrates a virtual machine's execution to a specific resource pool or host.
      operationId: VirtualMachine_MigrateVM_Task
      deprecated: true
      description: |2
        Deprecated as of vSphere 6.5, use *VirtualMachine.RelocateVM_Task*
        instead.
        
        Migrates a virtual machine's execution to a specific resource pool or host.
        
        Requires Resource.HotMigrate privilege if the virtual machine is powered on or
        Resource.ColdMigrate privilege if the virtual machine is powered off or
        suspended.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MigrateVMRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor the
            operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***NotSupported***: if the virtual machine is marked as a template.
            
            ***InvalidArgument***: in the following cases:
            - the target host and target pool are not associated with the
              same compute resource
            - the host parameter is left unset when the target pool is
              associated with a non-DRS cluster
              
            ***InvalidPowerState***: if the state argument is set and the virtual
            machine does not have that power state.
            
            ***FileFault***: if, in a case where the virtual machine
            configuration file must be copied, the destination location for
            that file does not have the necessary file access permissions.
            
            ***VmConfigFault***: if the virtual machine is not compatible with the
            destination host. Typically, a specific subclass of this exception is
            thrown, such as IDEDiskNotSupported.
            
            ***MigrationFault***: if it is not possible to migrate the virtual machine to
            the destination host. This is typically due to hosts being incompatible,
            such as mismatch in network polices or access to networks and datastores.
            Typically, a more specific subclass is thrown.
            
            ***Timedout***: if one of the phases of the migration process times out.
            
            ***InsufficientResourcesFault***: if this operation would violate a resource
            usage policy.
            
            ***InvalidState***: if the operation cannot be performed because of the
            virtual machine's current state or the target host's current state.
            For example, if the virtual machine configuration information is not
            available or if the target host is disconnected or in maintenance mode.
            
            ***NoActiveHostInCluster***: if a target host is not specified and the
            cluster associated with the target pool does not contain at least one
            potential target host. A host must be connected and not in maintenance
            mode in order to be considered as a potential target host.
            
            ***NoPermission***: if the virtual machine is encrypted, but encryption is
            not enabled on the destination host and the user does not have
            Cryptographer.RegisterHost permission on it.
            
            ***NoPermission***: if the virtual machine is encrypted, but the
            the user does not have Cryptographer.Migrate permission on the VM.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /VirtualMachine/{moId}/MountToolsInstaller:
    post:
      tags: [VirtualMachine]
      summary: |2
        Mounts the VMware Tools CD installer as a CD-ROM for the guest operating system.
      operationId: VirtualMachine_MountToolsInstaller
      description: |2
        Mounts the VMware Tools CD installer as a CD-ROM for the guest operating system.
        
        To monitor the status of the tools install, clients should check the tools status,
        *GuestInfo.toolsVersionStatus* and
        *GuestInfo.toolsRunningStatus*
        
        ***Required privileges:*** VirtualMachine.Interact.ToolsInstall
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***InvalidState***: if the virtual machine is not running,
            or the VMware Tools CD is already mounted.
            
            ***VmToolsUpgradeFault***: if the VMware Tools CD failed to mount.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /VirtualMachine/{moId}/PowerOffVM_Task:
    post:
      tags: [VirtualMachine]
      summary: |2
        Powers off this virtual machine.
      operationId: VirtualMachine_PowerOffVM_Task
      description: |2
        Powers off this virtual machine.
        
        If this virtual machine is a fault tolerant primary virtual machine, this
        will result in the secondary virtual machine(s) getting powered off as well.
        
        ***Required privileges:*** VirtualMachine.Interact.PowerOff
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor the
            operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***InvalidPowerState***: if the power state is not poweredOn.
            
            ***TaskInProgress***: if the virtual machine is busy.
            
            ***NotSupported***: if the virtual machine is marked as a template.
            
            ***InvalidState***: if the operation cannot be performed because of the
            virtual machine's current state. For example, if the virtual machine
            configuration information is not available.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /VirtualMachine/{moId}/PowerOnVM_Task:
    post:
      tags: [VirtualMachine]
      summary: |2
        Powers on this virtual machine.
      operationId: VirtualMachine_PowerOnVM_Task
      description: |2
        Powers on this virtual machine.
        
        If the virtual machine is suspended,
        this method resumes execution from the suspend point.
        
        When powering on a virtual machine in a cluster, the system might implicitly
        or due to the host argument, do an implicit relocation of the virtual machine
        to another host. Hence, errors related to this relocation can be thrown. If the
        cluster is a DRS cluster, DRS will be invoked if the virtual machine can be
        automatically placed by DRS (see *DrsBehavior_enum*).
        Because this method does not return a DRS *ClusterRecommendation*, no
        vmotion nor host power operations will be done as part of a DRS-facilitated power
        on. To have DRS consider such operations use *Datacenter.PowerOnMultiVM_Task*.
        As of vSphere API 5.1, use of this method with vCenter Server is deprecated;
        use *Datacenter.PowerOnMultiVM_Task* instead.
        
        If this virtual machine is a fault tolerant primary virtual machine, its
        secondary virtual machines will be started on system-selected
        hosts. If the virtual machines are in a VMware DRS enabled cluster,
        then DRS will be invoked to obtain placements for the secondaries but
        no vmotion nor host power operations will be considered for these power ons.
        
        ***Required privileges:*** VirtualMachine.Interact.PowerOn
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PowerOnVMRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor the
            operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***InvalidPowerState***: if the power state is poweredOn.
            
            ***TaskInProgress***: if the virtual machine is busy.
            
            ***NotEnoughLicenses***: if there are not enough licenses to power on this
            virtual machine.
            
            ***NotSupported***: if the virtual machine is marked as a template.
            
            ***InvalidState***: if the host is in maintenance mode or if
            the virtual machine's configuration information is not available
            or if the virtual machine is already powering on
            
            ***InsufficientResourcesFault***: if this operation would violate a resource
            usage policy.
            
            ***VmConfigFault***: if a configuration issue prevents the power-on.
            Typically, a more specific fault, such as UnsupportedVmxLocation, is
            thrown.
            
            ***FileFault***: if there is a problem accessing the virtual machine on the
            filesystem.
            
            ***DisallowedOperationOnFailoverHost***: if the host specified is a failover
            host. See *ClusterFailoverHostAdmissionControlPolicy*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /VirtualMachine/{moId}/PromoteDisks_Task:
    post:
      tags: [VirtualMachine]
      summary: |2
        Promotes disks on this virtual machine that have delta disk backings.
      operationId: VirtualMachine_PromoteDisks_Task
      description: |2
        Promotes disks on this virtual machine that have delta disk backings.
        
        A delta disk backing is a way to preserve a virtual disk backing
        at some point in time. A delta disk backing is a file backing which in
        turn points to the original virtual disk backing (the parent). After a delta
        disk backing is added, all writes go to the delta disk backing. All reads
        first try the delta disk backing and then try the parent backing if needed.
        
        Promoting does two things
        1. If the unlink parameter is true, any disk backing which is shared
           shared by multiple virtual machines is copied so that this virtual machine
           has its own unshared version. Copied files always end up in the virtual
           machine's home directory. To promote the disks of a powered on VM,
           the VM cannot have snapshots.
        2. Any disk backing which is not shared between multiple virtual
           machines and is not associated with a snapshot is consolidated
           with its child backing.
           
        If the unlink parameter is true, the net effect of this operation is improved
        read performance, at the cost of disk space. If the unlink parameter is
        false the net effect is improved read performance at the cost of inhibiting
        future sharing.
        
        This operation is only supported if
        *HostCapability.deltaDiskBackingsSupported* is true.
        
        This operation is only supported on VirtualCenter. If no work is required,
        an invocation completes successfully.
        
        ***Required privileges:*** VirtualMachine.Provisioning.PromoteDisks
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PromoteDisksRequestType'
      responses:
        '200':
          description: |2
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***TaskInProgress***: if the virtual machine is busy.
            
            ***NotSupported***: if the host doesn't support disk promotion APIs.
            
            ***InvalidState***: if the virtual machine's power state changes
            during the execution of this method.
            
            ***InvalidState***: if the virtual machine is not ready to respond to
            such requests.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /VirtualMachine/{moId}/PutUsbScanCodes:
    post:
      tags: [VirtualMachine]
      summary: |2
        Inject a sequence of USB HID scan codes into the keyboard.
      operationId: VirtualMachine_PutUsbScanCodes
      description: |2
        Inject a sequence of USB HID scan codes into the keyboard.
        
        ***Required privileges:*** VirtualMachine.Interact.PutUsbScanCodes
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PutUsbScanCodesRequestType'
      responses:
        '200':
          description: |2
            Number of keys injected.
          content:
            application/json:
              schema:
                type: integer
                format: int32

  /VirtualMachine/{moId}/QueryChangedDiskAreas:
    post:
      tags: [VirtualMachine]
      summary: |2
        Get a list of areas of a virtual disk belonging to this VM that have
        been modified since a well-defined point in the past.
      operationId: VirtualMachine_QueryChangedDiskAreas
      description: |2
        Get a list of areas of a virtual disk belonging to this VM that have
        been modified since a well-defined point in the past.
        
        The beginning of
        the change interval is identified by "changeId", while the end of the
        change interval is implied by the snapshot ID passed in.
        
        Note that the result of this function may contain "false positives"
        (i.e: flag areas of the disk as modified that are not). However, it is
        guaranteed that no changes will be missed.
        
        ***Required privileges:*** VirtualMachine.Provisioning.DiskRandomRead
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QueryChangedDiskAreasRequestType'
      responses:
        '200':
          description: |2
            Returns a data structure specifying extents of the virtual disk that
            have changed since the thime the changeId string was obtained.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DiskChangeInfo'
        '500':
          description: |2
            ***NotFound***: if the snapshot specified does not exist.
            
            ***InvalidArgument***: if deviceKey does not specify a virtual disk, startOffset
            is beyond the end of the virtual disk or changeId is invalid or change
            tracking is not supported for this particular disk.
            
            ***FileFault***: if the virtual disk files cannot be accessed/queried.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /VirtualMachine/{moId}/QueryConnections:
    post:
      tags: [VirtualMachine]
      summary: |2
        Ask the virtual machine for a list of connections.
      operationId: VirtualMachine_QueryConnections
      description: |2
        Ask the virtual machine for a list of connections.
        
        The virtual machine returns a list of connections.
        It is possible for the array returned to be empty - a virtual machine
        may have no connections.
        
        ***Since:*** vSphere API Release 7.0.1.0
        
        ***Required privileges:*** VirtualMachine.Interact.ConsoleInteract
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/VirtualMachineConnection'
        '500':
          description: |2
            ***InvalidPowerState***: If the virtual machine is not powered on.
            
            ***Timedout***: If the the virtual machine did not respond
            to the request in a timely manner.
            
            ***VmConfigFault***: If an error occurred.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /VirtualMachine/{moId}/QueryFaultToleranceCompatibility:
    post:
      tags: [VirtualMachine]
      summary: |2
        This API can be invoked to determine whether a virtual machine is
        compatible for legacy Fault Tolerance.
      operationId: VirtualMachine_QueryFaultToleranceCompatibility
      deprecated: true
      description: |2
        Deprecated as of vSphere API 6.0.
        
        This API can be invoked to determine whether a virtual machine is
        compatible for legacy Fault Tolerance.
        
        The API only checks for
        VM-specific factors that impact compatibility for RecordReplay based
        Fault Tolerance. Other requirements for Fault Tolerance such as host
        processor compatibility, logging nic configuration and licensing are
        not covered by this API.
        The query returns a list of faults, each fault corresponding to a
        specific incompatibility. If a given virtual machine is
        compatible for Fault Tolerance, then the fault list returned will be
        empty.
        
        ***Required privileges:*** VirtualMachine.Config.QueryFTCompatibility
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/MethodFault'
        '500':
          description: |2
            ***InvalidState***: if the operation cannot be performed because of
            the virtual machine's current state.
            
            ***VmConfigFault***: if the virtual machine's configuration is invalid.
            
            ***NotSupported***: if the virtual machine is a template or this operation
            is not supported.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /VirtualMachine/{moId}/QueryFaultToleranceCompatibilityEx:
    post:
      tags: [VirtualMachine]
      summary: |2
        This API can be invoked to determine whether a virtual machine is
        compatible for Fault Tolerance.
      operationId: VirtualMachine_QueryFaultToleranceCompatibilityEx
      description: |2
        This API can be invoked to determine whether a virtual machine is
        compatible for Fault Tolerance.
        
        The API only checks for VM-specific
        factors that impact compatibility for Fault Tolerance. Other
        requirements for Fault Tolerance such as host processor compatibility,
        logging nic configuration and licensing are not covered by this API.
        The query returns a list of faults, each fault corresponding to a
        specific incompatibility. If a given virtual machine is
        compatible for Fault Tolerance, then the fault list returned will be
        empty.
        
        ***Required privileges:*** VirtualMachine.Config.QueryFTCompatibility
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QueryFaultToleranceCompatibilityExRequestType'
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/MethodFault'
        '500':
          description: |2
            ***InvalidState***: if the operation cannot be performed because of
            the virtual machine's current state.
            
            ***VmConfigFault***: if the virtual machine's configuration is invalid.
            
            ***NotSupported***: if the virtual machine is a template or this operation
            is not supported.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /VirtualMachine/{moId}/QueryUnownedFiles:
    post:
      tags: [VirtualMachine]
      summary: |2
        For all files that belong to the vm, check that the file owner
        is set to the current datastore principal user, as set by
        *HostDatastoreSystem.ConfigureDatastorePrincipal*
      operationId: VirtualMachine_QueryUnownedFiles
      description: |2
        For all files that belong to the vm, check that the file owner
        is set to the current datastore principal user, as set by
        *HostDatastoreSystem.ConfigureDatastorePrincipal*
        
        ***Required privileges:*** VirtualMachine.Config.QueryUnownedFiles
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            The list of file paths for vm files whose ownership is
            not correct.
            Use *FileManager.ChangeOwner* to set the file ownership.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  type: string

  /VirtualMachine/{moId}/RebootGuest:
    post:
      tags: [VirtualMachine]
      summary: |2
        Issues a command to the guest operating system asking it to perform
        a reboot.
      operationId: VirtualMachine_RebootGuest
      description: |2
        Issues a command to the guest operating system asking it to perform
        a reboot.
        
        Returns immediately and does not wait for the guest operating system
        to complete the operation.
        
        ***Required privileges:*** VirtualMachine.Interact.Reset
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***InvalidPowerState***: if the power state is not powered on.
            
            ***ToolsUnavailable***: if VMware Tools is not running.
            
            ***TaskInProgress***: if the virtual machine is busy.
            
            ***InvalidState***: if the operation cannot be performed because of the
            virtual machine's current state. For example, if the virtual machine
            configuration information is not available.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /VirtualMachine/{moId}/ReconfigVM_Task:
    post:
      tags: [VirtualMachine]
      summary: |2
        Reconfigures this virtual machine.
      operationId: VirtualMachine_ReconfigVM_Task
      description: |2
        Reconfigures this virtual machine.
        
        All the changes in the given configuration
        are applied to the virtual machine as an atomic operation.
        
        Reconfiguring the virtual machine may require any of the following privileges
        depending on what is being changed:
        - VirtualMachine.Interact.DeviceConnection if changing the runtime connection
          state of a device as embodied by the Connectable property.
        - VirtualMachine.Interact.SetCDMedia if changing the backing of a CD-ROM
          device
        - VirtualMachine.Interact.SetFloppyMedia if changing the backing of a
          floppy device
        - VirtualMachine.Config.Rename if renaming the virtual machine
        - VirtualMachine.Config.Annotation if setting annotation a value
        - VirtualMachine.Config.AddExistingDisk if adding a virtual disk device
          that is backed by an existing virtual disk file
        - VirtualMachine.Config.AddNewDisk if adding a virtual disk device for which
          the backing virtual disk file is to be created
        - VirtualMachine.Config.RemoveDisk if removing a virtual disk device that
          refers to a virtual disk file
        - VirtualMachine.Config.CPUCount if changing the number of CPUs
        - VirtualMachine.Config.Memory if changing the amount of memory
        - VirtualMachine.Config.RawDevice if adding, removing or editing a raw
          device mapping (RDM) or SCSI passthrough device
        - VirtualMachine.Config.AddRemoveDevice if adding or removing any
          device other than disk, raw, or USB device
        - VirtualMachine.Config.EditDevice if changing the settings of any
          device
        - VirtualMachine.Config.Settings if changing any basic settings such as
          those in ToolsConfigInfo, FlagInfo, or DefaultPowerOpInfo
        - VirtualMachine.Config.Resource if changing resource allocations,
          affinities, or setting network traffic shaping or virtual disk shares
        - VirtualMachine.Config.AdvancedConfig if changing values in
          extraConfig
        - VirtualMachine.Config.SwapPlacement if changing swapPlacement
        - VirtualMachine.Config.HostUSBDevice if adding, removing or editing a
          VirtualUSB device backed by the host USB device.
        - VirtualMachine.Config.DiskExtend if extending an existing VirtualDisk
          device.
        - VirtualMachine.Config.ChangeTracking if enabling/disabling changed
          block tracking for the virtual machine's disks.
        - VirtualMachine.Config.MksControl if toggling display connection
          limits or the guest auto-lock feature.
        - DVSwitch.CanUse if connecting a VirtualEthernetAdapter to a port
          in a DistributedVirtualSwitch.
        - DVPortgroup.CanUse if connecting a VirtualEthernetAdapter to a
          DistributedVirtualPortgroup.
        - Cryptographer.Encrypt if vm home folder is encrypted or existing
          disk is encryted.
        - Cryptographer.Decrypt if vm home folder is decrypted or existing
          disk is decryted.
        - Cryptographer.Recrypt if vm home folder is recrypted or existing
          disk is recryted.
        - Cryptographer.AddDisk if encrypted disk is attached to the vm.
        - Cryptographer.RegisterHost on the host if the virtual machine is
          encrypted, but encryption is not enabled on the host.
          
        Creating a virtual machine may require the following privileges:
        - VirtualMachine.Config.RawDevice if adding a raw device
        - VirtualMachine.Config.AddExistingDisk if adding a VirtualDisk and
          the fileOperation is unset
        - VirtualMachine.Config.AddNewDisk if adding a VirtualDisk and
          the fileOperation is set
        - VirtualMachine.Config.HostUSBDevice if adding a VirtualUSB device
          backed by the host USB device.
          
        In addition, this operation may require the following privileges:
        - Datastore.AllocateSpace on any datastore where virtual disks will
          be created or extended.
        - Network.Assign on any network the virtual machine will be
          connected to.
          
        To create a VirtualDisk on a persistent memory storage, the storage
        must be specified via
        *profile* while the datastore
        property of corresponding VirtualDisk backing must be unset.
        
        To create a VirtualNVDIMM device, the storage
        *profile* must be set to the
        default persistent memory storage profile while the datastore property of
        *the device backing* must be
        unset.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ReconfigVMRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor the
            operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***InvalidPowerState***: if the power state is poweredOn and the virtual hardware
            cannot support the configuration changes.
            
            ***TaskInProgress***: if the virtual machine is busy.
            
            ***TooManyDevices***: if the device specifications exceed the allowed limits.
            
            ***ConcurrentAccess***: if the changeVersion does not match the server's
            changeVersion for the configuration.
            
            ***FileFault***: if there is a problem creating or accessing the virtual machine's
            files for this operation. Typically a more specific fault like NoDiskSpace
            or FileAlreadyExists is thrown.
            
            ***InvalidName***: if the specified name is invalid.
            
            ***DuplicateName***: if the specified name already exists in the parent folder.
            
            ***InvalidState***: if the operation cannot be performed in the current state
            of the virtual machine. For example, because the virtual machine's
            configuration is not available.
            
            ***InsufficientResourcesFault***: if this operation would violate a resource
            usage policy.
            
            ***VmConfigFault***: if the spec is invalid. Typically, a more specific subclass
            is thrown.
            
            ***CpuHotPlugNotSupported***: if the current configuration of the VM does not
            support hot-plugging of CPUs.
            
            ***MemoryHotPlugNotSupported***: if the current configuration of the VM does not
            support hot-plugging of memory.
            
            ***VmWwnConflict***: if the WWN of the virtual machine has been used by
            other virtual machines.
            
            ***NoPermission***: if crypto operation is requested on the vm home
            folder, but the user does not have the corresponding crypto
            privilege on the virtual machine:
            Encrypt - Cryptographer.Encrypt
            Decrypt - Cryptographer.Decrypt
            Recrypt - Cryptographer.Recrypt
            
            ***NoPermission***: if crypto operation is requested on the vms disks,
            but the user does not have the corresponding crypto privilege
            on the virtual machine:
            Encrypt - Cryptographer.Encrypt
            Decrypt - Cryptographer.Decrypt
            Recrypt - Cryptographer.Recrypt
            AddDisk - Cryptographer.AddDisk
            
            ***NoPermission***: if the virtual machine is encrypted and the
            encryption is not enabled on the host, but the user does not have
            Cryptographer.RegisterHost privilege on the host.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /VirtualMachine/{moId}/RefreshStorageInfo:
    post:
      tags: [VirtualMachine]
      summary: |2
        Explicitly refreshes the storage information of this virtual machine,
        updating properties *VirtualMachine.storage*, *VirtualMachine.layoutEx*
        and *VirtualMachineSummary.storage*.
      operationId: VirtualMachine_RefreshStorageInfo
      description: |2
        Explicitly refreshes the storage information of this virtual machine,
        updating properties *VirtualMachine.storage*, *VirtualMachine.layoutEx*
        and *VirtualMachineSummary.storage*.
        
        This is an asynchronous operation which will return immediately; changes
        may not be reflected in vCenter for some time.
        
        ***Required privileges:*** System.Read
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '204':
          description: |2
            No Content

  /VirtualMachine/{moId}/Reload:
    post:
      tags: [VirtualMachine]
      summary: |2
        Reload the entity state.
      operationId: VirtualMachine_Reload
      description: |2
        Reload the entity state.
        
        Clients only need to call this method
        if they changed some external state that affects the service
        without using the Web service interface to perform the change.
        For example, hand-editing a virtual machine configuration file
        affects the configuration of the associated virtual machine but
        the service managing the virtual machine might not monitor the
        file for changes. In this case, after such an edit, a client
        would call "reload" on the associated virtual machine to ensure
        the service and its clients have current data for the
        virtual machine.
        
        ***Required privileges:*** System.Read
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '204':
          description: |2
            No Content

  /VirtualMachine/{moId}/reloadVirtualMachineFromPath_Task:
    post:
      tags: [VirtualMachine]
      summary: |2
        Reloads the configuration for this virtual machine from a given
        datastore path.
      operationId: VirtualMachine_reloadVirtualMachineFromPath_Task
      description: |2
        Reloads the configuration for this virtual machine from a given
        datastore path.
        
        This is equivalent to unregistering and registering the
        virtual machine from a different path. The virtual machine's hardware
        configuration, snapshots, guestinfo variables etc. will be
        replaced based on the new configuration file. Other information
        associated with the virtual machine object, such as events and
        permissions, will be preserved.
        
        This method is only supported on vCenter Server. It can be invoked on
        inaccessible or orphaned virtual machines, but it cannot be invoked on
        powered on, connected virtual machines. Both the source virtual machine
        object and the destination path should be of the same type i.e. virtual
        machine or template. Reloading a virtual machine with a template or
        vice-versa is not supported.
        
        _Note:_ Since the API replaces the source configuration with that
        of the destination, if the destination configuration does not refer to a
        valid virtual machine, it will create an invalid virtual machine object.
        This API should not be invoked on fault tolerant virtual machines since
        doing so will leave the original virtual machine's configuration in an
        invalid state. It is recommended that you turn off fault tolerance before
        invoking this API.
        
        ***Required privileges:*** VirtualMachine.Config.ReloadFromPath
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/reloadVirtualMachineFromPathRequestType'
      responses:
        '200':
          description: |2
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***NotSupported***: if invoked on ESX server or if invoked on a virtual
            machine with the destination path for a template and vice-versa.
            
            ***InvalidPowerState***: if the virtual machine is powered on.
            
            ***TaskInProgress***: if the virtual machine is busy.
            
            ***FileFault***: if there is a problem creating or accessing the files
            needed for this operation.
            
            ***InvalidState***: if the virtual machine is busy or not ready to
            respond to such requests.
            
            ***VmConfigFault***: if the format / configuration of the virtual machine
            is invalid. Typically, a more specific fault is thrown such as
            InvalidFormat if the configuration file cannot be read, or
            InvalidDiskFormat if the disks cannot be read.
            
            ***AlreadyExists***: if the virtual machine is already registered.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /VirtualMachine/{moId}/RelocateVM_Task:
    post:
      tags: [VirtualMachine]
      summary: |2
        Relocates a virtual machine to the location specified by
        *VirtualMachineRelocateSpec*.
      operationId: VirtualMachine_RelocateVM_Task
      description: |2
        Relocates a virtual machine to the location specified by
        *VirtualMachineRelocateSpec*.
        
        Starting from VCenter 5.1, this API also supports relocating a template
        to a new host should the current host become inactive.
        Starting from vCenter 6.0 this API also supports relocating a VM to a new
        vCenter service.
        
        Requires the following additional permissions:
        - Resource.HotMigrate if the virtual machine is powered on.
        - Datastore.AllocateSpec if the virtual machine or its disks are
          being relocated to a new datastore.
        - Resource.AssignVMToPool if the resource pool is changing.
        - VirtualMachine.Inventory.Register against the destination folder if
          the virtual machine is moving to a new vCenter service.
        - VirtualMachine.Inventory.Move against the virtual machine, source
          folder, and destination folder if the virtual machine is changing
          folders within the same vCenter service.
        - Network.Assign against the new network if the virtual machine is
          changing networks.
          
        If this virtual machine is configured with a VirtualNVDIMM device, and if
        the virtual machine will be moved to a different host, the VirtualNVDIMM
        will be automatically relocated to the destination host's Non-Volatile
        Memory storage.
        If this Virtual machine is configured with virtual disks via
        persistent memory storage profile:
        - If spec specifies only compute location change, these virtual disks
          will be automatically moved to a persistent memory storage in
          destination host that supports the profile.
        - If spec specifies primary datastore change via
          *datastore*, unlike regular
          virtual disks, these disks will not be automatically moved to the
          specified datastore, instead they will stay on a persistent
          memory storage in destination host that supports the profile.
        - To explicityly move these disks to a location other than
          persistent memory storage, use disk locator to specify the
          new destination datastore along with a storage profile that removes
          the persistent memory storage requirement. Note that this
          downgrades the disk I/O performance.
        - On the other hand, to move a virtual disk from a regular storage to
          persistent memory, use
          *deviceChange*
          to specify a storage profile of persistent memory storage. Note
          that this upgrades the disk I/O performance.
          
        ***Required privileges:*** Resource.ColdMigrate
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RelocateVMRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor the
            operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***InvalidArgument***: in the following cases:
            - the target host and target pool are not associated with the
              same compute resource
            - the target pool represents a cluster without DRS enabled,
              and the host is not specified
            - the virtual machine is powered on, its home or any of its disks
              will change storage location, and the host is not specified
            - Datastore is not accessible in a cross-datacenter move
            - Datastore in a diskLocator entry is not specified
            - the specified device ID cannot be found in the virtual machine's current
              configuration
              
            ***NotSupported***: if the virtual machine is marked as template and
            the datastore is changing or if it is a cross vCenter vMotion operation.
            
            ***Timedout***: if one of the phases of the relocate process times out.
            
            ***InvalidState***: if the operation cannot be performed because of the
            host or virtual machine's current state. For example, if the host is in
            maintenance mode, or if the virtual machine's configuration information
            is not available.
            
            ***InvalidDatastore***: if the operation cannot be performed on the
            target datastores.
            
            ***FileFault***: if there is an error accessing the virtual machine files.
            
            ***VmConfigFault***: if the virtual machine is not compatible with the
            destination host. Typically, a specific subclass of this exception is
            thrown, such as IDEDiskNotSupported.
            
            ***MigrationFault***: if it is not possible to migrate the virtual machine to
            the destination host. This is typically due to hosts being incompatible,
            such as mismatch in network polices or access to networks and datastores.
            Typically, a more specific subclass is thrown.
            
            ***InsufficientResourcesFault***: if this operation would violate a resource
            usage policy.
            
            ***DisallowedOperationOnFailoverHost***: if the virtual machine is powered on
            and is being migrated to a failover host. See
            *ClusterFailoverHostAdmissionControlPolicy*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /VirtualMachine/{moId}/RemoveAllSnapshots_Task:
    post:
      tags: [VirtualMachine]
      summary: |2
        Remove all the snapshots associated with this virtual machine.
      operationId: VirtualMachine_RemoveAllSnapshots_Task
      description: |2
        Remove all the snapshots associated with this virtual machine.
        
        If the virtual
        machine
        does not have any snapshots, then this operation simply returns successfully.
        
        ***Required privileges:*** VirtualMachine.State.RemoveSnapshot
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RemoveAllSnapshotsRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor the
            operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***TaskInProgress***: if the virtual machine is busy.
            
            ***NotSupported***: if the host product does not support snapshots.
            
            ***InvalidPowerState***: if the operation cannot be performed in the current
            power state of the virtual machine.
            
            ***SnapshotFault***: if an error occurs during the snapshot operation.
            Typically, a more specific fault like InvalidSnapshotFormat
            is thrown.
            
            ***InvalidState***: if the operation cannot be performed because of the
            virtual machine's current state. For example, if the virtual machine
            configuration information is not available.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /VirtualMachine/{moId}/Rename_Task:
    post:
      tags: [VirtualMachine]
      summary: |2
        Renames this managed entity.
      operationId: VirtualMachine_Rename_Task
      description: |2
        Renames this managed entity.
        
        Any % (percent) character used in this name parameter
        must be escaped, unless it is used to start an escape
        sequence. Clients may also escape any other characters in
        this name parameter.
        
        See also *ManagedEntity.name*.
        
        ***Required privileges:*** VirtualMachine.Config.Rename
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RenameRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor the
            operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***DuplicateName***: If another object in the same folder has the target name.
            
            ***InvalidName***: If the new name is not a valid entity name.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /VirtualMachine/{moId}/ResetVM_Task:
    post:
      tags: [VirtualMachine]
      summary: |2
        Resets power on this virtual machine.
      operationId: VirtualMachine_ResetVM_Task
      description: |2
        Resets power on this virtual machine.
        
        If the current state is poweredOn,
        then this method first performs powerOff(hard). Once the power state
        is poweredOff, then this method performs powerOn(option).
        
        Although this method functions as a powerOff followed by a powerOn, the
        two operations are atomic with respect to other clients, meaning that
        other power operations cannot be performed until the reset method completes.
        
        ***Required privileges:*** VirtualMachine.Interact.Reset
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor the
            operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***InvalidPowerState***: if the power state is suspended or poweredOff.
            
            ***TaskInProgress***: if the virtual machine is busy.
            
            ***NotEnoughLicenses***: if there are not enough licenses to reset
            this virtual machine.
            
            ***NotSupported***: if the virtual machine is marked as a template.
            
            ***InvalidState***: if the host is in maintenance mode.
            
            ***InvalidState***: if the operation cannot be performed because of the
            virtual machine's current state. For example, if the virtual machine
            configuration information is not available.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /VirtualMachine/{moId}/ResetGuestInformation:
    post:
      tags: [VirtualMachine]
      summary: |2
        Clears cached guest information.
      operationId: VirtualMachine_ResetGuestInformation
      description: |2
        Clears cached guest information.
        
        Guest information can be cleared
        only if the virtual machine is powered off.
        
        This method can be useful if stale information is cached,
        preventing an IP address or MAC address from being reused.
        
        ***Required privileges:*** VirtualMachine.Config.ResetGuestInfo
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***InvalidState***: if the virtual machine is not powered off.
            
            ***NotSupported***: if the virtual machine is marked as a template.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InvalidState'

  /VirtualMachine/{moId}/RevertToCurrentSnapshot_Task:
    post:
      tags: [VirtualMachine]
      summary: |2
        Reverts the virtual machine to the current snapshot.
      operationId: VirtualMachine_RevertToCurrentSnapshot_Task
      description: |2
        Reverts the virtual machine to the current snapshot.
        
        This is equivalent to
        doing snapshot.currentSnapshot.revert.
        
        If no snapshot exists, then the operation does nothing,
        and the virtual machine state remains unchanged.
        
        ***Required privileges:*** VirtualMachine.State.RevertToSnapshot
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RevertToCurrentSnapshotRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor the
            operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***TaskInProgress***: if the virtual machine is busy.
            
            ***NotSupported***: if the host product does not support snapshots.
            
            ***InsufficientResourcesFault***: if this operation would violate a resource
            usage policy.
            
            ***SnapshotFault***: if an error occurs during the snapshot operation.
            Typically, a more specific fault like InvalidSnapshotFormat
            is thrown.
            
            ***InvalidPowerState***: if the operation cannot be performed in the current
            power state of the virtual machine.
            
            ***InvalidState***: if the operation cannot be performed because of the
            virtual machine's current state. For example, if the virtual machine
            configuration information is not available or if an OVF consumer is
            blocking the operation.
            
            ***VmConfigFault***: if a configuration issue prevents the power-on. Typically, a
            more specific fault, such as UnsupportedVmxLocation, is thrown.
            
            ***FileFault***: if there is a problem accessing the virtual machine on the
            filesystem.
            
            ***NotFound***: if the virtual machine does not have a current snapshot.
            
            ***DisallowedOperationOnFailoverHost***: if the virtual machine is being
            reverted to a powered on state and the host specified is a failover host.
            See *ClusterFailoverHostAdmissionControlPolicy*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /VirtualMachine/{moId}/SendNMI:
    post:
      tags: [VirtualMachine]
      summary: |2
        Send a non-maskable interrupt (NMI).
      operationId: VirtualMachine_SendNMI
      description: |2
        Send a non-maskable interrupt (NMI).
        
        Currently, there is no way to verify if the NMI was actually
        received by the guest OS.
        
        ***Required privileges:*** VirtualMachine.Interact.GuestControl
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***InvalidState***: if the virtual machine is not powered on.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InvalidState'

  /VirtualMachine/{moId}/setCustomValue:
    post:
      tags: [VirtualMachine]
      summary: |2
        Assigns a value to a custom field.
      operationId: VirtualMachine_setCustomValue
      description: |2
        Assigns a value to a custom field.
        
        The setCustomValue method requires
        whichever updatePrivilege is defined as one of the
        *CustomFieldDef.fieldInstancePrivileges*
        for the CustomFieldDef whose value is being changed.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/setCustomValueRequestType'
      responses:
        '204':
          description: |2
            No Content

  /VirtualMachine/{moId}/SetDisplayTopology:
    post:
      tags: [VirtualMachine]
      summary: |2
        Sets the console window's display topology as specified.
      operationId: VirtualMachine_SetDisplayTopology
      description: |2
        Sets the console window's display topology as specified.
        
        ***Required privileges:*** VirtualMachine.Interact.ConsoleInteract
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SetDisplayTopologyRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***NotSupported***: if the Guest Operating system does
            not support setting the display topology
            
            ***InvalidPowerState***: if the power state is not poweredOn.
            
            ***InvalidState***: if the virtual machine is not connected.
            
            ***ToolsUnavailable***: if VMware Tools is not running.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /VirtualMachine/{moId}/SetScreenResolution:
    post:
      tags: [VirtualMachine]
      summary: |2
        Sets the console window's resolution as specified.
      operationId: VirtualMachine_SetScreenResolution
      description: |2
        Sets the console window's resolution as specified.
        
        ***Required privileges:*** VirtualMachine.Interact.ConsoleInteract
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SetScreenResolutionRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***NotSupported***: if the Guest Operating system does
            not support setting the screen resolution.
            
            ***InvalidPowerState***: if the power state is not poweredOn.
            
            ***InvalidState***: if the virtual machine is not connected.
            
            ***ToolsUnavailable***: if VMware Tools is not running.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /VirtualMachine/{moId}/ShutdownGuest:
    post:
      tags: [VirtualMachine]
      summary: |2
        Issues a command to the guest operating system asking it to perform
        a clean shutdown of all services.
      operationId: VirtualMachine_ShutdownGuest
      description: |2
        Issues a command to the guest operating system asking it to perform
        a clean shutdown of all services.
        
        Returns immediately and does not wait for the guest operating system
        to complete the operation.
        
        ***Required privileges:*** VirtualMachine.Interact.PowerOff
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***InvalidPowerState***: if the power state is not powered on.
            
            ***ToolsUnavailable***: if VMware Tools is not running.
            
            ***TaskInProgress***: if the virtual machine is busy.
            
            ***InvalidState***: if the operation cannot be performed because of the
            virtual machine's current state. For example, if the virtual machine
            configuration information is not available.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /VirtualMachine/{moId}/StandbyGuest:
    post:
      tags: [VirtualMachine]
      summary: |2
        Issues a command to the guest operating system asking it to prepare for
        a suspend operation.
      operationId: VirtualMachine_StandbyGuest
      description: |2
        Issues a command to the guest operating system asking it to prepare for
        a suspend operation.
        
        Returns immediately and does not wait for the guest operating system
        to complete the operation.
        
        ***Required privileges:*** VirtualMachine.Interact.Suspend
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***InvalidPowerState***: if the power state is not powered on.
            
            ***ToolsUnavailable***: if VMware Tools is not running.
            
            ***TaskInProgress***: if the virtual machine is busy.
            
            ***InvalidState***: if the operation cannot be performed because of the
            virtual machine's current state. For example, if the virtual machine
            configuration information is not available.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /VirtualMachine/{moId}/StartRecording_Task:
    post:
      tags: [VirtualMachine]
      summary: |2
        Initiates a recording session on this virtual machine.
      operationId: VirtualMachine_StartRecording_Task
      deprecated: true
      description: |2
        Deprecated as of vsphere API 5.1.
        
        Initiates a recording session on this virtual machine.
        
        As a side effect,
        this operation creates a snapshot on the virtual machine, which in turn
        becomes the current snapshot.
        
        This is an experimental interface that is not intended for use in production code.
        
        ***Required privileges:*** VirtualMachine.Interact.Record
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/StartRecordingRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor
            the operation. The *info.result* property
            in the *Task* contains the newly created *VirtualMachineSnapshot*
            associated with the recording on success.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***TaskInProgress***: if the virtual machine is busy.
            
            ***NotSupported***: if the host product does not support record
            functionality or if the virtual machine does not support this
            
            ***VmConfigIncompatibleForRecordReplay***: if the virtual machine
            configuration is incompatible for recording.
            
            ***SnapshotFault***: if an error occurs during the snapshot operation.
            Typically, a more specific fault like MultipleSnapshotsNotSupported
            is thrown.
            
            ***InvalidName***: if the specified snapshot name is invalid.
            
            ***FileFault***: if there is a problem with creating or accessing one
            or more files needed for this operation.
            
            ***InvalidPowerState***: if the operation cannot be performed in the
            current power state of the virtual machine.
            
            ***InvalidState***: if the operation cannot be performed because of the
            virtual machine's current state. For example, the virtual machine
            configuration information is not available.
            
            ***RecordReplayDisabled***: if the record/replay config flag has not been
            enabled for this virtual machine.
            
            ***HostIncompatibleForRecordReplay***: if the virtual machine is located
            on a host that does not support record/replay.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /VirtualMachine/{moId}/StartReplaying_Task:
    post:
      tags: [VirtualMachine]
      summary: |2
        Starts a replay session on this virtual machine.
      operationId: VirtualMachine_StartReplaying_Task
      deprecated: true
      description: |2
        Deprecated as of vsphere API 5.1.
        
        Starts a replay session on this virtual machine.
        
        As a side effect,
        this operation updates the current snapshot of the virtual machine.
        
        This is an experimental interface that is not intended for use in production code.
        
        ***Required privileges:*** VirtualMachine.Interact.Replay
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/StartReplayingRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor
            the operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***TaskInProgress***: if the virtual machine is busy.
            
            ***NotSupported***: if the host product does not support record/replay
            functionality or if the virtual machine does not support this
            capability.
            
            ***InvalidArgument***: if replaySnapshot is not a valid snapshot
            associated with a recorded session on this virtual machine.
            
            ***SnapshotFault***: if an error occurs during the snapshot operation.
            Typically, a more specific fault like InvalidSnapshotFormat
            is thrown.
            
            ***FileFault***: if there is a problem with creating or accessing one
            or more files needed for this operation.
            
            ***VmConfigIncompatibleForRecordReplay***: if the virtual machine
            configuration is incompatible for replaying.
            
            ***InvalidPowerState***: if the operation cannot be performed in the
            current power state of the virtual machine.
            
            ***InvalidState***: if the operation cannot be performed because of the
            virtual machine's current state. For example, the virtual machine
            configuration information is not available.
            
            ***NotFound***: if replaySnapshot is no longer present.
            
            ***RecordReplayDisabled***: if the record/replay config flag has not been
            enabled for this virtual machine.
            
            ***HostIncompatibleForRecordReplay***: if the virtual machine is located
            on a host that does not support record/replay.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /VirtualMachine/{moId}/StopRecording_Task:
    post:
      tags: [VirtualMachine]
      summary: |2
        Stops a currently active recording session on this virtual machine.
      operationId: VirtualMachine_StopRecording_Task
      deprecated: true
      description: |2
        Deprecated as of vsphere API 5.1.
        
        Stops a currently active recording session on this virtual machine.
        
        This is an experimental interface that is not intended for use in production code.
        
        ***Required privileges:*** VirtualMachine.Interact.Record
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor
            the operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***TaskInProgress***: if the virtual machine is busy.
            
            ***NotSupported***: if the host product does not support record/replay
            functionality or if the virtual machine does not support this
            capability.
            
            ***SnapshotFault***: if an error occurs during the snapshot operation.
            Typically, a more specific fault like InvalidSnapshotFormat
            is thrown.
            
            ***FileFault***: if there is a problem with creating or accessing one
            or more files needed for this operation.
            
            ***InvalidPowerState***: if the operation cannot be performed in the current
            power state of the virtual machine.
            
            ***InvalidState***: if the operation cannot be performed because of the
            virtual machine's current state. For example, the virtual machine
            does not have an active recording session.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /VirtualMachine/{moId}/StopReplaying_Task:
    post:
      tags: [VirtualMachine]
      summary: |2
        Stops a replay session on this virtual machine.
      operationId: VirtualMachine_StopReplaying_Task
      deprecated: true
      description: |2
        Deprecated as of vsphere API 5.1.
        
        Stops a replay session on this virtual machine.
        
        This is an experimental interface that is not intended for use in production code.
        
        ***Required privileges:*** VirtualMachine.Interact.Replay
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor
            the operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***TaskInProgress***: if the virtual machine is busy.
            
            ***NotSupported***: if the host product does not support record/replay
            functionality or if the virtual machine does not support this
            capability.
            
            ***SnapshotFault***: if an error occurs during the snapshot operation.
            Typically, a more specific fault like InvalidSnapshotFormat
            is thrown.
            
            ***FileFault***: if there is a problem with creating or accessing one
            or more files needed for this operation.
            
            ***InvalidPowerState***: if the operation cannot be performed in the
            current power state of the virtual machine.
            
            ***InvalidState***: if the operation cannot be performed because of the
            virtual machine's current state. For example, the virtual machine
            does not have an active recording session.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /VirtualMachine/{moId}/SuspendVM_Task:
    post:
      tags: [VirtualMachine]
      summary: |2
        Suspends execution in this virtual machine.
      operationId: VirtualMachine_SuspendVM_Task
      description: |2
        Suspends execution in this virtual machine.
        
        ***Required privileges:*** VirtualMachine.Interact.Suspend
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor the
            operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***InvalidPowerState***: if the power state is not poweredOn.
            
            ***TaskInProgress***: if the virtual machine is busy.
            
            ***NotSupported***: if the virtual machine is marked as a template.
            
            ***InvalidState***: if the operation cannot be performed because of the
            virtual machine's current state. For example, if the virtual machine
            configuration information is not available.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /VirtualMachine/{moId}/TerminateVM:
    post:
      tags: [VirtualMachine]
      summary: |2
        Do an immediate power off of a VM.
      operationId: VirtualMachine_TerminateVM
      description: |2
        Do an immediate power off of a VM.
        
        This API issues a SIGKILL to the vmx process of the VM.
        Pending synchronous I/Os may not be written out before the vmx
        process dies depending on accessibility of the datastore.
        
        ***Required privileges:*** VirtualMachine.Interact.PowerOff
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***NotSupported***: if this operation is not supported.
            
            ***InvalidState***: if the VM is not powered on or another issue prevents the
            operation from being performed.
            
            ***TaskInProgress***: if the virtual machine is busy.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /VirtualMachine/{moId}/TerminateFaultTolerantVM_Task:
    post:
      tags: [VirtualMachine]
      summary: |2
        Terminates the specified secondary virtual machine in a fault tolerant group.
      operationId: VirtualMachine_TerminateFaultTolerantVM_Task
      description: |2
        Terminates the specified secondary virtual machine in a fault tolerant group.
        
        This
        can be used to test fault tolerance on a given virtual machine, and should
        be used with care.
        
        ***Required privileges:*** VirtualMachine.Interact.TerminateFaultTolerantVM
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TerminateFaultTolerantVMRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor the
            operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***VmFaultToleranceIssue***: if any error is encountered with the
            fault tolerance configuration of the virtual machine. Typically,
            a more specific fault like InvalidOperationOnSecondaryVm is thrown.
            
            ***TaskInProgress***: if the virtual machine is busy.
            
            ***InvalidState***: if the host is in maintenance mode or if
            the virtual machine's configuration information is not available.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /VirtualMachine/{moId}/TurnOffFaultToleranceForVM_Task:
    post:
      tags: [VirtualMachine]
      summary: |2
        Removes all secondary virtual machines associated with the fault tolerant
        group and turns off protection for this virtual machine.
      operationId: VirtualMachine_TurnOffFaultToleranceForVM_Task
      description: |2
        Removes all secondary virtual machines associated with the fault tolerant
        group and turns off protection for this virtual machine.
        
        This operation can only be invoked from the primary virtual machine in
        the group.
        
        ***Required privileges:*** VirtualMachine.Interact.TurnOffFaultTolerance
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor the
            operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***VmFaultToleranceIssue***: if any error is encountered with the
            fault tolerance configuration of the virtual machine. Typically,
            a more specific fault like InvalidOperationOnSecondaryVm is thrown.
            
            ***TaskInProgress***: if the virtual machine is busy.
            
            ***InvalidState***: if the host is in maintenance mode or if
            the virtual machine's configuration information is not available.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /VirtualMachine/{moId}/UnmountToolsInstaller:
    post:
      tags: [VirtualMachine]
      summary: |2
        Unmounts VMware Tools installer CD.
      operationId: VirtualMachine_UnmountToolsInstaller
      description: |2
        Unmounts VMware Tools installer CD.
        
        ***Required privileges:*** VirtualMachine.Interact.ToolsInstall
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***InvalidState***: if the virtual machine is not running,
            VMware Tools is not running or the VMware Tools CD is already mounted.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /VirtualMachine/{moId}/UnregisterVM:
    post:
      tags: [VirtualMachine]
      summary: |2
        Removes this virtual machine from the inventory without removing
        any of the virtual machine's files on disk.
      operationId: VirtualMachine_UnregisterVM
      description: |2
        Removes this virtual machine from the inventory without removing
        any of the virtual machine's files on disk.
        
        All high-level information
        stored with the management server (ESX Server or VirtualCenter) is
        removed, including information such as statistics, resource pool association,
        permissions, and alarms.
        
        Use the Folder.RegisterVM method to recreate a
        VirtualMachine object from the set of virtual machine files by passing in
        the path to the configuration file. However, the VirtualMachine managed object
        that results typically has different objects ID and may inherit a different
        set of permissions.
        
        ***Required privileges:*** VirtualMachine.Inventory.Unregister
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***TaskInProgress***: if the virtual machine is busy.
            
            ***InvalidPowerState***: if the virtual machine is powered on.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /VirtualMachine/{moId}/UpgradeTools_Task:
    post:
      tags: [VirtualMachine]
      summary: |2
        Begins the tools upgrade process.
      operationId: VirtualMachine_UpgradeTools_Task
      description: |2
        Begins the tools upgrade process.
        
        To monitor the status of the tools install, clients should check the tools status,
        *GuestInfo.toolsVersionStatus* and
        *GuestInfo.toolsRunningStatus*.
        
        ***Required privileges:*** VirtualMachine.Interact.ToolsInstall
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpgradeToolsRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor the
            operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***InvalidState***: if the virtual machine is not running
            or is suspended.
            
            ***NotSupported***: if upgrading tools is not supported.
            
            ***TaskInProgress***: if an upgrade is already taking place.
            
            ***VmToolsUpgradeFault***: if the upgrade failed.
            
            ***ToolsUnavailable***: if VMware Tools is not running.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /VirtualMachine/{moId}/UpgradeVM_Task:
    post:
      tags: [VirtualMachine]
      summary: |2
        Upgrades this virtual machine's virtual hardware to the latest revision
        that is supported by the virtual machine's current host.
      operationId: VirtualMachine_UpgradeVM_Task
      description: |2
        Upgrades this virtual machine's virtual hardware to the latest revision
        that is supported by the virtual machine's current host.
        
        ***Required privileges:*** VirtualMachine.Config.UpgradeVirtualHardware
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpgradeVMRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor the
            operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***InvalidPowerState***: if the power state is not poweredOff.
            
            ***TaskInProgress***: if the virtual machine is busy.
            
            ***AlreadyUpgraded***: if the virtual machine's hardware is already up-to-date.
            
            ***NoDiskFound***: if no virtual disks are attached to this virtual machine.
            
            ***InvalidState***: if the host is in maintenance mode,
            if an invalid version string is specified, or
            if the virtual machine is in a state in which the operation
            cannot be performed. For example, if the configuration
            information is not available.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /VirtualMachine/{moId}/alarmActionsEnabled:
    get:
      tags: [VirtualMachine]
      summary: |2
        Whether alarm actions are enabled for this entity.
      operationId: VirtualMachine_getAlarmActionsEnabled
      description: |2
        Whether alarm actions are enabled for this entity.
        
        True if enabled; false otherwise.
        
        ***Required privileges:*** System.Read
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: boolean

  /VirtualMachine/{moId}/availableField:
    get:
      tags: [VirtualMachine]
      summary: |2
        List of custom field definitions that are valid for the object's type.
      operationId: VirtualMachine_getAvailableField
      description: |2
        List of custom field definitions that are valid for the object's type.
        
        The fields are sorted by *CustomFieldDef.name*.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/CustomFieldDef'

  /VirtualMachine/{moId}/capability:
    get:
      tags: [VirtualMachine]
      summary: |2
        Information about the runtime capabilities of this virtual machine.
      operationId: VirtualMachine_getCapability
      description: |2
        Information about the runtime capabilities of this virtual machine.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VirtualMachineCapability'

  /VirtualMachine/{moId}/config:
    get:
      tags: [VirtualMachine]
      summary: |2
        Configuration of this virtual machine, including the name and UUID.
      operationId: VirtualMachine_getConfig
      description: |2
        Configuration of this virtual machine, including the name and UUID.
        
        This property is set when a virtual machine is created or when
        the *reconfigVM* method is called.
        
        The virtual machine configuration is not guaranteed to be available.
        For example, the configuration information would be unavailable
        if the server is unable to access the virtual machine files on disk,
        and is often also unavailable during the initial phases of
        virtual machine creation.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                $ref: '#/components/schemas/VirtualMachineConfigInfo'

  /VirtualMachine/{moId}/configIssue:
    get:
      tags: [VirtualMachine]
      summary: |2
        Current configuration issues that have been detected for this entity.
      operationId: VirtualMachine_getConfigIssue
      description: |2
        Current configuration issues that have been detected for this entity.
        
        Typically,
        these issues have already been logged as events. The entity stores these
        events as long as they are still current. The
        *configStatus* property provides an overall status
        based on these events.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/Event'

  /VirtualMachine/{moId}/configStatus:
    get:
      tags: [VirtualMachine]
      summary: |2
        The configStatus indicates whether or not the system has detected a configuration
        issue involving this entity.
      operationId: VirtualMachine_getConfigStatus
      description: |2
        The configStatus indicates whether or not the system has detected a configuration
        issue involving this entity.
        
        For example, it might have detected a
        duplicate IP address or MAC address, or a host in a cluster
        might be out of compliance. The meanings of the configStatus values are:
        - red: A problem has been detected involving the entity.
        - yellow: A problem is about to occur or a transient condition
          has occurred (For example, reconfigure fail-over policy).
        - green: No configuration issues have been detected.
        - gray: The configuration status of the entity is not being monitored.
          
        A green status indicates only that a problem has not been detected;
        it is not a guarantee that the entity is problem-free.
        
        The *configIssue* property contains a list of the
        problems that have been detected.
        In releases after vSphere API 5.0, vSphere Servers might not
        generate property collector update notifications for this property.
        To obtain the latest value of the property, you can use
        PropertyCollector methods RetrievePropertiesEx or WaitForUpdatesEx.
        If you use the PropertyCollector.WaitForUpdatesEx method, specify
        an empty string for the version parameter. Any other version value will not
        produce any property values as no updates are generated.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedEntityStatus_enum'

  /VirtualMachine/{moId}/customValue:
    get:
      tags: [VirtualMachine]
      summary: |2
        Custom field values.
      operationId: VirtualMachine_getCustomValue
      description: |2
        Custom field values.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/CustomFieldValue'

  /VirtualMachine/{moId}/datastore:
    get:
      tags: [VirtualMachine]
      summary: |2
        A collection of references to the subset of datastore objects in the datacenter
        that is used by this virtual machine.
      operationId: VirtualMachine_getDatastore
      description: |2
        A collection of references to the subset of datastore objects in the datacenter
        that is used by this virtual machine.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            Refers instances of *Datastore*.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/ManagedObjectReference'

  /VirtualMachine/{moId}/declaredAlarmState:
    get:
      tags: [VirtualMachine]
      summary: |2
        A set of alarm states for alarms that apply to this managed entity.
      operationId: VirtualMachine_getDeclaredAlarmState
      description: |2
        A set of alarm states for alarms that apply to this managed entity.
        
        The set includes alarms defined on this entity
        and alarms inherited from the parent entity,
        or from any ancestors in the inventory hierarchy.
        
        Alarms are inherited if they can be triggered by this entity or its descendants.
        This set does not include alarms that are defined on descendants of this entity.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/AlarmState'

  /VirtualMachine/{moId}/disabledMethod:
    get:
      tags: [VirtualMachine]
      summary: |2
        List of operations that are disabled, given the current runtime
        state of the entity.
      operationId: VirtualMachine_getDisabledMethod
      description: |2
        List of operations that are disabled, given the current runtime
        state of the entity.
        
        For example, a power-on operation always fails if a
        virtual machine is already powered on. This list can be used by clients to
        enable or disable operations in a graphical user interface.
        
        Note: This list is determined by the current runtime state of an entity,
        not by its permissions.
        
        This list may include the following operations for a HostSystem:
        - *HostSystem.EnterMaintenanceMode_Task*
        - *HostSystem.ExitMaintenanceMode_Task*
        - *HostSystem.RebootHost_Task*
        - *HostSystem.ShutdownHost_Task*
        - *HostSystem.ReconnectHost_Task*
        - *HostSystem.DisconnectHost_Task*
          
        This list may include the following operations for a VirtualMachine:
        - *VirtualMachine.AnswerVM*
        - *ManagedEntity.Rename_Task*
        - *VirtualMachine.CloneVM_Task*
        - *VirtualMachine.PowerOffVM_Task*
        - *VirtualMachine.PowerOnVM_Task*
        - *VirtualMachine.SuspendVM_Task*
        - *VirtualMachine.ResetVM_Task*
        - *VirtualMachine.ReconfigVM_Task*
        - *VirtualMachine.RelocateVM_Task*
        - *VirtualMachine.MigrateVM_Task*
        - *VirtualMachine.CustomizeVM_Task*
        - *VirtualMachine.ShutdownGuest*
        - *VirtualMachine.StandbyGuest*
        - *VirtualMachine.RebootGuest*
        - *VirtualMachine.CreateSnapshot_Task*
        - *VirtualMachine.RemoveAllSnapshots_Task*
        - *VirtualMachine.RevertToCurrentSnapshot_Task*
        - *VirtualMachine.MarkAsTemplate*
        - *VirtualMachine.MarkAsVirtualMachine*
        - *VirtualMachine.ResetGuestInformation*
        - *VirtualMachine.MountToolsInstaller*
        - *VirtualMachine.UnmountToolsInstaller*
        - *ManagedEntity.Destroy_Task*
        - *VirtualMachine.UpgradeVM_Task*
        - *VirtualMachine.ExportVm*
          
        This list may include the following operations for a ResourcePool:
        - *ResourcePool.ImportVApp*
        - *ResourcePool.CreateChildVM_Task*
        - *ResourcePool.UpdateConfig*
        - *Folder.CreateVM_Task*
        - *ManagedEntity.Destroy_Task*
        - *ManagedEntity.Rename_Task*
          
        This list may include the following operations for a VirtualApp:
        - *ManagedEntity.Destroy_Task*
        - *VirtualApp.CloneVApp_Task*
        - *VirtualApp.unregisterVApp_Task*
        - *VirtualApp.ExportVApp*
        - *VirtualApp.PowerOnVApp_Task*
        - *VirtualApp.PowerOffVApp_Task*
        - *VirtualApp.UpdateVAppConfig*
          
        In releases after vSphere API 5.0, vSphere Servers might not
        generate property collector update notifications for this property.
        To obtain the latest value of the property, you can use
        PropertyCollector methods RetrievePropertiesEx or WaitForUpdatesEx.
        If you use the PropertyCollector.WaitForUpdatesEx method, specify
        an empty string for the version parameter. Any other version value will not
        produce any property values as no updates are generated.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  type: string

  /VirtualMachine/{moId}/effectiveRole:
    get:
      tags: [VirtualMachine]
      summary: |2
        Access rights the current session has to this entity.
      operationId: VirtualMachine_getEffectiveRole
      description: |2
        Access rights the current session has to this entity.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  type: integer
                  format: int32

  /VirtualMachine/{moId}/environmentBrowser:
    get:
      tags: [VirtualMachine]
      summary: |2
        The current virtual machine's environment browser object.
      operationId: VirtualMachine_getEnvironmentBrowser
      description: |2
        The current virtual machine's environment browser object.
        
        This contains
        information on all the configurations that can be used on the
        virtual machine. This is identical to the environment browser on
        the *ComputeResource* to which this virtual machine belongs.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            Refers instance of *EnvironmentBrowser*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'

  /VirtualMachine/{moId}/guest:
    get:
      tags: [VirtualMachine]
      summary: |2
        Information about VMware Tools and about the virtual machine
        from the perspective of VMware Tools.
      operationId: VirtualMachine_getGuest
      description: |2
        Information about VMware Tools and about the virtual machine
        from the perspective of VMware Tools.
        
        Information about the guest operating system is available in VirtualCenter. Guest
        operating system information reflects the last known state of the virtual machine.
        For powered on machines, this is current information. For powered off machines,
        this is the last recorded state before the virtual machine was powered off.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                $ref: '#/components/schemas/GuestInfo'

  /VirtualMachine/{moId}/guestHeartbeatStatus:
    get:
      tags: [VirtualMachine]
      summary: |2
        The guest heartbeat.
      operationId: VirtualMachine_getGuestHeartbeatStatus
      description: |2
        The guest heartbeat.
        
        The heartbeat status is classified as:
        - gray - VMware Tools are not installed or not running.
        - red - No heartbeat. Guest operating system may have stopped responding.
        - yellow - Intermittent heartbeat. May be due to guest load.
        - green - Guest operating system is responding normally.
          
        The guest heartbeat is a statistics metric. Alarms can be configured on
        this metric to trigger emails or other actions.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedEntityStatus_enum'

  /VirtualMachine/{moId}/layout:
    get:
      tags: [VirtualMachine]
      summary: |2
        Detailed information about the files that comprise this virtual machine.
      operationId: VirtualMachine_getLayout
      deprecated: true
      description: |2
        Deprecated as of vSphere API 4.0, use *VirtualMachine.layoutEx* instead.
        In releases after vSphere API 5.0, vSphere Servers might not
        generate property collector update notifications for this property.
        To obtain the latest value of the property, you can use
        PropertyCollector methods RetrievePropertiesEx or WaitForUpdatesEx.
        If you use the PropertyCollector.WaitForUpdatesEx method, specify
        an empty string for the version parameter. Any other version value will not
        produce any property values as no updates are generated.
        
        Detailed information about the files that comprise this virtual machine.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                $ref: '#/components/schemas/VirtualMachineFileLayout'

  /VirtualMachine/{moId}/layoutEx:
    get:
      tags: [VirtualMachine]
      summary: |2
        Detailed information about the files that comprise this virtual machine.
      operationId: VirtualMachine_getLayoutEx
      description: |2
        Detailed information about the files that comprise this virtual machine.
        
        Can be explicitly refreshed by the *VirtualMachine.RefreshStorageInfo* operation.
        In releases after vSphere API 5.0, vSphere Servers might not
        generate property collector update notifications for this property.
        To obtain the latest value of the property, you can use
        PropertyCollector methods RetrievePropertiesEx or WaitForUpdatesEx.
        If you use the PropertyCollector.WaitForUpdatesEx method, specify
        an empty string for the version parameter. Any other version value will not
        produce any property values as no updates are generated.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                $ref: '#/components/schemas/VirtualMachineFileLayoutEx'

  /VirtualMachine/{moId}/name:
    get:
      tags: [VirtualMachine]
      summary: |2
        Name of this entity, unique relative to its parent.
      operationId: VirtualMachine_getName
      description: |2
        Name of this entity, unique relative to its parent.
        
        Any / (slash), \\ (backslash), character used in this
        name element will be escaped. Similarly, any % (percent) character used in
        this name element will be escaped, unless it is used to start an escape
        sequence. A slash is escaped as %2F or %2f. A backslash is escaped as %5C or
        %5c, and a percent is escaped as %25.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                type: string

  /VirtualMachine/{moId}/network:
    get:
      tags: [VirtualMachine]
      summary: |2
        A collection of references to the subset of network objects in the datacenter that
        is used by this virtual machine.
      operationId: VirtualMachine_getNetwork
      description: |2
        A collection of references to the subset of network objects in the datacenter that
        is used by this virtual machine.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            Refers instances of *Network*.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/ManagedObjectReference'

  /VirtualMachine/{moId}/overallStatus:
    get:
      tags: [VirtualMachine]
      summary: |2
        General health of this managed entity.
      operationId: VirtualMachine_getOverallStatus
      description: |2
        General health of this managed entity.
        
        The overall status of the managed entity is computed as the worst status
        among its alarms and the configuration issues detected on the entity.
        The status is reported as one of the following values:
        - red: The entity has alarms or configuration issues with a red status.
        - yellow: The entity does not have alarms or configuration issues with a
          red status, and has at least one with a yellow status.
        - green: The entity does not have alarms or configuration issues with a
          red or yellow status, and has at least one with a green status.
        - gray: All of the entity's alarms have a gray status and the
          configuration status of the entity is not being monitored.
          
        In releases after vSphere API 5.0, vSphere Servers might not
        generate property collector update notifications for this property.
        To obtain the latest value of the property, you can use
        PropertyCollector methods RetrievePropertiesEx or WaitForUpdatesEx.
        If you use the PropertyCollector.WaitForUpdatesEx method, specify
        an empty string for the version parameter. Any other version value will not
        produce any property values as no updates are generated.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedEntityStatus_enum'

  /VirtualMachine/{moId}/parent:
    get:
      tags: [VirtualMachine]
      summary: |2
        Parent of this entity.
      operationId: VirtualMachine_getParent
      description: |2
        Parent of this entity.
        
        This value is null for the root object and for
        *VirtualMachine* objects that are part of
        a *VirtualApp*.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            Refers instance of *ManagedEntity*.
          content:
            application/json:
              schema:
                nullable: true
                $ref: '#/components/schemas/ManagedObjectReference'

  /VirtualMachine/{moId}/parentVApp:
    get:
      tags: [VirtualMachine]
      summary: |2
        Reference to the parent vApp.
      operationId: VirtualMachine_getParentVApp
      description: |2
        Reference to the parent vApp.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            Refers instance of *ManagedEntity*.
          content:
            application/json:
              schema:
                nullable: true
                $ref: '#/components/schemas/ManagedObjectReference'

  /VirtualMachine/{moId}/permission:
    get:
      tags: [VirtualMachine]
      summary: |2
        List of permissions defined for this entity.
      operationId: VirtualMachine_getPermission
      description: |2
        List of permissions defined for this entity.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/Permission'

  /VirtualMachine/{moId}/recentTask:
    get:
      tags: [VirtualMachine]
      summary: |2
        The set of recent tasks operating on this managed entity.
      operationId: VirtualMachine_getRecentTask
      description: |2
        The set of recent tasks operating on this managed entity.
        
        This is a subset
        of *TaskManager.recentTask* belong to this entity. A task in this
        list could be in one of the four states: pending, running, success or error.
        
        This property can be used to deduce intermediate power states for
        a virtual machine entity. For example, if the current powerState is "poweredOn"
        and there is a running task performing the "suspend" operation, then the virtual
        machine's intermediate state might be described as "suspending."
        
        Most tasks (such as power operations) obtain exclusive access to the virtual
        machine, so it is unusual for this list to contain more than one running task.
        One exception, however, is the task of cloning a virtual machine.
        In releases after vSphere API 5.0, vSphere Servers might not
        generate property collector update notifications for this property.
        To obtain the latest value of the property, you can use
        PropertyCollector methods RetrievePropertiesEx or WaitForUpdatesEx.
        If you use the PropertyCollector.WaitForUpdatesEx method, specify
        an empty string for the version parameter. Any other version value will not
        produce any property values as no updates are generated.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            Refers instances of *Task*.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/ManagedObjectReference'

  /VirtualMachine/{moId}/resourceConfig:
    get:
      tags: [VirtualMachine]
      summary: |2
        The resource configuration for a virtual machine.
      operationId: VirtualMachine_getResourceConfig
      description: |2
        The resource configuration for a virtual machine.
        
        The shares
        in this specification are evaluated relative to the resource pool
        to which it is assigned. This will return null if the product
        the virtual machine is registered on does not support resource
        configuration.
        
        To retrieve the configuration, you typically use
        *childConfiguration*.
        
        To change the configuration, use
        *ResourcePool.UpdateChildResourceConfiguration*.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                $ref: '#/components/schemas/ResourceConfigSpec'

  /VirtualMachine/{moId}/resourcePool:
    get:
      tags: [VirtualMachine]
      summary: |2
        The current resource pool that specifies resource allocation
        for this virtual machine.
      operationId: VirtualMachine_getResourcePool
      description: |2
        The current resource pool that specifies resource allocation
        for this virtual machine.
        
        This property is set when a virtual machine is created or associated with
        a different resource pool.
        
        Returns null if the virtual machine is a template or the session has no access
        to the resource pool.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            Refers instance of *ResourcePool*.
          content:
            application/json:
              schema:
                nullable: true
                $ref: '#/components/schemas/ManagedObjectReference'

  /VirtualMachine/{moId}/rootSnapshot:
    get:
      tags: [VirtualMachine]
      summary: |2
        The roots of all snapshot trees for the virtual machine.
      operationId: VirtualMachine_getRootSnapshot
      description: |2
        The roots of all snapshot trees for the virtual machine.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            Refers instances of *VirtualMachineSnapshot*.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/ManagedObjectReference'

  /VirtualMachine/{moId}/runtime:
    get:
      tags: [VirtualMachine]
      summary: |2
        Execution state and history for this virtual machine.
      operationId: VirtualMachine_getRuntime
      description: |2
        Execution state and history for this virtual machine.
        
        The contents of this property change when:
        - the virtual machine's power state changes.
        - an execution message is pending.
        - an event occurs.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VirtualMachineRuntimeInfo'

  /VirtualMachine/{moId}/snapshot:
    get:
      tags: [VirtualMachine]
      summary: |2
        Current snapshot and tree.
      operationId: VirtualMachine_getSnapshot
      description: |2
        Current snapshot and tree.
        
        The property is valid if snapshots have been created
        for this virtual machine.
        
        The contents of this property change in response to the methods:
        - *createSnapshot*
        - *revertToCurrentSnapshot*
        - *remove*
        - *revert*
        - *removeAllSnapshots*
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                $ref: '#/components/schemas/VirtualMachineSnapshotInfo'

  /VirtualMachine/{moId}/storage:
    get:
      tags: [VirtualMachine]
      summary: |2
        Storage space used by the virtual machine, split by datastore.
      operationId: VirtualMachine_getStorage
      description: |2
        Storage space used by the virtual machine, split by datastore.
        
        Can be explicitly refreshed by the *VirtualMachine.RefreshStorageInfo* operation.
        In releases after vSphere API 5.0, vSphere Servers might not
        generate property collector update notifications for this property.
        To obtain the latest value of the property, you can use
        PropertyCollector methods RetrievePropertiesEx or WaitForUpdatesEx.
        If you use the PropertyCollector.WaitForUpdatesEx method, specify
        an empty string for the version parameter. Any other version value will not
        produce any property values as no updates are generated.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                $ref: '#/components/schemas/VirtualMachineStorageInfo'

  /VirtualMachine/{moId}/summary:
    get:
      tags: [VirtualMachine]
      summary: |2
        Basic information about this virtual machine.
      operationId: VirtualMachine_getSummary
      description: |2
        Basic information about this virtual machine.
        
        This includes:
        - runtimeInfo
        - guest
        - basic configuration
        - alarms
        - performance information
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VirtualMachineSummary'

  /VirtualMachine/{moId}/tag:
    get:
      tags: [VirtualMachine]
      summary: |2
        The set of tags associated with this managed entity.
      operationId: VirtualMachine_getTag
      description: |2
        The set of tags associated with this managed entity.
        
        Experimental. Subject to change.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/Tag'

  /VirtualMachine/{moId}/triggeredAlarmState:
    get:
      tags: [VirtualMachine]
      summary: |2
        A set of alarm states for alarms triggered by this entity
        or by its descendants.
      operationId: VirtualMachine_getTriggeredAlarmState
      description: |2
        A set of alarm states for alarms triggered by this entity
        or by its descendants.
        
        Triggered alarms are propagated up the inventory hierarchy
        so that a user can readily tell when a descendant has triggered an alarm.
        In releases after vSphere API 5.0, vSphere Servers might not
        generate property collector update notifications for this property.
        To obtain the latest value of the property, you can use
        PropertyCollector methods RetrievePropertiesEx or WaitForUpdatesEx.
        If you use the PropertyCollector.WaitForUpdatesEx method, specify
        an empty string for the version parameter. Any other version value will not
        produce any property values as no updates are generated.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/AlarmState'

  /VirtualMachine/{moId}/value:
    get:
      tags: [VirtualMachine]
      summary: |2
        List of custom field values.
      operationId: VirtualMachine_getValue
      description: |2
        List of custom field values.
        
        Each value uses a key to associate
        an instance of a *CustomFieldStringValue* with
        a custom field definition.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/CustomFieldValue'

  /VirtualMachineCompatibilityChecker/{moId}/CheckCompatibility_Task:
    post:
      tags: [VirtualMachineCompatibilityChecker]
      summary: |2
        Tests whether or not a virtual machine could be placed on
        the given host in the given resource pool.
      operationId: VirtualMachineCompatibilityChecker_CheckCompatibility_Task
      description: |2
        Tests whether or not a virtual machine could be placed on
        the given host in the given resource pool.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CheckCompatibilityRequestType'
      responses:
        '200':
          description: |2
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***InvalidState***: if the operation cannot be performed because of the
            host or virtual machine's current state. For example, if the host
            is in maintenance mode or if the virtual machine's configuration
            information is not available.
            
            ***InvalidArgument***: if the desired host and pool are not associated
            with the same compute resource, the host parameter is left unset
            when the specified pool is associated with a non-DRS cluster, or
            if the specified vm does not exist.
            
            ***DatacenterMismatch***: if the provided host and pool do not belong
            to the same datacenter.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MethodFault'

  /VirtualMachineCompatibilityChecker/{moId}/CheckPowerOn_Task:
    post:
      tags: [VirtualMachineCompatibilityChecker]
      summary: |2
        Tests whether the provided virtual machine can be powered on
        on the given host and/or resource pool.
      operationId: VirtualMachineCompatibilityChecker_CheckPowerOn_Task
      description: |2
        Tests whether the provided virtual machine can be powered on
        on the given host and/or resource pool.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CheckPowerOnRequestType'
      responses:
        '200':
          description: |2
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***InvalidArgument***: if the desired host and pool are not associated
            with the same compute resource, the host parameter is left unset
            when the specified pool is associated with a non-DRS cluster, or
            if the provided vm does not exist.
            
            ***DatacenterMismatch***: if the provided host and pool do not belong
            to the same datacenter.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MethodFault'

  /VirtualMachineCompatibilityChecker/{moId}/CheckVmConfig_Task:
    post:
      tags: [VirtualMachineCompatibilityChecker]
      summary: |2
        Tests whether the provided virtual machine specification can be applied
        on the given host and resource pool.
      operationId: VirtualMachineCompatibilityChecker_CheckVmConfig_Task
      description: |2
        Tests whether the provided virtual machine specification can be applied
        on the given host and resource pool.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CheckVmConfigRequestType'
      responses:
        '200':
          description: |2
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***InvalidArgument***: if the desired host and pool are not associated
            with the same compute resource, the host parameter is left unset
            when the specified pool is associated with a non-DRS cluster, or
            if the provided vm does not exist.
            
            ***DatacenterMismatch***: if the provided host and pool do not belong
            to the same datacenter.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MethodFault'

  /VirtualMachineGuestCustomizationManager/{moId}/AbortCustomization_Task:
    post:
      tags: [VirtualMachineGuestCustomizationManager]
      summary: |2
        Abort any running guest customization process in the guest and remove
        the guest customization lock in the guest as well.
      operationId: VirtualMachineGuestCustomizationManager_AbortCustomization_Task
      description: |2
        Abort any running guest customization process in the guest and remove
        the guest customization lock in the guest as well.
        
        As a result of the
        operation, the guest configuration may be left in an undefined state,
        which is however fine because guest customization is idempotent.
        A later successful guest customization can set the guest configuration
        to a valid state.
        The virtual machine must be in the powered-on state and the VMware Tools
        must be running.
        The VM is typically a cloned VM after the InstantClone operation. See
        *VirtualMachine.InstantClone_Task*.
        
        ***Required privileges:*** VirtualMachine.Provisioning.Customize
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AbortCustomizationRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor
            the operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***TaskInProgress***: if the virtual machine is busy.
            
            ***InvalidPowerState***: if the VM is not powered on.
            
            ***InvalidState***: if the operation cannot be performed because of the
            virtual machine's current state. For example, if the VMware
            Tools is not running.
            
            ***InvalidGuestLogin***: if the the guest authentication information
            was not accepted.
            
            ***GuestPermissionDenied***: if the provided guest authentication
            is not sufficient to perform the guest customization.
            
            ***CustomizationFault***: if a customization error occurs.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /VirtualMachineGuestCustomizationManager/{moId}/CustomizeGuest_Task:
    post:
      tags: [VirtualMachineGuestCustomizationManager]
      summary: |2
        Customize a running virtual machine.
      operationId: VirtualMachineGuestCustomizationManager_CustomizeGuest_Task
      description: |2
        Customize a running virtual machine.
        
        The virtual machine must be in the powered-on state and the VMware Tools
        must be running.
        The VM is typically a cloned VM after the InstantClone operation. See
        *VirtualMachine.InstantClone_Task*.
        
        ***Required privileges:*** VirtualMachine.Provisioning.Customize
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CustomizeGuestRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor
            the operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***TaskInProgress***: if the virtual machine is busy.
            
            ***InvalidPowerState***: if the VM is not powered on.
            
            ***InvalidState***: if the operation cannot be performed because of the
            virtual machine's current state. For example, if the VMware
            Tools is not running.
            
            ***InvalidGuestLogin***: if the the guest authentication information
            was not accepted.
            
            ***GuestPermissionDenied***: if the provided guest authentication
            is not sufficient to perform the guest customization.
            
            ***CustomizationFault***: if a customization error occurs.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /VirtualMachineGuestCustomizationManager/{moId}/StartGuestNetwork_Task:
    post:
      tags: [VirtualMachineGuestCustomizationManager]
      summary: |2
        Start the network service in the guest, e.g.
      operationId: VirtualMachineGuestCustomizationManager_StartGuestNetwork_Task
      description: |2
        Start the network service in the guest, e.g.
        
        acquire IPs from DHCP.
        The virtual machine must be in the powered-on state and the VMware Tools
        must be running.
        The VM is typically a cloned VM after the InstantClone operation. See
        *VirtualMachine.InstantClone_Task*.
        
        ***Required privileges:*** VirtualMachine.Provisioning.Customize
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/StartGuestNetworkRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor
            the operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***TaskInProgress***: if the virtual machine is busy.
            
            ***InvalidPowerState***: if the VM is not powered on.
            
            ***InvalidState***: if the operation cannot be performed because of the
            virtual machine's current state. For example, if the VMware
            Tools is not running.
            
            ***InvalidGuestLogin***: if the the guest authentication information
            was not accepted.
            
            ***GuestPermissionDenied***: if the provided guest authentication
            is not sufficient to perform the guest customization.
            
            ***CustomizationFault***: if a customization error occurs.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /VirtualMachineProvisioningChecker/{moId}/CheckClone_Task:
    post:
      tags: [VirtualMachineProvisioningChecker]
      summary: |2
        Tests the feasibility of a proposed
        *VirtualMachine.CloneVM_Task* operation.
      operationId: VirtualMachineProvisioningChecker_CheckClone_Task
      description: |2
        Tests the feasibility of a proposed
        *VirtualMachine.CloneVM_Task* operation.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CheckCloneRequestType'
      responses:
        '200':
          description: |2
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***InvalidArgument***: in the following cases:
            - the target host and target pool are not associated with the
              same compute resource
            - the target pool represents a cluster without DRS enabled,
              and the host is not specified
            - Datastore in a diskLocator entry is not specified
            - the specified device ID cannot be found in the virtual machine's current
              configuration
            - the object specified in relocate cannot be found
            - the target pool is not specified while checking feasibility of
              cloning to a different datacenter or a different vCenter
              service
            - the datastore is not specified when testType parameter includes
              datastore tests while checking feasibility of cloning to a
              different datacenter or a different vCenter service
              
            ***InvalidState***: if the operation cannot be performed because of the
            virtual machine's current state. For example, if the virtual machine
            configuration information is not available.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InvalidState'

  /VirtualMachineProvisioningChecker/{moId}/CheckInstantClone_Task:
    post:
      tags: [VirtualMachineProvisioningChecker]
      summary: |2
        Tests the feasibility of a proposed
        *VirtualMachine.InstantClone_Task* operation.
      operationId: VirtualMachineProvisioningChecker_CheckInstantClone_Task
      description: |2
        Tests the feasibility of a proposed
        *VirtualMachine.InstantClone_Task* operation.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CheckInstantCloneRequestType'
      responses:
        '200':
          description: |2
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***InvalidArgument***: in the following cases:
            - The destination host does not support Instant Clone.
            - The source and destination host are not the same.
            - The relocate spec in the Instant Clone spec has
              Datastore set.
            - The relocate spec in the Instant Clone spec has host set.
            - The Instant clone spec does not have name set.
            - The source VM is a template.
            - The source VM is not powered on.
            - The source VM has PMEM devices/disks configured.
              
            ***InvalidState***: if the operation cannot be performed because of the
            virtual machine's current state. For example, if the virtual
            machine configuration information is not available.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InvalidState'

  /VirtualMachineProvisioningChecker/{moId}/CheckMigrate_Task:
    post:
      tags: [VirtualMachineProvisioningChecker]
      summary: |2
        Tests the feasibility of a proposed
        *VirtualMachine.MigrateVM_Task* operation.
      operationId: VirtualMachineProvisioningChecker_CheckMigrate_Task
      description: |2
        Tests the feasibility of a proposed
        *VirtualMachine.MigrateVM_Task* operation.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CheckMigrateRequestType'
      responses:
        '200':
          description: |2
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***InvalidArgument***: if the target host(s) and target pool for a
            migration are not associated with the same compute resource,
            or if the host parameter is left unset when the target pool is
            associated with a non-DRS cluster.
            
            ***InvalidPowerState***: if the state argument is set and at least one
            of the specified virtual machines is not in that power state.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InvalidState'

  /VirtualMachineProvisioningChecker/{moId}/CheckRelocate_Task:
    post:
      tags: [VirtualMachineProvisioningChecker]
      summary: |2
        Tests the feasibility of a proposed
        *VirtualMachine.RelocateVM_Task* operation.
      operationId: VirtualMachineProvisioningChecker_CheckRelocate_Task
      description: |2
        Tests the feasibility of a proposed
        *VirtualMachine.RelocateVM_Task* operation.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CheckRelocateRequestType'
      responses:
        '200':
          description: |2
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***NotSupported***: if the virtual machine is marked as a template.
            
            ***InvalidArgument***: in the following cases:
            - the target host and target pool are not associated with the
              same compute resource
            - the target pool represents a cluster without DRS enabled,
              and the host is not specified
            - Datastore in a diskLocator entry is not specified
            - the specified device ID cannot be found in the virtual machine's current
              configuration
            - the object specified in relocate cannot be found
            - the target pool is not specified while checking feasibility of
              relocation to a different datacenter or different vCenter
              service
            - the datastore is not specified when testType parameter includes
              datastore tests while checking feasibility of relocation to a
              different datacenter or a different vCenter service
              
            ***InvalidState***: if the operation cannot be performed because of the
            host or virtual machine's current state. For example, if the host is in
            maintenance mode, or if the virtual machine's configuration information
            is not available.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InvalidState'

  /VirtualMachineProvisioningChecker/{moId}/QueryVMotionCompatibilityEx_Task:
    post:
      tags: [VirtualMachineProvisioningChecker]
      summary: |2
        Investigates the general VMotion compatibility of a set of virtual machines
        with a set of hosts.
      operationId: VirtualMachineProvisioningChecker_QueryVMotionCompatibilityEx_Task
      description: |2
        Investigates the general VMotion compatibility of a set of virtual machines
        with a set of hosts.
        
        The virtual machine may be in any power state. Hosts
        may be in any connection state and also may be in maintenance mode.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QueryVMotionCompatibilityExRequestType'
      responses:
        '200':
          description: |2
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'

  /VirtualMachineSnapshot/{moId}/ExportSnapshot:
    post:
      tags: [VirtualMachineSnapshot]
      summary: |2
        Obtains an export lease on this snapshot.
      operationId: VirtualMachineSnapshot_ExportSnapshot
      description: |2
        Obtains an export lease on this snapshot.
        
        The export lease contains
        a list of URLs for the virtual disks for this snapshot, as well as
        a ticket giving access to the URLs.
        
        See *HttpNfcLease* for information on how to use the lease.
        
        ***Required privileges:*** VApp.Export
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            The export lease on this *VirtualMachineSnapshot*. The
            export task continues running until the lease is completed by the
            caller.
            
            Refers instance of *HttpNfcLease*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***TaskInProgress***: if the virtual machine is busy.
            
            ***InvalidState***: if the operation cannot be performed because of the
            virtual machine's current state. For example, if the virtual machine
            configuration information is not available.
            
            ***FileFault***: if there is an error accessing the virtual machine files.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /VirtualMachineSnapshot/{moId}/RemoveSnapshot_Task:
    post:
      tags: [VirtualMachineSnapshot]
      summary: |2
        Removes this snapshot and deletes any associated storage.
      operationId: VirtualMachineSnapshot_RemoveSnapshot_Task
      description: |2
        Removes this snapshot and deletes any associated storage.
        
        ***Required privileges:*** VirtualMachine.State.RemoveSnapshot
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RemoveSnapshotRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor the
            operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***TaskInProgress***: if the virtual machine is busy.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TaskInProgress'

  /VirtualMachineSnapshot/{moId}/RenameSnapshot:
    post:
      tags: [VirtualMachineSnapshot]
      summary: |2
        Rename this snapshot with either a new name or a new description or both.
      operationId: VirtualMachineSnapshot_RenameSnapshot
      description: |2
        Rename this snapshot with either a new name or a new description or both.
        
        At least one of these must be specified when calling the rename method.
        
        ***Required privileges:*** VirtualMachine.State.RenameSnapshot
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RenameSnapshotRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***NotSupported***: if the host product does not support snapshot rename.
            
            ***InvalidName***: if the specified snapshot name is not valid.
            
            ***TaskInProgress***: if the virtual machine is busy.
            
            ***InvalidPowerState***: if the operation cannot be performed in the current
            power state of the virtual machine.
            
            ***InvalidState***: if the operation cannot be performed in the current state
            of the virtual machine. For example, the virtual machine's configuration
            is not available.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /VirtualMachineSnapshot/{moId}/RevertToSnapshot_Task:
    post:
      tags: [VirtualMachineSnapshot]
      summary: |2
        Change the execution state of the virtual machine to the state of this snapshot.
      operationId: VirtualMachineSnapshot_RevertToSnapshot_Task
      description: |2
        Change the execution state of the virtual machine to the state of this snapshot.
        
        ***Required privileges:*** VirtualMachine.State.RevertToSnapshot
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RevertToSnapshotRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor the
            operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***TaskInProgress***: if the virtual machine is busy.
            
            ***NotSupported***: if the host product does not support snapshots.
            
            ***InsufficientResourcesFault***: if this operation would violate a resource
            usage policy.
            
            ***InvalidPowerState***: if the operation cannot be performed in the current
            power state of the virtual machine.
            
            ***InvalidState***: if the operation cannot be performed in the current state
            of the virtual machine. For example, the virtual machine's configuration
            is not available.
            
            ***VmConfigFault***: if a configuration issue prevents the power-on. Typically, a
            more specific fault, such as UnsupportedVmxLocation, is thrown.
            
            ***FileFault***: if there is a problem accessing the virtual machine on the
            filesystem.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /VirtualMachineSnapshot/{moId}/setCustomValue:
    post:
      tags: [VirtualMachineSnapshot]
      summary: |2
        Assigns a value to a custom field.
      operationId: VirtualMachineSnapshot_setCustomValue
      description: |2
        Assigns a value to a custom field.
        
        The setCustomValue method requires
        whichever updatePrivilege is defined as one of the
        *CustomFieldDef.fieldInstancePrivileges*
        for the CustomFieldDef whose value is being changed.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/setCustomValueRequestType'
      responses:
        '204':
          description: |2
            No Content

  /VirtualMachineSnapshot/{moId}/availableField:
    get:
      tags: [VirtualMachineSnapshot]
      summary: |2
        List of custom field definitions that are valid for the object's type.
      operationId: VirtualMachineSnapshot_getAvailableField
      description: |2
        List of custom field definitions that are valid for the object's type.
        
        The fields are sorted by *CustomFieldDef.name*.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/CustomFieldDef'

  /VirtualMachineSnapshot/{moId}/childSnapshot:
    get:
      tags: [VirtualMachineSnapshot]
      summary: |2
        All snapshots for which this snapshot is the parent.
      operationId: VirtualMachineSnapshot_getChildSnapshot
      description: |2
        All snapshots for which this snapshot is the parent.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            Refers instances of *VirtualMachineSnapshot*.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/ManagedObjectReference'

  /VirtualMachineSnapshot/{moId}/config:
    get:
      tags: [VirtualMachineSnapshot]
      summary: |2
        Information about the configuration of this virtual machine when this snapshot was
        taken.
      operationId: VirtualMachineSnapshot_getConfig
      description: |2
        Information about the configuration of this virtual machine when this snapshot was
        taken.
        
        The datastore paths for the virtual machine disks point to the head of the disk
        chain that represents the disk at this given snapshot. The fileInfo.fileLayout
        field is not set.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VirtualMachineConfigInfo'

  /VirtualMachineSnapshot/{moId}/value:
    get:
      tags: [VirtualMachineSnapshot]
      summary: |2
        List of custom field values.
      operationId: VirtualMachineSnapshot_getValue
      description: |2
        List of custom field values.
        
        Each value uses a key to associate
        an instance of a *CustomFieldStringValue* with
        a custom field definition.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/CustomFieldValue'

  /VirtualMachineSnapshot/{moId}/vm:
    get:
      tags: [VirtualMachineSnapshot]
      summary: |2
        The virtual machine for which the snapshot was taken.
      operationId: VirtualMachineSnapshot_getVm
      description: |2
        The virtual machine for which the snapshot was taken.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            Refers instance of *VirtualMachine*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'

  /VmwareDistributedVirtualSwitch/{moId}/AddNetworkResourcePool:
    post:
      tags: [VmwareDistributedVirtualSwitch]
      summary: |2
        Add a network resource pool.
      operationId: VmwareDistributedVirtualSwitch_AddNetworkResourcePool
      deprecated: true
      description: |2
        Deprecated as of vSphere API 6.0
        Use *DistributedVirtualSwitch.DvsReconfigureVmVnicNetworkResourcePool_Task* instead
        to add a Virtual NIC network resource pool.
        
        Add a network resource pool.
        
        ***Required privileges:*** DVSwitch.ResourceManagement
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AddNetworkResourcePoolRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***DvsFault***: if operation fails on any host or if there are other update failures.
            
            ***NotSupported***: if network I/O control is not supported on
            the vSphere Distributed Switch.
            
            ***DvsNotAuthorized***: if login-session's extension key does not match
            the switch's configured
            *extensionKey*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /VmwareDistributedVirtualSwitch/{moId}/CreateDVPortgroup_Task:
    post:
      tags: [VmwareDistributedVirtualSwitch]
      summary: |2
        Creates a single *DistributedVirtualPortgroup* and adds it
        to the distributed virtual switch.
      operationId: VmwareDistributedVirtualSwitch_CreateDVPortgroup_Task
      description: |2
        Creates a single *DistributedVirtualPortgroup* and adds it
        to the distributed virtual switch.
        
        ***Required privileges:*** DVPortgroup.Create
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateDVPortgroupRequestType'
      responses:
        '200':
          description: |2
            Returns a *Task* object. The
            *Task*.*Task.info*.*TaskInfo.result* property
            contains a managed object reference to the new portgroup.
            The *DistributedVirtualSwitch.portgroup* property also contains
            the reference.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***DuplicateName***: if a portgroup with the same name already exists
            
            ***DvsFault***: if operation fails on any host or if there are other update failures.
            
            ***InvalidName***: if name of the portgroup is invalid
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /VmwareDistributedVirtualSwitch/{moId}/AddDVPortgroup_Task:
    post:
      tags: [VmwareDistributedVirtualSwitch]
      summary: |2
        Creates one or more *DistributedVirtualPortgroup*s and adds them to
        the distributed virtual switch.
      operationId: VmwareDistributedVirtualSwitch_AddDVPortgroup_Task
      description: |2
        Creates one or more *DistributedVirtualPortgroup*s and adds them to
        the distributed virtual switch.
        
        ***Required privileges:*** DVPortgroup.Create
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AddDVPortgroupRequestType'
      responses:
        '200':
          description: |2
            Returns a *Task* object with which to monitor the operation.
            The method does not return a value in the
            *Task*.*Task.info*.*TaskInfo.result* property.
            Use the *DistributedVirtualSwitch.portgroup* property to obtain
            managed object references to the new portgroups.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***NotSupported***: If called directly on a host.
            
            ***DvsFault***: if operation fails on any host or if there are other update failures.
            
            ***DvsNotAuthorized***: if login-session's extension key does not match
            the switch's configured
            *extensionKey*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /VmwareDistributedVirtualSwitch/{moId}/Destroy_Task:
    post:
      tags: [VmwareDistributedVirtualSwitch]
      summary: |2
        Destroys this object, deleting its contents and removing it from its parent
        folder (if any).
      operationId: VmwareDistributedVirtualSwitch_Destroy_Task
      description: |2
        Destroys this object, deleting its contents and removing it from its parent
        folder (if any).
        
        NOTE: The appropriate privilege must be held on the parent of the destroyed
        entity as well as the entity itself.
        This method can throw one of several exceptions. The exact set of exceptions
        depends on the kind of entity that is being removed. See comments for
        each entity for more information on destroy behavior.
        
        ***Required privileges:*** DVSwitch.Delete
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor the
            operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            Failure
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /VmwareDistributedVirtualSwitch/{moId}/EnableNetworkResourceManagement:
    post:
      tags: [VmwareDistributedVirtualSwitch]
      summary: |2
        Enable/Disable network I/O control on the vSphere Distributed Switch.
      operationId: VmwareDistributedVirtualSwitch_EnableNetworkResourceManagement
      description: |2
        Enable/Disable network I/O control on the vSphere Distributed Switch.
        
        ***Required privileges:*** DVSwitch.ResourceManagement
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EnableNetworkResourceManagementRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***DvsFault***: if the enabling/disabling fails.
            
            ***NotSupported***: if network I/O control is not supported on
            the vSphere Distributed Switch.
            
            ***DvsNotAuthorized***: if login-session's extension key does not match
            the switch's configured
            *extensionKey*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DvsFault'

  /VmwareDistributedVirtualSwitch/{moId}/FetchDVPortKeys:
    post:
      tags: [VmwareDistributedVirtualSwitch]
      summary: |2
        Return the keys of ports that meet the criteria.
      operationId: VmwareDistributedVirtualSwitch_FetchDVPortKeys
      description: |2
        Return the keys of ports that meet the criteria.
        
        On an ESXi host,
        the property shows only the connected ports currently on the host.
        
        ***Required privileges:*** System.Read
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/FetchDVPortKeysRequestType'
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  type: string

  /VmwareDistributedVirtualSwitch/{moId}/FetchDVPorts:
    post:
      tags: [VmwareDistributedVirtualSwitch]
      summary: |2
        Return the ports that meet the criteria.
      operationId: VmwareDistributedVirtualSwitch_FetchDVPorts
      description: |2
        Return the ports that meet the criteria.
        
        ***Required privileges:*** System.Read
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/FetchDVPortsRequestType'
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/DistributedVirtualPort'

  /VmwareDistributedVirtualSwitch/{moId}/LookupDvPortGroup:
    post:
      tags: [VmwareDistributedVirtualSwitch]
      summary: |2
        Returns the portgroup identified by the key within this VDS.
      operationId: VmwareDistributedVirtualSwitch_LookupDvPortGroup
      description: |2
        Returns the portgroup identified by the key within this VDS.
        
        ***Required privileges:*** System.Read
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LookupDvPortGroupRequestType'
      responses:
        '200':
          description: |2
            Refers instance of *DistributedVirtualPortgroup*.
          content:
            application/json:
              schema:
                nullable: true
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***NotFound***: If the portgroup for the specified key is not found.
            
            ***NotSupported***: If the operation is not supported.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFound'

  /VmwareDistributedVirtualSwitch/{moId}/MergeDvs_Task:
    post:
      tags: [VmwareDistributedVirtualSwitch]
      summary: |2
        Merge an existing DistributedVirtualSwitch (source) to this switch
        (destination).
      operationId: VmwareDistributedVirtualSwitch_MergeDvs_Task
      deprecated: true
      description: |2
        Deprecated as of vSphere API 5.5.
        
        Merge an existing DistributedVirtualSwitch (source) to this switch
        (destination).
        
        The host members and the connected entity of the source
        switch will be transferred to the destination switch. This operation
        disconnects the entities from the source switch, tears down its host
        proxy switches, creates new proxies for the destination switch,
        and reconnects the entities to the destination switch.
        
        In summary, this operation does the following:
        - Adds the
          <code>config</code>.*DVSConfigInfo.maxPorts*
          of the source switch to the <code>maxPorts</code> of the
          destination switch.
        - The host members of the source switch leave the source switch
          and join the destination switch with the same Physical NIC and
          VirtualSwitch (if applicable). A set of new uplink ports,
          compliant with the
          *DVSConfigSpec.uplinkPortPolicy*,
          is created as the hosts join the destination switch.
        - The portgroups on the source switch are copied over to destination
          switch, by calculating the effective default port config and
          creating a portgroup of the same name in the destination switch. If
          the name already exists, the copied portgroup uses names following a
          "Copy of switch-portgroup-name" scheme to avoid conflict. The same
          number of ports are created inside each copied portgroup.
        - The standalone distributed virtual ports are not copied,
          unless there is a virtual
          machine or host virtual NIC connecting to it. In that case, the
          operation calculates the effective port config and creates a port
          in the destination switch with the same name. Name conflict is
          resolved using numbers like "original-port-name(1)". The uplink ports
          are not copied over.
        - The virtual machine and host virtual NICs are disconnected from the source
          switch and reconnected with the destination switch, to the
          copied standalone port or portgroup.
        - If you are using a *VmwareDistributedVirtualSwitch* -
          Unless the PVLAN map contains exactly the same entries between
          the source and destination VMware distributed virtual switches,
          the method raises a fault if
          *VmwareDistributedVirtualSwitchPvlanSpec.pvlanId*
          is set in any port, portgroup, or switch that will be copied.
          
        ***Required privileges:*** DVSwitch.Modify
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MergeDvsRequestType'
      responses:
        '200':
          description: |2
            Returns a *Task* object with which to monitor the operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***NotSupported***: If called directly on a host.
            
            ***ResourceInUse***: If failed to delete the source switch
            
            ***DvsFault***: if operation fails on any host or if there are other update failures.
            
            ***DvsNotAuthorized***: if login-session's extension key does not match
            the switch's configured
            *extensionKey*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /VmwareDistributedVirtualSwitch/{moId}/MoveDVPort_Task:
    post:
      tags: [VmwareDistributedVirtualSwitch]
      summary: |2
        Move the ports out of their current portgroup into the specified portgroup.
      operationId: VmwareDistributedVirtualSwitch_MoveDVPort_Task
      deprecated: true
      description: |2
        Deprecated as of vSphere API 6.0.
        
        Move the ports out of their current portgroup into the specified portgroup.
        
        If the moving of any of the ports results in a violation of the portgroup
        policy, or type of the source or destination portgroup, the operation
        raises a fault. A conflict port cannot be moved.
        
        ***Required privileges:*** DVSwitch.Modify
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MoveDVPortRequestType'
      responses:
        '200':
          description: |2
            Returns a *Task* object with which to monitor the operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***NotSupported***: If called directly on a host.
            
            ***DvsFault***: if operation fails on any host or if there are other update failures.
            
            ***DvsNotAuthorized***: if login-session's extension key does not match
            the switch's configured
            *extensionKey*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /VmwareDistributedVirtualSwitch/{moId}/PerformDvsProductSpecOperation_Task:
    post:
      tags: [VmwareDistributedVirtualSwitch]
      summary: |2
        This method updates the *DistributedVirtualSwitch* product specifications.
      operationId: VmwareDistributedVirtualSwitch_PerformDvsProductSpecOperation_Task
      description: |2
        This method updates the *DistributedVirtualSwitch* product specifications.
        
        ***Required privileges:*** DVSwitch.Modify
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PerformDvsProductSpecOperationRequestType'
      responses:
        '200':
          description: |2
            Returns a *Task* object with which to monitor the operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***NotSupported***: If called directly on a host.
            
            ***DvsFault***: if operation fails on any host or if there are other update failures.
            
            ***DvsNotAuthorized***: if login-session's extension key does not match
            the switch's configured
            *extensionKey*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /VmwareDistributedVirtualSwitch/{moId}/QueryUsedVlanIdInDvs:
    post:
      tags: [VmwareDistributedVirtualSwitch]
      summary: |2
        Return the used VLAN ID (PVLAN excluded) in the switch.
      operationId: VmwareDistributedVirtualSwitch_QueryUsedVlanIdInDvs
      description: |2
        Return the used VLAN ID (PVLAN excluded) in the switch.
        
        ***Required privileges:*** System.Read
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  type: integer
                  format: int32

  /VmwareDistributedVirtualSwitch/{moId}/ReconfigureDvs_Task:
    post:
      tags: [VmwareDistributedVirtualSwitch]
      summary: |2
        Reconfigures a distributed virtual switch.
      operationId: VmwareDistributedVirtualSwitch_ReconfigureDvs_Task
      description: |2
        Reconfigures a distributed virtual switch.
        
        You can use this method
        to set switch properties or to reset the switch to a previous state.
        
        **Reconfiguring a Standard Distributed Virtual Switch**
        
        To reconfigure a *DistributedVirtualSwitch*,
        use a *DVSConfigSpec*
        to set the switch properties.
        
        **Reconfiguring a VMware Distributed Virtual Switch**
        
        If you use a *VmwareDistributedVirtualSwitch*,
        you can perform the following switch reconfiguration:
        - Use a *VMwareDVSConfigSpec*
          to set the switch properties.
        - Use the *VMwareDVSConfigSpec*
          returned by *DistributedVirtualSwitch.DVSRollback_Task*
          to reset the switch to a previous state.
          
        Reconfiguring the switch may require any of the following privileges,
        depending on what is being changed:
        - DVSwitch.PolicyOp if *DVSConfigSpec.policy*
          is set.
        - DVSwitch.PortSetting if *DVSConfigSpec.defaultPortConfig*
          is set.
        - DVSwitch.HostOp if *DVSConfigSpec.policy*
          is set. The
          user will also need the Host.Config.Network
          privilege on the host.
        - DVSwitch.Vspan if *VMwareDVSConfigSpec.vspanConfigSpec*
          is set.
        - DVSwitch.Modify for anything else.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ReconfigureDvsRequestType'
      responses:
        '200':
          description: |2
            Returns a *Task* object with which to monitor the operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***NotSupported***: if called directly on a host or if the spec
            includes settings for any vNetwork Distributed
            Switch feature that is not supported on this
            switch.
            
            ***DvsFault***: if operation fails on any host or if there are other update failures.
            
            ***DvsNotAuthorized***: if login-session's extension key does not match
            the switch's configured
            *DVSConfigInfo.extensionKey*.
            
            ***ResourceNotAvailable***: If there is no port available in the portgroup
            
            ***VspanPortConflict***: if dvPort is used as both the transmitted source and destination ports in Distributed Port Mirroring sessions.
            
            ***VspanPromiscuousPortNotSupported***: if a promiscuous port is used as transmitted source or destination in the Distributed Port Mirroring sessions.
            
            ***VspanSameSessionPortConflict***: if a dvPort is used as both the source and destination in the same Distributed Port Mirroring session.
            
            ***VspanDestPortConflict***: if a dvPort is used as desination ports in multiple Distributed Port Mirroring sessions.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /VmwareDistributedVirtualSwitch/{moId}/ReconfigureDVPort_Task:
    post:
      tags: [VmwareDistributedVirtualSwitch]
      summary: |2
        Reconfigure individual ports.
      operationId: VmwareDistributedVirtualSwitch_ReconfigureDVPort_Task
      description: |2
        Reconfigure individual ports.
        
        ***Required privileges:*** DVSwitch.PortConfig
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ReconfigureDVPortRequestType'
      responses:
        '200':
          description: |2
            Returns a *Task* object with which to monitor the operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***NotSupported***: If called directly on a host or if the switch
            implementation doesn't support this API or if the spec
            includes settings for any vSphere Distributed Switch
            feature that is not supported on this switch.
            
            ***InvalidArgument***: If the array have different elements for the
            same port.
            
            ***DvsFault***: if operation fails on any host or if there are other update failures.
            
            ***DvsNotAuthorized***: if login-session's extension key does not match
            the switch's configured
            *extensionKey*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /VmwareDistributedVirtualSwitch/{moId}/DvsReconfigureVmVnicNetworkResourcePool_Task:
    post:
      tags: [VmwareDistributedVirtualSwitch]
      summary: |2
        reconfigure the Virtual NIC network resource pool configuration.
      operationId: VmwareDistributedVirtualSwitch_DvsReconfigureVmVnicNetworkResourcePool_Task
      description: |2
        reconfigure the Virtual NIC network resource pool configuration.
        
        ***Required privileges:*** DVSwitch.ResourceManagement
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DvsReconfigureVmVnicNetworkResourcePoolRequestType'
      responses:
        '200':
          description: |2
            Returns a *Task* object with which to monitor the operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***DvsFault***: if operation fails on any host or if there are other reconfigure failures.
            
            ***NotFound***: if the resource pool does not exist on the dvs.
            
            ***DuplicateName***: if a virtual NIC network resource pool with the same name already exists.
            
            ***ConcurrentAccess***: if a Virtual NIC network resource pool is modified by
            two or more clients at the same time.
            
            ***ResourceInUse***: If Virtual NIC network resource pool being removed
            is associated with a network entity
            
            ***NotSupported***: if network I/O control is not supported on
            the vSphere Distributed Switch.
            
            ***DvsNotAuthorized***: if login-session's extension key does not match
            the switch's configured
            *extensionKey*.
            
            ***ConflictingConfiguration***: if the any property being set is in conflict.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /VmwareDistributedVirtualSwitch/{moId}/RectifyDvsHost_Task:
    post:
      tags: [VmwareDistributedVirtualSwitch]
      summary: |2
        Update the switch configuration on the host to bring them in sync with the
        current configuration in vCenter Server.
      operationId: VmwareDistributedVirtualSwitch_RectifyDvsHost_Task
      deprecated: true
      description: |2
        Deprecated as of vSphere API 5.0.
        Use
        *DistributedVirtualSwitchManager*.*DistributedVirtualSwitchManager.RectifyDvsOnHost_Task* instead.
        
        Update the switch configuration on the host to bring them in sync with the
        current configuration in vCenter Server.
        
        ***Required privileges:*** System.Read
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RectifyDvsHostRequestType'
      responses:
        '200':
          description: |2
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***DvsFault***: if operation fails on any host or if there are other update failures.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /VmwareDistributedVirtualSwitch/{moId}/RefreshDVPortState:
    post:
      tags: [VmwareDistributedVirtualSwitch]
      summary: |2
        Refresh port states.
      operationId: VmwareDistributedVirtualSwitch_RefreshDVPortState
      description: |2
        Refresh port states.
        
        ***Required privileges:*** System.Read
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RefreshDVPortStateRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***DvsFault***: if operation fails on any host or if there are other update failures.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /VmwareDistributedVirtualSwitch/{moId}/Reload:
    post:
      tags: [VmwareDistributedVirtualSwitch]
      summary: |2
        Reload the entity state.
      operationId: VmwareDistributedVirtualSwitch_Reload
      description: |2
        Reload the entity state.
        
        Clients only need to call this method
        if they changed some external state that affects the service
        without using the Web service interface to perform the change.
        For example, hand-editing a virtual machine configuration file
        affects the configuration of the associated virtual machine but
        the service managing the virtual machine might not monitor the
        file for changes. In this case, after such an edit, a client
        would call "reload" on the associated virtual machine to ensure
        the service and its clients have current data for the
        virtual machine.
        
        ***Required privileges:*** System.Read
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '204':
          description: |2
            No Content

  /VmwareDistributedVirtualSwitch/{moId}/RemoveNetworkResourcePool:
    post:
      tags: [VmwareDistributedVirtualSwitch]
      summary: |2
        Remove a network resource pool.
      operationId: VmwareDistributedVirtualSwitch_RemoveNetworkResourcePool
      deprecated: true
      description: |2
        Deprecated as of vSphere API 6.0
        Use *DistributedVirtualSwitch.DvsReconfigureVmVnicNetworkResourcePool_Task* instead
        to remove a Virtual NIC network resource pool.
        
        Remove a network resource pool.
        
        ***Required privileges:*** DVSwitch.ResourceManagement
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RemoveNetworkResourcePoolRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***DvsFault***: if operation fails on any host or if there are other update failures.
            
            ***NotFound***: if the resource pool does not exist on the dvs.
            
            ***InvalidName***: if the name of the resource pool is invalid.
            
            ***ResourceInUse***: If network resource pool is associated with a network entity
            
            ***NotSupported***: if network I/O control is not supported on
            the vSphere Distributed Switch.
            
            ***DvsNotAuthorized***: if login-session's extension key does not match
            the switch's configured
            *extensionKey*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /VmwareDistributedVirtualSwitch/{moId}/Rename_Task:
    post:
      tags: [VmwareDistributedVirtualSwitch]
      summary: |2
        Renames this managed entity.
      operationId: VmwareDistributedVirtualSwitch_Rename_Task
      description: |2
        Renames this managed entity.
        
        Any % (percent) character used in this name parameter
        must be escaped, unless it is used to start an escape
        sequence. Clients may also escape any other characters in
        this name parameter.
        
        See also *ManagedEntity.name*.
        
        ***Required privileges:*** DVSwitch.Modify
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RenameRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor the
            operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***DuplicateName***: If another object in the same folder has the target name.
            
            ***InvalidName***: If the new name is not a valid entity name.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /VmwareDistributedVirtualSwitch/{moId}/DVSRollback_Task:
    post:
      tags: [VmwareDistributedVirtualSwitch]
      summary: |2
        This method determines if the distributed virtual switch configuration
        has changed.
      operationId: VmwareDistributedVirtualSwitch_DVSRollback_Task
      description: |2
        This method determines if the distributed virtual switch configuration
        has changed.
        
        If it has changed, the method returns a
        *VMwareDVSConfigSpec*.
        Use the *DistributedVirtualSwitch.ReconfigureDvs_Task* method to apply
        the rollback configuration to the switch.
        You can use the rollback method only on a *VmwareDistributedVirtualSwitch*.
        - If you specify the <code>entityBackup</code> parameter, the returned
          configuration specification represents the exported switch configuration.
          If the <code>entityBackup</code> matches the current switch
          configuration, the method does not return a configuration specification.
        - If <code>entityBackup</code> is not specified, the returned configuration
          specification represents a previous state of the switch, if available.
          When you use a VMware distributed virtual switch, each time you reconfigure
          the switch, the Server saves the switch configuration before applying the updates.
          If the vCenter Server is restarted, the saved configuration is not preserved
          and the method does not return a configuration specification.
          
        To use the rollback method, you must have the DVSwitch.Read privilege.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DVSRollbackRequestType'
      responses:
        '200':
          description: |2
            Returns a *Task* object with which to monitor the operation.
            If the distributed virtual switch configuration has changed, the
            *Task*.*Task.info*.*TaskInfo.result*
            property contains the *DVSConfigSpec* object.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***RollbackFailure***: if there is no configuration specified in entityBackup and
            the previous configuration does not exist either.
            
            ***DvsFault***: if operation fails.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DvsFault'

  /VmwareDistributedVirtualSwitch/{moId}/setCustomValue:
    post:
      tags: [VmwareDistributedVirtualSwitch]
      summary: |2
        Assigns a value to a custom field.
      operationId: VmwareDistributedVirtualSwitch_setCustomValue
      description: |2
        Assigns a value to a custom field.
        
        The setCustomValue method requires
        whichever updatePrivilege is defined as one of the
        *CustomFieldDef.fieldInstancePrivileges*
        for the CustomFieldDef whose value is being changed.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/setCustomValueRequestType'
      responses:
        '204':
          description: |2
            No Content

  /VmwareDistributedVirtualSwitch/{moId}/UpdateDvsCapability:
    post:
      tags: [VmwareDistributedVirtualSwitch]
      summary: |2
        Set the capability of the switch.
      operationId: VmwareDistributedVirtualSwitch_UpdateDvsCapability
      description: |2
        Set the capability of the switch.
        
        ***Required privileges:*** DVSwitch.Modify
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateDvsCapabilityRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***NotSupported***: If called directly on a host or if the switch
            implementation doesn't support this API.
            
            ***DvsFault***: if operation fails on any host or if there are other update failures.
            
            ***DvsNotAuthorized***: if login-session's extension key does not match
            the switch's configured
            *extensionKey*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DvsFault'

  /VmwareDistributedVirtualSwitch/{moId}/UpdateDVSHealthCheckConfig_Task:
    post:
      tags: [VmwareDistributedVirtualSwitch]
      summary: |2
        Update health check configuration.
      operationId: VmwareDistributedVirtualSwitch_UpdateDVSHealthCheckConfig_Task
      description: |2
        Update health check configuration.
        
        ***Required privileges:*** DVSwitch.Modify
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateDVSHealthCheckConfigRequestType'
      responses:
        '200':
          description: |2
            Returns a *Task* object with which to monitor the operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***DvsFault***: if operation fails on any host or if there are other update failures.
            
            ***NotSupported***: if health check is not supported on the switch.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DvsFault'

  /VmwareDistributedVirtualSwitch/{moId}/UpdateDVSLacpGroupConfig_Task:
    post:
      tags: [VmwareDistributedVirtualSwitch]
      summary: |2
        Update Link Aggregation Control Protocol groups.
      operationId: VmwareDistributedVirtualSwitch_UpdateDVSLacpGroupConfig_Task
      description: |2
        Update Link Aggregation Control Protocol groups.
        
        It can be called if the value of
        *VMwareDVSConfigInfo.lacpApiVersion* is
        *multipleLag*
        else an exception ConflictingConfiguration will be thrown.
        
        ***Required privileges:*** DVSwitch.Modify
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateDVSLacpGroupConfigRequestType'
      responses:
        '200':
          description: |2
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***DvsFault***: if operation fails on any host or if there are other update failures.
            
            ***NotSupported***: if multiple Link Aggregation Control Protocol
            is not supported on the switch.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DvsFault'

  /VmwareDistributedVirtualSwitch/{moId}/UpdateNetworkResourcePool:
    post:
      tags: [VmwareDistributedVirtualSwitch]
      summary: |2
        Update the network resource pool configuration.
      operationId: VmwareDistributedVirtualSwitch_UpdateNetworkResourcePool
      deprecated: true
      description: |2
        Deprecated as of vSphere API 6.0
        Use *DistributedVirtualSwitch.DvsReconfigureVmVnicNetworkResourcePool_Task* instead
        to update the Virtual NIC network resource pool.
        
        Update the network resource pool configuration.
        
        ***Required privileges:*** DVSwitch.ResourceManagement
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateNetworkResourcePoolRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***DvsFault***: if operation fails on any host or if there are other update failures.
            
            ***NotFound***: if the resource pool does not exist on the dvs.
            
            ***InvalidName***: if the name of the resource pool is invalid.
            
            ***ConcurrentAccess***: if a network resource pool is modified by
            two or more clients at the same time.
            
            ***NotSupported***: if network I/O control is not supported on
            the vSphere Distributed Switch.
            
            ***DvsNotAuthorized***: if login-session's extension key does not match
            the switch's configured
            *extensionKey*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VimFault'

  /VmwareDistributedVirtualSwitch/{moId}/alarmActionsEnabled:
    get:
      tags: [VmwareDistributedVirtualSwitch]
      summary: |2
        Whether alarm actions are enabled for this entity.
      operationId: VmwareDistributedVirtualSwitch_getAlarmActionsEnabled
      description: |2
        Whether alarm actions are enabled for this entity.
        
        True if enabled; false otherwise.
        
        ***Required privileges:*** System.Read
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: boolean

  /VmwareDistributedVirtualSwitch/{moId}/availableField:
    get:
      tags: [VmwareDistributedVirtualSwitch]
      summary: |2
        List of custom field definitions that are valid for the object's type.
      operationId: VmwareDistributedVirtualSwitch_getAvailableField
      description: |2
        List of custom field definitions that are valid for the object's type.
        
        The fields are sorted by *CustomFieldDef.name*.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/CustomFieldDef'

  /VmwareDistributedVirtualSwitch/{moId}/capability:
    get:
      tags: [VmwareDistributedVirtualSwitch]
      summary: |2
        Capability of the switch.
      operationId: VmwareDistributedVirtualSwitch_getCapability
      description: |2
        Capability of the switch.
        
        Capabilities are indicated at the port,
        portgroup and switch levels, and for version-specific features.
        When you retrieve this property from an ESXi host,
        *DistributedVirtualSwitch.capability*.*DVSCapability.dvsOperationSupported*
        should always be set to false.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DVSCapability'

  /VmwareDistributedVirtualSwitch/{moId}/config:
    get:
      tags: [VmwareDistributedVirtualSwitch]
      summary: |2
        Switch configuration data.
      operationId: VmwareDistributedVirtualSwitch_getConfig
      description: |2
        Switch configuration data.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DVSConfigInfo'

  /VmwareDistributedVirtualSwitch/{moId}/configIssue:
    get:
      tags: [VmwareDistributedVirtualSwitch]
      summary: |2
        Current configuration issues that have been detected for this entity.
      operationId: VmwareDistributedVirtualSwitch_getConfigIssue
      description: |2
        Current configuration issues that have been detected for this entity.
        
        Typically,
        these issues have already been logged as events. The entity stores these
        events as long as they are still current. The
        *configStatus* property provides an overall status
        based on these events.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/Event'

  /VmwareDistributedVirtualSwitch/{moId}/configStatus:
    get:
      tags: [VmwareDistributedVirtualSwitch]
      summary: |2
        The configStatus indicates whether or not the system has detected a configuration
        issue involving this entity.
      operationId: VmwareDistributedVirtualSwitch_getConfigStatus
      description: |2
        The configStatus indicates whether or not the system has detected a configuration
        issue involving this entity.
        
        For example, it might have detected a
        duplicate IP address or MAC address, or a host in a cluster
        might be out of compliance. The meanings of the configStatus values are:
        - red: A problem has been detected involving the entity.
        - yellow: A problem is about to occur or a transient condition
          has occurred (For example, reconfigure fail-over policy).
        - green: No configuration issues have been detected.
        - gray: The configuration status of the entity is not being monitored.
          
        A green status indicates only that a problem has not been detected;
        it is not a guarantee that the entity is problem-free.
        
        The *configIssue* property contains a list of the
        problems that have been detected.
        In releases after vSphere API 5.0, vSphere Servers might not
        generate property collector update notifications for this property.
        To obtain the latest value of the property, you can use
        PropertyCollector methods RetrievePropertiesEx or WaitForUpdatesEx.
        If you use the PropertyCollector.WaitForUpdatesEx method, specify
        an empty string for the version parameter. Any other version value will not
        produce any property values as no updates are generated.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedEntityStatus_enum'

  /VmwareDistributedVirtualSwitch/{moId}/customValue:
    get:
      tags: [VmwareDistributedVirtualSwitch]
      summary: |2
        Custom field values.
      operationId: VmwareDistributedVirtualSwitch_getCustomValue
      description: |2
        Custom field values.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/CustomFieldValue'

  /VmwareDistributedVirtualSwitch/{moId}/declaredAlarmState:
    get:
      tags: [VmwareDistributedVirtualSwitch]
      summary: |2
        A set of alarm states for alarms that apply to this managed entity.
      operationId: VmwareDistributedVirtualSwitch_getDeclaredAlarmState
      description: |2
        A set of alarm states for alarms that apply to this managed entity.
        
        The set includes alarms defined on this entity
        and alarms inherited from the parent entity,
        or from any ancestors in the inventory hierarchy.
        
        Alarms are inherited if they can be triggered by this entity or its descendants.
        This set does not include alarms that are defined on descendants of this entity.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/AlarmState'

  /VmwareDistributedVirtualSwitch/{moId}/disabledMethod:
    get:
      tags: [VmwareDistributedVirtualSwitch]
      summary: |2
        List of operations that are disabled, given the current runtime
        state of the entity.
      operationId: VmwareDistributedVirtualSwitch_getDisabledMethod
      description: |2
        List of operations that are disabled, given the current runtime
        state of the entity.
        
        For example, a power-on operation always fails if a
        virtual machine is already powered on. This list can be used by clients to
        enable or disable operations in a graphical user interface.
        
        Note: This list is determined by the current runtime state of an entity,
        not by its permissions.
        
        This list may include the following operations for a HostSystem:
        - *HostSystem.EnterMaintenanceMode_Task*
        - *HostSystem.ExitMaintenanceMode_Task*
        - *HostSystem.RebootHost_Task*
        - *HostSystem.ShutdownHost_Task*
        - *HostSystem.ReconnectHost_Task*
        - *HostSystem.DisconnectHost_Task*
          
        This list may include the following operations for a VirtualMachine:
        - *VirtualMachine.AnswerVM*
        - *ManagedEntity.Rename_Task*
        - *VirtualMachine.CloneVM_Task*
        - *VirtualMachine.PowerOffVM_Task*
        - *VirtualMachine.PowerOnVM_Task*
        - *VirtualMachine.SuspendVM_Task*
        - *VirtualMachine.ResetVM_Task*
        - *VirtualMachine.ReconfigVM_Task*
        - *VirtualMachine.RelocateVM_Task*
        - *VirtualMachine.MigrateVM_Task*
        - *VirtualMachine.CustomizeVM_Task*
        - *VirtualMachine.ShutdownGuest*
        - *VirtualMachine.StandbyGuest*
        - *VirtualMachine.RebootGuest*
        - *VirtualMachine.CreateSnapshot_Task*
        - *VirtualMachine.RemoveAllSnapshots_Task*
        - *VirtualMachine.RevertToCurrentSnapshot_Task*
        - *VirtualMachine.MarkAsTemplate*
        - *VirtualMachine.MarkAsVirtualMachine*
        - *VirtualMachine.ResetGuestInformation*
        - *VirtualMachine.MountToolsInstaller*
        - *VirtualMachine.UnmountToolsInstaller*
        - *ManagedEntity.Destroy_Task*
        - *VirtualMachine.UpgradeVM_Task*
        - *VirtualMachine.ExportVm*
          
        This list may include the following operations for a ResourcePool:
        - *ResourcePool.ImportVApp*
        - *ResourcePool.CreateChildVM_Task*
        - *ResourcePool.UpdateConfig*
        - *Folder.CreateVM_Task*
        - *ManagedEntity.Destroy_Task*
        - *ManagedEntity.Rename_Task*
          
        This list may include the following operations for a VirtualApp:
        - *ManagedEntity.Destroy_Task*
        - *VirtualApp.CloneVApp_Task*
        - *VirtualApp.unregisterVApp_Task*
        - *VirtualApp.ExportVApp*
        - *VirtualApp.PowerOnVApp_Task*
        - *VirtualApp.PowerOffVApp_Task*
        - *VirtualApp.UpdateVAppConfig*
          
        In releases after vSphere API 5.0, vSphere Servers might not
        generate property collector update notifications for this property.
        To obtain the latest value of the property, you can use
        PropertyCollector methods RetrievePropertiesEx or WaitForUpdatesEx.
        If you use the PropertyCollector.WaitForUpdatesEx method, specify
        an empty string for the version parameter. Any other version value will not
        produce any property values as no updates are generated.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  type: string

  /VmwareDistributedVirtualSwitch/{moId}/effectiveRole:
    get:
      tags: [VmwareDistributedVirtualSwitch]
      summary: |2
        Access rights the current session has to this entity.
      operationId: VmwareDistributedVirtualSwitch_getEffectiveRole
      description: |2
        Access rights the current session has to this entity.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  type: integer
                  format: int32

  /VmwareDistributedVirtualSwitch/{moId}/name:
    get:
      tags: [VmwareDistributedVirtualSwitch]
      summary: |2
        Name of this entity, unique relative to its parent.
      operationId: VmwareDistributedVirtualSwitch_getName
      description: |2
        Name of this entity, unique relative to its parent.
        
        Any / (slash), \\ (backslash), character used in this
        name element will be escaped. Similarly, any % (percent) character used in
        this name element will be escaped, unless it is used to start an escape
        sequence. A slash is escaped as %2F or %2f. A backslash is escaped as %5C or
        %5c, and a percent is escaped as %25.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                type: string

  /VmwareDistributedVirtualSwitch/{moId}/networkResourcePool:
    get:
      tags: [VmwareDistributedVirtualSwitch]
      summary: |2
        Network resource pool information for the switch.
      operationId: VmwareDistributedVirtualSwitch_getNetworkResourcePool
      deprecated: true
      description: |2
        Deprecated as of vSphere API 6.0
        Use *DVSConfigInfo.vmVnicNetworkResourcePool*
        to get the Virtual NIC resource pool information.
        Use *DVSConfigInfo.infrastructureTrafficResourceConfig*
        to get the host infrastructure resource information.
        
        Network resource pool information for the switch.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/DVSNetworkResourcePool'

  /VmwareDistributedVirtualSwitch/{moId}/overallStatus:
    get:
      tags: [VmwareDistributedVirtualSwitch]
      summary: |2
        General health of this managed entity.
      operationId: VmwareDistributedVirtualSwitch_getOverallStatus
      description: |2
        General health of this managed entity.
        
        The overall status of the managed entity is computed as the worst status
        among its alarms and the configuration issues detected on the entity.
        The status is reported as one of the following values:
        - red: The entity has alarms or configuration issues with a red status.
        - yellow: The entity does not have alarms or configuration issues with a
          red status, and has at least one with a yellow status.
        - green: The entity does not have alarms or configuration issues with a
          red or yellow status, and has at least one with a green status.
        - gray: All of the entity's alarms have a gray status and the
          configuration status of the entity is not being monitored.
          
        In releases after vSphere API 5.0, vSphere Servers might not
        generate property collector update notifications for this property.
        To obtain the latest value of the property, you can use
        PropertyCollector methods RetrievePropertiesEx or WaitForUpdatesEx.
        If you use the PropertyCollector.WaitForUpdatesEx method, specify
        an empty string for the version parameter. Any other version value will not
        produce any property values as no updates are generated.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedEntityStatus_enum'

  /VmwareDistributedVirtualSwitch/{moId}/parent:
    get:
      tags: [VmwareDistributedVirtualSwitch]
      summary: |2
        Parent of this entity.
      operationId: VmwareDistributedVirtualSwitch_getParent
      description: |2
        Parent of this entity.
        
        This value is null for the root object and for
        *VirtualMachine* objects that are part of
        a *VirtualApp*.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            Refers instance of *ManagedEntity*.
          content:
            application/json:
              schema:
                nullable: true
                $ref: '#/components/schemas/ManagedObjectReference'

  /VmwareDistributedVirtualSwitch/{moId}/permission:
    get:
      tags: [VmwareDistributedVirtualSwitch]
      summary: |2
        List of permissions defined for this entity.
      operationId: VmwareDistributedVirtualSwitch_getPermission
      description: |2
        List of permissions defined for this entity.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/Permission'

  /VmwareDistributedVirtualSwitch/{moId}/portgroup:
    get:
      tags: [VmwareDistributedVirtualSwitch]
      summary: |2
        Portgroups that are defined on the switch.
      operationId: VmwareDistributedVirtualSwitch_getPortgroup
      description: |2
        Portgroups that are defined on the switch.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            Refers instances of *DistributedVirtualPortgroup*.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/ManagedObjectReference'

  /VmwareDistributedVirtualSwitch/{moId}/recentTask:
    get:
      tags: [VmwareDistributedVirtualSwitch]
      summary: |2
        The set of recent tasks operating on this managed entity.
      operationId: VmwareDistributedVirtualSwitch_getRecentTask
      description: |2
        The set of recent tasks operating on this managed entity.
        
        This is a subset
        of *TaskManager.recentTask* belong to this entity. A task in this
        list could be in one of the four states: pending, running, success or error.
        
        This property can be used to deduce intermediate power states for
        a virtual machine entity. For example, if the current powerState is "poweredOn"
        and there is a running task performing the "suspend" operation, then the virtual
        machine's intermediate state might be described as "suspending."
        
        Most tasks (such as power operations) obtain exclusive access to the virtual
        machine, so it is unusual for this list to contain more than one running task.
        One exception, however, is the task of cloning a virtual machine.
        In releases after vSphere API 5.0, vSphere Servers might not
        generate property collector update notifications for this property.
        To obtain the latest value of the property, you can use
        PropertyCollector methods RetrievePropertiesEx or WaitForUpdatesEx.
        If you use the PropertyCollector.WaitForUpdatesEx method, specify
        an empty string for the version parameter. Any other version value will not
        produce any property values as no updates are generated.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            Refers instances of *Task*.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/ManagedObjectReference'

  /VmwareDistributedVirtualSwitch/{moId}/runtime:
    get:
      tags: [VmwareDistributedVirtualSwitch]
      summary: |2
        Runtime information of the distributed virtual switch.
      operationId: VmwareDistributedVirtualSwitch_getRuntime
      description: |2
        Runtime information of the distributed virtual switch.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                $ref: '#/components/schemas/DVSRuntimeInfo'

  /VmwareDistributedVirtualSwitch/{moId}/summary:
    get:
      tags: [VmwareDistributedVirtualSwitch]
      summary: |2
        Summary of the switch.
      operationId: VmwareDistributedVirtualSwitch_getSummary
      description: |2
        Summary of the switch.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DVSSummary'

  /VmwareDistributedVirtualSwitch/{moId}/tag:
    get:
      tags: [VmwareDistributedVirtualSwitch]
      summary: |2
        The set of tags associated with this managed entity.
      operationId: VmwareDistributedVirtualSwitch_getTag
      description: |2
        The set of tags associated with this managed entity.
        
        Experimental. Subject to change.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/Tag'

  /VmwareDistributedVirtualSwitch/{moId}/triggeredAlarmState:
    get:
      tags: [VmwareDistributedVirtualSwitch]
      summary: |2
        A set of alarm states for alarms triggered by this entity
        or by its descendants.
      operationId: VmwareDistributedVirtualSwitch_getTriggeredAlarmState
      description: |2
        A set of alarm states for alarms triggered by this entity
        or by its descendants.
        
        Triggered alarms are propagated up the inventory hierarchy
        so that a user can readily tell when a descendant has triggered an alarm.
        In releases after vSphere API 5.0, vSphere Servers might not
        generate property collector update notifications for this property.
        To obtain the latest value of the property, you can use
        PropertyCollector methods RetrievePropertiesEx or WaitForUpdatesEx.
        If you use the PropertyCollector.WaitForUpdatesEx method, specify
        an empty string for the version parameter. Any other version value will not
        produce any property values as no updates are generated.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/AlarmState'

  /VmwareDistributedVirtualSwitch/{moId}/uuid:
    get:
      tags: [VmwareDistributedVirtualSwitch]
      summary: |2
        Generated UUID of the switch.
      operationId: VmwareDistributedVirtualSwitch_getUuid
      description: |2
        Generated UUID of the switch.
        
        Unique across vCenter Server
        inventory and instances.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                type: string

  /VmwareDistributedVirtualSwitch/{moId}/value:
    get:
      tags: [VmwareDistributedVirtualSwitch]
      summary: |2
        List of custom field values.
      operationId: VmwareDistributedVirtualSwitch_getValue
      description: |2
        List of custom field values.
        
        Each value uses a key to associate
        an instance of a *CustomFieldStringValue* with
        a custom field definition.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/CustomFieldValue'

  /VsanUpgradeSystem/{moId}/PerformVsanUpgrade_Task:
    post:
      tags: [VsanUpgradeSystem]
      summary: |2
        Start VSAN on-disk format upgrade process on a particular cluster.
      operationId: VsanUpgradeSystem_PerformVsanUpgrade_Task
      description: |2
        Start VSAN on-disk format upgrade process on a particular cluster.
        
        In order to perform this on-disk format upgrade, the upgrade process
        will perform a rolling evacuation/remove/re-add operation to accomplish
        the upgrade. In other words, one disk group at a time, it will evacuate
        the data from the disk group, then remove the old format from the now
        empty disk group, then reformat the disk group with the new format.
        Once all disk groups have been upgraded, and if the performObjectUpgrade
        parameter is set, the VSAN object version is also upgraded. Before
        the object version is upgraded, it is possible to downgrade the cluster
        by passing the downgradeFormat parameter. Once objects are of the new
        object version however, downgrade (and thus rollback) are no longer
        possible. The new object version is required to allow objects to benefit
        from new VSAN features.
        This is a long running (hours to days) task. In addition to normal
        task progress reporting, use the queryUpgradeStatus() API which allows
        to retrieve in-depth status updates from the upgrade process. In there
        will be a detailed log of every operation the upgrade process has taken
        or issues it encountered. Some are simple log messages, others refer
        to operations like evacuating a disk group. For such log entries, the
        task object of the evacuation task is provided to allow "sub-task"
        tracking.
        Before starting, the upgrade process will perform a pre-flight check,
        and abort if any of the pre-conditions are not met. See
        
        See also *VsanUpgradeSystem.PerformVsanUpgradePreflightCheck*for details on the pre-conditions being checked for.
        The upgrade process performs additional "pre-flight checks" before
        proceeding to upgrade the next host. The upgrade process will be halted
        if any of those pre-flight checks fail.
        If the upgrade process has been halted due to a problem, or even due to
        a crash or other failure, it can be re-started at any point in time.
        The upgrade will resume where it left off and only do the parts that
        are still outstanding. If the upgrade process stopped after removing
        VSAN from a disk group, but before re-adding those disks to VSAN, the
        upgrade process can recover from that. The pre-flight check results
        indicate such a condition. The upgrade process will however only re-add
        those disks if the restoreBackup parameter is passed in as true.
        Privilege "Host.Config.Storage" on all hosts under specified cluster
        is required..
        
        ***Required privileges:*** System.Read
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PerformVsanUpgradeRequestType'
      responses:
        '200':
          description: |2
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            Failure
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VsanFault'

  /VsanUpgradeSystem/{moId}/PerformVsanUpgradePreflightCheck:
    post:
      tags: [VsanUpgradeSystem]
      summary: |2
        Perform an upgrade pre-flight check on a cluster.
      operationId: VsanUpgradeSystem_PerformVsanUpgradePreflightCheck
      description: |2
        Perform an upgrade pre-flight check on a cluster.
        
        ***Required privileges:*** System.Read
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PerformVsanUpgradePreflightCheckRequestType'
      responses:
        '200':
          description: |2
            Pre-flight check result.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VsanUpgradeSystemPreflightCheckResult'
        '500':
          description: |2
            Failure
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VsanFault'

  /VsanUpgradeSystem/{moId}/QueryVsanUpgradeStatus:
    post:
      tags: [VsanUpgradeSystem]
      summary: |2
        Retrieve the latest status of a running, or the previously completed,
        upgrade process.
      operationId: VsanUpgradeSystem_QueryVsanUpgradeStatus
      description: |2
        Retrieve the latest status of a running, or the previously completed,
        upgrade process.
        
        Information about previous upgrade runs are not
        always, e.g. when VC gets restarted.
        
        ***Required privileges:*** System.Read
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QueryVsanUpgradeStatusRequestType'
      responses:
        '200':
          description: |2
            Status
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VsanUpgradeSystemUpgradeStatus'
        '500':
          description: |2
            Failure
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VsanFault'

  /eam/Agency/{moId}/AddIssue:
    post:
      tags: [Agency]
      summary: |2
        Adds an issue to this agency.
      operationId: Agency_AddIssue
      deprecated: true
      description: |2
        Deprecated.
        
        Adds an issue to this agency.
        
        *Issue.key* and *Issue.time* is
        overwritten so that *Issue.key* becomes unique on this server and
        *Issue.time* is the current time.
        
        Requires modify privileges.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AddIssueRequestType'
      responses:
        '200':
          description: |2
            The same issue where the key and time is set.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Issue'
        '500':
          description: |2
            ***InvalidArgument***: Thrown if issue typeId is unknown.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InvalidArgument'

  /eam/Agency/{moId}/DestroyAgency:
    post:
      tags: [Agency]
      summary: |2
        Destroys this Agency.
      operationId: Agency_DestroyAgency
      description: |2
        Destroys this Agency.
        
        Any agents that the <code>Agency</code> has are
        removed. Until the agents have been removed, it is possible to view the
        runtime state of this <code>Agency</code> but it is not possible to modify
        its configuration or change its goal state. After all agents have been
        removed, any subsequent call on this <code>Agency</code> will throw a
        <code>ManagedObjectNotFound</code> exception.
        
        Requires modify privileges.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '204':
          description: |2
            No Content

  /eam/Agency/{moId}/Agency_Disable:
    post:
      tags: [Agency]
      summary: |2
        Sets the goal state of this <code>Agency</code> to <code>disabled</code>.
      operationId: Agency_Agency_Disable
      deprecated: true
      description: |2
        Deprecated its definition is not consistent across agent VMs and VIBs.
        It is impossible to be defined since there is no corresponding
        state of ESXi vibs.
        
        Sets the goal state of this <code>Agency</code> to <code>disabled</code>.
        
        This powers off any powered on agent virtual machines, but continues
        provisioning agents to hosts that are added to the compute resources in
        the agency's scope, and removes agents from hosts that are taken out of
        the scope.
        
        Requires modify privileges.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '204':
          description: |2
            No Content

  /eam/Agency/{moId}/Agency_Enable:
    post:
      tags: [Agency]
      summary: |2
        Sets the goal state of this <code>Agency</code> to <code>enabled</code>.
      operationId: Agency_Agency_Enable
      deprecated: true
      description: |2
        Deprecated since agencies are always created as enabled. In addition,
        enabling already uninstalled agency is not supported.
        
        Sets the goal state of this <code>Agency</code> to <code>enabled</code>.
        
        This causes the agency to continuously deploy and monitor agents.
        
        Requires modify privileges.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '204':
          description: |2
            No Content

  /eam/Agency/{moId}/QueryAgent:
    post:
      tags: [Agency]
      summary: |2
        An array of agents deployed by this agent manager.
      operationId: Agency_QueryAgent
      deprecated: true
      description: |2
        Deprecated use *Agency.agent* instead.
        
        An array of agents deployed by this agent manager.
        
        Requires view privileges.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            Refers instances of *Agent*.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/ManagedObjectReference'

  /eam/Agency/{moId}/QueryConfig:
    post:
      tags: [Agency]
      summary: |2
        The configuration of this <code>Agency</code>.
      operationId: Agency_QueryConfig
      deprecated: true
      description: |2
        Deprecated use *Agency.config* instead.
        
        The configuration of this <code>Agency</code>.
        
        Specifies how this
        <code>Agency</code> deploys its agents and VIBs.
        
        Requires view privileges.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            The configuration of this <code>Agency</code>.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AgencyConfigInfo'

  /eam/Agency/{moId}/QueryIssue:
    post:
      tags: [Agency]
      summary: |2
        Current issues that have been detected for this entity.
      operationId: Agency_QueryIssue
      description: |2
        Current issues that have been detected for this entity.
        
        Each issue can be remediated
        by invoking *EamObject.Resolve* or *EamObject.ResolveAll*.
        
        Requires view privileges.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QueryIssueRequestType'
      responses:
        '200':
          description: |2
            A possibly empty array of issues that match the input <code>issueKey</code> array. Note
            that the returned array can be smaller than <code>issueKey</code> if one or more
            issue keys refers to issues that this entity does not have.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/Issue'

  /eam/Agency/{moId}/AgencyQueryRuntime:
    post:
      tags: [Agency]
      summary: |2
        Gets the runtime information for this agency.
      operationId: Agency_AgencyQueryRuntime
      deprecated: true
      description: |2
        Deprecated use *Agency.runtime* instead.
        
        Gets the runtime information for this agency.
        
        Requires view privileges.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            The runtime information.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EamObjectRuntimeInfo'

  /eam/Agency/{moId}/QuerySolutionId:
    post:
      tags: [Agency]
      summary: |2
        The ID of the solution that owns this <code>Agency</code>.
      operationId: Agency_QuerySolutionId
      deprecated: true
      description: |2
        Deprecated use *Agency.solutionId* instead.
        
        The ID of the solution that owns this <code>Agency</code>.
        
        If the agency
        is owned by a VC extension, this is the extension's key. Otherwise, this
        is same as *Agency.owner*. The users in the latter case are
        either regular or solution users.
        
        Requires view privileges.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            The solution ID.
          content:
            application/json:
              schema:
                type: string

  /eam/Agency/{moId}/RegisterAgentVm:
    post:
      tags: [Agency]
      summary: |2
        Adds an agent VM to this agency.
      operationId: Agency_RegisterAgentVm
      deprecated: true
      description: |2
        Deprecated use automatically provisioned VMs and register hooks to have
        control post provisioning and power on.
        
        Adds an agent VM to this agency.
        
        Used if
        *AgencyConfigInfo.manuallyProvisioned* is set to true. The method
        does nothing if the agent VM is already registered with this agency.
        
        Requires modify privileges.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RegisterAgentVmRequestType'
      responses:
        '200':
          description: |2
            Refers instance of *Agent*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***ManagedObjectNotFound***: Thrown if agentVm does not exist in vCenter.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectNotFound'

  /eam/Agency/{moId}/Resolve:
    post:
      tags: [Agency]
      summary: |2
        Resolves the issues specified in the input.
      operationId: Agency_Resolve
      description: |2
        Resolves the issues specified in the input.
        
        If an issue is remediable, ESX
        Agent Manager
        tries to resolve the misconfiguration that caused the issue. If it is not
        remediable, the offending issue is removed and ESX Agent Manager assumes that the issue has been
        resolved.
        
        Requires modify privileges.
        
        See also *Issue*.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ResolveRequestType'
      responses:
        '200':
          description: |2
            A possibly empty array of issue keys for the issues that were not found on the
            entity. This can happen if <code>resolve</code> is called with issue keys that were
            resolved just prior to calling <code>resolve</code> or if an issue is currenly not resolvable.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  type: integer
                  format: int32

  /eam/Agency/{moId}/ResolveAll:
    post:
      tags: [Agency]
      summary: |2
        Resolve all outstanding issues.
      operationId: Agency_ResolveAll
      description: |2
        Resolve all outstanding issues.
        
        The method calls *EamObject.Resolve*
        with all issues the <code>EsxAgentManager</code>, <code>Agency</code>, or
        <code>Agent</code> have encountered. It is the equivalent of calling the following methods:
        - <code>agent.resolve(getIssueKeys(agent.getRuntime().getIssue()));</code>
          for <code>Agent</code> objects
        - <code>agency.resolve(getIssueKeys(agency.getRuntime().getIssue()));</code>
          for <code>Agency</code> objects
        - <code>esxAgentManager.resolve(getIssueKeys(esxAgentManager.getIssue()));</code>
          for the <code>EsxAgentManager</code> object.
          
        Requires modify privileges.
        
        See also *Issue*.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '204':
          description: |2
            No Content

  /eam/Agency/{moId}/Uninstall:
    post:
      tags: [Agency]
      summary: |2
        Sets the goal state of this <code>Agency</code> to
        <code>uninstalled</code>.
      operationId: Agency_Uninstall
      description: |2
        Sets the goal state of this <code>Agency</code> to
        <code>uninstalled</code>.
        
        This initiates the uninstallation of this
        <code>Agency</code>, which causes all agents to be removed.
        
        The best practice when destroying an agency is to call
        <code>uninstall</code>, wait for the runtime status to turn green, and
        then invoke *Agency.DestroyAgency*. When waiting for this
        <code>Agency</code> to be uninstalled the solution can then attend to and
        resolve any raised issues.
        
        Requires modify privileges.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '204':
          description: |2
            No Content

  /eam/Agency/{moId}/UnregisterAgentVm:
    post:
      tags: [Agency]
      summary: |2
        Removes an agent VM to this agency.
      operationId: Agency_UnregisterAgentVm
      deprecated: true
      description: |2
        Deprecated use automatically provisioned VMs and register hooks to have
        control post provisioning and power on.
        
        Removes an agent VM to this agency.
        
        Used if
        *AgencyConfigInfo.manuallyProvisioned* is set to true. The method
        does nothing if the agent VM is not registered with this agency.
        
        Requires modify privileges.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UnregisterAgentVmRequestType'
      responses:
        '204':
          description: |2
            No Content

  /eam/Agency/{moId}/Update:
    post:
      tags: [Agency]
      summary: |2
        Updates the agency configuration used by this <code>Agency</code> to
        deploy agents and VIBs.
      operationId: Agency_Update
      description: |2
        Updates the agency configuration used by this <code>Agency</code> to
        deploy agents and VIBs.
        
        vSphere ESX Agent Manager generates a diff between
        the old configuration and the new one and updates the <code>Agency</code>
        accordingly.
        
        Requires modify privileges.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***InvalidAgentConfiguration***: Thrown if one or more agent configurations are invalid.
            
            ***InvalidAgencyScope***: Thrown if one or more compute resources in the scope cannot be
            found in vCenter or there is no configured resource pool or
            folder where the VMs to be deployed.
            
            ***EamInvalidUrl***: Thrown if either the agent virtual machine URL or VIB URL
            cannot be parsed or if the resource refered to cannot be
            downloaded.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EamFault'

  /eam/Agency/{moId}/agent:
    get:
      tags: [Agency]
      summary: |2
        An array of agents deployed by this agent manager.
      operationId: Agency_getAgent
      description: |2
        An array of agents deployed by this agent manager.
        
        Requires view privileges.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            Refers instances of *Agent*.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/ManagedObjectReference'

  /eam/Agency/{moId}/config:
    get:
      tags: [Agency]
      summary: |2
        The configuration of this <code>Agency</code>.
      operationId: Agency_getConfig
      description: |2
        The configuration of this <code>Agency</code>.
        
        Specifies how this
        <code>Agency</code> deploys its agents and VIBs.
        
        Requires view privileges.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            The configuration of this <code>Agency</code>.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AgencyConfigInfo'

  /eam/Agency/{moId}/owner:
    get:
      tags: [Agency]
      summary: |2
        The principal name of the user that owns this <code>Agency</code>.
      operationId: Agency_getOwner
      description: |2
        The principal name of the user that owns this <code>Agency</code>.
        
        If the
        agency is owned by a VC extension, this method returns null.
        
        Requires view privileges.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            the owner's principal name
          content:
            application/json:
              schema:
                nullable: true
                type: string

  /eam/Agency/{moId}/runtime:
    get:
      tags: [Agency]
      summary: |2
        Gets the runtime information for this agency.
      operationId: Agency_getRuntime
      description: |2
        Gets the runtime information for this agency.
        
        Requires view privileges.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            The runtime information.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EamObjectRuntimeInfo'

  /eam/Agency/{moId}/solutionId:
    get:
      tags: [Agency]
      summary: |2
        The ID of the solution that owns this <code>Agency</code>.
      operationId: Agency_getSolutionId
      description: |2
        The ID of the solution that owns this <code>Agency</code>.
        
        If the agency
        is owned by a VC extension, this is the extension's key. Otherwise, this
        is same as *Agency.owner*. The users in the latter case are
        either regular or solution users.
        
        Requires view privileges.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            The solution ID.
          content:
            application/json:
              schema:
                type: string

  /eam/Agent/{moId}/MarkAsAvailable:
    post:
      tags: [Agent]
      summary: |2
        Mark this agent's VM as available.
      operationId: Agent_MarkAsAvailable
      description: |2
        Mark this agent's VM as available.
        
        Used when the agency this agent belongs to
        has
        *AgencyConfigInfo.manuallyMarkAgentVmAvailableAfterProvisioning* or
        *AgencyConfigInfo.manuallyMarkAgentVmAvailableAfterPowerOn* set to
        <code>true</code> and *AgentRuntimeInfo.vmHook* is present.
        See *AgentRuntimeInfo.vmHook*
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '204':
          description: |2
            No Content

  /eam/Agent/{moId}/AgentQueryConfig:
    post:
      tags: [Agent]
      summary: |2
        The configuration of this <code>Agent</code>.
      operationId: Agent_AgentQueryConfig
      deprecated: true
      description: |2
        Deprecated use *Agent.config* instead.
        
        The configuration of this <code>Agent</code>.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AgentConfigInfo'

  /eam/Agent/{moId}/QueryIssue:
    post:
      tags: [Agent]
      summary: |2
        Current issues that have been detected for this entity.
      operationId: Agent_QueryIssue
      description: |2
        Current issues that have been detected for this entity.
        
        Each issue can be remediated
        by invoking *EamObject.Resolve* or *EamObject.ResolveAll*.
        
        Requires view privileges.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QueryIssueRequestType'
      responses:
        '200':
          description: |2
            A possibly empty array of issues that match the input <code>issueKey</code> array. Note
            that the returned array can be smaller than <code>issueKey</code> if one or more
            issue keys refers to issues that this entity does not have.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/Issue'

  /eam/Agent/{moId}/AgentQueryRuntime:
    post:
      tags: [Agent]
      summary: |2
        Runtime information for the agent.
      operationId: Agent_AgentQueryRuntime
      deprecated: true
      description: |2
        Deprecated use *Agent.runtime* instead.
        
        Runtime information for the agent.
        
        This includes important information
        about the current deployment of the agent's VIB, virtual machine, and
        host.
        
        Requires view privileges.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            The <code>Agent</code>'s runtime information.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AgentRuntimeInfo'

  /eam/Agent/{moId}/Resolve:
    post:
      tags: [Agent]
      summary: |2
        Resolves the issues specified in the input.
      operationId: Agent_Resolve
      description: |2
        Resolves the issues specified in the input.
        
        If an issue is remediable, ESX
        Agent Manager
        tries to resolve the misconfiguration that caused the issue. If it is not
        remediable, the offending issue is removed and ESX Agent Manager assumes that the issue has been
        resolved.
        
        Requires modify privileges.
        
        See also *Issue*.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ResolveRequestType'
      responses:
        '200':
          description: |2
            A possibly empty array of issue keys for the issues that were not found on the
            entity. This can happen if <code>resolve</code> is called with issue keys that were
            resolved just prior to calling <code>resolve</code> or if an issue is currenly not resolvable.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  type: integer
                  format: int32

  /eam/Agent/{moId}/ResolveAll:
    post:
      tags: [Agent]
      summary: |2
        Resolve all outstanding issues.
      operationId: Agent_ResolveAll
      description: |2
        Resolve all outstanding issues.
        
        The method calls *EamObject.Resolve*
        with all issues the <code>EsxAgentManager</code>, <code>Agency</code>, or
        <code>Agent</code> have encountered. It is the equivalent of calling the following methods:
        - <code>agent.resolve(getIssueKeys(agent.getRuntime().getIssue()));</code>
          for <code>Agent</code> objects
        - <code>agency.resolve(getIssueKeys(agency.getRuntime().getIssue()));</code>
          for <code>Agency</code> objects
        - <code>esxAgentManager.resolve(getIssueKeys(esxAgentManager.getIssue()));</code>
          for the <code>EsxAgentManager</code> object.
          
        Requires modify privileges.
        
        See also *Issue*.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '204':
          description: |2
            No Content

  /eam/Agent/{moId}/config:
    get:
      tags: [Agent]
      summary: |2
        The configuration of this <code>Agent</code>.
      operationId: Agent_getConfig
      description: |2
        The configuration of this <code>Agent</code>.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AgentConfigInfo'

  /eam/Agent/{moId}/runtime:
    get:
      tags: [Agent]
      summary: |2
        Runtime information for this agent.
      operationId: Agent_getRuntime
      description: |2
        Runtime information for this agent.
        
        This includes important information
        about the current deployment of the agent's VIB, virtual machine, and
        host.
        
        Requires view privileges.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            This <code>Agent</code>'s runtime information.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AgentRuntimeInfo'

  /eam/EamObject/{moId}/QueryIssue:
    post:
      tags: [EamObject]
      summary: |2
        Current issues that have been detected for this entity.
      operationId: EamObject_QueryIssue
      description: |2
        Current issues that have been detected for this entity.
        
        Each issue can be remediated
        by invoking *EamObject.Resolve* or *EamObject.ResolveAll*.
        
        Requires view privileges.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QueryIssueRequestType'
      responses:
        '200':
          description: |2
            A possibly empty array of issues that match the input <code>issueKey</code> array. Note
            that the returned array can be smaller than <code>issueKey</code> if one or more
            issue keys refers to issues that this entity does not have.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/Issue'

  /eam/EamObject/{moId}/Resolve:
    post:
      tags: [EamObject]
      summary: |2
        Resolves the issues specified in the input.
      operationId: EamObject_Resolve
      description: |2
        Resolves the issues specified in the input.
        
        If an issue is remediable, ESX
        Agent Manager
        tries to resolve the misconfiguration that caused the issue. If it is not
        remediable, the offending issue is removed and ESX Agent Manager assumes that the issue has been
        resolved.
        
        Requires modify privileges.
        
        See also *Issue*.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ResolveRequestType'
      responses:
        '200':
          description: |2
            A possibly empty array of issue keys for the issues that were not found on the
            entity. This can happen if <code>resolve</code> is called with issue keys that were
            resolved just prior to calling <code>resolve</code> or if an issue is currenly not resolvable.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  type: integer
                  format: int32

  /eam/EamObject/{moId}/ResolveAll:
    post:
      tags: [EamObject]
      summary: |2
        Resolve all outstanding issues.
      operationId: EamObject_ResolveAll
      description: |2
        Resolve all outstanding issues.
        
        The method calls *EamObject.Resolve*
        with all issues the <code>EsxAgentManager</code>, <code>Agency</code>, or
        <code>Agent</code> have encountered. It is the equivalent of calling the following methods:
        - <code>agent.resolve(getIssueKeys(agent.getRuntime().getIssue()));</code>
          for <code>Agent</code> objects
        - <code>agency.resolve(getIssueKeys(agency.getRuntime().getIssue()));</code>
          for <code>Agency</code> objects
        - <code>esxAgentManager.resolve(getIssueKeys(esxAgentManager.getIssue()));</code>
          for the <code>EsxAgentManager</code> object.
          
        Requires modify privileges.
        
        See also *Issue*.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '204':
          description: |2
            No Content

  /eam/EsxAgentManager/{moId}/CreateAgency:
    post:
      tags: [EsxAgentManager]
      summary: |2
        Creates an Agency.
      operationId: EsxAgentManager_CreateAgency
      description: |2
        Creates an Agency.
        
        The initial goal state is given to the method by the
        second parameter. Throws <code>InvalidArgument</code> if the
        <code>agencyName</code> is not set in the <code>agencyConfigInfo</code>.
        
        Requires modify privileges.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateAgencyRequestType'
      responses:
        '200':
          description: |2
            The created agency.
            
            Refers instance of *Agency*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***InvalidAgentConfiguration***: Thrown if the agent configuration is empty or if one or more
            agent configurations are invalid.
            
            ***InvalidAgencyScope***: Thrown if one or more compute resources in the scope cannot be
            found in vCenter or there is no configured resource pool or
            folder where the VMs to be deployed.
            
            ***EamInvalidUrl***: Thrown if either the agent virtual machine URL or VIB URL
            cannot be parsed or if the resource refered to cannot be
            downloaded.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EamFault'

  /eam/EsxAgentManager/{moId}/GetMaintenanceModePolicy:
    post:
      tags: [EsxAgentManager]
      summary: |2
        Obtains maintenance policy for for clusters not managed by vSphere
        Lifecycle Manasger.
      operationId: EsxAgentManager_GetMaintenanceModePolicy
      description: |2
        Obtains maintenance policy for for clusters not managed by vSphere
        Lifecycle Manasger.
        
        See also *EsxAgentManagerMaintenanceModePolicy_enum*.
        
        ***Since:*** vEAM API 7.4
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            Currently configured policy.
          content:
            application/json:
              schema:
                type: string

  /eam/EsxAgentManager/{moId}/QueryAgency:
    post:
      tags: [EsxAgentManager]
      summary: |2
        An array of all *Agency* objects.
      operationId: EsxAgentManager_QueryAgency
      deprecated: true
      description: |2
        Deprecated use *EsxAgentManager.agency* instead.
        
        An array of all *Agency* objects.
        
        If called by a vCenter user with
        the vCenter <code>EAM.View</code> or <code>EAM.Modify</code> privilege,
        this returns all agencies registered in vSphere ESX Agent Manager. If
        called by a solution, this property only returns the agencies created by
        the solution (and only those which have not been destroyed).
        
        Requires view privileges.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            The possibly empty set of agencies registered in the vSphere ESX
            Agent Manager server.
            
            Refers instances of *Agency*.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/ManagedObjectReference'

  /eam/EsxAgentManager/{moId}/QueryIssue:
    post:
      tags: [EsxAgentManager]
      summary: |2
        Current issues that have been detected for this entity.
      operationId: EsxAgentManager_QueryIssue
      description: |2
        Current issues that have been detected for this entity.
        
        Each issue can be remediated
        by invoking *EamObject.Resolve* or *EamObject.ResolveAll*.
        
        Requires view privileges.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QueryIssueRequestType'
      responses:
        '200':
          description: |2
            A possibly empty array of issues that match the input <code>issueKey</code> array. Note
            that the returned array can be smaller than <code>issueKey</code> if one or more
            issue keys refers to issues that this entity does not have.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/Issue'

  /eam/EsxAgentManager/{moId}/Resolve:
    post:
      tags: [EsxAgentManager]
      summary: |2
        Resolves the issues specified in the input.
      operationId: EsxAgentManager_Resolve
      description: |2
        Resolves the issues specified in the input.
        
        If an issue is remediable, ESX
        Agent Manager
        tries to resolve the misconfiguration that caused the issue. If it is not
        remediable, the offending issue is removed and ESX Agent Manager assumes that the issue has been
        resolved.
        
        Requires modify privileges.
        
        See also *Issue*.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ResolveRequestType'
      responses:
        '200':
          description: |2
            A possibly empty array of issue keys for the issues that were not found on the
            entity. This can happen if <code>resolve</code> is called with issue keys that were
            resolved just prior to calling <code>resolve</code> or if an issue is currenly not resolvable.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  type: integer
                  format: int32

  /eam/EsxAgentManager/{moId}/ResolveAll:
    post:
      tags: [EsxAgentManager]
      summary: |2
        Resolve all outstanding issues.
      operationId: EsxAgentManager_ResolveAll
      description: |2
        Resolve all outstanding issues.
        
        The method calls *EamObject.Resolve*
        with all issues the <code>EsxAgentManager</code>, <code>Agency</code>, or
        <code>Agent</code> have encountered. It is the equivalent of calling the following methods:
        - <code>agent.resolve(getIssueKeys(agent.getRuntime().getIssue()));</code>
          for <code>Agent</code> objects
        - <code>agency.resolve(getIssueKeys(agency.getRuntime().getIssue()));</code>
          for <code>Agency</code> objects
        - <code>esxAgentManager.resolve(getIssueKeys(esxAgentManager.getIssue()));</code>
          for the <code>EsxAgentManager</code> object.
          
        Requires modify privileges.
        
        See also *Issue*.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '204':
          description: |2
            No Content

  /eam/EsxAgentManager/{moId}/ScanForUnknownAgentVm:
    post:
      tags: [EsxAgentManager]
      summary: |2
        Scans the vCenter inventory for any unknown agent virtual machine.
      operationId: EsxAgentManager_ScanForUnknownAgentVm
      deprecated: true
      description: |2
        Deprecated presence of unknown VMs is no more acceptable.
        
        Scans the vCenter inventory for any unknown agent virtual machine.
        
        An
        issue is generated for each unknown agent virtual machine found during
        this scan.
        
        Requires view privileges.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '204':
          description: |2
            No Content

  /eam/EsxAgentManager/{moId}/SetMaintenanceModePolicy:
    post:
      tags: [EsxAgentManager]
      summary: |2
        Configures maintenance mode policy for clusters not managed by vSphere
        Lifecycle Manasger.
      operationId: EsxAgentManager_SetMaintenanceModePolicy
      description: |2
        Configures maintenance mode policy for clusters not managed by vSphere
        Lifecycle Manasger.
        
        See also *EsxAgentManagerMaintenanceModePolicy_enum*.
        
        ***Since:*** vEAM API 7.4
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SetMaintenanceModePolicyRequestType'
      responses:
        '204':
          description: |2
            No Content

  /eam/EsxAgentManager/{moId}/agency:
    get:
      tags: [EsxAgentManager]
      summary: |2
        An array of all *Agency* objects.
      operationId: EsxAgentManager_getAgency
      description: |2
        An array of all *Agency* objects.
        
        If called by a vCenter user with
        the vCenter <code>EAM.View</code> or <code>EAM.Modify</code> privilege,
        this returns all agencies registered in vSphere ESX Agent Manager. If
        called by a solution, this property only returns the agencies created by
        the solution (and only those which have not been destroyed).
        
        Requires view privileges.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            The possibly empty set of agencies registered in the vSphere ESX
            Agent Manager server.
            
            Refers instances of *Agency*.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/ManagedObjectReference'

  /eam/EsxAgentManager/{moId}/issue:
    get:
      tags: [EsxAgentManager]
      summary: |2
        Current issues that have been detected for this entity.
      operationId: EsxAgentManager_getIssue
      deprecated: true
      description: |2
        Deprecated this method is deprecated since the EAM object does not
        handles issue anymore. At the moment the implementation
        returns an empty array of issues.
        
        Current issues that have been detected for this entity.
        
        Each issue can be
        remediated by invoking *EamObject.Resolve* or
        *EamObject.ResolveAll*.
        
        Requires view privileges.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/Issue'

  /pbm/PbmComplianceManager/{moId}/PbmCheckCompliance:
    post:
      tags: [PbmComplianceManager]
      summary: |2
        Checks compliance of the profiles associated with one or more
        virtual machines and/or virtual disks.
      operationId: PbmComplianceManager_PbmCheckCompliance
      description: |2
        Checks compliance of the profiles associated with one or more
        virtual machines and/or virtual disks.
        
        The Server stores the compliance results for all of the storage entities
        associated with the virtual machines and disks. You can call the
        *PbmComplianceManager.PbmFetchComplianceResult* method
        to retrieve the stored results. However, for storage entities placed on vSAN,
        both fetchComplianceResult and checkCompliance methods have the same
        behaviour of recomputing the compliance.
        
        ***Required privileges:*** StorageProfile.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PbmCheckComplianceRequestType'
      responses:
        '200':
          description: |2
            Result of the compliance check. The returned array contains one
            result object for each entity specified in the method call.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/PbmComplianceResult'
        '500':
          description: |2
            ***InvalidArgument***: If one of the following situations occurs:
            - You do not specify an entity.
            - You specify only datastores.
            - All of the specified storage entities are invalid.
            
            ***PbmFault***: If there is an internal server error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PbmFault'

  /pbm/PbmComplianceManager/{moId}/PbmCheckRollupCompliance:
    post:
      tags: [PbmComplianceManager]
      summary: |2
        Checks rollup compliance of virtual machines and returns the results to your
        client.
      operationId: PbmComplianceManager_PbmCheckRollupCompliance
      description: |2
        Checks rollup compliance of virtual machines and returns the results to your
        client.
        
        For a specified virtual machine, a rollup compliance check verifies
        the storage requirements of the virtual machine and its virtual disks as
        compared with the storage provider capabilities.
        
        The Server stores the compliance results for all of the storage entities
        associated with the virtual machines. You can call the
        *PbmComplianceManager.PbmFetchRollupComplianceResult* method
        to retrieve the stored results. However, for storage entities placed on vSAN,
        both fetchRollupComplianceResult and checkRollupCompliance methods have the
        same behaviour of recomputing the compliance.
        
        ***Required privileges:*** StorageProfile.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PbmCheckRollupComplianceRequestType'
      responses:
        '200':
          description: |2
            Result of the rollup compliance check. The returned array
            contains one rollup compliance result for each virtual machine.
            A rollup compliance result object includes the overall compliance
            status that represents the collective compliance status for the
            virtual machine and its virtual disks.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/PbmRollupComplianceResult'
        '500':
          description: |2
            ***InvalidArgument***: If one of the following situations occurs:
            - You do not specify any entities.
            - You specify only datastores or virtual disks.
            - All of the specified virtual machines are invalid.
            
            ***PbmFault***: If there is an internal server error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PbmFault'

  /pbm/PbmComplianceManager/{moId}/PbmFetchComplianceResult:
    post:
      tags: [PbmComplianceManager]
      summary: |2
        Retrieves the latest version of *PbmComplianceResult* objects that are
        available for the specified entities.
      operationId: PbmComplianceManager_PbmFetchComplianceResult
      description: |2
        Retrieves the latest version of *PbmComplianceResult* objects that are
        available for the specified entities.
        
        ***Required privileges:*** StorageProfile.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PbmFetchComplianceResultRequestType'
      responses:
        '200':
          description: |2
            Array of compliance results. The returned array contains
            one result object for each entity specified in the method call.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/PbmComplianceResult'
        '500':
          description: |2
            ***InvalidArgument***: If one of the following situations occurs:
            - You do not specify an entity.
            - You specify only datastores.
            - All of the specified storage entities are invalid.
            
            ***PbmFault***: If there is an internal server error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PbmFault'

  /pbm/PbmComplianceManager/{moId}/PbmFetchRollupComplianceResult:
    post:
      tags: [PbmComplianceManager]
      summary: |2
        Retrieves the rollup compliance (*PbmRollupComplianceResult*)
        of the given virtual machines if present.
      operationId: PbmComplianceManager_PbmFetchRollupComplianceResult
      description: |2
        Retrieves the rollup compliance (*PbmRollupComplianceResult*)
        of the given virtual machines if present.
        
        The returned rollup compliance
        result may be old. Invoke checkRollupCompliance API to compute and retrieve the
        latest rollup compliance result. For storage entities placed on vSAN the
        returned compliance is always the latest.
        
        ***Required privileges:*** StorageProfile.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PbmFetchRollupComplianceResultRequestType'
      responses:
        '200':
          description: |2
            Rollup compliance results for the given virtual machines.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/PbmRollupComplianceResult'
        '500':
          description: |2
            ***InvalidArgument***: If one of the following situations occurs:
            - There is no profile associated with the virtual machine
              or its virtual disks.
            - You specify only datastores or virtual disks.
            - All of the specified virtual machines are invalid.
            
            ***PbmFault***: If there is an internal server error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PbmFault'

  /pbm/PbmComplianceManager/{moId}/PbmQueryByRollupComplianceStatus:
    post:
      tags: [PbmComplianceManager]
      summary: |2
        Returns the virtual machines for the given rollup compliance status.
      operationId: PbmComplianceManager_PbmQueryByRollupComplianceStatus
      description: |2
        Returns the virtual machines for the given rollup compliance status.
        
        ***Required privileges:*** StorageProfile.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PbmQueryByRollupComplianceStatusRequestType'
      responses:
        '200':
          description: |2
            Array of VirtualMachine entities
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/PbmServerObjectRef'
        '500':
          description: |2
            ***InvalidArgument***: If the given status parameter is invalid or incorrect format.
            
            ***PbmFault***: If there is an internal service error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MethodFault'

  /pbm/PbmPlacementSolver/{moId}/PbmCheckCompatibility:
    post:
      tags: [PbmPlacementSolver]
      summary: |2
        Performs placement compatibility checking based on a storage requirement
        profile.
      operationId: PbmPlacementSolver_PbmCheckCompatibility
      deprecated: true
      description: |2
        Deprecated as of vSphere 2016, use *PbmPlacementSolver.PbmCheckRequirements* instead in order to retrieve compatibility status on both compute and storage
        location.
        
        Performs placement compatibility checking based on a storage requirement
        profile.
        
        If compatibility checking for a hub does not produce any errors,
        the hub is considered a viable candidate for virtual machine file storage.
        If this method is invoked for
        *VVolDefaultProfile*
        profile, then all the VVOL containers are returned as matching.
        
        ***Required privileges:*** StorageProfile.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PbmCheckCompatibilityRequestType'
      responses:
        '200':
          description: |2
            Array of compatibility result objects. The results array contains
            one entry for each entry in the <code>hubsToSearch</code> list. If
            a hubs list is not specified, the results array contains one
            entry for each datastore and storage pod in your vSphere
            environment. Any errors are described in the results array.
            - If there is an invalid argument error, the compatibility
              results will contain <code>InvalidArgument</code> faults
              indicating that the profile does not exist or that it does not
              match the requirement type.
            - If there are errors or warnings during compatibility checking,
              the compatibility results will contain faults derived from
              *PbmCompatibilityCheckFault*.
            - If this method is invoked for
              *VVolDefaultProfile*
              then the compatibility results will contain faults derived from
              *PbmCompatibilityCheckFault* for non-vvol datastores.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/PbmPlacementCompatibilityResult'

  /pbm/PbmPlacementSolver/{moId}/PbmCheckCompatibilityWithSpec:
    post:
      tags: [PbmPlacementSolver]
      summary: |2
        Performs placement compatibility checking based on a storage profile
        specification.
      operationId: PbmPlacementSolver_PbmCheckCompatibilityWithSpec
      deprecated: true
      description: |2
        Deprecated as of vSphere 2016, use *PbmPlacementSolver.PbmCheckRequirements* instead in order to retrieve compatibility status for both
        compute and storage location.
        
        Performs placement compatibility checking based on a storage profile
        specification.
        
        If compatibility checking for a hub does not produce
        any errors, the hub is considered a viable candidate for virtual
        machine file storage.
        
        ***Required privileges:*** StorageProfile.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PbmCheckCompatibilityWithSpecRequestType'
      responses:
        '200':
          description: |2
            Array of compatibility result objects. The results array contains
            one entry for each entry in the <code>hubsToSearch</code> list.
            If a hubs list is not specified, the results array contains one entry
            for each datastore and storage pod in your vSphere environment.
            Any errors are described in the results array.
            - If there is an invalid argument error, the compatibility results
              will contain <code>InvalidArgument</code> faults indicating that the
              profile does not exist or that it does not match the requirement type.
            - If there are errors or warnings during compatibility checking,
              the compatibility results will contain faults derived from
              *PbmCompatibilityCheckFault*.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/PbmPlacementCompatibilityResult'

  /pbm/PbmPlacementSolver/{moId}/PbmCheckRequirements:
    post:
      tags: [PbmPlacementSolver]
      summary: |2
        Performs placement compatibility checking for the specified object to be placed based on its
        specified set of requirements.
      operationId: PbmPlacementSolver_PbmCheckRequirements
      description: |2
        Performs placement compatibility checking for the specified object to be placed based on its
        specified set of requirements.
        
        If compatibility checking for a hub does not produce any
        errors, the hub is considered a viable candidate for virtual machine storage.
        
        ***Required privileges:*** StorageProfile.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PbmCheckRequirementsRequestType'
      responses:
        '200':
          description: |2
            Array of compatibility result objects. The results array contains
            one entry for each entry in the <code>hubsToSearch</code> list.
            If hubs list is not specified, the results array contains one entry
            for each datastore and storage pod in your vSphere environment.
            Any errors are returned in the results array.
            - If there is an invalid argument error, the compatibility results
              will contain <code>InvalidArgument</code> faults indicating that the
              profile does not exist or that it does not match the requirement type.
            - If there are errors or warnings during compatibility checking,
              the compatibility results will contain faults derived from
              *PbmCompatibilityCheckFault*.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/PbmPlacementCompatibilityResult'
        '500':
          description: |2
            ***InvalidArgument***: if <code>placementSubjectRequirement</code> is null or empty or if
            there are duplicate or multiple conflicting requirements such as
            *PbmPlacementCapabilityConstraintsRequirement* and *PbmPlacementCapabilityProfileRequirement* both being
            specified.
            
            ***PbmFault***: If there is an internal server error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PbmFault'

  /pbm/PbmPlacementSolver/{moId}/PbmQueryMatchingHub:
    post:
      tags: [PbmPlacementSolver]
      summary: |2
        Finds matching placement hubs for the specified requirements profile.
      operationId: PbmPlacementSolver_PbmQueryMatchingHub
      deprecated: true
      description: |2
        Deprecated as of vSphere 2016, use *PbmPlacementSolver.PbmCheckRequirements*
        instead in order to retrieve both compatible compute and storage location.
        
        Finds matching placement hubs for the specified requirements profile.
        
        This
        method returns only those hubs that match the profile. If this method is
        invoked for
        *VVolDefaultProfile*
        profile, then all the VVOL containers are returned as matching.
        
        ***Required privileges:*** StorageProfile.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PbmQueryMatchingHubRequestType'
      responses:
        '200':
          description: |2
            Subset of the <code>hubsToSearch</code> list that satisfies the
            profile requirements. A storage pod is returned if and only if all
            its member datastores satisfy the profile requirements, whether
            the hubs list contains any of the member datastores or not. If a
            datastore and its storage pod are in the hubs list, and both
            satisfy the requirements, both are returned.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/PbmPlacementHub'
        '500':
          description: |2
            ***PbmFault***: If there is an internal server error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PbmFault'

  /pbm/PbmPlacementSolver/{moId}/PbmQueryMatchingHubWithSpec:
    post:
      tags: [PbmPlacementSolver]
      summary: |2
        Finds matching placement hubs based on a profile creation specification.
      operationId: PbmPlacementSolver_PbmQueryMatchingHubWithSpec
      deprecated: true
      description: |2
        Deprecated as of vSphere 2016, use *PbmPlacementSolver.PbmCheckRequirements* instead in order to retrieve both compatible compute and storage location.
        
        Finds matching placement hubs based on a profile creation specification.
        
        This method returns only those hubs that match the specification.
        
        ***Required privileges:*** StorageProfile.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PbmQueryMatchingHubWithSpecRequestType'
      responses:
        '200':
          description: |2
            Subset of the <code>hubsToSearch</code> list that satisfies the profile
            requirements. A storage pod is returned if and only if all its member datastores
            satisfy the profile requirements, whether the hubs list contains
            any of the member datastores or not. If a datastore and its storage pod
            are in the hubs list, and both satisfy the requirements, both are returned.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/PbmPlacementHub'
        '500':
          description: |2
            ***PbmFault***: If there is an internal server error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PbmFault'

  /pbm/PbmProfileProfileManager/{moId}/PbmAssignDefaultRequirementProfile:
    post:
      tags: [PbmProfileProfileManager]
      summary: |2
        Assign the given profile as the default profile for the given datastores.
      operationId: PbmProfileProfileManager_PbmAssignDefaultRequirementProfile
      description: |2
        Assign the given profile as the default profile for the given datastores.
        
        This is an atomic operation. Either all the datastores will be assigned
        the default profile or none will be.
        In addition to StorageProfile.Update privilege, it requires
        Datastore.UpdateVirtualMachineFiles privilege on the given datastores to
        change the default profile for the datastores. Otherwise a NoPermission
        fault is thrown.
        
        ***Required privileges:*** StorageProfile.Update
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PbmAssignDefaultRequirementProfileRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***InvalidArgument***: If one of the hub is not a datastore or profile cannot be
            used as default requirement profile for any of the hub.
            
            ***PbmLegacyHubsNotSupported***: If any of the hub in datastores argument is legacy (VMFS
            or NFS) datastores.
            
            ***PbmNonExistentHubs***: If any of the hub in datastores argument is non existent.
            
            ***PbmFault***: Internal service error
            
            ***PbmFaultNoPermission***: If user does not have Datastore.UpdateVirtualMachineFiles
            privilege on the given datastores.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MethodFault'

  /pbm/PbmProfileProfileManager/{moId}/PbmCreate:
    post:
      tags: [PbmProfileProfileManager]
      summary: |2
        Creates a capability-based storage profile.
      operationId: PbmProfileProfileManager_PbmCreate
      description: |2
        Creates a capability-based storage profile.
        
        A capability-based profile
        contains requirements that are derived from tag-defined capabilities
        or from VMware VSAN capabilities.
        - Use the vSphere Web Client to define tags for capabilities.
        - VSAN storage capabilities are system-defined.
          
        A profile is a collection of subprofiles
        (*PbmCapabilitySubProfile*).
        A subprofile references storage capabilities and defines requirements
        based on those capabilities.
        
        To define a storage requirement, you specify constraint property instance values
        (*PbmCapabilityPropertyInstance*) that use Storage Policy API builtin
        types (*PbmBuiltinType_enum*) to create expressions
        for compliance checking.
        
        The profile specification contains lists of constraint property instances
        (*PbmCapabilityProfileCreateSpec*.*PbmCapabilityProfileCreateSpec.constraints*.*PbmCapabilitySubProfileConstraints.subProfiles*\[\].*PbmCapabilitySubProfile.capability*\[\].*PbmCapabilityInstance.constraint*\[\].*PbmCapabilityConstraintInstance.propertyInstance*\[\]).
        The constraints are based on storage capabilities described in metadata
        (*PbmCapabilityPropertyMetadata*) and in the datastore profiles.
        
        ***Required privileges:*** StorageProfile.Update
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PbmCreateRequestType'
      responses:
        '200':
          description: |2
            Identifier for the new profile.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PbmProfileId'
        '500':
          description: |2
            ***InvalidArgument***: if
            *PbmCapabilityProfileCreateSpec* is invalid.
            
            ***PbmFaultProfileStorageFault***: if there is an error in persisting the profile.
            
            ***PbmDuplicateName***: if a profile with the same name already exists.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MethodFault'

  /pbm/PbmProfileProfileManager/{moId}/PbmDelete:
    post:
      tags: [PbmProfileProfileManager]
      summary: |2
        Deletes one or more profiles.
      operationId: PbmProfileProfileManager_PbmDelete
      description: |2
        Deletes one or more profiles.
        
        If the method successfully deletes a
        profile, its identifier is no longer valid.
        
        ***Required privileges:*** StorageProfile.Update
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PbmDeleteRequestType'
      responses:
        '200':
          description: |2
            Array of result objects, one for each profile specified in the
            call to the <code>PbmDelete</code> method.
            
            The result object contains the profile ID and, if an error
            occurred, it also describes the fault. The method can return one
            of the following faults if the profile cannot be deleted:
            - *InvalidArgument* - Profile is not
              recognized by the system.
            - *PbmFaultProfileStorageFault* - Internal service
              error.
            - *PbmResourceInUse* - Profile is still associated
              with an entity.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/PbmProfileOperationOutcome'

  /pbm/PbmProfileProfileManager/{moId}/PbmFetchCapabilityMetadata:
    post:
      tags: [PbmProfileProfileManager]
      summary: |2
        Retrieves capability metadata.
      operationId: PbmProfileProfileManager_PbmFetchCapabilityMetadata
      description: |2
        Retrieves capability metadata.
        
        Each capability metadata object has a unique identifier
        (*PbmCapabilityMetadata*.*PbmCapabilityMetadata.id*).
        The identifier object (*PbmCapabilityMetadataUniqueId*)
        contains the unique ID and it identifies the namespace to which
        the capability metadata object belongs.
        
        Each registered namespace is required to be globally unique.
        You can associate a capability metadata object with a unique vendor and
        resource type by using the namespace and the
        *PbmCapabilityVendorResourceTypeInfo*
        data returned by the *PbmProfileProfileManager.PbmFetchVendorInfo* method.
        
        ***Required privileges:*** StorageProfile.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PbmFetchCapabilityMetadataRequestType'
      responses:
        '200':
          description: |2
            Array of capability metadata objects, classified by category
            (*PbmCapabilityMetadataPerCategory*.*PbmCapabilityMetadataPerCategory.subCategory*).
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/PbmCapabilityMetadataPerCategory'

  /pbm/PbmProfileProfileManager/{moId}/PbmFetchCapabilitySchema:
    post:
      tags: [PbmProfileProfileManager]
      summary: |2
        Returns the capability schema objects registered in the system.
      operationId: PbmProfileProfileManager_PbmFetchCapabilitySchema
      description: |2
        Returns the capability schema objects registered in the system.
        
        ***Required privileges:*** StorageProfile.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PbmFetchCapabilitySchemaRequestType'
      responses:
        '200':
          description: |2
            Array of *PbmCapabilitySchema*
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/PbmCapabilitySchema'
        '500':
          description: |2
            ***PbmFault***: If there is an internal server error.
            
            ***InvalidArgument***: If input lineOfServices has unknown/invalid line of service.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PbmFault'

  /pbm/PbmProfileProfileManager/{moId}/PbmFetchResourceType:
    post:
      tags: [PbmProfileProfileManager]
      summary: |2
        Retrieves information about various resource types registered with the system.
      operationId: PbmProfileProfileManager_PbmFetchResourceType
      description: |2
        Retrieves information about various resource types registered with the system.
        
        ***Required privileges:*** StorageProfile.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            Array of resource types.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/PbmProfileResourceType'

  /pbm/PbmProfileProfileManager/{moId}/PbmFetchVendorInfo:
    post:
      tags: [PbmProfileProfileManager]
      summary: |2
        Retrieve information about various capability metadata owners/vendors
        registered with the system, the resource type for which they are registered,
        and schema namespaces to which they belong.
      operationId: PbmProfileProfileManager_PbmFetchVendorInfo
      description: |2
        Retrieve information about various capability metadata owners/vendors
        registered with the system, the resource type for which they are registered,
        and schema namespaces to which they belong.
        
        ***Required privileges:*** StorageProfile.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PbmFetchVendorInfoRequestType'
      responses:
        '200':
          description: |2
            Vendor and namespace information.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/PbmCapabilityVendorResourceTypeInfo'

  /pbm/PbmProfileProfileManager/{moId}/PbmFindApplicableDefaultProfile:
    post:
      tags: [PbmProfileProfileManager]
      summary: |2
        Returns the profiles that can be made as default profile for all the given datastores.
      operationId: PbmProfileProfileManager_PbmFindApplicableDefaultProfile
      description: |2
        Returns the profiles that can be made as default profile for all the given datastores.
        
        A profile can be made as a default profile for a datastore only if it contains a ruleset
        from the namespace the datastore belongs to.
        
        ***Required privileges:*** StorageProfile.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PbmFindApplicableDefaultProfileRequestType'
      responses:
        '200':
          description: |2
            Profile\[\]
            Returns all the requirements profiles that can be made as default profile for the given datastores.
            If no profile can be made as default for all datastores, then an empty array is returned.
            Note that the profiles returned may or may not be compatible with the datastores.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/PbmProfile'
        '500':
          description: |2
            ***PbmLegacyHubsNotSupported***: If any of the hubs in datastores argument are legacy (VMFS or NFS) datastores.
            
            ***PbmNonExistentHubs***: If any of the hubs in datastores argument are non existent.
            
            ***PbmFault***: Internal service error.
            
            ***InvalidArgument***: If the datastores argument contains a non-datastore, example storage pod.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MethodFault'

  /pbm/PbmProfileProfileManager/{moId}/PbmQueryAssociatedEntities:
    post:
      tags: [PbmProfileProfileManager]
      summary: |2
        Returns the virtual machine and disks that are associated with the given
        storage policies.
      operationId: PbmProfileProfileManager_PbmQueryAssociatedEntities
      description: |2
        Returns the virtual machine and disks that are associated with the given
        storage policies.
        
        If the profiles parameter is empty, then this API returns
        all the virtual machine and disks that are associated with some storage
        policy.
        
        ***Required privileges:*** StorageProfile.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PbmQueryAssociatedEntitiesRequestType'
      responses:
        '200':
          description: |2
            Array of QueryProfileResult
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/PbmQueryProfileResult'
        '500':
          description: |2
            ***PbmFault***: If there is an internal service error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PbmFault'

  /pbm/PbmProfileProfileManager/{moId}/PbmQueryAssociatedEntity:
    post:
      tags: [PbmProfileProfileManager]
      summary: |2
        Retrieves entities associated with the specified profile.
      operationId: PbmProfileProfileManager_PbmQueryAssociatedEntity
      description: |2
        Retrieves entities associated with the specified profile.
        
        ***Required privileges:*** StorageProfile.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PbmQueryAssociatedEntityRequestType'
      responses:
        '200':
          description: |2
            Array of entities associated with the profile.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/PbmServerObjectRef'
        '500':
          description: |2
            ***PbmFault***: If there is an internal server error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PbmFault'

  /pbm/PbmProfileProfileManager/{moId}/PbmQueryAssociatedProfile:
    post:
      tags: [PbmProfileProfileManager]
      summary: |2
        Returns identifiers for profiles associated with a virtual machine,
        virtual disk, or datastore.
      operationId: PbmProfileProfileManager_PbmQueryAssociatedProfile
      description: |2
        Returns identifiers for profiles associated with a virtual machine,
        virtual disk, or datastore.
        
        ***Required privileges:*** StorageProfile.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PbmQueryAssociatedProfileRequestType'
      responses:
        '200':
          description: |2
            Array of profiles associated with the entity.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/PbmProfileId'
        '500':
          description: |2
            ***PbmFault***: If there is an internal server error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PbmFault'

  /pbm/PbmProfileProfileManager/{moId}/PbmQueryAssociatedProfiles:
    post:
      tags: [PbmProfileProfileManager]
      summary: |2
        Returns profiles associated with the specified entities.
      operationId: PbmProfileProfileManager_PbmQueryAssociatedProfiles
      description: |2
        Returns profiles associated with the specified entities.
        
        ***Required privileges:*** StorageProfile.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PbmQueryAssociatedProfilesRequestType'
      responses:
        '200':
          description: |2
            Array of query result objects. Each *PbmQueryProfileResult*
            object identifies a virtual machine, virtual disk, or datastore
            and it contains a list of the profiles associated with that entity.
            It also describes the fault, if there is an error associated
            with one of the profiles.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/PbmQueryProfileResult'
        '500':
          description: |2
            ***PbmFault***: If there is an internal server error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PbmFault'

  /pbm/PbmProfileProfileManager/{moId}/PbmQueryDefaultRequirementProfile:
    post:
      tags: [PbmProfileProfileManager]
      summary: |2
        Returns the default requirement profile ID for the given datastore.
      operationId: PbmProfileProfileManager_PbmQueryDefaultRequirementProfile
      description: |2
        Returns the default requirement profile ID for the given datastore.
        
        For
        legacy hub the API returns `null`.
        
        ***Required privileges:*** StorageProfile.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PbmQueryDefaultRequirementProfileRequestType'
      responses:
        '200':
          description: |2
            Profile Id of the Default Requirement Profile. For legacy hub the
            API returns `null`.
          content:
            application/json:
              schema:
                nullable: true
                $ref: '#/components/schemas/PbmProfileId'
        '500':
          description: |2
            ***InvalidArgument***: If hub is invalid (does not denote a datastore).
            
            ***PbmNonExistentHubs***: If hub is non existent.
            
            ***PbmFault***: Internal service error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MethodFault'

  /pbm/PbmProfileProfileManager/{moId}/PbmQueryDefaultRequirementProfiles:
    post:
      tags: [PbmProfileProfileManager]
      summary: |2
        Returns the default profiles for the given datastores.
      operationId: PbmProfileProfileManager_PbmQueryDefaultRequirementProfiles
      description: |2
        Returns the default profiles for the given datastores.
        
        For legacy
        datastores we set `DefaultProfileInfo.defaultProfile` to
        `null`.
        
        ***Required privileges:*** StorageProfile.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PbmQueryDefaultRequirementProfilesRequestType'
      responses:
        '200':
          description: |2
            DefaultProfileInfo Default profile information.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/PbmDefaultProfileInfo'
        '500':
          description: |2
            ***InvalidArgument***: If one of the datastore is invalid (does not denote a
            datastore).
            
            ***PbmNonExistentHubs***: If any of the datastore in datastores argument are non
            existent.
            
            ***PbmFault***: Internal service error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MethodFault'

  /pbm/PbmProfileProfileManager/{moId}/PbmQueryProfile:
    post:
      tags: [PbmProfileProfileManager]
      summary: |2
        Returns requirement profile ids or resource profile ids, or both.
      operationId: PbmProfileProfileManager_PbmQueryProfile
      description: |2
        Returns requirement profile ids or resource profile ids, or both.
        
        ***Required privileges:*** StorageProfile.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PbmQueryProfileRequestType'
      responses:
        '200':
          description: |2
            Array of storage profile identifiers.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/PbmProfileId'
        '500':
          description: |2
            ***InvalidArgument***: if the Server does not recognize the specified
            resourceType or profileCategory.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InvalidArgument'

  /pbm/PbmProfileProfileManager/{moId}/PbmQuerySpaceStatsForStorageContainer:
    post:
      tags: [PbmProfileProfileManager]
      summary: |2
        Retrieves space statistics of a datastore.
      operationId: PbmProfileProfileManager_PbmQuerySpaceStatsForStorageContainer
      description: |2
        Retrieves space statistics of a datastore.
        
        ***Required privileges:*** StorageProfile.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PbmQuerySpaceStatsForStorageContainerRequestType'
      responses:
        '200':
          description: |2
            Array of Space stats of datastore for each capabilityProfileId.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/PbmDatastoreSpaceStatistics'
        '500':
          description: |2
            ***InvalidArgument***: - Thrown if the input datastore parameter is null
            or its type is not datastore or its key is empty.
            
            ***PbmFault***: - Thrown if server internal error occurred or
            if storage container does not support the profile.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MethodFault'

  /pbm/PbmProfileProfileManager/{moId}/PbmResetDefaultRequirementProfile:
    post:
      tags: [PbmProfileProfileManager]
      summary: |2
        Not supported in this release.
      operationId: PbmProfileProfileManager_PbmResetDefaultRequirementProfile
      deprecated: true
      description: |2
        Deprecated since it is not supported.
        
        Not supported in this release.
        
        ***Required privileges:*** StorageProfile.Update
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PbmResetDefaultRequirementProfileRequestType'
      responses:
        '204':
          description: |2
            No Content

  /pbm/PbmProfileProfileManager/{moId}/PbmResetVSanDefaultProfile:
    post:
      tags: [PbmProfileProfileManager]
      summary: |2
        Resets the system pre-created VSAN default profile to factory defaults.
      operationId: PbmProfileProfileManager_PbmResetVSanDefaultProfile
      description: |2
        Resets the system pre-created VSAN default profile to factory defaults.
        
        ***Required privileges:*** StorageProfile.Update
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '204':
          description: |2
            No Content

  /pbm/PbmProfileProfileManager/{moId}/PbmRetrieveContent:
    post:
      tags: [PbmProfileProfileManager]
      summary: |2
        Returns one or more storage profiles.
      operationId: PbmProfileProfileManager_PbmRetrieveContent
      description: |2
        Returns one or more storage profiles.
        
        ***Required privileges:*** StorageProfile.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PbmRetrieveContentRequestType'
      responses:
        '200':
          description: |2
            Array of storage profiles.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/PbmProfile'
        '500':
          description: |2
            ***InvalidArgument***: if the Server does not recognize any of the profileIds.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InvalidArgument'

  /pbm/PbmProfileProfileManager/{moId}/PbmUpdate:
    post:
      tags: [PbmProfileProfileManager]
      summary: |2
        Updates a storage profile.
      operationId: PbmProfileProfileManager_PbmUpdate
      description: |2
        Updates a storage profile.
        
        ***Required privileges:*** StorageProfile.Update
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PbmUpdateRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***InvalidArgument***: if the Server does not recognize *PbmProfileId*.
            
            ***PbmFaultProfileStorageFault***: in case of internal service error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MethodFault'

  /pbm/PbmReplicationManager/{moId}/PbmQueryReplicationGroups:
    post:
      tags: [PbmReplicationManager]
      summary: |2
        Returns identifiers for replication groups associated with virtual machines, virtual
        disks or virtual machines and all their disks.
      operationId: PbmReplicationManager_PbmQueryReplicationGroups
      description: |2
        Returns identifiers for replication groups associated with virtual machines, virtual
        disks or virtual machines and all their disks.
        
        If the query is performed for a virtual machine
        and all it's disks *virtualMachineAndDisks*, an entry per
        disk and one for the virtual machine config will be returned.
        
        ***Required privileges:*** StorageProfile.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PbmQueryReplicationGroupsRequestType'
      responses:
        '200':
          description: |2
            Array of query result objects. Each *PbmQueryReplicationGroupResult*
            object identifies a virtual machine, or virtual disk and contains the replication group id
            associated with that entity, if any. It also describes the fault, if there is an error associated
            with one of the entities.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/PbmQueryReplicationGroupResult'
        '500':
          description: |2
            ***InvalidArgument***: if <code>entities</code> is null or empty.
            
            ***PbmFault***: If there is an internal service error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PbmFault'

  /pbm/PbmServiceInstance/{moId}/PbmRetrieveServiceContent:
    post:
      tags: [PbmServiceInstance]
      summary: |2
        Retrieves the properties of the Storage Policy service instance.
      operationId: PbmServiceInstance_PbmRetrieveServiceContent
      description: |2
        Retrieves the properties of the Storage Policy service instance.
        
        ***Required privileges:*** System.Anonymous
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
        - {}
      responses:
        '200':
          description: |2
            Service instance properties that provide access to
            Storage Policy managed objects.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PbmServiceInstanceContent'

  /pbm/PbmServiceInstance/{moId}/content:
    get:
      tags: [PbmServiceInstance]
      summary: |2
        Contains references to Storage Policy managed objects.
      operationId: PbmServiceInstance_getContent
      description: |2
        Contains references to Storage Policy managed objects.
        
        ***Required privileges:*** System.Anonymous
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
        - {}
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PbmServiceInstanceContent'

  /sms/SmsProvider/{moId}/QueryProviderInfo:
    post:
      tags: [SmsProvider]
      summary: |2
        Get provider information.
      operationId: SmsProvider_QueryProviderInfo
      description: |2
        Get provider information.
        
        ***Required privileges:*** StorageViews.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SmsProviderInfo'

  /sms/SmsServiceInstance/{moId}/QueryAboutInfo:
    post:
      tags: [SmsServiceInstance]
      summary: |2
        Retrieves information about the service.
      operationId: SmsServiceInstance_QueryAboutInfo
      description: |2
        Retrieves information about the service.
        
        ***Required privileges:*** StorageViews.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            AboutInfo information about the system
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SmsAboutInfo'

  /sms/SmsServiceInstance/{moId}/QuerySessionManager:
    post:
      tags: [SmsServiceInstance]
      summary: |2
        Retrieves SMS Session Manager managed object.
      operationId: SmsServiceInstance_QuerySessionManager
      description: |2
        Retrieves SMS Session Manager managed object.
        
        ***Required privileges:*** System.Anonymous
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
        - {}
      responses:
        '200':
          description: |2
            A managed object *SmsSessionManager* reference.
            
            Refers instance of *SmsSessionManager*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'

  /sms/SmsServiceInstance/{moId}/QueryStorageManager:
    post:
      tags: [SmsServiceInstance]
      summary: |2
        Retrieves Storage Manager managed object.
      operationId: SmsServiceInstance_QueryStorageManager
      description: |2
        Retrieves Storage Manager managed object.
        
        ***Required privileges:*** StorageViews.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            A managed object *SmsStorageManager* reference.
            
            Refers instance of *SmsStorageManager*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'

  /sms/SmsStorageManager/{moId}/QueryArray:
    post:
      tags: [SmsStorageManager]
      summary: |2
        Get the list of storage arrays managed by all the registered VASA providers.
      operationId: SmsStorageManager_QueryArray
      description: |2
        Get the list of storage arrays managed by all the registered VASA providers.
        
        ***Required privileges:*** StorageViews.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QueryArrayRequestType'
      responses:
        '200':
          description: |2
            List of data objects containing information about
            StorageArray.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/StorageArray'
        '500':
          description: |2
            ***NotFound***: If the given providerId does not have any
            reference.
            
            ***QueryExecutionFault***: if an error is encountered while
            processing the query request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MethodFault'

  /sms/SmsStorageManager/{moId}/QueryArrayAssociatedWithLun:
    post:
      tags: [SmsStorageManager]
      summary: |2
        Get the StorageArray object that is associated with the
        ScsiLun.
      operationId: SmsStorageManager_QueryArrayAssociatedWithLun
      description: |2
        Get the StorageArray object that is associated with the
        ScsiLun.
        
        ***Required privileges:*** StorageViews.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QueryArrayAssociatedWithLunRequestType'
      responses:
        '200':
          description: |2
            StorageArray for the for the ScsiLun.
          content:
            application/json:
              schema:
                nullable: true
                $ref: '#/components/schemas/StorageArray'
        '500':
          description: |2
            ***NotFound***: if the specified entity does not exist.
            
            ***QueryExecutionFault***: if an error is encountered while
            processing the query request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MethodFault'

  /sms/SmsStorageManager/{moId}/QueryAssociatedBackingStoragePool:
    post:
      tags: [SmsStorageManager]
      summary: |2
        Query Backing Storage Pools for StorageLun or StorageFileSystem.
      operationId: SmsStorageManager_QueryAssociatedBackingStoragePool
      description: |2
        Query Backing Storage Pools for StorageLun or StorageFileSystem.
        
        ***Required privileges:*** StorageViews.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QueryAssociatedBackingStoragePoolRequestType'
      responses:
        '200':
          description: |2
            Array of BackingStoragePool*BackingStoragePool* associated with specified StorageLun or StorageFileSystem.
            If entityId is null then API returns all the BackingStoragePools of the specified type.
            If both entityId and entityType are not specified then API returns all the BackingStoragePools available.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/BackingStoragePool'
        '500':
          description: |2
            ***NotFound***: if the specified entityId does not exist.
            
            ***QueryExecutionFault***: if an error is encountered while processing the query request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MethodFault'

  /sms/SmsStorageManager/{moId}/QueryDatastoreBackingPoolMapping:
    post:
      tags: [SmsStorageManager]
      summary: |2
        Query BackingStoragePools for the given set of datastores.
      operationId: SmsStorageManager_QueryDatastoreBackingPoolMapping
      description: |2
        Query BackingStoragePools for the given set of datastores.
        
        Available information for all types of BackingStoragePools*BackingStoragePoolType_enum*
        for every input datastore is returned as part of the result.
        More than one datastore can map to same set of BackingStoragePools.
        
        ***Required privileges:*** StorageViews.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QueryDatastoreBackingPoolMappingRequestType'
      responses:
        '200':
          description: |2
            *DatastoreBackingPoolMapping*
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/DatastoreBackingPoolMapping'
        '500':
          description: |2
            ***NotFound***: if any *Datastore* in the specified input array does not exist.
            
            ***QueryExecutionFault***: if an error is encountered while processing the query request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MethodFault'

  /sms/SmsStorageManager/{moId}/QueryDatastoreCapability:
    post:
      tags: [SmsStorageManager]
      summary: |2
        Get the capability for the given datastore.
      operationId: SmsStorageManager_QueryDatastoreCapability
      description: |2
        Get the capability for the given datastore.
        
        ***Required privileges:*** StorageViews.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QueryDatastoreCapabilityRequestType'
      responses:
        '200':
          description: |2
            A data object containing information about StorageCapability.
            If the VMFS datastore have heterogeneous Luns (in case of VMFS extends),
            *StorageCapability.description* will be empty.
          content:
            application/json:
              schema:
                nullable: true
                $ref: '#/components/schemas/StorageCapability'
        '500':
          description: |2
            ***NotFound***: if the specified entity does not exist.
            
            ***QueryExecutionFault***: if an error is encountered while
            processing the query request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MethodFault'

  /sms/SmsStorageManager/{moId}/QueryDrsMigrationCapabilityForPerformance:
    post:
      tags: [SmsStorageManager]
      summary: |2
        Query the provider to figure out whether Storage DRS should
        migrate VMDKs between the two given datastores.
      operationId: SmsStorageManager_QueryDrsMigrationCapabilityForPerformance
      deprecated: true
      description: |2
        Deprecated as of SMS API 3.0, use *SmsStorageManager.QueryDrsMigrationCapabilityForPerformanceEx*.
        
        Query the provider to figure out whether Storage DRS should
        migrate VMDKs between the two given datastores.
        
        ***Required privileges:*** StorageViews.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QueryDrsMigrationCapabilityForPerformanceRequestType'
      responses:
        '200':
          description: |2
            true if VM migration is recommended from srcDatastore
            to dstDatastore.
            false if VM migration is not recommended from
            srcDatastore to dstDatastore.
          content:
            application/json:
              schema:
                type: boolean
        '500':
          description: |2
            ***NotFound***: if the specified entity does not exist.
            
            ***QueryExecutionFault***: if an error is encountered while
            processing the query request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MethodFault'

  /sms/SmsStorageManager/{moId}/QueryDrsMigrationCapabilityForPerformanceEx:
    post:
      tags: [SmsStorageManager]
      summary: |2
        Query available VASA providers for I/O performance based migration recommendations
        for all pair combinations of the given set of datastores.
      operationId: SmsStorageManager_QueryDrsMigrationCapabilityForPerformanceEx
      deprecated: true
      description: |2
        Deprecated as of SMS API 5.0.
        
        Query available VASA providers for I/O performance based migration recommendations
        for all pair combinations of the given set of datastores.
        
        Datastore pairs for which
        a recommendation cannot be obtained are not included in the result.
        
        ***Required privileges:*** StorageViews.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QueryDrsMigrationCapabilityForPerformanceExRequestType'
      responses:
        '200':
          description: |2
            *DrsMigrationCapabilityResult*
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DrsMigrationCapabilityResult'
        '500':
          description: |2
            ***NotFound***: if any *Datastore* in the specified input array does not exist.
            
            ***QueryExecutionFault***: if an error is encountered while processing the query request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MethodFault'

  /sms/SmsStorageManager/{moId}/QueryFaultDomain:
    post:
      tags: [SmsStorageManager]
      summary: |2
        Query for fault domains based on the query spec.
      operationId: SmsStorageManager_QueryFaultDomain
      description: |2
        Query for fault domains based on the query spec.
        
        If spec is null, SMS
        will return all the root fault domains only.
        
        ***Required privileges:*** StorageViews.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QueryFaultDomainRequestType'
      responses:
        '200':
          description: |2
            all the fault domains based on the query spec.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/FaultDomainId'
        '500':
          description: |2
            ***InvalidArgument***: if invalid input is provided.
            
            ***NotFound***: if the specified providerId in the spec does not exist
            
            ***QueryExecutionFault***: if an error is encountered while processing the
            query request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MethodFault'

  /sms/SmsStorageManager/{moId}/QueryFileSystemAssociatedWithArray:
    post:
      tags: [SmsStorageManager]
      summary: |2
        Get the StorageFileSystem data objects for the Array.
      operationId: SmsStorageManager_QueryFileSystemAssociatedWithArray
      description: |2
        Get the StorageFileSystem data objects for the Array.
        
        ***Required privileges:*** StorageViews.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QueryFileSystemAssociatedWithArrayRequestType'
      responses:
        '200':
          description: |2
            List of data objects containing information about
            StorageFileSystem.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/StorageFileSystem'
        '500':
          description: |2
            ***NotFound***: if the specified entity does not exist.
            
            ***QueryExecutionFault***: if an error is encountered while
            processing the query request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MethodFault'

  /sms/SmsStorageManager/{moId}/QueryHostAssociatedWithLun:
    post:
      tags: [SmsStorageManager]
      summary: |2
        Get HostSystem managed entities that share the StorageLun.
      operationId: SmsStorageManager_QueryHostAssociatedWithLun
      description: |2
        Get HostSystem managed entities that share the StorageLun.
        
        ***Required privileges:*** StorageViews.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QueryHostAssociatedWithLunRequestType'
      responses:
        '200':
          description: |2
            List of HostSystems.
            
            Refers instances of *HostSystem*.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***NotFound***: if the specified entity does not exist.
            
            ***QueryExecutionFault***: if an error is encountered while
            processing the query request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MethodFault'

  /sms/SmsStorageManager/{moId}/QueryLunAssociatedWithArray:
    post:
      tags: [SmsStorageManager]
      summary: |2
        Get the list of StorageLun data objects that for the Array.
      operationId: SmsStorageManager_QueryLunAssociatedWithArray
      description: |2
        Get the list of StorageLun data objects that for the Array.
        
        ***Required privileges:*** StorageViews.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QueryLunAssociatedWithArrayRequestType'
      responses:
        '200':
          description: |2
            List of data object containing information about
            StorageLun.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/StorageLun'
        '500':
          description: |2
            ***NotFound***: if the specified entity does not exist.
            
            ***QueryExecutionFault***: if an error is encountered while
            processing the query request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MethodFault'

  /sms/SmsStorageManager/{moId}/QueryLunAssociatedWithPort:
    post:
      tags: [SmsStorageManager]
      summary: |2
        Get the StorageLun data objects that are associated with StoragePort.
      operationId: SmsStorageManager_QueryLunAssociatedWithPort
      description: |2
        Get the StorageLun data objects that are associated with StoragePort.
        
        ***Required privileges:*** StorageViews.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QueryLunAssociatedWithPortRequestType'
      responses:
        '200':
          description: |2
            List of data objects containing information about
            StorageLun.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/StorageLun'
        '500':
          description: |2
            ***NotFound***: if the specified entity does not exist.
            
            ***QueryExecutionFault***: if an error is encountered while
            processing the query request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MethodFault'

  /sms/SmsStorageManager/{moId}/QueryNfsDatastoreAssociatedWithFileSystem:
    post:
      tags: [SmsStorageManager]
      summary: |2
        Get NFS datastore managed entity that are associated with
        StorageFileSystem.
      operationId: SmsStorageManager_QueryNfsDatastoreAssociatedWithFileSystem
      description: |2
        Get NFS datastore managed entity that are associated with
        StorageFileSystem.
        
        ***Required privileges:*** StorageViews.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QueryNfsDatastoreAssociatedWithFileSystemRequestType'
      responses:
        '200':
          description: |2
            Nas datastore for the storage file system id.
            
            Refers instance of *Datastore*.
          content:
            application/json:
              schema:
                nullable: true
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***NotFound***: if the specified entity does not exist.
            
            ***QueryExecutionFault***: if an error is encountered while
            processing the query request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MethodFault'

  /sms/SmsStorageManager/{moId}/QueryPortAssociatedWithArray:
    post:
      tags: [SmsStorageManager]
      summary: |2
        Get the StoragePort data objects that are associated with Array.
      operationId: SmsStorageManager_QueryPortAssociatedWithArray
      description: |2
        Get the StoragePort data objects that are associated with Array.
        
        ***Required privileges:*** StorageViews.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QueryPortAssociatedWithArrayRequestType'
      responses:
        '200':
          description: |2
            List of data objects containing information about
            StoragePort.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/StoragePort'
        '500':
          description: |2
            ***NotFound***: if the specified entity does not exist.
            
            ***QueryExecutionFault***: if an error is encountered while
            processing the query request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MethodFault'

  /sms/SmsStorageManager/{moId}/QueryPortAssociatedWithLun:
    post:
      tags: [SmsStorageManager]
      summary: |2
        Get the StoragePort data object that is associated with LUN.
      operationId: SmsStorageManager_QueryPortAssociatedWithLun
      description: |2
        Get the StoragePort data object that is associated with LUN.
        
        ***Required privileges:*** StorageViews.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QueryPortAssociatedWithLunRequestType'
      responses:
        '200':
          description: |2
            A data object containing information about StoragePort.
          content:
            application/json:
              schema:
                nullable: true
                $ref: '#/components/schemas/StoragePort'
        '500':
          description: |2
            ***NotFound***: if the specified entity does not exist.
            
            ***QueryExecutionFault***: if an error is encountered while
            processing the query request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MethodFault'

  /sms/SmsStorageManager/{moId}/QueryPortAssociatedWithProcessor:
    post:
      tags: [SmsStorageManager]
      summary: |2
        Get the StoragePort data objects that are associated with Processor.
      operationId: SmsStorageManager_QueryPortAssociatedWithProcessor
      description: |2
        Get the StoragePort data objects that are associated with Processor.
        
        ***Required privileges:*** StorageViews.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QueryPortAssociatedWithProcessorRequestType'
      responses:
        '200':
          description: |2
            List of data objects containing information about
            StoragePort.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/StoragePort'
        '500':
          description: |2
            ***NotFound***: if the specified entity does not exist.
            
            ***QueryExecutionFault***: if an error is encountered while
            processing the query request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MethodFault'

  /sms/SmsStorageManager/{moId}/QueryProcessorAssociatedWithArray:
    post:
      tags: [SmsStorageManager]
      summary: |2
        Get the StorageProcessor data objects that are associated with Array.
      operationId: SmsStorageManager_QueryProcessorAssociatedWithArray
      description: |2
        Get the StorageProcessor data objects that are associated with Array.
        
        ***Required privileges:*** StorageViews.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QueryProcessorAssociatedWithArrayRequestType'
      responses:
        '200':
          description: |2
            List of data objects containing information about
            StorageProcessor.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/StorageProcessor'
        '500':
          description: |2
            ***NotFound***: if the specified entity does not exist.
            
            ***QueryExecutionFault***: if an error is encountered while
            processing the query request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MethodFault'

  /sms/SmsStorageManager/{moId}/QueryProvider:
    post:
      tags: [SmsStorageManager]
      summary: |2
        Get the list of Providers that are currently registered
        with StorageManager.
      operationId: SmsStorageManager_QueryProvider
      description: |2
        Get the list of Providers that are currently registered
        with StorageManager.
        
        ***Required privileges:*** StorageViews.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            List of Providers.
            
            Refers instances of *SmsProvider*.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***QueryExecutionFault***: if an error is encountered while processing the
            query request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/QueryExecutionFault'

  /sms/SmsStorageManager/{moId}/QueryReplicationGroupInfo:
    post:
      tags: [SmsStorageManager]
      summary: |2
        Query for replication group details based on the query filter spec.
      operationId: SmsStorageManager_QueryReplicationGroupInfo
      description: |2
        Query for replication group details based on the query filter spec.
        
        The replication
        group id list in the filter spec cannot be null or empty.
        
        ***Required privileges:*** StorageViews.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QueryReplicationGroupInfoRequestType'
      responses:
        '200':
          description: |2
            An array of *GroupOperationResult* elements.
            The length of the result array must be the same as the input.
            In the result array, each entry is either a
            *QueryReplicationGroupSuccessResult* (for success), or a
            *GroupErrorResult* (for failure).
            
            The following fault may be set in error result entry:
            - *NotFound* if the replication group cannot be found.
            - *ProviderUnavailable* if the provider for the entity is temporarily unavailable.
            - *InactiveProvider* if the provider for the entity is not active.
            - *ProviderBusy* if the provider for the entity is busy.
            - *NotImplemented* if the provider does not implement this function.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/GroupOperationResult'
        '500':
          description: |2
            ***InvalidArgument***: if *ReplicationGroupFilter.groupId* is null or empty.
            
            ***ServiceNotInitialized***: if SMS service is not initialized.
            
            ***QueryExecutionFault***: if an error is encountered while processing the query request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/QueryExecutionFault'

  /sms/SmsStorageManager/{moId}/QueryStorageContainer:
    post:
      tags: [SmsStorageManager]
      summary: |2
        Query storage containers that are retrieved from VASA providers.
      operationId: SmsStorageManager_QueryStorageContainer
      description: |2
        Query storage containers that are retrieved from VASA providers.
        
        Stretched container with
        UNREPORTED sync status is not included in returned result.
        
        ***Required privileges:*** StorageViews.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QueryStorageContainerRequestType'
      responses:
        '200':
          description: |2
            *StorageContainerResult*
          content:
            application/json:
              schema:
                nullable: true
                $ref: '#/components/schemas/StorageContainerResult'
        '500':
          description: |2
            ***NotFound***: if the input provided as part of *StorageContainerSpec* is not found.
            
            ***QueryExecutionFault***: if an error is encountered while processing the query request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MethodFault'

  /sms/SmsStorageManager/{moId}/QueryVmfsDatastoreAssociatedWithLun:
    post:
      tags: [SmsStorageManager]
      summary: |2
        Get VMFS Datastore managed entity that are associated with
        StorageLun.
      operationId: SmsStorageManager_QueryVmfsDatastoreAssociatedWithLun
      description: |2
        Get VMFS Datastore managed entity that are associated with
        StorageLun.
        
        ***Required privileges:*** StorageViews.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QueryVmfsDatastoreAssociatedWithLunRequestType'
      responses:
        '200':
          description: |2
            Vmfs datastore for the file system id.
            
            Refers instance of *Datastore*.
          content:
            application/json:
              schema:
                nullable: true
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***NotFound***: if the specified entity does not exist.
            
            ***QueryExecutionFault***: if an error is encountered while
            processing the query request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MethodFault'

  /sms/SmsStorageManager/{moId}/SmsRefreshCACertificatesAndCRLs_Task:
    post:
      tags: [SmsStorageManager]
      summary: |2
        SMS pushes the latest CA root certificates and CRLs to all registered VASA providers.
      operationId: SmsStorageManager_SmsRefreshCACertificatesAndCRLs_Task
      description: |2
        SMS pushes the latest CA root certificates and CRLs to all registered VASA providers.
        
        ***Required privileges:*** StorageViews.ConfigureService
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SmsRefreshCACertificatesAndCRLsRequestType'
      responses:
        '200':
          description: |2
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***NotFound***: if there exists no provider for a *SmsProviderInfo.uid* in providerId
            
            ***InvalidArgument***: if a *SmsProviderInfo.uid* in providerId is invalid.
            
            ***CertificateRefreshFailed***: if an error is encountered while refreshing
            root certificates and CRLs for any provider.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MethodFault'

  /sms/SmsStorageManager/{moId}/RegisterProvider_Task:
    post:
      tags: [SmsStorageManager]
      summary: |2
        Register the provider and issue a sync operation on it.
      operationId: SmsStorageManager_RegisterProvider_Task
      description: |2
        Register the provider and issue a sync operation on it.
        
        ***Required privileges:*** StorageViews.ConfigureService
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RegisterProviderRequestType'
      responses:
        '200':
          description: |2
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***InvalidArgument***: if invalid input is provided.
            
            ***AlreadyExists***: if the provider already exists.
            
            ***ProviderRegistrationFault***: if an error is encountered during the
            registration operation. For instance, *IncorrectUsernamePassword*
            is thrown if the login credentials are incorrect. *CertificateNotTrusted*
            is thrown if the provider identifies itself with an untrusted certificate.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MethodFault'

  /sms/SmsStorageManager/{moId}/UnregisterProvider_Task:
    post:
      tags: [SmsStorageManager]
      summary: |2
        Unregister the provider.
      operationId: SmsStorageManager_UnregisterProvider_Task
      description: |2
        Unregister the provider.
        
        ***Required privileges:*** StorageViews.ConfigureService
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UnregisterProviderRequestType'
      responses:
        '200':
          description: |2
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***InvalidArgument***: if invalid input is provided.
            
            ***NotFound***: if the specified entity does not exist.
            
            ***ProviderUnregistrationFault***: if provider service is not available or
            any exception is thrown by the VASA provider
            during unregister provider.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MethodFault'

  /sms/SmsTask/{moId}/QuerySmsTaskInfo:
    post:
      tags: [SmsTask]
      summary: |2
        Get detailed information about this task.
      operationId: SmsTask_QuerySmsTaskInfo
      description: |2
        Get detailed information about this task.
        
        ***Required privileges:*** StorageViews.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            TaskInfo
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SmsTaskInfo'

  /sms/SmsTask/{moId}/QuerySmsTaskResult:
    post:
      tags: [SmsTask]
      summary: |2
        Get the result of the task.
      operationId: SmsTask_QuerySmsTaskResult
      description: |2
        Get the result of the task.
        
        ***Required privileges:*** StorageViews.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                $ref: '#/components/schemas/Any'

  /sms/VasaProvider/{moId}/FailoverReplicationGroup_Task:
    post:
      tags: [VasaProvider]
      summary: |2
        Failover the specified device groups.
      operationId: VasaProvider_FailoverReplicationGroup_Task
      description: |2
        Failover the specified device groups.
        
        This function will always be called
        at the replication target location.
        
        ***Required privileges:*** StorageViews.ConfigureService
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/FailoverReplicationGroupRequestType'
      responses:
        '200':
          description: |2
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***InvalidArgument***: if failoverParam is null or contains invalid data.
            
            ***NotImplemented***: if the provider does not implement this function.
            
            ***ProviderUnavailable***: if the provider is temporarily unavailable.
            
            ***ProviderOutOfResource***: if it is not possible to perform the operation
            due to lack of resources.
            
            ***InactiveProvider***: if the provider is inactive for the specified entity.
            
            ***TooMany***: Thrown if the Provider is unable to handle the given set of
            replication groups in one call. The client needs to call this method based
            on the maxBatchSize specified in the TooMany fault. If the maxBatchSize is
            not specified, the client is expected to call the function for each group
            individually (i.e. maxBatchSize = 1).
            
            ***ProviderBusy***: if the provider is busy and cannot process the request.
            
            ***SmsReplicationFault***: if an error is encountered while processing the request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MethodFault'

  /sms/VasaProvider/{moId}/PrepareFailoverReplicationGroup_Task:
    post:
      tags: [VasaProvider]
      summary: |2
        Prepare to fail over the specified replication groups.
      operationId: VasaProvider_PrepareFailoverReplicationGroup_Task
      description: |2
        Prepare to fail over the specified replication groups.
        
        This function is always
        called at the replication source location.
        
        ***Required privileges:*** StorageViews.ConfigureService
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PrepareFailoverReplicationGroupRequestType'
      responses:
        '200':
          description: |2
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***InvalidArgument***: if groupId is null or empty.
            
            ***NotImplemented***: if the provider does not implement this function.
            
            ***ProviderUnavailable***: if the provider is temporarily unavailable.
            
            ***ProviderOutOfResource***: if it is not possible to perform the operation
            due to lack of resources.
            
            ***TooMany***: Thrown if the Provider is unable to handle the given set of
            replication groups in one call. The client needs to call this method based
            on the maxBatchSize specified in the TooMany fault. If the maxBatchSize is
            not specified, the client is expected to call the function for each group
            individually (i.e. maxBatchSize = 1).
            
            ***InactiveProvider***: if the provider is inactive for the specified entity.
            
            ***ProviderBusy***: if the provider is busy and cannot process the request.
            
            ***SmsReplicationFault***: if an error is encountered while processing the request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MethodFault'

  /sms/VasaProvider/{moId}/PromoteReplicationGroup_Task:
    post:
      tags: [VasaProvider]
      summary: |2
        Promotes the replication groups currently *INTEST*
        to *FAILEDOVER*.
      operationId: VasaProvider_PromoteReplicationGroup_Task
      description: |2
        Promotes the replication groups currently *INTEST*
        to *FAILEDOVER*.
        
        This
        function must be called at the replication target location.
        
        ***Required privileges:*** StorageViews.ConfigureService
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PromoteReplicationGroupRequestType'
      responses:
        '200':
          description: |2
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***InvalidArgument***: if promoteParam is null or contains invalid data.
            
            ***NotImplemented***: if the provider does not implement this function.
            
            ***ProviderUnavailable***: if the provider is temporarily unavailable.
            
            ***ProviderOutOfResource***: if it is not possible to perform the operation
            due to lack of resources.
            
            ***InactiveProvider***: if the provider is inactive for the specified entity.
            
            ***TooMany***: Thrown if the Provider is unable to handle the given set of
            replication groups in one call. The client needs to call this method based
            on the maxBatchSize specified in the TooMany fault. If the maxBatchSize is
            not specified, the client is expected to call the function for each group
            individually (i.e. maxBatchSize = 1).
            
            ***ProviderBusy***: if the provider is busy and cannot process the request.
            
            ***SmsReplicationFault***: if an error is encountered while processing the request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MethodFault'

  /sms/VasaProvider/{moId}/QueryActiveAlarm:
    post:
      tags: [VasaProvider]
      summary: |2
        Query for the currently active alarms known to this VASA provider.
      operationId: VasaProvider_QueryActiveAlarm
      description: |2
        Query for the currently active alarms known to this VASA provider.
        
        Provider is expected to return Red and Yellow types of alarms only.
        No Green alarms should be included in the result for this API.
        
        ***Required privileges:*** StorageViews.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QueryActiveAlarmRequestType'
      responses:
        '200':
          description: |2
            *AlarmResult* containing all (or requested) active alarm objects owned
            by the VASA provider.
          content:
            application/json:
              schema:
                nullable: true
                $ref: '#/components/schemas/AlarmResult'
        '500':
          description: |2
            ***InvalidArgument***: if invalid input is provided.
            
            ***NotImplemented***: if the provider does not implement this function.
            
            ***NotFound***: if the specified entity does not exist.
            
            ***ProviderBusy***: if the provider is busy and cannot process the request.
            
            ***InactiveProvider***: if the provider is inactive for the specified entity.
            
            ***ProviderUnavailable***: if the provider is temporarily unavailable.
            
            ***QueryExecutionFault***: if an error is encountered while processing the
            query request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MethodFault'

  /sms/VasaProvider/{moId}/QueryPointInTimeReplica:
    post:
      tags: [VasaProvider]
      summary: |2
        Query for the point-in-time replicas available at the target location.
      operationId: VasaProvider_QueryPointInTimeReplica
      description: |2
        Query for the point-in-time replicas available at the target location.
        
        ***Required privileges:*** StorageViews.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QueryPointInTimeReplicaRequestType'
      responses:
        '200':
          description: |2
            An array of GroupOperationResult elements.
            
            Each of these elements is either *GroupErrorResult* or
            *QueryPointInTimeReplicaSuccessResult* or
            *QueryPointInTimeReplicaSummaryResult* for CDP capable replicators.
            
            The fault in the result entry can be set to:
            - *NotFound* if the replication group identifier is not present.
            - *DuplicateEntry* if the replication group identifier is duplicate.
            - *TooMany* if the number of entries is too large to be returned in one call.
            - *QueryExecutionFault* for any other error.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/GroupOperationResult'
        '500':
          description: |2
            ***InvalidArgument***: if groupId is null or empty, or queryParam is invalid.
            
            ***NotImplemented***: if the provider does not implement this function.
            
            ***ProviderUnavailable***: if the provider is temporarily unavailable.
            
            ***InactiveProvider***: if the provider is inactive for the specified
            replication groups.
            
            ***ProviderBusy***: if the provider is busy and cannot process the request.
            
            ***QueryExecutionFault***: if an error is encountered while processing
            the query request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MethodFault'

  /sms/VasaProvider/{moId}/QueryProviderInfo:
    post:
      tags: [VasaProvider]
      summary: |2
        Get provider information.
      operationId: VasaProvider_QueryProviderInfo
      description: |2
        Get provider information.
        
        ***Required privileges:*** StorageViews.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SmsProviderInfo'

  /sms/VasaProvider/{moId}/QueryReplicationGroup:
    post:
      tags: [VasaProvider]
      summary: |2
        Query for the replication group details.
      operationId: VasaProvider_QueryReplicationGroup
      description: |2
        Query for the replication group details.
        
        ***Required privileges:*** StorageViews.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QueryReplicationGroupRequestType'
      responses:
        '200':
          description: |2
            An array of *GroupOperationResult* elements.
            
            If the input array is null or empty, VASA Provider needs to return all
            available replication groups. Depending on the number of replication
            groups to be returned, VASA Provider can return either a list of
            *GroupOperationResult* or a list of
            *QueryReplicationGroupSuccessResult*. However, VASA
            Provider should not return a hybrid result.
            
            If the input array is not empty, VASA Provider needs to return an array
            of results, one for each entry in the input. Each entry in the returned
            array is either a *QueryReplicationGroupSuccessResult*
            (for success), or a *GroupErrorResult* (for failure).
            The length of the result arrays must be the same as the input.
            
            The fault in the result entry can be set to:
            - *NotFound* if the replication group identifier is not present.
            - *DuplicateEntry* if the replication group identifier is duplicate.
            - *TooMany* if the number of entries is too large to be returned in one call.
            - *QueryExecutionFault* for any other error.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/GroupOperationResult'
        '500':
          description: |2
            ***NotImplemented***: if the provider does not implement this function.
            
            ***ProviderUnavailable***: if the provider is temporarily unavailable.
            
            ***InactiveProvider***: if the provider is inactive for the specified
            replication groups.
            
            ***ProviderBusy***: if the provider is busy and cannot process the request.
            
            ***QueryExecutionFault***: if an error is encountered while processing
            the query request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MethodFault'

  /sms/VasaProvider/{moId}/QueryReplicationPeer:
    post:
      tags: [VasaProvider]
      summary: |2
        Query for the replication peer fault domains.
      operationId: VasaProvider_QueryReplicationPeer
      description: |2
        Query for the replication peer fault domains.
        
        ***Required privileges:*** StorageViews.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QueryReplicationPeerRequestType'
      responses:
        '200':
          description: |2
            An array of *QueryReplicationPeerResult*.
            
            If the input array is null or empty, VASA provider needs to return
            result for all available source FaultDomain(s). If the input array is
            not empty, VASA Provider needs to return one entry in result for each
            entry in the input. The length of the input and result arrays must be
            same in that case.
            
            The fault in the result entry can be set to:
            - *NotFound* if the fault domain identifier is not present.
            - *DuplicateEntry* if the fault domain identifier is duplicate.
            - *TooMany* if the number of entries is too large to be returned in one call.
            - *QueryExecutionFault* for any other error.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/QueryReplicationPeerResult'
        '500':
          description: |2
            ***NotImplemented***: if the provider does not implement this function.
            
            ***ProviderUnavailable***: if the provider is temporarily unavailable.
            
            ***InactiveProvider***: if the provider is inactive for the specified
            fault domains.
            
            ***ProviderBusy***: if the provider is busy and cannot process the request.
            
            ***QueryExecutionFault***: if an error is encountered while processing
            the query request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MethodFault'

  /sms/VasaProvider/{moId}/VasaProviderReconnect_Task:
    post:
      tags: [VasaProvider]
      summary: |2
        Reconnect to the provider.
      operationId: VasaProvider_VasaProviderReconnect_Task
      description: |2
        Reconnect to the provider.
        
        This API will be used to reconnect to a provider that
        is in "disconnected" state. If reconnecting fails due to InvalidCertificate exception,
        that means the current provider certificate is expired or corrupted. Then user has to
        recover the provider following these steps:
        1\. Unregister the provider using *SmsStorageManager.UnregisterProvider_Task*
        2\. Provision a new self signed certificate for the provider
        3\. Register the provider using *SmsStorageManager.RegisterProvider_Task*
        If the provider is not in "disconnected" state, this operation will be a no-op.
        Note: This API works only for providers that support VASA 2.0 and onwards.
        
        ***Required privileges:*** StorageViews.ConfigureService
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***InvalidCertificate***: if the provider certificate is invalid
            
            ***ProviderConnectionFailed***: if an error is encountered while reconnecting to
            the provider.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MethodFault'

  /sms/VasaProvider/{moId}/VasaProviderRefreshCertificate_Task:
    post:
      tags: [VasaProvider]
      summary: |2
        Refresh a CA signed certificate for the provider.
      operationId: VasaProvider_VasaProviderRefreshCertificate_Task
      description: |2
        Refresh a CA signed certificate for the provider.
        
        This API will be used when provider
        certificate is about to expire, but still within soft or hard limit window. If the
        provider is in "disconnected" state, this operation will be a no-op.
        Note: This API works only for providers that support VASA 2.0 and onwards.
        
        ***Required privileges:*** StorageViews.ConfigureService
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***CertificateRefreshFailed***: if an error is encountered while refreshing
            CA signed certificate for the provider.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CertificateRefreshFailed'

  /sms/VasaProvider/{moId}/ReverseReplicateGroup_Task:
    post:
      tags: [VasaProvider]
      summary: |2
        Initiate replication in the reverse way, making the currently
        *FAILEDOVER* devices as sources.
      operationId: VasaProvider_ReverseReplicateGroup_Task
      description: |2
        Initiate replication in the reverse way, making the currently
        *FAILEDOVER* devices as sources.
        
        ***Required privileges:*** StorageViews.ConfigureService
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ReverseReplicateGroupRequestType'
      responses:
        '200':
          description: |2
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***InvalidArgument***: if groupId is null or empty.
            
            ***NotImplemented***: if the provider does not implement this function.
            
            ***ProviderUnavailable***: if the provider is temporarily unavailable.
            
            ***ProviderOutOfResource***: if it is not possible to perform the operation
            due to lack of resources.
            
            ***InactiveProvider***: if the provider is inactive for the specified entity.
            
            ***TooMany***: Thrown if the Provider is unable to handle the given set of
            replication groups in one call. The client needs to call this method based
            on the maxBatchSize specified in the TooMany fault. If the maxBatchSize is
            not specified, the client is expected to call the function for each group
            individually (i.e. maxBatchSize = 1).
            
            ***ProviderBusy***: if the provider is busy and cannot process the request.
            
            ***SmsReplicationFault***: if an error is encountered while processing the request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MethodFault'

  /sms/VasaProvider/{moId}/VasaProviderRevokeCertificate_Task:
    post:
      tags: [VasaProvider]
      summary: |2
        Revoke CA signed certificate of the provider.
      operationId: VasaProvider_VasaProviderRevokeCertificate_Task
      description: |2
        Revoke CA signed certificate of the provider.
        
        This API will unregister the
        provider automatically.
        Note: This API works only for providers that support VASA 2.0 and onwards.
        
        ***Required privileges:*** StorageViews.ConfigureService
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***CertificateRevocationFailed***: if an error is encountered while revoking CA signed
            certificate of the provider.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CertificateRevocationFailed'

  /sms/VasaProvider/{moId}/VasaProviderSync_Task:
    post:
      tags: [VasaProvider]
      summary: |2
        Issue a sync for the given Storage Array.
      operationId: VasaProvider_VasaProviderSync_Task
      description: |2
        Issue a sync for the given Storage Array.
        
        ***Required privileges:*** StorageViews.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VasaProviderSyncRequestType'
      responses:
        '200':
          description: |2
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***InvalidArgument***: if invalid input is provided.
            
            ***ProviderSyncFailed***: if an error is encountered while
            executing sync operation for the
            provider.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProviderSyncFailed'

  /sms/VasaProvider/{moId}/SyncReplicationGroup_Task:
    post:
      tags: [VasaProvider]
      summary: |2
        Synchronize the data between source and replica for the specified
        replication group.
      operationId: VasaProvider_SyncReplicationGroup_Task
      description: |2
        Synchronize the data between source and replica for the specified
        replication group.
        
        This function will always be called at the replication
        target location.
        
        ***Required privileges:*** StorageViews.ConfigureService
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SyncReplicationGroupRequestType'
      responses:
        '200':
          description: |2
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***InvalidArgument***: if groupId is null or empty, or pitName is null.
            
            ***NotImplemented***: if the provider does not implement this function.
            
            ***ProviderUnavailable***: if the provider is temporarily unavailable.
            
            ***ProviderOutOfResource***: if it is not possible to perform the operation
            due to lack of resources.
            
            ***InactiveProvider***: if the provider is inactive for the specified entity.
            
            ***ProviderBusy***: if the provider is busy and cannot process the request.
            
            ***SmsReplicationFault***: if an error is encountered while processing the request.
            
            ***TooMany***: Thrown if the Provider is unable to handle the given set of
            replication groups in one call. The client needs to call this method based
            on the maxBatchSize specified in the TooMany fault. If the maxBatchSize is
            not specified, the client is expected to call the function for each group
            individually (i.e. maxBatchSize = 1).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MethodFault'

  /sms/VasaProvider/{moId}/TestFailoverReplicationGroupStart_Task:
    post:
      tags: [VasaProvider]
      summary: |2
        Start a test failover for the specified replication groups.
      operationId: VasaProvider_TestFailoverReplicationGroupStart_Task
      description: |2
        Start a test failover for the specified replication groups.
        
        This
        function will always be called at the replication target location.
        
        ***Required privileges:*** StorageViews.ConfigureService
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TestFailoverReplicationGroupStartRequestType'
      responses:
        '200':
          description: |2
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***InvalidArgument***: if testFailoverParam is null or contains invalid data.
            
            ***NotImplemented***: if the provider does not implement this function.
            
            ***ProviderUnavailable***: if the provider is temporarily unavailable.
            
            ***ProviderOutOfResource***: if it is not possible to perform the operation
            due to lack of resources.
            
            ***InactiveProvider***: if the provider is inactive for the specified entity.
            
            ***TooMany***: Thrown if the Provider is unable to handle the given set of
            replication groups in one call. The client needs to call this method based
            on the maxBatchSize specified in the TooMany fault. If the maxBatchSize is
            not specified, the client is expected to call the function for each group
            individually (i.e. maxBatchSize = 1).
            
            ***ProviderBusy***: if the provider is busy and cannot process the request.
            
            ***SmsReplicationFault***: if an error is encountered while processing the request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MethodFault'

  /sms/VasaProvider/{moId}/TestFailoverReplicationGroupStop_Task:
    post:
      tags: [VasaProvider]
      summary: |2
        Stop the ongoing test failover.
      operationId: VasaProvider_TestFailoverReplicationGroupStop_Task
      description: |2
        Stop the ongoing test failover.
        
        This function will always be called at
        the replication target location.
        
        ***Required privileges:*** StorageViews.ConfigureService
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TestFailoverReplicationGroupStopRequestType'
      responses:
        '200':
          description: |2
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***InvalidArgument***: if groupId is null or empty.
            
            ***NotImplemented***: if the provider does not implement this function.
            
            ***ProviderUnavailable***: if the provider is temporarily unavailable.
            
            ***ProviderOutOfResource***: if it is not possible to perform the operation
            due to lack of resources.
            
            ***InactiveProvider***: if the provider is inactive for the specified
            replication groups.
            
            ***TooMany***: Thrown if the Provider is unable to handle the given set of
            replication groups in one call. The client needs to call this method based
            on the maxBatchSize specified in the TooMany fault. If the maxBatchSize is
            not specified, the client is expected to call the function for each group
            individually (i.e. maxBatchSize = 1).
            
            ***ProviderBusy***: if the provider is busy and cannot process the request.
            
            ***SmsReplicationFault***: if an error is encountered while processing the request.
            
            ***NotSupportedByProvider***: if the provider does not support force operation.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MethodFault'

  /vslm/VslmServiceInstance/{moId}/RetrieveContent:
    post:
      tags: [VslmServiceInstance]
      summary: |2
        Retrieves the properties of the Storage Lifecycle Management service
        instance.
      operationId: VslmServiceInstance_RetrieveContent
      description: |2
        Retrieves the properties of the Storage Lifecycle Management service
        instance.
        
        ***Required privileges:*** System.Anonymous
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
        - {}
      responses:
        '200':
          description: |2
            Service instance properties that provide access to
            Storage Lifecycle Management managed objects.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VslmServiceInstanceContent'

  /vslm/VslmServiceInstance/{moId}/content:
    get:
      tags: [VslmServiceInstance]
      summary: |2
        Contains references to Storage Lifecycle Management managed objects.
      operationId: VslmServiceInstance_getContent
      description: |2
        Contains references to Storage Lifecycle Management managed objects.
        
        ***Required privileges:*** System.Anonymous
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
        - {}
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VslmServiceInstanceContent'

  /vslm/VslmSessionManager/{moId}/VslmLoginByToken:
    post:
      tags: [VslmSessionManager]
      summary: |2
        Login to the VSLM service by using SSO token.
      operationId: VslmSessionManager_VslmLoginByToken
      description: |2
        Login to the VSLM service by using SSO token.
        
        VSLM will validate the user
        token from the context. The delegated token passed as a parameter will be
        used by VSLM to login to VC for authorization purposes.
        Once login successfully returns, a new session is established for the
        client. This session is only valid for the lifetime of the supplied
        delegated token. Any calls made on a session which exceeds this lifetime
        will result in a SecurityError. The client is expected to logout of the
        current session and subsequently re-login with a new delegated token to
        establish a new session.
        
        ***Required privileges:*** System.Anonymous
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
        - {}
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VslmLoginByTokenRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***InvalidLogin***: if there is no token provided or the token
            could not be validated.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InvalidLogin'

  /vslm/VslmSessionManager/{moId}/VslmLogout:
    post:
      tags: [VslmSessionManager]
      summary: |2
        Logs out of the VSLM Service.
      operationId: VslmSessionManager_VslmLogout
      description: |2
        Logs out of the VSLM Service.
        
        ***Required privileges:*** StoragLifecycle.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '204':
          description: |2
            No Content

  /vslm/VslmStorageLifecycleManager/{moId}/VslmQueryDatastoreInfo:
    post:
      tags: [VslmStorageLifecycleManager]
      summary: |2
        Query the mapping of *Datacenter* and *Datastore*
        for a specified datastore url.
      operationId: VslmStorageLifecycleManager_VslmQueryDatastoreInfo
      description: |2
        Query the mapping of *Datacenter* and *Datastore*
        for a specified datastore url.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VslmQueryDatastoreInfoRequestType'
      responses:
        '200':
          description: |2
            Returns array of *VslmQueryDatastoreInfoResult*
            representing the mapping between datastores and datacenters.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/VslmQueryDatastoreInfoResult'
        '500':
          description: |2
            ***NotFound***: If the specified datastoreUrl cannot be found.
            
            ***VslmFault***: If a VSLM internal server error occurred.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MethodFault'

  /vslm/VslmStorageLifecycleManager/{moId}/VslmSyncDatastore:
    post:
      tags: [VslmStorageLifecycleManager]
      summary: |2
        Sync the FCD info on the passed in datastore.
      operationId: VslmStorageLifecycleManager_VslmSyncDatastore
      description: |2
        Sync the FCD info on the passed in datastore.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VslmSyncDatastoreRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***InvalidDatastore***: If the operation cannot be performed on the
            datastore.
            
            ***NotFound***: If matching datastore could not be found for the given
            datastoreMoId.
            
            ***VslmSyncFault***: If an exception occured during datastore sync.
            
            ***VslmFault***: If a VSLM internal server error occurred.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MethodFault'

  /vslm/VslmTask/{moId}/VslmCancelTask:
    post:
      tags: [VslmTask]
      summary: |2
        Cancel a running or queued task.
      operationId: VslmTask_VslmCancelTask
      description: |2
        Cancel a running or queued task.
        
        A task may only be canceled if it is
        cancelable. Multiple cancel requests will be treated as a single
        cancellation request. Canceling a completed task will throw an
        InvalidState exception.
        
        If a task is canceled, its runtime state will be set to
        *error* and the *VslmTaskInfo.cancelled* flag will
        be set to true.
        
        A cancel operation is asynchronous. The operation may return before the
        task is canceled.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***InvalidState***: - if the task is already canceled or completed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InvalidState'

  /vslm/VslmTask/{moId}/VslmQueryInfo:
    post:
      tags: [VslmTask]
      summary: |2
        Get detailed information about this task.
      operationId: VslmTask_VslmQueryInfo
      description: |2
        Get detailed information about this task.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            TaskInfo
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VslmTaskInfo'

  /vslm/VslmTask/{moId}/VslmQueryTaskResult:
    post:
      tags: [VslmTask]
      summary: |2
        Get the result of the task.
      operationId: VslmTask_VslmQueryTaskResult
      description: |2
        Get the result of the task.
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                $ref: '#/components/schemas/Any'

  /vslm/VslmVStorageObjectManager/{moId}/VslmAttachDisk_Task:
    post:
      tags: [VslmVStorageObjectManager]
      summary: |2
        Attach an existing disk to this virtual machine.
      operationId: VslmVStorageObjectManager_VslmAttachDisk_Task
      description: |2
        Attach an existing disk to this virtual machine.
        
        A minimum virtual machine version of 'vmx-13' is required for this
        operation to succeed. If a compatible VM version is not satisfied,
        a *DeviceUnsupportedForVmVersion* fault will be thrown.
        
        *VslmSyncFault* will set in the task error if the
        the FCD was attached successfully in the backend, however, there
        was a failure in syncing the datastore or FCD. The attach disk
        operation is not idempotent, implying, any attempt to re-attach
        the FCD to the same VM would cause an error. The sync fault can
        be ignored safely as Pandora DB does not track FCDs attached
        to VMs as of vSphere 7.0.
        
        ***Required privileges:*** VirtualMachine.Config.AddExistingDisk
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VslmAttachDiskRequestType'
      responses:
        '200':
          description: |2
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***NotFound***: if the disk object cannot be found.
            
            ***VmConfigFault***: if the virtual machine's configuration is invalid.
            
            ***FileFault***: if there is a problem creating or accessing the virtual
            machine's files for this operation.
            
            ***InvalidState***: if the operation cannot be performed in the current
            state of the virtual machine. For example, because the virtual
            machine's configuration is not available.
            
            ***InvalidDatastore***: If the datastore cannot be found or inaccessible.
            
            ***InvalidController***: If the specified controller cannot be found or
            the specified unitNumber is already taken, or
            the controller has no free slots.
            
            ***MissingController***: If the virtual machine has no or more than one
            available controllers when controllerKey is
            unset.
            
            ***DeviceUnsupportedForVmVersion***: If the virtual machine's version is
            incompatible for the given device.
            
            ***VslmFault***: If a VSLM internal server error occurred.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MethodFault'

  /vslm/VslmVStorageObjectManager/{moId}/VslmAttachTagToVStorageObject:
    post:
      tags: [VslmVStorageObjectManager]
      summary: |2
        Attach a tag to a virtual storage object.
      operationId: VslmVStorageObjectManager_VslmAttachTagToVStorageObject
      description: |2
        Attach a tag to a virtual storage object.
        
        Requires privilege InventoryService.Tagging.AttachTag on root folder
        
        ***Required privileges:*** System.Read
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VslmAttachTagToVStorageObjectRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***NotFound***: If the specified category or tag cannot be found.
            
            ***VslmFault***: If a VSLM internal server error occurred.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MethodFault'

  /vslm/VslmVStorageObjectManager/{moId}/VslmClearVStorageObjectControlFlags:
    post:
      tags: [VslmVStorageObjectManager]
      summary: |2
        Clear control flags on VStorageObject.
      operationId: VslmVStorageObjectManager_VslmClearVStorageObjectControlFlags
      description: |2
        Clear control flags on VStorageObject.
        
        The control flags are defined in
        *vslmVStorageObjectControlFlag_enum*.
        
        Requires Datastore.FileManagement privilege on the datastore where the
        virtual storage object is located.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VslmClearVStorageObjectControlFlagsRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***InvalidDatastore***: If the operation cannot be performed on
            the datastore.
            
            ***InvalidState***: If the operation cannot be performed on the disk.
            The disk may be consumed.
            
            ***NotFound***: If specified virtual storage object cannot
            be found.
            
            ***VslmFault***: If a VSLM internal server error occurred.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MethodFault'

  /vslm/VslmVStorageObjectManager/{moId}/VslmCloneVStorageObject_Task:
    post:
      tags: [VslmVStorageObjectManager]
      summary: |2
        Clone a virtual storage object.
      operationId: VslmVStorageObjectManager_VslmCloneVStorageObject_Task
      description: |2
        Clone a virtual storage object.
        
        Requires Datastore.FileManagement privilege on both source and
        destination datastore.
        
        *VslmSyncFault* will set in the task error if the
        cloneVStorageObject completed successfully but the datastore
        synchronization failed.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VslmCloneVStorageObjectRequestType'
      responses:
        '200':
          description: |2
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***FileFault***: If an error occurs while cloning the virtual
            storage object.
            
            ***InvalidDatastore***: If the operation cannot be performed on the
            datastore.
            
            ***NotFound***: If specified virtual storage object cannot be
            found.
            
            ***VslmFault***: If a VSLM internal server error occurred.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MethodFault'

  /vslm/VslmVStorageObjectManager/{moId}/VslmCreateDisk_Task:
    post:
      tags: [VslmVStorageObjectManager]
      summary: |2
        Create a virtual disk, which is a storage object with
        *disk*
        as consumption type.
      operationId: VslmVStorageObjectManager_VslmCreateDisk_Task
      description: |2
        Create a virtual disk, which is a storage object with
        *disk*
        as consumption type.
        
        Requires Datastore.FileManagement privilege on the datastore where the
        virtual disk object is created.
        
        *VslmSyncFault* will set in the task error if the
        createDisk completed successfully in the backed but the datastore
        synchronization or FCD retrieval failed. The sync fault can be ignored
        with the risk of Pandora not recognizing the FCD or Pandora DB
        missing the FCD, consequently, affecting the return of
        *VslmVStorageObjectManager.VslmListVStorageObjectForSpec* and *VslmVStorageObjectManager.VslmRetrieveVStorageObjects*
        APIs.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VslmCreateDiskRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to monitor
            monitor the operation. The *info.result*
            property in the *Task* contains the newly created
            *VStorageObject* upon success.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***FileFault***: If an error occurs when creating the virtual disk.
            
            ***InvalidDatastore***: If the operation cannot be performed on the
            datastore.
            
            ***VslmFault***: If a VSLM internal server error occurred.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MethodFault'

  /vslm/VslmVStorageObjectManager/{moId}/VslmCreateDiskFromSnapshot_Task:
    post:
      tags: [VslmVStorageObjectManager]
      summary: |2
        Creates a new Disk from given snapshot of a VStorageObject.
      operationId: VslmVStorageObjectManager_VslmCreateDiskFromSnapshot_Task
      description: |2
        Creates a new Disk from given snapshot of a VStorageObject.
        
        Requires Datastore.FileManagement privilege.
        
        *VslmSyncFault* will set in the task error if the
        createDiskFromSnapshot completed successfully but the datastore
        synchronization failed.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VslmCreateDiskFromSnapshotRequestType'
      responses:
        '200':
          description: |2
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***FileFault***: If an error occurs while snapshotting the virtual
            storage object.
            
            ***InvalidDatastore***: If the operation cannot be performed on the
            datastore.
            
            ***InvalidState***: If the operation cannot be performed on the disk.
            
            ***NotFound***: If specified virtual storage object cannot be found.
            
            ***VslmFault***: If a VSLM internal server error occurred.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MethodFault'

  /vslm/VslmVStorageObjectManager/{moId}/VslmCreateSnapshot_Task:
    post:
      tags: [VslmVStorageObjectManager]
      summary: |2
        Creates a snapshot of a given VStorageObject.
      operationId: VslmVStorageObjectManager_VslmCreateSnapshot_Task
      description: |2
        Creates a snapshot of a given VStorageObject.
        
        Requires Datastore.FileManagement privilege.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VslmCreateSnapshotRequestType'
      responses:
        '200':
          description: |2
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***FileFault***: If an error occurs while snapshotting the virtual
            storage object.
            
            ***InvalidDatastore***: If the operation cannot be performed on the
            datastore.
            
            ***InvalidState***: If the operation cannot be performed on the disk.
            
            ***NotFound***: If specified virtual storage object cannot be found.
            
            ***VslmFault***: If a VSLM internal server error occurred.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MethodFault'

  /vslm/VslmVStorageObjectManager/{moId}/VslmDeleteSnapshot_Task:
    post:
      tags: [VslmVStorageObjectManager]
      summary: |2
        Deletes a given snapshot of a VStorageObject.
      operationId: VslmVStorageObjectManager_VslmDeleteSnapshot_Task
      description: |2
        Deletes a given snapshot of a VStorageObject.
        
        Requires Datastore.FileManagement privilege.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VslmDeleteSnapshotRequestType'
      responses:
        '200':
          description: |2
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***FileFault***: If an error occurs while snapshotting the virtual
            storage object.
            
            ***InvalidDatastore***: If the operation cannot be performed on the
            datastore.
            
            ***InvalidState***: If the operation cannot be performed on the disk.
            
            ***NotFound***: If specified virtual storage object cannot be found.
            
            ***VslmFault***: If a VSLM internal server error occurred.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MethodFault'

  /vslm/VslmVStorageObjectManager/{moId}/VslmDeleteVStorageObject_Task:
    post:
      tags: [VslmVStorageObjectManager]
      summary: |2
        Delete a virtual storage object and its associated backings.
      operationId: VslmVStorageObjectManager_VslmDeleteVStorageObject_Task
      description: |2
        Delete a virtual storage object and its associated backings.
        
        Requires Datastore.FileManagement privilege on the datastore where the
        virtual storage object is located.
        
        *VslmSyncFault* will set in the task error if the
        delete of the FCD succeeded in the backend, however, there was a
        issue with syncing the datastore. The error can be ignored with
        the anticipation of Pandora resolving this automatically and the
        risk of Pandora DB having stale FCDs consequently affecting the
        return of *VslmVStorageObjectManager.VslmListVStorageObjectForSpec* and
        *VslmVStorageObjectManager.VslmRetrieveVStorageObjects* APIs.
        Any subsequent operation on the FCD is guranteed to fail.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VslmDeleteVStorageObjectRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to
            monitor the operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***FileFault***: If an error occurs when deleting the virtual storage
            object.
            
            ***NotFound***: If the specified virtual storage object cannot be
            found.
            
            ***InvalidDatastore***: If the operation cannot be performed on the
            datastore.
            
            ***InvalidState***: If the operation cannot be performed on the disk.
            The disk may be consumed and cannot be deleted.
            
            ***TaskInProgress***: If the virtual storage object is busy.
            
            ***VslmFault***: If a VSLM internal server error occurred.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MethodFault'

  /vslm/VslmVStorageObjectManager/{moId}/VslmDetachTagFromVStorageObject:
    post:
      tags: [VslmVStorageObjectManager]
      summary: |2
        Detach a tag from a virtual storage object.
      operationId: VslmVStorageObjectManager_VslmDetachTagFromVStorageObject
      description: |2
        Detach a tag from a virtual storage object.
        
        Requires privilege InventoryService.Tagging.AttachTag on root folder
        
        ***Required privileges:*** System.Read
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VslmDetachTagFromVStorageObjectRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***NotFound***: If the specified category or tag cannot be found.
            
            ***VslmFault***: If a VSLM internal server error occurred.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MethodFault'

  /vslm/VslmVStorageObjectManager/{moId}/VslmExtendDisk_Task:
    post:
      tags: [VslmVStorageObjectManager]
      summary: |2
        Expand the capacity of a virtual disk, which is a storage object with
        *disk*, to the new
        capacity.
      operationId: VslmVStorageObjectManager_VslmExtendDisk_Task
      description: |2
        Expand the capacity of a virtual disk, which is a storage object with
        *disk*, to the new
        capacity.
        
        If new capacity is smaller than current disk capacity, then
        operation fails due to invalid capacity. If new capacity is greater
        than current disk capacity, then operation proceeds. If new capacity
        is equal to current disk ccapcity, then operation succeeds without
        any actual extension.
        The extended disk region will be the same as the original disk:
        \- For a zerothick disk, the extended disk region will be zeroedthick.
        \- For an eagerzerothick disk, the extended disk region will be
        eagerzeroedthick
        \- A thin-provisioned disk will always be extended as a thin-provisioned
        disk.
        
        *VslmSyncFault* will set in the task error if the
        extendDisk completed successfully but the datastore
        synchronization failed.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VslmExtendDiskRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to
            monitor the operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***FileFault***: If an error occurs while extending the virtual disk.
            
            ***NotFound***: If the specified virtual storage object cannot be
            found.
            
            ***InvalidDatastore***: If the operation cannot be performed on the
            datastore.
            
            ***InvalidState***: If the operation cannot be performed on the disk.
            The disk may be consumed and cannot be extended.
            
            ***TaskInProgress***: If the virtual storage object is busy.
            
            ***VslmFault***: If a VSLM internal server error occurred.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MethodFault'

  /vslm/VslmVStorageObjectManager/{moId}/VslmInflateDisk_Task:
    post:
      tags: [VslmVStorageObjectManager]
      summary: |2
        Inflate a sparse or thin-provisioned virtual disk up to the full size.
      operationId: VslmVStorageObjectManager_VslmInflateDisk_Task
      description: |2
        Inflate a sparse or thin-provisioned virtual disk up to the full size.
        
        Additional space allocated to the disk as a result of this operation
        will be filled with zeros.
        
        Currently inflateDisk API only supports the following combinations:
        Valid provisioning type: THIN;
        Valid Datastore: VMFS, NFS.
        Inflating a disk is not applicable for VVol/VSAN datastore.
        
        Requires Datastore.FileManagement privilege on the datastore where the
        virtual storage object is located.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VslmInflateDiskRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to
            monitor the operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***FileFault***: If an error occurs while inflating the virtual disk.
            
            ***NotFound***: If the specified virtual storage object cannot be
            found.
            
            ***InvalidDatastore***: If the operation cannot be performed on the
            datastore.
            
            ***InvalidState***: If the operation cannot be performed on the disk.
            The disk may be consumed and cannot be extended.
            
            ***TaskInProgress***: If the virtual storage object is busy.
            
            ***VslmFault***: If a VSLM internal server error occurred.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MethodFault'

  /vslm/VslmVStorageObjectManager/{moId}/VslmListTagsAttachedToVStorageObject:
    post:
      tags: [VslmVStorageObjectManager]
      summary: |2
        Lists all tags attached to virtual storage object.
      operationId: VslmVStorageObjectManager_VslmListTagsAttachedToVStorageObject
      description: |2
        Lists all tags attached to virtual storage object.
        
        ***Required privileges:*** System.Read
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VslmListTagsAttachedToVStorageObjectRequestType'
      responses:
        '200':
          description: |2
            The list of Tag-association tuples associated with the
            virtual storage object.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/VslmTagEntry'
        '500':
          description: |2
            ***NotFound***: If the specified category or tag cannot be found.
            
            ***VslmFault***: If a VSLM internal server error occurred.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MethodFault'

  /vslm/VslmVStorageObjectManager/{moId}/VslmListVStorageObjectsAttachedToTag:
    post:
      tags: [VslmVStorageObjectManager]
      summary: |2
        Lists all virtual storage objects attached to the tag.
      operationId: VslmVStorageObjectManager_VslmListVStorageObjectsAttachedToTag
      description: |2
        Lists all virtual storage objects attached to the tag.
        
        ***Required privileges:*** System.Read
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VslmListVStorageObjectsAttachedToTagRequestType'
      responses:
        '200':
          description: |2
            The list of IDs of the virtual storage objects.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/ID'
        '500':
          description: |2
            ***NotFound***: If the specified category or tag cannot be found.
            
            ***VslmFault***: If a VSLM internal server error occurred.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MethodFault'

  /vslm/VslmVStorageObjectManager/{moId}/VslmListVStorageObjectForSpec:
    post:
      tags: [VslmVStorageObjectManager]
      summary: |2
        List virtual storage objects matching all the
        *VslmVsoVStorageObjectQuerySpec*.
      operationId: VslmVStorageObjectManager_VslmListVStorageObjectForSpec
      description: |2
        List virtual storage objects matching all the
        *VslmVsoVStorageObjectQuerySpec*.
        
        The results are determined
        by ANDing the *VslmVsoVStorageObjectQuerySpec* while ORing each
        of the values specified as a part of the
        *VslmVsoVStorageObjectQuerySpec.queryValue* field. Currently,
        only a single value in *VslmVsoVStorageObjectQuerySpec.queryValue*
        is supported.
        Expect that not all results will be returned. If all results are not
        returned, *VslmVsoVStorageObjectQueryResult.allRecordsReturned*
        flag will be set to false. Results will be returned in
        *VslmVsoVStorageObjectQueryResult.id* order. To query for addtional
        objects, "add ID &gt; last ID returned" to the query and call
        *VslmVStorageObjectManager.VslmListVStorageObjectForSpec* again.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VslmListVStorageObjectForSpecRequestType'
      responses:
        '200':
          description: |2
            *VslmVsoVStorageObjectQueryResult* array containing the
            list of IDs of the virtual storage objects sorted in ascending
            order and matching the query.
          content:
            application/json:
              schema:
                nullable: true
                $ref: '#/components/schemas/VslmVsoVStorageObjectQueryResult'

  /vslm/VslmVStorageObjectManager/{moId}/VslmQueryChangedDiskAreas:
    post:
      tags: [VslmVStorageObjectManager]
      summary: |2
        Get a list of areas of a virtual disk that have been modified since a
        well-defined point in the past.
      operationId: VslmVStorageObjectManager_VslmQueryChangedDiskAreas
      description: |2
        Get a list of areas of a virtual disk that have been modified since a
        well-defined point in the past.
        
        The beginning of the change interval is
        identified by "changeId", while the end of the change interval is implied
        by the snapshot ID passed in.
        
        Note that the result of this function may contain "false positives"
        (i.e: flag areas of the disk as modified that are not). However, it is
        guaranteed that no changes will be missed.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VslmQueryChangedDiskAreasRequestType'
      responses:
        '200':
          description: |2
            Returns a data structure specifying extents of the virtual disk
            that have changed since the thime the changeId string was
            obtained.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DiskChangeInfo'
        '500':
          description: |2
            ***InvalidDatastore***: If the operation cannot be performed on the
            datastore.
            
            ***NotFound***: If specified virtual storage object or snapshot
            cannot be found.
            
            ***FileFault***: if the virtual disk files cannot be accessed/queried.
            
            ***InvalidState***: if change tracking is not supported for this
            particular disk.
            
            ***InvalidArgument***: if startOffset is beyond the end of the virtual
            disk or changeId is invalid.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MethodFault'

  /vslm/VslmVStorageObjectManager/{moId}/VslmQueryGlobalCatalogSyncStatus:
    post:
      tags: [VslmVStorageObjectManager]
      summary: |2
        Gets the synchronization status of the Global Catalog.
      operationId: VslmVStorageObjectManager_VslmQueryGlobalCatalogSyncStatus
      description: |2
        Gets the synchronization status of the Global Catalog.
        
        This API returns an
        array of DatastoreSyncStatuses showing the synchronization status for each
        datastore currently being tracked by the Global Catalog. This can be used
        to see if the Global Catalog search results are fully up-to-date and also to
        check if the Global Catalog is making progress on bringing a datastore's
        information up to date.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/VslmDatastoreSyncStatus'

  /vslm/VslmVStorageObjectManager/{moId}/VslmQueryGlobalCatalogSyncStatusForDatastore:
    post:
      tags: [VslmVStorageObjectManager]
      summary: |2
        Gets the synchronization state of the Global Catalog for the specified datastore.
      operationId: VslmVStorageObjectManager_VslmQueryGlobalCatalogSyncStatusForDatastore
      description: |2
        Gets the synchronization state of the Global Catalog for the specified datastore.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VslmQueryGlobalCatalogSyncStatusForDatastoreRequestType'
      responses:
        '200':
          description: |2
            The sync status of the datastore
          content:
            application/json:
              schema:
                nullable: true
                $ref: '#/components/schemas/VslmDatastoreSyncStatus'
        '500':
          description: |2
            ***NotFound***: If the specified datastore cannot be found
            
            ***VslmFault***: If a VSLM internal server error occurred.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MethodFault'

  /vslm/VslmVStorageObjectManager/{moId}/VslmReconcileDatastoreInventory_Task:
    post:
      tags: [VslmVStorageObjectManager]
      summary: |2
        Reconcile the datastore inventory info of virtual storage objects.
      operationId: VslmVStorageObjectManager_VslmReconcileDatastoreInventory_Task
      description: |2
        Reconcile the datastore inventory info of virtual storage objects.
        
        Requires Datastore.FileManagement privilege.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VslmReconcileDatastoreInventoryRequestType'
      responses:
        '200':
          description: |2
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***InvalidDatastore***: If the operation cannot be performed on
            the datastore.
            
            ***VslmFault***: If a VSLM internal server error occurred.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MethodFault'

  /vslm/VslmVStorageObjectManager/{moId}/VslmRegisterDisk:
    post:
      tags: [VslmVStorageObjectManager]
      summary: |2
        Promote a virtual disk to a First Class Disk.
      operationId: VslmVStorageObjectManager_VslmRegisterDisk
      description: |2
        Promote a virtual disk to a First Class Disk.
        
        Requires Datastore.FileManagement privilege on the datastore where the
        virtual disk resides.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VslmRegisterDiskRequestType'
      responses:
        '200':
          description: |2
            The registered virtual storage object for the disk.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VStorageObject'
        '500':
          description: |2
            ***FileFault***: If an error occurs while registering the virtual disk.
            
            ***InvalidDatastore***: If datastore cannot be found or the operation
            cannot be performed on the datastore.
            
            ***AlreadyExists***: If disk is already registered as a
            virtual storage object.
            
            ***VslmSyncFault***: If an error occurs during datastore synchornization,
            implies the registerDisk completed successfully,
            however, there was an exception during datastore
            synchornization.
            
            ***VslmFault***: If a VSLM internal server error occurred.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MethodFault'

  /vslm/VslmVStorageObjectManager/{moId}/VslmRelocateVStorageObject_Task:
    post:
      tags: [VslmVStorageObjectManager]
      summary: |2
        Relocate a virtual storage object.
      operationId: VslmVStorageObjectManager_VslmRelocateVStorageObject_Task
      description: |2
        Relocate a virtual storage object.
        
        Requires Datastore.FileManagement privilege on both source and
        destination datastore.
        
        *VslmSyncFault* will set in the task error if the
        relocateVStorageObject completed successfully but the datastore
        synchronization failed.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VslmRelocateVStorageObjectRequestType'
      responses:
        '200':
          description: |2
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***FileFault***: If an error occurs while relocating the virtual
            storage object.
            
            ***InvalidDatastore***: If the operation cannot be performed on the
            datastore.
            
            ***InvalidState***: If the operation cannot be performed on the disk.
            The disk may be consumed and cannot be relocated.
            
            ***NotFound***: If specified virtual storage object cannot
            be found.
            
            ***VslmFault***: If a VSLM internal server error occurred.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MethodFault'

  /vslm/VslmVStorageObjectManager/{moId}/VslmRenameVStorageObject:
    post:
      tags: [VslmVStorageObjectManager]
      summary: |2
        Rename a virtual storage object.
      operationId: VslmVStorageObjectManager_VslmRenameVStorageObject
      description: |2
        Rename a virtual storage object.
        
        *VslmSyncFault* is thrown when
        the underlying rename operation of the FCD succeeded, however, there
        was a issue with syncing the datastore or FCD. Rename operation of the
        FCD is not idempotent, implying, any attempt to rename the FCD with it's
        current name would result in a error. The sync fault can be ignored
        with the risk of Pandora DB having stale name, consequently,
        affecting the return of *VslmVStorageObjectManager.VslmListVStorageObjectForSpec*
        and *VslmVStorageObjectManager.VslmRetrieveVStorageObjects* APIs.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VslmRenameVStorageObjectRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***FileFault***: If an error occurs while renaming the virtual storage
            object.
            
            ***NotFound***: If the specified virtual storage object cannot be
            found.
            
            ***InvalidDatastore***: If the operation cannot be performed on the
            datastore.
            
            ***VslmSyncFault***: If an error occurs during datastore synchornization,
            implies the renameVStorageObject completed
            successfully, however, there was an exception during
            datastore synchornization.
            
            ***VslmFault***: If a VSLM internal server error occurred.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MethodFault'

  /vslm/VslmVStorageObjectManager/{moId}/VslmRetrieveSnapshotDetails:
    post:
      tags: [VslmVStorageObjectManager]
      summary: |2
        Retrieves snapshot disk details of a given snapshot.
      operationId: VslmVStorageObjectManager_VslmRetrieveSnapshotDetails
      description: |2
        Retrieves snapshot disk details of a given snapshot.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VslmRetrieveSnapshotDetailsRequestType'
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VStorageObjectSnapshotDetails'
        '500':
          description: |2
            ***FileFault***: If an error occurs while snapshotting the virtual
            storage object.
            
            ***InvalidDatastore***: If the operation cannot be performed on the
            datastore.
            
            ***InvalidState***: If the operation cannot be performed on the disk.
            
            ***NotFound***: If specified virtual storage object cannot be found.
            
            ***VslmFault***: If a VSLM internal server error occurred.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MethodFault'

  /vslm/VslmVStorageObjectManager/{moId}/VslmRetrieveSnapshotInfo:
    post:
      tags: [VslmVStorageObjectManager]
      summary: |2
        Retrieves snapshot information of a given VStorageObject.
      operationId: VslmVStorageObjectManager_VslmRetrieveSnapshotInfo
      description: |2
        Retrieves snapshot information of a given VStorageObject.
        
        Requires Datastore.FileManagement privilege.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VslmRetrieveSnapshotInfoRequestType'
      responses:
        '200':
          description: |2
            OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VStorageObjectSnapshotInfo'
        '500':
          description: |2
            ***FileFault***: If an error occurs while snapshotting the virtual
            storage object.
            
            ***InvalidDatastore***: If the operation cannot be performed on the
            datastore.
            
            ***InvalidState***: If the operation cannot be performed on the disk.
            
            ***NotFound***: If specified virtual storage object cannot be found.
            
            ***VslmFault***: If a VSLM internal server error occurred.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MethodFault'

  /vslm/VslmVStorageObjectManager/{moId}/VslmRetrieveVStorageInfrastructureObjectPolicy:
    post:
      tags: [VslmVStorageObjectManager]
      summary: |2
        Retrieve FCD infrastructure object SBPM policy on given datastore.
      operationId: VslmVStorageObjectManager_VslmRetrieveVStorageInfrastructureObjectPolicy
      description: |2
        Retrieve FCD infrastructure object SBPM policy on given datastore.
        
        Only support VSAN datastore.
        
        Requires Datastore.FileManagement privilege on the datastore where the
        virtual storage infrastructure object is located.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VslmRetrieveVStorageInfrastructureObjectPolicyRequestType'
      responses:
        '200':
          description: |2
            The policy object of virtual storage object.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/vslmInfrastructureObjectPolicy'
        '500':
          description: |2
            ***InvalidDatastore***: If the operation cannot be performed on the
            datastore.
            
            ***InvalidState***: If the operation cannot be performed on the disk.
            
            ***NotFound***: If specified virtual storage object cannot be found.
            
            ***VslmFault***: If a VSLM internal server error occurred.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MethodFault'

  /vslm/VslmVStorageObjectManager/{moId}/VslmRetrieveVStorageObject:
    post:
      tags: [VslmVStorageObjectManager]
      summary: |2
        Retrieve a virtual storage object.
      operationId: VslmVStorageObjectManager_VslmRetrieveVStorageObject
      description: |2
        Retrieve a virtual storage object.
        
        Requires Datastore.FileManagement privilege on the datastore where the
        virtual storage object is located.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VslmRetrieveVStorageObjectRequestType'
      responses:
        '200':
          description: |2
            The required virtual storage object.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VStorageObject'
        '500':
          description: |2
            ***FileFault***: If an error occurs when retrieving the virtual object.
            
            ***InvalidDatastore***: If the operation cannot be performed on the
            datastore.
            
            ***NotFound***: If specified virtual storage object cannot be found.
            
            ***VslmFault***: If a VSLM internal server error occurred.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MethodFault'

  /vslm/VslmVStorageObjectManager/{moId}/VslmRetrieveVStorageObjectAssociations:
    post:
      tags: [VslmVStorageObjectManager]
      summary: |2
        Retrieve vm associations for each virtual storage object in the query.
      operationId: VslmVStorageObjectManager_VslmRetrieveVStorageObjectAssociations
      description: |2
        Retrieve vm associations for each virtual storage object in the query.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VslmRetrieveVStorageObjectAssociationsRequestType'
      responses:
        '200':
          description: |2
            The list of VStorageObjectVmAssociations which provides FCD id
            to vm associations mapping.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/VslmVsoVStorageObjectAssociations'

  /vslm/VslmVStorageObjectManager/{moId}/VslmRetrieveVStorageObjectMetadata:
    post:
      tags: [VslmVStorageObjectManager]
      summary: |2
        Retrieve metadata KV pairs from a virtual storage object.
      operationId: VslmVStorageObjectManager_VslmRetrieveVStorageObjectMetadata
      description: |2
        Retrieve metadata KV pairs from a virtual storage object.
        
        Requires Datastore.FileManagement privilege on the datastore where the
        virtual storage object is located.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VslmRetrieveVStorageObjectMetadataRequestType'
      responses:
        '200':
          description: |2
            returns the array of key value pair
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/KeyValue'
        '500':
          description: |2
            ***InvalidDatastore***: If the operation cannot be performed on the
            datastore, such as datastore cannot be found
            or inaccessible.
            
            ***InvalidState***: If the operation cannot be performed on the disk.
            
            ***NotFound***: If specified virtual storage object cannot be found.
            
            ***VslmFault***: If a VSLM internal server error occurred.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MethodFault'

  /vslm/VslmVStorageObjectManager/{moId}/VslmRetrieveVStorageObjectMetadataValue:
    post:
      tags: [VslmVStorageObjectManager]
      summary: |2
        Retrieve the metadata value by key from a virtual storage object.
      operationId: VslmVStorageObjectManager_VslmRetrieveVStorageObjectMetadataValue
      description: |2
        Retrieve the metadata value by key from a virtual storage object.
        
        Requires Datastore.FileManagement privilege on the datastore where the
        virtual storage object is located.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VslmRetrieveVStorageObjectMetadataValueRequestType'
      responses:
        '200':
          description: |2
            returns the value for the key
          content:
            application/json:
              schema:
                type: string
        '500':
          description: |2
            ***InvalidDatastore***: If the operation cannot be performed on the
            datastore, such as datastore cannot be found
            or inaccessible.
            
            ***InvalidState***: If the operation cannot be performed on the disk.
            
            ***NotFound***: If specified virtual storage object cannot be found.
            
            ***KeyNotFound***: If specified key cannot be found.
            
            ***VslmFault***: If a VSLM internal server error occurred.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MethodFault'

  /vslm/VslmVStorageObjectManager/{moId}/VslmRetrieveVStorageObjectState:
    post:
      tags: [VslmVStorageObjectManager]
      summary: |2
        Retrieve a virtual storage object state.
      operationId: VslmVStorageObjectManager_VslmRetrieveVStorageObjectState
      description: |2
        Retrieve a virtual storage object state.
        
        Requires Datastore.FileManagement privilege on the datastore where the
        virtual storage object is located.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VslmRetrieveVStorageObjectStateRequestType'
      responses:
        '200':
          description: |2
            The required virtual storage object state.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VStorageObjectStateInfo'
        '500':
          description: |2
            ***FileFault***: If an error occurs when retrieving the virtual object
            state.
            
            ***InvalidDatastore***: If the operation cannot be performed on the
            datastore.
            
            ***NotFound***: If specified virtual storage object cannot be found.
            
            ***VslmFault***: If a VSLM internal server error occurred.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MethodFault'

  /vslm/VslmVStorageObjectManager/{moId}/VslmRetrieveVStorageObjects:
    post:
      tags: [VslmVStorageObjectManager]
      summary: |2
        Retrieves details of a list of virtual storage objects from cache.
      operationId: VslmVStorageObjectManager_VslmRetrieveVStorageObjects
      description: |2
        Retrieves details of a list of virtual storage objects from cache.
        
        Requires Datastore.FileManagement privilege on the datastore where the
        virtual storage object is located.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VslmRetrieveVStorageObjectsRequestType'
      responses:
        '200':
          description: |2
            The array of *VslmVsoVStorageObjectResult* virtual
            storage objects corresponding to the input.
          content:
            application/json:
              schema:
                nullable: true
                type: array
                items:
                  $ref: '#/components/schemas/VslmVsoVStorageObjectResult'

  /vslm/VslmVStorageObjectManager/{moId}/VslmRevertVStorageObject_Task:
    post:
      tags: [VslmVStorageObjectManager]
      summary: |2
        Reverts to a given snapshot of a VStorageObject.
      operationId: VslmVStorageObjectManager_VslmRevertVStorageObject_Task
      description: |2
        Reverts to a given snapshot of a VStorageObject.
        
        This operation is supported on detached VirtualDisks
        During revert all the snapshots which were taken after the specified
        snapshot would get deleted.
        
        E.g. Consider Disk with 4 snapshots
        
        BaseDisk -$gt; Snap-2 -$gt; Snap-3 -$gt; Snap-4 -$gt; Running-Point
        
        If user chooses to revert to snap-2 then snap-4 and snap-3 would also
        be deleted. After revert operation disk would have below configuration:
        
        BaseDisk -$gt; Snap-2 -$gt; Running-Point
        
        Requires Datastore.FileManagement privilege.
        
        *VslmSyncFault* will set in the task error if the
        revertVStorageObject completed successfully but the datastore
        synchronization failed.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VslmRevertVStorageObjectRequestType'
      responses:
        '200':
          description: |2
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***FileFault***: If an error occurs while snapshotting the virtual
            storage object.
            
            ***InvalidDatastore***: If the operation cannot be performed on the
            datastore.
            
            ***InvalidState***: If the operation cannot be performed on the disk.
            
            ***NotFound***: If specified virtual storage object cannot be found.
            
            ***VslmFault***: If a VSLM internal server error occurred.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MethodFault'

  /vslm/VslmVStorageObjectManager/{moId}/VslmScheduleReconcileDatastoreInventory:
    post:
      tags: [VslmVStorageObjectManager]
      summary: |2
        Schedules reconcile of the inventory info of virtual storage objects on
        one of the hosts that is connected with the datastore.
      operationId: VslmVStorageObjectManager_VslmScheduleReconcileDatastoreInventory
      description: |2
        Schedules reconcile of the inventory info of virtual storage objects on
        one of the hosts that is connected with the datastore.
        
        This method just
        schedules the reconcile operation for the nearby future and returns. Note
        that since the reconcile operation will be executed after this method
        already returns the success of this method should not be considered as
        success of the actual reconcile operation.
        
        Requires Datastore.FileManagement privilege.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VslmScheduleReconcileDatastoreInventoryRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***InvalidDatastore***: If the operation cannot be performed on
            the datastore.
            
            ***VslmFault***: If a VSLM internal server error occurred.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MethodFault'

  /vslm/VslmVStorageObjectManager/{moId}/VslmSetVStorageObjectControlFlags:
    post:
      tags: [VslmVStorageObjectManager]
      summary: |2
        Set control flags on VStorageObject.
      operationId: VslmVStorageObjectManager_VslmSetVStorageObjectControlFlags
      description: |2
        Set control flags on VStorageObject.
        
        The control flags are defined in
        *vslmVStorageObjectControlFlag_enum*.
        
        Requires Datastore.FileManagement privilege on the datastore where the
        virtual storage object is located.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VslmSetVStorageObjectControlFlagsRequestType'
      responses:
        '204':
          description: |2
            No Content
        '500':
          description: |2
            ***InvalidDatastore***: If the operation cannot be performed on
            the datastore.
            
            ***InvalidState***: If the operation cannot be performed on the disk.
            The disk may be consumed.
            
            ***NotFound***: If specified virtual storage object cannot
            be found.
            
            ***VslmFault***: If a VSLM internal server error occurred.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MethodFault'

  /vslm/VslmVStorageObjectManager/{moId}/VslmUpdateVStorageInfrastructureObjectPolicy_Task:
    post:
      tags: [VslmVStorageObjectManager]
      summary: |2
        Assigns specified SBPM policy to the given FCD infrastructure object.
      operationId: VslmVStorageObjectManager_VslmUpdateVStorageInfrastructureObjectPolicy_Task
      description: |2
        Assigns specified SBPM policy to the given FCD infrastructure object.
        
        Only support VSAN datastore.
        
        Requires Datastore.FileManagement privilege on the datastore where the
        virtual storage infrastructure object is located.
        
        *VslmSyncFault* will set in the task error if the
        updateVStorageInfrastructureObjectPolicy completed successfully
        but the datastore synchronization failed.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VslmUpdateVStorageInfrastructureObjectPolicyRequestType'
      responses:
        '200':
          description: |2
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***InvalidDatastore***: If the operation cannot be performed on the
            datastore.
            
            ***InvalidState***: If there is issue with profile spec.
            
            ***NotFound***: If specified virtual storage object cannot be found.
            
            ***VslmFault***: If a VSLM internal server error occurred.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MethodFault'

  /vslm/VslmVStorageObjectManager/{moId}/VslmUpdateVstorageObjectCrypto_Task:
    post:
      tags: [VslmVStorageObjectManager]
      summary: |2
        Update the storage crypto on a virtual storage object.
      operationId: VslmVStorageObjectManager_VslmUpdateVstorageObjectCrypto_Task
      description: |2
        Update the storage crypto on a virtual storage object.
        
        Requires Datastore.FileManagement privilege on the datastore where the
        virtual storage object is located.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VslmUpdateVstorageObjectCryptoRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to
            monitor the operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***FileFault***: If an error occurs while updating the virtual storage
            object policy.
            
            ***NotFound***: If the specified virtual storage object cannot be
            found.
            
            ***InvalidDatastore***: If the operation cannot be performed on the
            datastore.
            
            ***TaskInProgress***: If the virtual storage object is busy.
            
            ***VslmFault***: If a VSLM internal server error occurred.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MethodFault'

  /vslm/VslmVStorageObjectManager/{moId}/VslmUpdateVStorageObjectMetadata_Task:
    post:
      tags: [VslmVStorageObjectManager]
      summary: |2
        Update metadata KV pairs to a virtual storage object.
      operationId: VslmVStorageObjectManager_VslmUpdateVStorageObjectMetadata_Task
      description: |2
        Update metadata KV pairs to a virtual storage object.
        
        And this API is by
        design supposed to be used for all of the addition, modification and
        deletion operations of metadata KV pairs.
        
        Requires Datastore.FileManagement privilege on the datastore where the
        virtual storage object is located.
        
        *VslmSyncFault* will set in the task error if the
        updateVStorageObjectMetadata completed successfully but the datastore
        synchronization or FCD retrieval failed. The sync fault can
        be ignored with the risk of Pandora DB having stale metadata information
        consequently affecting the return of *VslmVStorageObjectManager.VslmListVStorageObjectForSpec*
        and *VslmVStorageObjectManager.VslmRetrieveVStorageObjects* APIs.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VslmUpdateVStorageObjectMetadataRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to
            monitor the operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***InvalidDatastore***: If the operation cannot be performed on the
            datastore, such as datastore cannot be found
            or inaccessible.
            
            ***InvalidState***: If the operation cannot be performed on the disk.
            
            ***NotFound***: If specified virtual storage object cannot be found.
            
            ***VslmFault***: If a VSLM internal server error occurred.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MethodFault'

  /vslm/VslmVStorageObjectManager/{moId}/VslmUpdateVstorageObjectPolicy_Task:
    post:
      tags: [VslmVStorageObjectManager]
      summary: |2
        Update the storage policy on a virtual storage object.
      operationId: VslmVStorageObjectManager_VslmUpdateVstorageObjectPolicy_Task
      description: |2
        Update the storage policy on a virtual storage object.
        
        Requires Datastore.FileManagement privilege on the datastore where the
        virtual storage object is located.
        
        ***Required privileges:*** System.View
      parameters:
        - $ref: '#/components/parameters/moId'
      security:
        - Session: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VslmUpdateVstorageObjectPolicyRequestType'
      responses:
        '200':
          description: |2
            This method returns a *Task* object with which to
            monitor the operation.
            
            Refers instance of *Task*.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedObjectReference'
        '500':
          description: |2
            ***FileFault***: If an error occurs while updating the virtual storage
            object policy.
            
            ***NotFound***: If the specified virtual storage object cannot be
            found.
            
            ***InvalidDatastore***: If the operation cannot be performed on the
            datastore.
            
            ***TaskInProgress***: If the virtual storage object is busy.
            
            ***VslmFault***: If a VSLM internal server error occurred.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MethodFault'

tags:
  - name: Alarm
    description: |2
      This managed object type defines an alarm that is triggered and
      an action that occurs due to the triggered alarm when certain conditions
      are met on a specific *ManagedEntity* object.
  - name: AlarmManager
    description: |2
      The alarm manager is a singleton object for managing alarms
      within a service instance.
  - name: AuthorizationManager
    description: |2
      This managed object provides operations to query and update
      roles and permissions.
      
      **Privileges** are the basic individual rights required to
      perform operations. They are statically defined and
      never change for a single version of a product. Examples
      of privileges are &quot;Power on a virtual machine&quot;
      or &quot;Configure a host.&quot;
      
      **Roles** are aggregations of privileges, used for convenience.
      For user-defined roles, the system-defined privileges, "System.Anonymous",
      "System.View", and "System.Read" are always present.
      
      **Permissions** are the actual access-control rules. A
      permission is defined on a ManagedEntity and
      specifies the user or group (&quot;principal&quot;) to which
      the rule applies. The role specifies the
      privileges to apply, and the propagate flag
      specifies whether or not the rule applies to sub-objects
      of the managed entity.
      
      A ManagedEntity may have multiple permissions,
      but may have only one permission per user or group. If, when logging
      in, a user has both a user permission and a group permission
      (as a group member) for the same entity, then the
      user-specific permission takes precedent. If there is no
      user-specific permission, but two or more group permissions
      are present, and the user is a member of the groups, then the
      privileges are the union of the specified roles.
      
      Managed entities may be collected together into a &quot;complex entity&quot; for
      the purpose of applying permissions consistently. Complex entities may have a
      Datacenter, ComputeResource, or ClusterComputeResource as a parent, with other
      child managed objects as additional parts of the complex entity:
      - A Datacenter's child objects are the root virtual machine and host Folders.
      - A ComputeResource's child objects are the root ResourcePool and HostSystem.
      - A ClusterComputeResource has only the root ResourcePool as a child object.
        
      Child objects in a complex entity are forced to inherit permissions from the
      parent object. When query operations are used to discover permissions on child
      objects of complex entities, different results may be returned for the owner of the
      permission. In some cases, the child object of the complex entity is returned as
      the object that defines the permission, and in other cases, the parent from which
      the permission is propagated is returned as the object that defines the permission.
      In both cases, the information about the owner of the permission is correct, since
      the entities within a complex entity are considered equivalent. Permissions
      defined on complex entities are always applicable on the child entities,
      regardless of the propagation flag, but may only be defined or modified on the
      parent object.
      
      In a group of fault-tolerance (FT) protected VirtualMachines, the secondary
      VirtualMachines are forced to inherit permissions from the primary VirtualMachine.
      Queries to discover permissions on FT secondary VMs always return the primary VM
      as the object that defines the permissions. Permissions defined on an FT primary
      VM are always applicable on its secondary VMs, but can only be defined or modified
      on the primary VM.
  - name: CertificateManager
    description: |2
      CertificateManager provides an interface for managing the SSL
      certificates used by the ESX server.
  - name: ClusterComputeResource
    description: |2
      The *ClusterComputeResource* data object aggregates the compute
      resources of associated *HostSystem* objects into a single
      compute resource for use by virtual machines.
      
      The cluster services
      such as HA (High Availability), DRS (Distributed Resource Scheduling),
      and EVC (Enhanced vMotion Compatibility), enhance the utility of this
      single compute resource.
      
      Use the *Folder*.*Folder.CreateClusterEx* method
      to create an instance of this object.
  - name: ClusterEVCManager
    description: |2
      Controls Enhanced vMotion Compatibility mode for a particular cluster given
      by *ClusterEVCManager.managedCluster*.
      
      VMware Enhanced vMotion Compatibility (EVC) facilitates vMotion between
      different CPU generations through the use of Intel Flex Migration and AMD-V
      Extended Migration technologies. When enabled for a cluster, EVC ensures
      that all VMs are vMotion-compatible with the CPUs of all hosts in the
      cluster.
      
      See also *EVCMode*.
  - name: ComputeResource
    description: |2
      Represents a set of physical compute resources for a set of virtual machines.
      
      The base type *ComputeResource*, when instantiated by calling
      *Folder.AddStandaloneHost_Task*, represents a single host. The subclass
      *ClusterComputeResource* represents a cluster of hosts and adds distributed management
      features such as availability and resource scheduling.
      
      A *ComputeResource* always has a root *ResourcePool* associated with it.
      Certain types of clusters such as those with VMware DRS enabled and standalone hosts
      (ESX Server 3) support the creation of *ResourcePool* hierarchies.
  - name: ContainerView
    description: |2
      The *ContainerView* managed object provides a means of monitoring the contents of
      a single container and, optionally, other containers.
      
      You can use a *ContainerView* with a *PropertyCollector* method
      to retrieve data or receive notification of changes. For information about using views
      with the *PropertyCollector*, see the description of *ViewManager*.
      
      When you invoke the *ViewManager.CreateContainerView* method, you specify
      a managed object instance that provides the starting point for object selection.
      You can use the following managed objects as the basis of a container view:
      - *Folder*
      - *Datacenter*
      - *ComputeResource*
      - *ResourcePool*
      - *HostSystem*
        
      Once you have created the view, the *ManagedObjectView.view* list
      always represents the current configuration of the virtual environment and reflects
      any subsequent changes that occur.
  - name: CryptoManager
    description: |2
      Singleton Managed Object used to manage cryptographic keys.
  - name: CryptoManagerKmip
    description: |2
      Singleton Managed Object used to manage cryptographic keys.
  - name: CustomFieldsManager
    description: |2
      The CustomFieldsManager object is used to add and remove custom fields
      to managed entities.
      
      The custom fields values set on managed entities are available through the
      *ManagedEntity.customValue* property and through the summary objects
      for *VirtualMachine* and *HostSystem*. They are not available
      directly through this managed object.
      
      This functionality is only available through VirtualCenter.
  - name: CustomizationSpecManager
    description: |2
      The CustomizationSpecManager managed object is used to manage
      customization specifications stored on the VirtualCenter server.
  - name: Datacenter
    description: |2
      The *Datacenter* managed object provides the interface to the common container
      object for hosts, virtual machines, networks, and datastores.
      
      These entities
      must be under a distinct datacenter in the inventory, and datacenters may not
      be nested under other datacenters.
      
      Every *Datacenter* has the following set of dedicated folders. These folders are empty
      until you create entities for the Datacenter.
      - A folder for *VirtualMachine*, template, and
        *VirtualApp* objects.
      - A folder for a *ComputeResource* hierarchy.
      - A folder for *Network*, *DistributedVirtualSwitch*,
        and *DistributedVirtualPortgroup* objects.
      - A folder for *Datastore* objects.
        
      For a visual representation of the organization of objects in a vCenter
      hierarchy, see the description of the *ServiceInstance* object.
  - name: Datastore
    description: |2
      Represents a storage location for virtual machine files.
      
      A storage location can be a
      VMFS volume, a directory on Network Attached Storage, or a local file system path.
      
      A datastore is platform-independent and host-independent. Therefore, datastores do
      not change when the virtual machines they contain are moved between hosts. The scope
      of a datastore is a datacenter; the datastore is uniquely named within the
      datacenter.
      
      Any reference to a virtual machine or file accessed by any host within the
      datacenter must use a datastore path. A datastore path has the form
      "\[&lt;datastore&gt;\] &lt;path&gt;", where &lt;datastore&gt; is the datastore name,
      and &lt;path&gt; is a slash-delimited path from the root of the datastore. An
      example datastore path is "\[storage\] path/to/config.vmx".
      
      You may use the following characters in a path, but not in a datastore name:
      slash (/), backslash (\\), and percent (%).
      
      All references to files in the VIM API are implicitly done using datastore paths.
      
      When a client creates a virtual machine, it may specify the name of
      the datastore, omitting the path; the system, meaning VirtualCenter or the host,
      automatically assigns filenames and creates directories on the given datastore. For
      example, specifying My\_Datastore as a location for a virtual machine called MyVm
      results in a datastore location of My\_Datastore\\MyVm\\MyVm.vmx.
      
      Datastores are configured per host. As part of host configuration, a HostSystem can
      be configured to mount a set of network drives. Multiple hosts
      may be configured to point to the same storage location. There exists only one
      Datastore object per Datacenter, for each such shared location. Each Datastore
      object keeps a reference to the set of hosts that have mounted the datastore. A
      Datastore object can be removed only if no hosts currently have the datastore
      mounted.
      
      Thus, managing datastores is done both at the host level and the datacenter level.
      Each host is configured explicitly with the set of datastores it can access. At the
      datacenter, a view of the datastores across the datacenter is shown.
  - name: DatastoreNamespaceManager
    description: |2
      The DatastoreNamespaceManager managed object exposes APIs for
      manipulating top-level directories of datastores which do not
      support the traditional top-level directory creation.
      
      See also *DatastoreCapability.topLevelDirectoryCreateSupported*.
  - name: DiagnosticManager
    description: |2
      Provides an interface for obtaining diagnostic information on a host
      (e.g.
      
      generating and retrieving support logs on the host, reading audit
      records).
      For VirtualCenter, this includes the log files for the server daemon.
      For an ESX Server host, this includes detailed log files for the VMkernel.
  - name: DistributedVirtualPortgroup
    description: |2
      The *DistributedVirtualPortgroup* managed object
      defines how hosts and virtual machines connect to a network.
      
      A distributed virtual portgroup specifies *DistributedVirtualPort*
      configuration options for the ports on a *DistributedVirtualSwitch*.
      A portgroup also represents a *Network* entity in the datacenter.
      - To configure host access by portgroup, set the portgroup in the host virtual NIC specification
        (*HostVirtualNicSpec*.*HostVirtualNicSpec.portgroup*).
      - To configure virtual machine access by portgroup, set the portgroup
        in the virtual Ethernet card backing
        (*VirtualEthernetCard*.*VirtualDevice.backing*.*VirtualEthernetCardDistributedVirtualPortBackingInfo.port*.*DistributedVirtualSwitchPortConnection.portgroupKey*).
        
      When you use a portgroup for network access, the Server will create a port according
      to *DistributedVirtualPortgroup.config*.*DVPortgroupConfigInfo.type*.
  - name: DistributedVirtualSwitch
    description: |2
      A *DistributedVirtualSwitch* managed object is a virtual network
      switch that is located on a vCenter Server.
      
      A distributed virtual switch
      manages configuration for proxy switches (*HostProxySwitch*).
      A proxy switch is located on an ESXi host that is managed by the vCenter
      Server and is a member of the switch.
      A distributed switch also provides virtual port state management
      so that port state is maintained when vCenter Server operations
      move a virtual machine from one host to another.
      
      A proxy switch performs network I/O to support the following network traffic
      and operations:
      - Network traffic between virtual machines on any hosts that are members
        of the distributed virtual switch.
      - Network traffic between virtual machines that uses a distributed switch
        and a virtual machine that uses a VMware standard switch.
      - Network traffic between a virtual machine and a remote system
        on a physical network connected to the ESXi host.
      - vSphere system operations to support capabilities
        such as VMotion or High Availability.
        
      A *DistributedVirtualSwitch* is the base distributed
      switch implementation. It supports a VMware distributed virtual
      switch implementation and it supports third party distributed
      switch implementations. The base implementation provides
      the following capabilities
      (*DVSFeatureCapability*):
      - NIC teaming
      - Network I/O control
      - Network resource allocation
      - Quality of service tag support
      - User-defined resource pools
      - I/O passthrough (VMDirectPath Gen2)
        
      A *VmwareDistributedVirtualSwitch*
      supports the following additional capabilities
      (*DVSFeatureCapability* and
      *VMwareDVSFeatureCapability*):
      - Backup, restore, and rollback for a VMware distributed virtual switch
        and its associated portgroups.
      - Maximum Transmission Unit (MTU) configuration.
      - Health check operations for NIC teaming and VLAN/MTU support.
      - Monitoring switch traffic using Internet Protocol Flow Information Export (IPFIX).
      - Link Layer Discovery Protocol (LLDP).
      - Virtual network segmentation using a Private VLAN (PVLAN).
      - VLAN-based SPAN (VSPAN) for virtual distributed port mirroring.
      - Link Aggregation Control Protocol (LACP) defined for uplink portgroups.
        
      **Distributed Virtual Switch Configuration**
      
      To use a distributed virtual switch, you create a switch and portgroups
      on a vCenter Server, and add hosts as members of the switch.
      1. Create a distributed virtual switch
         (*Folder*.*Folder.CreateDVS_Task*).
         Use a *DVSConfigSpec* to create a switch
         for a third-party implementation. Use a
         *VMwareDVSConfigSpec* to create
         a VMware distributed virtual switch.
      2. Create portgroups (*DistributedVirtualSwitch.CreateDVPortgroup_Task*)
         for host and virtual machine network connections and for the connection between
         proxy switches and physical NICs.
         A *DistributedVirtualPortgroup* specifies how
         virtual ports (*DistributedVirtualPort*) will be used.
         When you create a distributed virtual switch, the vCenter Server
         automatically creates one uplink portgroup
         (*DistributedVirtualSwitch.config*.*DVSConfigInfo.uplinkPortgroup*).
         Uplink portgroups are distributed virtual portgroups that support
         the connection between proxy switches and physical NICs.
         
         Port creation on a distributed switch is determined by the
         portgroup type
         (*DVPortgroupConfigSpec*.*DVPortgroupConfigSpec.type*):
         - If a portgroup is early binding (static), then
           *DVPortgroupConfigSpec*.*DVPortgroupConfigSpec.numPorts*
           determines the number of ports that get created when the portgroup is created.
           This number can be increased if
           *DVPortgroupConfigSpec*.*DVPortgroupConfigSpec.autoExpand*
           is <code>true</code>.
         - If a portgroup is ephemeral (dynamic), then
           *DVPortgroupConfigSpec.numPorts*
           is ignored and ports are created as needed.
           
         You can also specify standalone ports that are not associated with
         a port group and uplink ports that are created on ESXi hosts
         (*DVSConfigSpec*.*DVSConfigSpec.numStandalonePorts*).
         
         The *DVPortgroupConfigInfo*.*DVPortgroupConfigInfo.numPorts*
         property is the total number of ports for a distributed virtual switch.
         This total includes the ports generated by the static and dynamic portgroups
         and the standalone ports.
      3. If you have created additional uplink portgroups, use the
         *DistributedVirtualSwitch.ReconfigureDvs_Task* method
         to add the portgroup(s) to the
         *DVSConfigSpec*.*DVSConfigSpec.uplinkPortgroup*
         array.
      4. Retrieve physical NIC device names from the host
         (*HostSystem*.*HostSystem.config*.*HostConfigInfo.network*.*HostNetworkInfo.pnic*\[\].*PhysicalNic.device*).
      5. Add host member(s) to the distributed virtual switch. To configure host members:
         - Specify hosts
           (*DVSConfigSpec*.*DVSConfigSpec.host*\[\]).
         - For each host, specify one or more physical NIC device names
           to identify the pNIC(s) for the host proxy connection to the network
           (*DistributedVirtualSwitchHostMemberConfigSpec*.*DistributedVirtualSwitchHostMemberConfigSpec.backing*.*DistributedVirtualSwitchHostMemberPnicBacking.pnicSpec*\[\].*DistributedVirtualSwitchHostMemberPnicSpec.pnicDevice*)
         - Use the
           *DistributedVirtualSwitch*.*DistributedVirtualSwitch.ReconfigureDvs_Task*
           method to update the switch configuration.
           
         When you add a host to a distributed virtual switch
         (*DistributedVirtualSwitch*.*DistributedVirtualSwitch.config*.*DVSConfigInfo.host*),
         the host automatically creates a proxy switch. The proxy switch is removed automatically
         when the host is removed from the distributed virtual switch.
      6. Connect hosts and virtual machines to the distributed virtual switch.
         
         <table style="border:0">
         <tr>
         <td style="border:0">Host connection</td>
         <td style="border:0">Specify port or portgroup connections in the host virtual NIC spec
         (*HostVirtualNicSpec*.*HostVirtualNicSpec.distributedVirtualPort*
         or *HostVirtualNicSpec*.*HostVirtualNicSpec.portgroup*).</td>
         </tr>
         <tr>
         <td style="border:0">Virtual machine connection</td>
         <td style="border:0">Specify port or portgroup connections in the distributed virtual port backing
         (*VirtualEthernetCardDistributedVirtualPortBackingInfo*)
         for the virtual Ethernet cards on the virtual machine
         (*VirtualEthernetCard*.*VirtualDevice.backing*).</td>
         </tr>
         </table>
         
      **Backup, Rollback, and Query Operations**
      
      If you are using a *VmwareDistributedVirtualSwitch*,
      you can perform backup and rollback operations on the switch
      and its associated distributed virtual portgroups.
      When you reconfigure a VMware distributed virtual switch
      (*DistributedVirtualSwitch.ReconfigureDvs_Task*), the Server
      saves the current switch configuration before applying the
      configuration updates. The saved switch configuration includes
      portgroup configuration data. The Server uses the saved switch
      configuration as a checkpoint for rollback operations.
      You can rollback the switch or portgroup configuration
      to the saved configuration, or you can rollback to a backup
      configuration (*EntityBackupConfig*).
      - To backup the switch and portgroup configuration, use the
        *DistributedVirtualSwitchManager*.*DistributedVirtualSwitchManager.DVSManagerExportEntity_Task*
        method. The export method produces a
        *EntityBackupConfig* object. The backup configuration
        contains the switch and/or portgroups specified in the
        <code>SelectionSet</code> parameter.
        To backup the complete configuration you must select the
        distributed virtual switch and all of its portgroups.
      - To rollback the switch configuration, use the
        *DistributedVirtualSwitch.DVSRollback_Task* method
        to determine if the switch configuration has changed.
        If it has changed, use the
        *DistributedVirtualSwitch.ReconfigureDvs_Task*
        method to complete the rollback operation.
      - To rollback the portgroup configuration, use the
        *DistributedVirtualPortgroup*.*DistributedVirtualPortgroup.DVPortgroupRollback_Task*
        method to determine if the portgroup configuration
        has changed. If it has changed, use the
        *DistributedVirtualPortgroup.ReconfigureDVPortgroup_Task*
        method to complete the rollback operation.  
        
      To perform query operations on a distributed virtual switch,
      use the *DistributedVirtualSwitchManager* methods.
  - name: DistributedVirtualSwitchManager
    description: |2
      The *DistributedVirtualSwitchManager* provides methods
      that support the following operations:
      - Backup and restore operations for *VmwareDistributedVirtualSwitch*
        and associated *DistributedVirtualPortgroup* managed objects.
      - Query operations for information about portgroups and distributed
        virtual switches.
      - Distributed virtual switch configuration update operations.
  - name: EnvironmentBrowser
    description: |2
      This managed object type provides access to the environment that a
      ComputeResource presents for creating and configuring a virtual machine.
      
      The environment consists of three main components:
      - The virtual machine configuration options. Each vim.vm.ConfigOption
        describes the execution environment for a virtual machine, the particular
        set of virtual hardware that is supported. A
        ComputeResource might support multiple sets. Access is provided
        through the configOptionDescriptor property and the
        *EnvironmentBrowser.QueryConfigOption* operation.
      - The supported device targets. Each virtual device specified in the virtual
        machine needs to be hooked up to a "physical" counterpart. For networks,
        this means choosing a network name; for a virtual CD-rom this might be
        an ISO image, etc. The environment browser provides access to the device
        targets through the
        *EnvironmentBrowser.QueryConfigTarget* operation.
      - Storage locations and files. A selection of locations where the virtual machine
        files can be stored, and the possibility to browse for existing virtual disks
        and ISO images. The datastore browser, provided by the datastoreBrowser
        property, provides access to the contents of one or more datastores. The
        items in a datastore are files that contain configuration, virtual disk, and
        the other data associated with a virtual machine.
      - The capabilities supported by the ComputeResource to which the virtual
        machine belongs.
  - name: EventHistoryCollector
    description: |2
      EventHistoryCollector provides a mechanism for
      retrieving historical data and updates when the server appends new
      events.
  - name: EventManager
    description: |2
      This managed object type provides properties and methods for
      event management support.
      
      Event objects are used to record significant state changes of
      managed entities.
  - name: ExtensibleManagedObject
    description: |2
      *ExtensibleManagedObject* provides methods and properties that provide
      access to custom fields that may be associated with a managed object.
      
      Use the *CustomFieldsManager* to define custom fields.
      The *CustomFieldsManager* handles the entire list of custom fields
      on a server. You can can specify the object type to which a particular custom
      field applies by setting its *CustomFieldDef.managedObjectType*.
      (If you do not set a managed object type for a custom field definition,
      the field applies to all managed objects.)
  - name: ExtensionManager
    description: |2
      This managed object type provides directory and basic management
      services for all registered extensions.
      
      Clients use the ExtensionManager, available in
      *ServiceInstance*,
      to access extension objects.
      
      While several authentication methods are available for extension
      servers to use (see *SessionManager*), only one
      authentication method is valid for an extension at any given
      time.
  - name: FailoverClusterConfigurator
    description: |2
      FailoverClusterConfigurator provides operations to create and configure
      a vCenter High Availability Cluster (VCHA Cluster).
      
      A VCHA Cluster consists of three VMs. One is the Active vCenter VM that
      serves client requests. Second is the Passive VM that is identical to the
      Active vCenter VM in terms of resources and capabilities. Passive VM
      constantly receives updates from Active VM and takes over the role of
      Active vCenter VM in the event of failover. Third is the Witness VM that
      acts as a quorum VM in a VCHA Cluster. Sole purpose of Witness VM is to
      avoid classic split-brain problem in a VCHA Cluster.
      A VCHA Cluster can be deployed in two possible ways -
      1\. Automatic deployment - Configuration (described below) inputs for each
      node in a VCHA Cluster is provided by the user. A Deployment workflow
      is used that automatically deploys Passive and Witness VM and configures
      each node to form a VCHA Cluster.
      2\. Manual deployment - User provisions and creates Passive and Witness
      VMs and uses Configuration workflow to configure Active, Passive and
      Witness VM to form a VCHA Cluster. Passive and Witness VMs must be
      created using the VM-Clone operation with Active VM as the source.
  - name: FailoverClusterManager
    description: |2
      FailoverClusterManager provides operations to manage a vCenter
      High Availability Cluster (VCHA Cluster).
      
      A VCHA Cluster consists of three VMs. One is the Active vCenter VM that
      serves client requests. Second is the Passive VM that is identical to the
      Active vCenter VM in terms of resources and capabilities. Passive VM
      constantly receives updates from Active VM and takes over the role of
      Active vCenter VM in the event of failover. Third is the Witness VM that
      acts as a quorum VM in a VCHA Cluster. Sole purpose of Witness VM is to
      avoid classic split-brain problem in a VCHA Cluster.
      A VCHA Cluster has following states -
      1\. Healthy - All three nodes in a VCHA Cluster are healthy and connected.
      State replication between Active and Passive node is working and both
      nodes are in-sync.
      2\. Degraded - A VCHA Cluster is said to be in degraded state when it has
      lost one of the three nodes. Node loss can be due to various reasons and
      as a result the lost node is not visible to other two nodes. If an Active
      node is lost, Passive node will take the role of Active node. If Passive or
      Witness node is lost, Active node will continue to serve requests. A VCHA
      Cluster can also be in degraded state if state replication fails between
      Active and Passive nodes.
      3\. Isolated - All three nodes are isolated from each other. If this happens
      while VCHA Cluster is in enabled mode, Active node stops serving client
      requests. If nodes are isolated in a disabled VCHA Cluster mode, Active
      node continues to serve client requests.
      A VCHA Cluster has following modes -
      1\. Enabled - State replication between Active and Passive nodes is
      enabled and automatic failover happens if Active node fails while the
      VCHA Cluster is in a healthy state.
      2\. Disabled - All three nodes are part of VCHA Cluster but state
      replication and automatic failover is disabled.
      3\. Maintenance - All three nodes are part of VCHA Cluster but automatic
      failover is disabled while state replication continues. Active node continues
      to serve client requests even if Passive and Witness nodes are lost.
  - name: FileManager
    description: |2
      This managed object type provides a way to manage and manipulate files and
      folders on datastores.
      
      The source and the destination names are in the form of
      a URL or a datastore path.
      
      A URL has the form
      > _scheme_://_authority_/folder/_path_?dcPath=_dcPath_&amp;dsName=_dsName_
      
      where
      - _scheme_ is <code>http</code> or <code>https</code>.
      - _authority_ specifies the hostname or IP address of the VirtualCenter or
        ESX server and optionally the port.
      - _dcPath_ is the inventory path to the Datacenter containing the
        Datastore.
      - _dsName_ is the name of the Datastore.
      - _path_ is a slash-delimited path from the root of the datastore.
        
        A datastore path has the form
        > \[_datastore_\] _path_
        
        where
      - _datastore_ is the datastore name.
      - _path_ is a slash-delimited path from the root of the datastore.
      
      An example datastore path is "\[storage\] path/to/file.extension".
      A listing of all the files, disks and folders on
      a datastore can be obtained from the datastore browser.
      
      See also *HostDatastoreBrowser*.
  - name: Folder
    description: |2
      The *Folder* managed object is a container for storing and organizing
      inventory objects.
      
      Folders can contain folders and other objects.
      The *Folder.childType* property identifies a folder's type
      and determines the types of folders and objects the folder can contain.
      - A folder can contain a child folder of the same type as the parent folder.
      - All *Datacenter* objects contain dedicated folders for:
        - *VirtualMachine*, templates, and *VirtualApp* objects.
        - *ComputeResource* hierarchies.
        - *Network*, *DistributedVirtualSwitch*, and
          *DistributedVirtualPortgroup* objects.
        - *Datastore* objects.
      - A folder can contain child objects of type *Folder.childType*.
        Virtual machine and network entity folders can also contain additional object types.
      - The root folder is a data center folder.
        
      See *ServiceInstance* for a representation of the organization of the inventory.
      
      The *Folder* managed object also acts as a factory object, meaning it
      creates new entities in a folder. The object provides methods to create
      child folders and objects, methods to add existing objects to folders, and
      methods to remove objects from folders and to delete folders.
      
      *Folder* inherits the *ManagedEntity.Destroy_Task* method.
      *ManagedEntity.Destroy_Task* is a recursive operation that removes all child objects and
      folders. When you call *ManagedEntity.Destroy_Task* to destroy a folder, the system uses
      the specified folder as a root and traverses its descendant hierarchy, calling
      *ManagedEntity.Destroy_Task* on each object.
      *ManagedEntity.Destroy_Task* is a single operation that treats each recursive call as a
      single transaction, committing each call to remove an object individually.
      If *ManagedEntity.Destroy_Task* fails on an object, the method terminates at that point
      with an exception, leaving some or all of the objects still in the inventory.
      
      Notes on the folder destroy method:
      - Calling *ManagedEntity.Destroy_Task* on a virtual machine folder recursively calls
        *ManagedEntity.Destroy_Task* on all the child virtual machines and vApps, which are then
        removed from disk.
        Use *Folder.UnregisterAndDestroy_Task*
        to unregister virtual machines or vApps recursively without
        removing them from the disk.
      - For virtual machine folders, the *ManagedEntity.Destroy_Task* method requires the
        VirtualMachine.Delete privilege on the folder as well as
        all virtual machines to be destroyed. It also requires the VirtualApp.Delete
        privilege on all VirtualApp objects to be destroyed.
      - Destroying a host folder or datacenter folder unregisters all child hosts
        and virtual machines from vCenter. The hosts are simply removed
        from the inventory, along with their virtual machines. The virtual machines
        are not removed from disk nor are their runtime states changed.
      - You can remove network and datastore folders only if they are empty.
      - You cannot destroy, rename, or move the virtual machine, compute resource,
        network entity, and datastore child folders of a Datacenter.
  - name: GuestAliasManager
    description: |2
      The GuestAliasManager supports single sign-on for virtual machine access
      to perform guest operations.
      
      The GuestAliasManager provides methods
      to create and access aliases.
      
      A guest alias defines an association between a guest user account on a virtual
      machine
      and an external vSphere user account. The vSphere account is represented by
      credentials consisting of an X.509 certificate and a subject name.
      The certificate and subject name
      are encoded
      in SAML tokens that are provided by the VMware SSO Server. The SAML tokens
      are attached
      to guest operation requests. If the credentials in a SAML token match an
      alias that is defined
      for a virtual machine, the ESXi Server guest components grant
      access for execution of the
      guest operation
      in the context of the user account on the virtual machine.
      
      To create a guest alias, use the AddGuestAlias method. AddGuestAlias
      establishes
      the association between a guest user account, certificate, and SAML token subject.
      - The username parameter identifies the guest account.
      - The base64Cert parameter specifies the X.509 certificate.
      - The aliasInfo parameter identifies the SAML token subject
        (*GuestAuthAliasInfo*.
        *GuestAuthAliasInfo.subject*.
        *GuestAuthNamedSubject.name*).
        
      If there are no aliases defined for a virtual machine, the ESXi Server
      will perform
      standard authentication using the credentials associated with a guest
      operation request.
      If one or more aliases are defined for a virtual machine, any guest
      operation request
      that uses SAML token authentication SAMLTokenAuthentication must specify
      a token
      that corresponds to one of the defined aliases.
      
      After defining one or more guest aliases, you can specify
      *SAMLTokenAuthentication* for the
      **auth** parameter to guest operation methods:
      - *GuestProcessManager* methods
      - *GuestFileManager* methods
      - *GuestWindowsRegistryManager* methods
        
      For information about obtaining a SAML token from a VMware SSO Server,
      see _VMware Single Sign-On Programming Guide_.
      
      You can define multiple aliases for a guest account. You can also
      map the credentials
      to an alias by setting **mapCert** to "true" in the call to the
      AddGuestAlias method.
      When an alias has a mapped credential, requests using that alias do not
      need to identify the guest account.
  - name: GuestAuthManager
    description: |2
      AuthManager is the managed object that provides APIs
      to manipulate the guest operating authentication.
  - name: GuestFileManager
    description: |2
      FileManager is the managed object that provides APIs
      to manipulate the guest operating system files.
  - name: GuestOperationsManager
    description: |2
      GuestOperationsManager is the managed object that provides APIs
      to manipulate the guest operating system files and process.
      
      Each class of APIs is separated into its own manager.
      Only one guest operation is allowed at a time per virtual machine.
  - name: GuestProcessManager
    description: |2
      ProcessManager is the managed object that provides APIs
      to manipulate the guest operating system processes.
  - name: GuestWindowsRegistryManager
    description: |2
      WindowsRegistryManager is the managed object that provides APIs
      to manipulate the Registry in a Windows guest OS.
  - name: HistoryCollector
    description: |2
      This managed object type enables clients to retrieve historical data and
      receive updates when the server appends new data to a collection.
      
      This is a base type for item-specific types related to event or task history.
      Historical data is inherently append-only,
      although a server administrator may periodically purge old data.
      
      Typically, a client creates a history collector by using a filter on a
      potentially large set, such as all the events in a datacenter.
      The collector provides access to the items that match the filter,
      which could also be a relatively large set.
      
      The items in a collector are always ordered by date and time of creation.
      Item properties normally include this time stamp.
      
      The client may set the "viewable latest page" for the collector,
      which is the contiguous subset of the items that are of
      immediate interest. These items are available as the "latestPage"
      property, which the client may retrieve and monitor by using the
      *PropertyCollector* managed object.
      
      Clients can change the page size of the "latestPage" by using
      *setLatestPageSize()*.
      
      The client may use the following features of the history collector.
      - *rewind* - Moves the "scrollable view" to
        the oldest item (the default setting).
      - readNext - Retrieves all the items in the collector, from the oldest
        item to the newest item. Retrieves either
        *tasks* or
        *events* depending on the operation.
      - readPrev - Retrieves all items (excluding the "viewable latest page") in
        the collector, from the newest item to the oldest item. Retrieves either
        *tasks* or
        *events* depending on the operation.
      - *reset* - Moves the "scrollable view" to
        the item immediately preceding the "viewable latest page".
  - name: HostAccessManager
    description: |2
      Managed object used to control direct access to the host.
      
      This should be used to control users and privileges on the host directly,
      which are different from the users and privileges defined in vCenter.
      
      See *AuthorizationManager* for more information on permissions.
  - name: HostActiveDirectoryAuthentication
    description: |2
      The *HostActiveDirectoryAuthentication* managed object
      indicates domain membership status and provides methods
      for adding a host to and removing a host from a domain.
  - name: HostAssignableHardwareManager
    description: |2
      This managed object manages the assignable hardware state of the host.
  - name: HostAuthenticationManager
    description: |2
      The *HostAuthenticationManager* managed object provides
      access to Active Directory configuration information for an
      ESX host.
      
      It also provides access to methods for adding a host
      to or removing a host from an Active Directory domain.
      
      The vSphere API supports Microsoft Active Directory management
      of authentication for ESX hosts. To integrate an ESX host
      into an Active Directory environment, you use an Active
      Directory account that has the authority to add
      a computer to a domain. The ESX Server locates the Active
      Directory domain controller. When you add a host to a domain,
      you only need to specify the domain and the account
      user name and password.
      
      There are two approaches that you can use to add an ESX host
      to or remove a host from an Active Directory domain.
      - *HostActiveDirectoryAuthentication.JoinDomain_Task* and
        *HostActiveDirectoryAuthentication.LeaveCurrentDomain_Task*
        methods - Your vSphere client application can call
        these methods directly to add the host to or remove the host
        from a domain.
      - Host configuration - Use the *HostActiveDirectory* data object
        to specify Active Directory configuration, either adding the host to
        or removing the host from a domain. To apply the Active Directory
        configuration, use the *HostProfileManager* method
        (*HostProfileManager.ApplyHostConfig_Task*)
        to apply the *HostConfigSpec*. When the ESX Server processes
        the configuration, it will invoke the join or leave method.
        
      To take advantage of ESX host membership in an Active Directory domain,
      grant permissions on the ESX host to Active Directory users and groups
      who should have direct access to management of the ESX host.
      Use the *UserDirectory*.*UserDirectory.RetrieveUserGroups*
      method to obtain information about Active Directory users and groups.
      After retrieving the Active Directory data, you can use the
      *AuthorizationManager*.*AuthorizationManager.SetEntityPermissions*
      method to set the *Permission.principal* property
      to the appropriate user or group.
      
      By default, the ESX host assigns the Administrator role to the "ESX Admins" group.
      If the group does not exist when the host joins the domain, the host will
      not assign the role. In this case, you must create the "ESX Admins"
      group in the Active Directory. The host will periodically check the domain controller
      for the group and will assign the role when the group exists.
  - name: HostAuthenticationStore
    description: |2
      The *HostAuthenticationStore* base class represents both local user
      and host Active Directory authentication for an ESX host.
      - Local user authentication is always enabled. The vSphere API
        does not support local user configuration for a host.
      - Active Directory authentication for ESX hosts relies on
        an established Active Directory account that
        has the authority to add the host to a domain.
  - name: HostAutoStartManager
    description: |2
      The AutoStartManager allows clients to invoke and set up the auto-start/auto-stop
      order of virtual machines on a single host.
      
      Virtual machines configured to use
      auto-start are automatically started or stopped when the host is started or shut
      down. The AutoStartManager is available when clients connect directly to a host,
      such as an ESX Server machine or through VirtualCenter.
  - name: HostBootDeviceSystem
    description: |2
      The *HostBootDeviceSystem* managed object provides methods to query and update
      a host boot device configuration.
  - name: HostCacheConfigurationManager
    description: |2
      Solid state drive Cache Configuration Manager.
      
      This is a managed object which provides access to ESX performance tuning
      features using solid state drive based cache.
  - name: HostCertificateManager
    description: |2
      CertificateManager provides an interface for managing the SSL
      certificates used by the server.
  - name: HostCpuSchedulerSystem
    description: |2
      This managed object provides an interface
      through which you can gather and configure the host CPU scheduler
      policies that affect the performance of running virtual machines.
      
      **Note**: This managed object is useful only on platforms where
      resource management controls are available to optimize the running
      of virtual machines.
  - name: HostDatastoreBrowser
    description: |2
      The DatastoreBrowser managed object type provides access to the contents of one or
      more datastores.
      
      The items in a datastore are files that contain configuration,
      virtual disk, and the other data associated with a virtual machine.
      
      Although datastores may often be implemented using a traditional file system, a full
      interface to a file system is not provided here. Instead, specialized access for
      virtual machine files is provided. A datastore implementation may completely hide the
      file directory structure.
      
      The intent is to provide functionality analogous to a file chooser in a user
      interface.
      
      Files on datastores do not have independent permissions through this API. Instead,
      the permissions for all the files on a datastore derive from the datastore object
      itself. It is not possible to change individual file permissions as the user browsing
      the datastore may not necessarily be a recognized user from the point of view of the
      host changing the permission. This occurs if the user browsing the datastore is doing
      so through the VirtualCenter management server.
      
      The DatastoreBrowser provides many ways to customize a search for files. A search can
      be customized by specifying the types of files to be searched, search criteria
      specific to a file type, and the amount of detail about each file. The most basic
      queries only use file details and are efficient with limited side effects. For these
      queries, file metadata details can be optionally retrieved, but the files themselves
      are opened and their contents examined. As a result, these files are not necessarily
      validated.
      
      More complicated queries can be formed by specifying the specific types of files to
      be searched, the parameters to filter for each type, and the desired level of detail
      about each file. This method of searching for files is convenient because it allows
      additional data about the virtual machine component to be retrieved. In addition,
      certain validation checks can be performed on matched files as an inherent part of
      the details collection process. However, gathering extra details or the use of type
      specific filters can sometimes only be implemented by examining the contents of a
      file. As a result, the use of these conveniences comes with the cost of additional
      latency in the request and possible side effects on the system as a whole.
      
      The DatastoreBrowser is referenced from various objects, including from
      *Datastore*, *ComputeResource*, *HostSystem* and
      *VirtualMachine*. Depending on which object is used, there are different
      requirements for the accessibility of the browsed datastore from the host (or hosts)
      associated with the object:
      - When referenced from the target *Datastore*, it needs to be
        accessible from at least one host on which the datastore is mounted.
        See *DatastoreSummary.accessible*.
      - When referenced from a *ComputeResource*, the target datastore
        needs to be accessible from at least one host in the ComputeResource.
        See *HostMountInfo.accessible*.
      - When referenced from a *HostSystem*, the target datastore needs
        to be accessible from that host. See *HostMountInfo.accessible*.
      - When referenced from a *VirtualMachine*, the target datastore
        needs to be accessible from the host on which the virtual machine is
        registered. See *HostMountInfo.accessible*.
        
      See also *FileInfo*.
  - name: HostDatastoreSystem
    description: |2
      This managed object creates and removes datastores from the host.
      
      To a host, a datastore is a storage abstraction that is backed by one
      of several types of storage volumes:
      <dl>
      <dt>**Local file system**</dt>
      <dd>
      A datastore that is backed by a local file system volume uses a host native
      local file system such as NTFS or ext3. The datastore is created by
      identifying a file path for a directory in which virtual machine data will
      be stored. When the datastore is deleted, the mapping from the datastore to
      the file is deleted. The contents of the directory are not deleted.
      </dd>
      
      <dt>**NAS Volume**</dt>
      <dd>
      A datastore that is backed by a network-attached storage device is created
      by specifying the required data needed to attach the volume to the host.
      Destroying the datastore detaches the volume from the host.
      </dd>
      
      <dt>**VMFS**</dt>
      <dd>
      A datastore that is backed by a VMware File System (VMFS) is created by
      specifying a disk with unpartitioned space, the desired disk partition
      format on the disk, and some VMFS attributes.
      
      An ESX Server system automatically discovers the VMFS volume on attached Logical
      Unit Numbers (LUNs) on startup and after re-scanning the host bus adapter.
      Datastores are automatically created. The datastore label is based on the
      VMFS volume label. If there is a conflict with an existing datastore,
      it is made unique by appending a suffix. The VMFS volume label will
      be unchanged.
      
      Destroying the datastore removes the partitions that compose the VMFS volume.
      </dd>
      </dl>
      Datastores are never automatically removed because transient storage
      connection outages may occur. They must be removed from the host using
      this interface.
      
      See also *Datastore*.
  - name: HostDateTimeSystem
    description: |2
      This managed object provides for NTP and date/time related
      configuration on a host.
      
      Information regarding the running status of the NTP daemon and
      functionality to start and stop the daemon is provided by the
      *HostServiceSystem* object.
  - name: HostDiagnosticSystem
    description: |2
      The DiagnosticSystem managed object is used to configure the diagnostic
      mechanisms specific to the host.
      
      The DiagnosticSystem interface supports
      the following concepts:
      - Notion of an active diagnostic partition that is selected from
        a set of available partitions.
      - Ability to create a diagnostic partition that gets added to the
        list of available partitions and could be made active.
  - name: HostDirectoryStore
    description: |2
      *HostDirectoryStore* is a base class for
      directory-based authentication stores.
  - name: HostEsxAgentHostManager
    description: |2
      This managed object type is used to configure agent virtual machine resource
      configuration, such as what network and datastore to use for agent virtual
      machines.
  - name: HostFirewallSystem
    description: |2
      The FirewallSystem managed object describes the firewall configuration
      of the host.
      
      The firewall should be configured first by setting the default policy and
      then by making exceptions to the policy to get the desired openness.
  - name: HostFirmwareSystem
    description: |2
      The *HostFirmwareSystem* managed object type provides access to the firmware
      of an embedded ESX host.
      
      It provides operations to backup, restore, and reset the
      configuration of an embedded ESX host.
  - name: HostGraphicsManager
    description: |2
      This managed object manages the graphics state of the host.
  - name: HostHealthStatusSystem
    description: |2
      This managed object manages the health state of the host.
      
      See also *HostCapability.ipmiSupported*.
  - name: HostImageConfigManager
    description: |2
      This managed object is the interface for
      configuration of the ESX software image, including
      properties such as acceptance level.
      
      It is currently designed to be host agent specific.
  - name: HostKernelModuleSystem
    description: |2
      The KernelModuleSystem managed object controls the configuration
      of kernel modules on the host.
  - name: HostLocalAccountManager
    description: |2
      This managed object type provides an interface
      through which local accounts on a host are managed.
      
      Note that this
      managed object applies only to applications that use a local account
      database on the host to provide authentication (ESX Server, for example).
      POSIX and win32 hosts may impose different restrictions on the password,
      ID, and description formats. POSIX host implementation may restrict the
      user or group name to be lower case letters and less than 16 characters in
      total. It may also disallow characters such as
      ";", "\\n", and so on. In short, all the platform dependent rules and
      restrictions regarding naming of users/groups and password apply here.
      An InvalidArgument fault is thrown if any of these rules are not obeyed.
  - name: HostLocalAuthentication
    description: |2
      The *HostLocalAuthentication* managed object represents
      local authentication for user accounts on an ESX host.
  - name: HostMemorySystem
    description: |2
      The MemoryManagerSystem managed object provides an interface through which
      the host memory management policies that affect the performance of running
      virtual machines can be gathered and configured.
  - name: HostNetworkSystem
    description: |2
      This managed object type describes networking host configuration and
      serves as the top level container for relevant networking
      data objects.
  - name: HostNvdimmSystem
    description: |2
      Managed object responsible for reading and configuring
      Non-Volatile DIMMs.
  - name: HostPatchManager
    description: |2
      This managed object is the interface for scanning and patching an ESX
      server.
      
      VMware publishes updates through its external website. A patch update is
      synonymous with a bulletin. An update may contain many individual patch
      binaries, but its installation and uninstallation are atomic.
  - name: HostPciPassthruSystem
    description: |2
      This managed object manages the PciPassthru state of the host.
  - name: HostPowerSystem
    description: |2
      Managed object responsible for getting and setting host
      power management policies.
  - name: HostProfile
    description: |2
      A host profile describes ESX Server configuration.
      
      The *HostProfile* managed object provides access to profile data and
      it defines methods to manipulate the profile.
      A host profile is a combination of subprofiles, each of which contains
      configuration data for a specific capability. Some examples of host capabilities are
      authentication, memory, networking, and security. For access to individual subprofiles,
      see the *HostApplyProfile* data object
      (*HostProfile*.*Profile.config*.*HostProfileConfigInfo.applyProfile*).
      
      Host profiles are part of the stateless configuration architecture.
      In the stateless environment, a Profile Engine runs on each ESX host,
      but an ESX host does not store its own configuration state. Instead,
      host configuration data is stored on vCenter Servers. Every time a host
      boots or reboots, it obtains its profile from the vCenter Server.
      - To create a base host profile use the
        *HostProfileManager*.*ProfileManager.CreateProfile*
        method. To create a profile from an ESX host, specify a
        *HostProfileHostBasedConfigSpec*. To create a profile from a file,
        specify a *HostProfileSerializedHostProfileSpec*.
      - To create a subprofile for a particular host capability, use the
        *HostProfileManager*.*HostProfileManager.CreateDefaultProfile*
        method. After you create the default profile you can modify it and save it in the base profile.
      - To update an existing profile, use the
        *HostProfile*.*HostProfile.UpdateHostProfile* method.
      - To apply a host profile to an ESX host, use the *HostProfile.ExecuteHostProfile* method
        to generate configuration changes, then call the
        *HostProfileManager*.*HostProfileManager.ApplyHostConfig_Task*
        method to apply them.
        
      <u>Host-Specific Configuration</u>
      
      An individual host or a set of hosts may have some configuration settings
      that are different from the settings specified in the host profile.
      For example, the IP configuration for the host's virtual network adapters
      must be unique.
      - To verify host-specific data, use the <code>deferredParam</code> parameter
        to the *HostProfile.ExecuteHostProfile* method.
        The Profile Engine will determine if you have specified all of the required
        parameters for the host configuration. If additional data is required,
        call the *HostProfile.ExecuteHostProfile* method again as many times as necessary
        to verify a complete set of parameters.
      - To apply host-specific data, use the <code>userInput</code> parameter to the
        *HostProfileManager*.*HostProfileManager.ApplyHostConfig_Task*
        method.
        
        
      The Profile Engine saves host-specific data in an *AnswerFile*
      that is stored on the vCenter Server.
      The *HostProfileManager* provides several methods to manipulate
      answer files.
      
      <u>Profile Compliance</u>
      
      You can create associations between hosts and profiles to support compliance checking.
      When you perform compliance checking, you can determine if a host configuration
      conforms to a host profile.
      - To create an association between a host and a profile, use the
        *Profile.AssociateProfile* method.
        The method adds the host to the
        *HostProfile*.*Profile.entity*\[\] list.
      - To retrieve the list of profiles associated with a host, use the
        *HostProfileManager*.*ProfileManager.FindAssociatedProfile*
        method.
      - To check host compliance, use the
        *Profile.CheckProfileCompliance_Task* method.
        If you do not specify any hosts, the method will check the compliance of all hosts
        that are associated with the profile.
        
        
      You can also use the Profile Compliance Manager to check compliance by specifying
      profiles, entities (hosts), or both. See
      *ProfileComplianceManager*.*ProfileComplianceManager.CheckCompliance_Task*.
      
      <u>Profile Plug-Ins</u>
      
      The vSphere architecture uses VMware profile plug-ins to define profile extensions.
      For information about using a plug-in to extend a host profile, see the VMware Technical Note
      _Developing a Host Profile Extension Plug-in_.
      
      For access to host configuration data that is defined by plug-ins, use the
      *ApplyProfile*.*ApplyProfile.policy*\[\] and
      *ApplyProfile*.*ApplyProfile.property*\[\] lists.
      The *HostApplyProfile* and its subprofiles, which collectively
      define host configuration data, are derived from the *ApplyProfile*.
      - Policies store ESX configuration data in *PolicyOption* objects.
      - Profile property lists contain subprofiles defined by plug-ins. Subprofiles can be nested.
        - Subprofile lists are available as an extension to the base host profile
          (*HostProfile*.*Profile.config*.*HostProfileConfigInfo.applyProfile*.*ApplyProfile.property*\[\]).
        - Subprofile lists are available as extensions to the host subprofiles - for example,
          the network subprofile
          (*HostApplyProfile*.*HostApplyProfile.network*.*ApplyProfile.property*\[\]).
          
        
      If you make changes to host profile data, later versions of profile plug-ins may not support
      the host configuration implied by the changes that you make. When a subsequent vSphere
      version becomes available, you must verify that the new version supports any previous
      configuration changes that you have made.
  - name: HostProfileManager
    description: |2
      The *HostProfileManager* provides access to a list of
      *HostProfile*s and it defines methods to manipulate
      profiles and *AnswerFile*s.
  - name: HostServiceSystem
    description: |2
      The *HostServiceSystem* managed object describes the configuration
      of host services.
      
      This managed object operates in conjunction
      with the *HostFirewallSystem*
      managed object.
  - name: HostSnmpSystem
    description: |2
      Provision the SNMP Version 1,2c agent.
      
      This object is accessed through the
      *HostConfigManager* object.
  - name: HostSpecificationManager
    description: |2
      The *HostSpecificationManager* provides the
      functionality to update, restrieve and delete
      *HostSpecification* and
      *HostSubSpecification*.
  - name: HostStorageSystem
    description: |2
      This managed object gets and sets configuration information
      about the host's storage subsystem.
      
      The properties and operations are
      used to configure the host to make storage available for virtual machines.
      This object contains properties that are specific to ESX Server and
      general to both the ESX Server system and the hosted architecture.
  - name: HostSystem
    description: |2
      The HostSystem managed object type provides access to a virtualization
      host platform.
      
      Invoking destroy on a HostSystem of standalone type throws a NotSupported fault.
      A standalone HostSystem can be destroyed only by invoking destroy on its parent
      ComputeResource.
      Invoking destroy on a failover host throws a
      *DisallowedOperationOnFailoverHost* fault. See
      *ClusterFailoverHostAdmissionControlPolicy*.
  - name: HostVFlashManager
    description: |2
      The VFlash Manager object is used to configure vFlash resource
      and vFlash cache on the ESX host.
  - name: HostVMotionSystem
    description: |2
      Deprecated as of VI API 4.0, use *HostConfigManager.virtualNicManager*.
      
      The VMotionSystem managed object describes the VMotion configuration
      of the host.
  - name: HostVStorageObjectManager
    description: |2
      Interface to manage virtual storage object on an ESXi host.
  - name: HostVirtualNicManager
    description: |2
      The VirtualNicManager managed object describes the special Virtual NIC
      configuration of the host.
  - name: HostVsanInternalSystem
    description: |2
      The VsanInternalSystem exposes low level access to CMMDS, as well as draft
      versions of VSAN object and disk management APIs that are subject to change
      in future releases.
      
      No compatibility is guaranteed on any of the APIs,
      including their prototype, behavior or result encoding.
  - name: HostVsanSystem
    description: |2
      The VsanSystem managed object type exposes VSAN configuration
      primitives and serves as a host-level access point for relevant
      VSAN data objects.
  - name: HttpNfcLease
    description: |2
      Represents a lease on a *VirtualMachine* or
      a *VirtualApp*, which can be used to import or export
      disks for the entity.
      
      While the lease is held, operations
      that alter the state of the virtual machines covered by the lease
      are blocked. Examples of blocked operations are PowerOn, Destroy,
      Migrate, etc.
      
      A lease is in one of four states:
      <dl>
      <dt>Initializing</dt>
      <dd>This is the initial state. The lease remains in this state
      while the corresponding import/export task is preparing the
      objects. In an import session, this involves creating
      inventory objects.</dd>
      <dt>Ready</dt>
      <dd>The lease changes to this state once the corresponding
      import/export task is done preparing the lease. The leased
      objects are now ready, and the client can use the information
      provided in the *HttpNfcLease.info* property to determine where to
      up/download disks. The client must call *HttpNfcLease.HttpNfcLeaseProgress*
      periodically to keep the lease alive and report progress to
      the corresponding import/export task. Failure to do so causes
      the lease to time out and enter the error state.</dd>
      <dt>Done</dt>
      <dd>When the client is done transferring disks, it calls
      *HttpNfcLease.HttpNfcLeaseComplete* to signal the end of the import/export session.
      This causes the corresponding import/export task to complete
      successfully.</dd>
      <dt>Error</dt>
      <dd>If an error occurs during initialization or the lease times out,
      it will change to this state. The client can also abort the lease
      manually by calling *HttpNfcLease.HttpNfcLeaseAbort*. In this state, the *HttpNfcLease.error*
      property can be read to determine the cause.
      If the lease belongs to an import session, all objects created
      during the import are removed when the lease enters this state.</dd>
      </dl>
      The import/export task corresponding to the lease continues running while
      the lease is held.
  - name: InventoryView
    description: |2
      The *InventoryView* managed object provides a means of browsing the inventory and tracking
      changes to open folders.
      
      This managed object is particularly useful for UI clients that
      display a tree-based navigation panel of the inventory.
      
      *InventoryView* maintains the *ManagedObjectView.view* list
      of managed object references to inventory objects. When you create an inventory view
      (*ViewManager.CreateInventoryView*), the server initializes the view's object
      list with a single folder - the root folder.
      
      *InventoryView* provides methods to open and close folders in the inventory. Use these
      methods to add and subtract objects from the *ManagedObjectView.view* list.
      Use the *InventoryView* together with the *PropertyCollector*
      to manage the data resulting from *InventoryView.OpenInventoryViewFolder*
      and *InventoryView.CloseInventoryViewFolder* methods. By using the *PropertyCollector*,
      you have access to the modifications to the view, rather than processing the entire view list.
      
      For example, you might use the following sequence of operations with
      an *InventoryView* and the *PropertyCollector*:
      1. Create an *InventoryView*.
      2. Create a filter specification for the *PropertyCollector*.
         - Use the *InventoryView* as the starting object in the
           *ObjectSpec* for the filter.
         - Use a set of *TraversalSpec*
           data objects to identify paths in possible inventory configurations.
         - Use the *PropertySpec*
           to identify object properties for retrieval.
      3. Use either the *PropertyCollector.CheckForUpdates* or
         *PropertyCollector.WaitForUpdates* method to obtain
         *InventoryView* modifications. Both methods return
         an *UpdateSet* object that describes
         the changes returned by the *PropertyCollector*.
      4. Call the *InventoryView.OpenInventoryViewFolder* or *method*.
  - name: IoFilterManager
    description: |2
      Interface to manage IO Filters installed on the ESXi hosts and
      IO Filter configurations on virtual disks.
      
      IO Filters are customized
      filters provided by third parties to process I/Os to virtual disks.
      They can be used to provide data services such as flash caching and
      replication.
      This interface is only supported on vCenter server.
  - name: IpPoolManager
    description: |2
      Singleton Managed Object used to manage IP Pools.
      
      IP Pools are used to allocate IPv4 and IPv6 addresses to vApps.
  - name: IscsiManager
    description: |2
      This managed object provides interfaces for mapping VMkernel NIC to
      iSCSI Host Bus Adapter.
  - name: LicenseManager
    description: |2
      This managed object type controls entitlements for a given VMware
      platform.
      
      VMware platforms include VirtualCenter, ESX Server, VMware Server,
      Workstation and Player. Entitlements define what software capabilities
      this host may use.
      
      Entitlements are identified by a short string 'key'. Keys can represent either
      a particular edition (Full, Starter) or a particular feature/function (featureKey)
      (backup, nas). An edition implies zero one or more functions which are express,
      denied or optional. For example a 'Full' edition includes 'iscsi' function but a
      Starter edition might disallow it.
      
      Which edition a given VMware platform uses can be defined at any time. Generally this
      is done right after first install and boot as installation software may not set it.
      For editions that are similar in nature, any future changes to edition
      type will only impact future requests for functionality.
      Current functionality is left unaffected. The same is true for optional
      functions enabled/disabled after some period of time. For dissimilar editions,
      such transitions may require entering maintenance mode first else an exception of
      InvalidState will be thrown.
      
      To specify the edition type and any optional functions, use updateLicense for
      ESX Server and addLicense follow by LicenseAssingmentManager.updateAssignedLicense
      for VirtualCenter.
      
      When an edition is specified for a given host, the cost of that edition
      (how many licenses are needed) is determined. The cost is computed
      using the license's CostUnit value multiplied by the number of units activated.
      For example, when a VMware platform is set to an edition which uses a 'cpuPackage'
      on a two socket server, two licenses would be needed to successfully
      install that edition.
      
      Here is a diagram of the unit costs supported by this API and their relationships.
      
             +------------------------------+   +--------+      +-------+
             | +-----------+ +-----------+  |   | Server |      |  Host |
             | |           | |           |  |   +--------+      +-------+
             | |  cpuCore  | |   cpuCore |  |                   +-------+
             | +-----------+ +-----------+  |   +--------+      |  Host |
             |                  cpuPackage  |   |  VM    |      +-------+
             +------------------------------+   +--------+
  - name: ListView
    description: |2
      The *ListView* managed object provides access to updates on a specific set of objects.
      
      You can use a *ListView* with a *PropertyCollector* method
      to retrieve data or receive notification of changes. For information about using views
      with the *PropertyCollector*, see the description of *ViewManager*.
      
      When you invoke the *ViewManager.CreateListView* method, you specify
      a list of objects. The *ManagedObjectView.view* list
      always represents the current configuration of the virtual environment
      and reflects any subsequent changes that occur.
  - name: LocalizationManager
    description: |2
      *LocalizationManager* provides access to descriptions of
      the message catalogs that are available for client-side message
      localization.
      
      Clients of the VIM API may use
      *SessionManager*.*SessionManager.SetLocale*
      to cause the server to emit localized messages, or may perform
      client-side localization based on message catalogs provided by the
      *LocalizationManager*.
      
      A message catalog is a file that contains a set of key-value pairs.
      - The key is an ASCII string that identifies the message.
      - The value is a UTF-8 string that contains the text of the message, sometimes
        containing substitution variables.
        
      The server will localize fields tagged with 'localizable' based on the
      value of the *UserSession*.*UserSession.locale*
      and *UserSession.messageLocale* properties which are set via
      *SessionManager*.*SessionManager.SetLocale*.
      
      The following list shows some of the ways that vSphere uses localized
      messages.
      - Current task status (*TaskInfo*.*TaskInfo.description*)
      - Events (*VirtualMachineMessage*.*VirtualMachineMessage.text* and
        Questions (*VirtualMachineQuestionInfo*.*VirtualMachineQuestionInfo.text*)
      - Faults (*MethodFault*.*MethodFault.faultMessage*)
      - *HostProfile* and
        *ClusterProfile* descriptions
        (*Profile*.*ProfileDescription*.
        *Profile.description* returned by the
        *Profile*.*Profile.RetrieveDescription* method)
  - name: ManagedEntity
    description: |2
      ManagedEntity is an abstract base type for all managed objects present in
      the inventory tree.
      
      The base type provides common functionality for traversing the
      tree structure, as well as health monitoring and other basic functions.
      
      Most Virtual Infrastructure managed object types extend this type.
  - name: ManagedObjectView
    description: |2
      *ManagedObjectView* is the base class for view objects that provide access
      to a set of *ManagedEntity* objects.
      
      *ManagedObjectView* defines
      a view list; the list contains references to objects in the view.
      To create a view use the *ViewManager* methods.
  - name: MessageBusProxy
    description: |2
      This managed object provides interfaces to configure the common message bus
      proxy service running on the ESX host.
  - name: Network
    description: |2
      Represents a network accessible by either hosts or virtual machines.
      
      This can be a
      physical network or a logical network, such as a VLAN.
      
      Networks are created:
      - explicitly when configuring a host.
      - automatically when adding a host to VirtualCenter.
      - automatically when adding a new virtual machine to a host or to
        VirtualCenter.
        
      To configure network access for hosts and virtual machines, use
      *DistributedVirtualSwitch* and
      *DistributedVirtualPortgroup* managed objects.
  - name: OpaqueNetwork
    description: |2
      This interface defines an opaque network, in the sense that the detail and configuration
      of the network is unknown to vSphere and is managed by a management plane outside of
      vSphere.
      
      However, the identifier and name of these networks is made available to
      vSphere so that host and virtual machine virtual ethernet device can connect to them.
  - name: OptionManager
    description: |2
      This managed object type is used for managing key/value pair
      options.
      - You can define options on the fly only if the option is supported
        by the concrete implementation, in a logical tree using a dot notation
        for keys. For example, "Ethernet.Connection" describes the Connection
        option as child of the Ethernet option.
      - Options can be updated even if not visible in supportedOption or
        settings or the queryMethod returned values only if supported by the
        concrete implementation.
      - Attempt to add random Options that are not supported by the concrete
        implementation may result in unexpected side-effects.
      - You can use the queryMethod to retrieve a single property or
        a subset of properties based on the dot notation path.
  - name: OverheadMemoryManager
    description: |2
      Provide static VM overhead memory values for (vm, host) pairs in
      Virtual Center.
  - name: OvfManager
    description: |2
      Service interface to parse and generate OVF descriptors.
      
      The purpose of this interface is to make it easier for callers to import VMs and
      vApps from OVF packages and to export VI packages to OVF. In the following
      description, the term "client" is used to mean any caller of the interface.
      
      This interface only converts between OVF and VI types. To actually import and export
      entities, use *ResourcePool.importVApp*,
      *VirtualMachine.exportVm* and
      *VirtualApp.exportVApp*.
      
      **Import**
      
      For the import scenario, the typical sequence of events is as follows:
      
      The client calls parseDescriptor to obtain information about the OVF descriptor. This
      typically includes information (such as a list of networks) that must be mapped to VI
      infrastructure entities.
      
      The OVF descriptor is validated against the OVF Specification, and any errors or
      warnings are returned as part of the ParseResult. For example, the parser might
      encounter a section marked required that it does not understand, or the XML descriptor
      might be malformed.
      
      The client decides on network mappings, datastore, properties etc. It then calls
      createImportSpec to obtain the parameters needed to call
      *ResourcePool.importVApp*.
      
      If any warnings are present, the client will review these and decide whether to
      proceed or not. If errors are present, the ImportSpec will be missing, so
      the client is forced to give up or fix the problems and then try again.
      
      The client now calls *ResourcePool.importVApp*, passing the ImportSpec as a parameter. This will create
      the virtual machines and *VirtualApp* objects in VI and return locations
      to which the files of the entity can be uploaded. It also returns a lease that
      controls the duration of the lock taken on the newly created inventory objects. When
      all files have been uploaded, the client must release this lease.
      
      **Export**
      
      Creating the OVF descriptor is the last part of exporting an entity to OVF. At this
      point, the client has already downloaded all files for the entity, optionally
      compressing and/or chunking them (however, the client may do a "dry run" of creating
      the descriptor before downloading the files. See *OvfManager.createDescriptor*).
      
      In addition to the entity reference itself, information about the choices made on
      these files is passed to createDescriptor as a list of OvfFile instances.
      
      The client must inspect and act upon warnings and errors as previously described.
      
      No matter if the export succeeds or fails, the client is responsible for releasing the
      shared state lock taken on the entity (by *VirtualMaching.exportVm* or *VirtualApp.exportVApp*) during the export.
      
      **Error handling**
      
      All result types contain warning and error lists. Warnings do not cause processing to
      fail, but the caller (typically, the user of a GUI client) may choose to reject the
      result based on the warnings issued.
      
      Errors cause processing to abort by definition.
  - name: PerformanceManager
    description: |2
      This managed object type provides the service interface for obtaining
      statistical data about various aspects of system performance, as generated
      and maintained by the system's performance providers.
      
      A "performance
      provider" (*PerfProviderSummary*) is any managed object
      that generates utilization or other performance metrics. Performance
      providers include *managed entities*, such as *hosts*, *virtual machines*, *compute resources*, *resource
      pools*, *datastores*, and *networks*.
      Performance providers also include physical or virtual devices associated
      with these objects, such as virtual host-bus adapters and network-interface
      controllers (NICs)
      
      <a name="counterTables"></a>**Performance Counters**  
      Each
      performance provider&#151;the instrumented device or entity&#151;has its own
      set of *counters* that provides
      metadata about its available *metrics*. Each counter has a unique *PerfCounterInfo.key*, referred to as the counterId. The
      actual performance metrics generated at runtime are identified by this
      *PerfMetricId.counterId*. Counters are organized by
      *groups* of finite system
      resources, such as <a href="memory_counters.html">memory</a>, <a href="cpu_counters.html">CPU</a>, <a href="disk_counters.html">disk</a>, and
      so on. The links in this list contain documentation for performance
      counters, by *group*. Each
      page contains a table that includes data extracted from instances of the
      *PerfCounterInfo* data object, including the counter
      name, its Label, Unit, StatsType, RollupType, and Level:
      - <a href="cluster_services_counters.html">Cluster Services
      - <a href="cpu_counters.html">CPU</a>
      - <a href="hbr_counters.html">Host-Based Replication</a>
      - <a href="mgmt_agent_counters.html">Management Agent</a>
      - <a href="memory_counters.html">Memory</a>
      - <a href="network_counters.html">Network</a>
      - <a href="power_counters.html">Power</a>
      - <a href="resource_scheduler_counters.html">Resource Scheduler</a>
      - Storage Capacity:
        - <a href="disk_storutil_counters.html">Datastore / Virtual
          Machine</a>
      - Storage I/O:
        - <a href="datastore_counters.html">Datastore</a>
        - <a href="disk_counters.html">Disk</a>
        - <a href="virtual_disk_counters.html">Virtual Disk</a>
        - <a href="storage_adapter_counters.html">Storage Adapter</a>
        - <a href="storage_path_counters.html">Storage Path</a>
      - <a href="system_counters.html">System</a>
      - <a href="vcres_counters.html">vCenter Resource</a>
      - <a href="vmop_counters.html">Virtual Machine Operations</a>
        
      Other performance-counter groups, in addition to those listed here,
      exist on the system. However, only the counter groups listed are considered
      of possible interest to third-party developers.
      
      **Obtaining Metadata and Metrics**  
      This interface provides these
      query operations:
      - *PerformanceManager.QueryPerfProviderSummary*, for obtaining metatdata about *performance providers*
      - *PerformanceManager.QueryPerfCounter* and *PerformanceManager.QueryPerfCounterByLevel* for obtaining
        metadata about supported counters.
      - *PerformanceManager.QueryPerf*, *PerformanceManager.QueryAvailablePerfMetric*, and *PerformanceManager.QueryPerfComposite* for obtaining statistics for one or more
        entities:
        - Use *PerformanceManager.QueryPerf* to obtain metrics for multiple entities in a
          single call&#46;
        - Use *PerformanceManager.QueryPerfComposite* to obtain statistics for a single
          entity with its descendent objects&#151;statistics for a *host* and all its *virtual
          machines*, for example. 
          
      **Product and Version Specifics**  
      Some differences between ESX
      and vCenter Server implementations of this interface include:
      - For ESX systems, this interface provides access to real-time data, and
        to real-time data that has been rolled up into "PastDay" statistics (if
        applicable for the specific counter).
      - For vCenter Server systems, this interface provides access to real-time
        and historical data. vCenter Server collects statistics on a regular
        basis from all ESX systems that it manages, and aggregates the results
        based on the level settings for the server.
      - Default sampling interval is product- and version-specific:
        - ESX 3&#46;x (and subsequent) systems: 20 second interval
        - ESX 2&#46;x systems: 60 second interval
      - VirtualCenter Server 2&#46;5 (and subsequent vCenter Server) systems
        initially collect statistics data 10 minutes after system startup, and
        then hourly thereafter&#46;
        
      See the Programming Guide for more information about using *PerformanceManager*&#46;
  - name: Profile
    description: |2
      The <code>Profile</code> managed object is the base class for host and cluster
      profiles.
  - name: ProfileComplianceManager
    description: |2
      Interface handling the Compliance aspects of entities.
  - name: ProfileManager
    description: |2
      This class is responsible for managing Profiles.
  - name: PropertyCollector
    description: |2
      The *PropertyCollector* managed object retrieves and detects changes
      to the properties of other managed objects.
      
      The *PropertyCollector.RetrievePropertiesEx* method provides one-time property retrieval. The
      *PropertyCollector.WaitForUpdatesEx* method provides incremental change detection and
      supports both polling and notification.
      
      For change detection a client creates one or more filters to specify the
      subset of managed objects in which the client is interested. Filters keep
      per-session state to track incremental changes. Because this state is
      per-session:
      - A session cannot share its *PropertyCollector* filters with other
        sessions
      - two different clients can share the same session, and so can
        share the same filters, but this is not recommended
      - When a session terminates, the associated *PropertyCollector* filters
        are automatically destroyed.
  - name: PropertyFilter
    description: |2
      The *PropertyFilter* managed object type defines a filter
      that controls the properties for which a *PropertyCollector* detects
      incremental changes.
      
      Filters are subordinate objects; they are part of the *PropertyCollector* and do not have independent lifetimes. A Filter
      is automatically destroyed when the session on which it was created is
      closed or the *PropertyCollector* on which it was created is
      destroyed.
  - name: ResourcePool
    description: |2
      Represents a set of physical resources: a single host,
      a subset of a host's resources, or resources spanning multiple hosts.
      
      Resource pools can be subdivided by creating child resource pools. In
      order to run, a virtual machine must be associated as a child of a resource
      pool.
      
      In a parent/child hierarchy of resource pools and virtual machines, the
      single resource pool that has no parent pool is known as the _root resource
      pool_.
      
      **Configuration**
      
      A resource pool is configured with a set of CPU (in MHz) and memory (in MB)
      resources. These resources are specified in absolute terms with a resource
      reservation and a resource limit, along with a shares setting. The shares
      are used during resource contention, to ensure graceful degradation.
      
      For the root resource pool, the values of the reservation and
      the limit are set by the system and are not configurable. The
      reservation and limit are set to the same value, indicating the total amount
      of resources the system has available to run virtual machines. This is
      computed as the aggregated CPU and memory resources provided by the set
      of current available hosts in the parent compute resource minus the
      overhead of the virtualization layer.
      
      Since the resource pool configuration is absolute (in MHz or MB), the
      configuration can become invalid when resources are removed. This can
      happen if a host is removed from the cluster, if a host becomes
      unavailable, or if a host is placed in maintenance mode. When this
      happens, the system flags misconfigured resource pools and displays the
      reservations and limits that are in effect. Further, in a DRS enabled cluster,
      the tree can be misconfigured if the user bypasses VirtualCenter and powers on
      VMs directly on the host.
      
      **A General Discussion of Resource pool states and admission control**
      There are three states that the resource pool tree can be in: undercommited
      (green), overcommited (yellow), and inconsistent (red). Depending on the
      state, different resource pool configuration policies are enforced. The
      states are described in more detail below:
      - **GREEN (aka undercommitted)**: We have a tree that is
        in a _good_ state. Every node has a reservation greater than the sum of
        the reservations for its children. We have enough capacity at the root to
        satisfy all the resources reserved by the children. All operations
        performed on the tree, such as powering on virtual machines, creating
        new resource pools, or reconfiguring resource settings, will ensure
        that the above constraints are maintained.
      - **RED (aka. inconsistent)**: One or more nodes in the
        tree has children whose reservations are greater than the node is configured to
        support. For example, i) a resource pool with a fixed reservation has a running
        virtual machine with a reservation that is higher than the reservation on
        resource pool itself., or ii) the child reservations are greater than the limit.
        
        In this state, the DRS algorithm is disabled until the resource pool tree's
        configuration has been brought back into a consistent state. We also restrict
        the resources that such invalid nodes request from their parents to the
        configured reservation/limit, in an attempt to isolate the problem to a small
        subtree. For the rest of the tree, we determine whether the cluster is
        undercommitted or overcommitted according to the existing rules and perform
        admission control accordingly.
        
        Note that since all changes to the resource settings are validated on the
        VirtualCenter server, the system cannot be brought into this state by simply
        manipulating a cluster resource pool tree through VirtualCenter. It can only
        happen if a virtual machine gets powered on directly on a host that is part of
        a DRS cluster.
      - **YELLOW (aka overcommitted)**: In this state, the tree is
        consistent internally, but the root resource pool does not have the capacity at
        to meet the reservation of its children. We can only go from GREEN -&gt; YELLOW if
        we lose resources at the root. For example, hosts becomes unavailable or is
        put into maintenance mode. Note that we will always have enough capacity at the root
        to run all currently powered on VMs. However, we may not be able to satisfy all
        resource pool reservations in the tree. In this state, the reservation configured for
        a resource pool is no longer guaranteed, but the limits are still enforced.
        This provides additional flexibility for bringing the tree back into a
        consistent state, without risking bringing the tree into a RED state. In
        more detail:
        - **Resource Pool** The root is considered to have unlimited
          capacity. You can reserve resources without any check except the
          requirement that the tree remains consistent. This means that
          nodes whose parents are all configured with expandable reservations and no limit
          will have unlimited available resources. However, if there is an ancestor with
          a fixed reservation or an expandable reservation with a limit somewhere, then the
          node will be limited by the reservation/limit of the ancestor.
        - **Virtual Machine** Virtual machines are limited by ancestors
          with a fixed reservation and the capacity at the root.
          
      **Destroying a ResourcePool**
      
      When a ResourcePool is destroyed, all the virtual machines are reassigned to its
      parent pool. The root resource pool cannot be destroyed, and invoking destroy
      on it will throw an InvalidType fault.
      
      Any vApps in the ResourcePool will be moved to the ResourcePool's parent
      before the pool is destroyed.
      
      The Resource.DeletePool privilege must be held on the pool as well as the parent
      of the resource pool. Also, the Resource.AssignVMToPool privilege must be held
      on the resource pool's parent pool and any virtual machines that are reassigned.
  - name: ScheduledTask
    description: |2
      The scheduled task object.
  - name: ScheduledTaskManager
    description: |2
      Object manager for scheduled tasks.
  - name: SearchIndex
    description: |2
      The SearchIndex service allows a client to efficiently query the
      inventory for a specific managed entity by attributes such as UUID, IP address, DNS
      name, or datastore path.
      
      Such searches typically return a VirtualMachine or a
      HostSystem. While searching, only objects for which the user has sufficient
      privileges are considered. The findByInventoryPath and findChild operations only
      search on entities for which the user has view privileges; all other SearchIndex
      find operations only search virtual machines and hosts for which the user has
      read privileges. If the user does not have sufficient privileges for an object that
      matches the search criteria, that object is not returned.
  - name: ServiceInstance
    description: |2
      The *ServiceInstance* managed object is the singleton root object of the inventory
      on both vCenter servers and servers running on standalone host agents.
      
      The server creates the *ServiceInstance* automatically, and also automatically
      creates the various manager entities that provide services in the virtual
      environment. Some examples of manager entities are *LicenseManager*,
      *PerformanceManager*, and *ViewManager*. You can
      access the manager entities through the *ServiceInstance.content* property.
      
      A vSphere API client application begins by connecting to a server
      and obtaining a reference to the *ServiceInstance*. The client can then use
      the *ServiceInstance.RetrieveServiceContent* method to gain
      access to the various vSphere manager entities and to the root folder
      of the inventory.
      
      When you create managed objects, the server adds them to the inventory.
      The inventory of managed objects includes instances the following object types:
      - *ServiceInstance* -- Root of the inventory; created by vSphere.
      - *Datacenter* -- A container that represents a virtual
        data center. It contains hosts, network entities,
        virtual machines and virtual applications,
        and datastores.
      - *Folder* -- A container used for hierarchical
        organization of the inventory.
      - *VirtualMachine* -- A virtual machine.
      - *VirtualApp* -- A virtual application.
      - *ComputeResource* -- A compute resource
        (either a cluster or a stand-alone host).
      - *ResourcePool* -- A subset of resources provided by a ComputeResource.
      - *HostSystem* -- A single host (ESX Server or VMware Server).
      - *Network* -- A network available to either hosts or virtual
        machines.
      - *DistributedVirtualSwitch* -- A distributed virtual switch.
      - *DistributedVirtualPortgroup* -- A distributed virtual port group.
      - *Datastore* -- Platform-independent, host-independent storage
        for virtual machine files.
        
      The following figure shows the organization of managed objects in the
      vCenter hierarchy:
      
      Every Datacenter has the following set of dedicated folders.
      These folders are empty until you create entities for the Datacenter.
      - A folder for any combination of *VirtualMachine*
        and/or *VirtualApp* objects. *VirtualApp* objects can be nested,
        but only the parent *VirtualApp* can be visible in the folder.
        Virtual machines that are children of virtual applications are not
        associated with a VirtualMachine/VirtualApp folder.
      - A folder for a *ComputeResource* hierarchy.
      - A folder for network entities - any combination
        of *Network*, *DistributedVirtualSwitch*, and/or
        *DistributedVirtualPortgroup* objects.
      - A folder for *Datastore* objects.
        
      The host agent hierarchy has the same general form as the vCenter hierarchy,
      but most of the objects are limited to one instance:
  - name: ServiceManager
    description: |2
      The ServiceManager managed object is a singleton object that is used to present
      services that are optional and not necessarily formally defined.
      
      This directory makes available a list of such services and provides an easy way
      to locate them. The service being represented can take arbitrary form here and
      is thus represented by a generic ManagedObject. The expectation is that the
      client side is knowledgeable of the instance type of the specific service it
      is interested in using.
  - name: SessionManager
    description: |2
      This managed object type includes methods for logging on and
      logging off clients, determining which clients are currently
      logged on, and forcing clients to log off.
  - name: SimpleCommand
    description: |2
      A managed object that wraps the execution of a single arbitrary
      command.
      
      The specific command executed is assumed to be known from
      the service name by the client invoking this command. This object
      presents a generic interface for such services.
  - name: SiteInfoManager
    description: |2
      This managed object type is used for managing external site-related
      capabilities which are advertised by vCenter.
  - name: StoragePod
    description: |2
      The *StoragePod* data object aggregates the storage
      resources of associated *Datastore* objects into a single
      storage resource for use by virtual machines.
      
      The storage services
      such as Storage DRS (Distributed Resource Scheduling),
      enhance the utility of the storage pod.
      
      Use the *Folder*.*Folder.CreateStoragePod* method
      to create an instance of this object.
  - name: StorageQueryManager
    description: |2
      This managed object is used to query vCenter Server's storage system
      entities.
  - name: StorageResourceManager
    description: |2
      This managed object type provides a way to configure resource usage for
      storage resources.
  - name: Task
    description: |2
      A task is used to monitor and potentially cancel long
      running operations.
  - name: TaskHistoryCollector
    description: |2
      TaskHistoryCollector provides a mechanism for
      retrieving historical data and updates when the server appends new
      tasks.
  - name: TaskManager
    description: |2
      The TaskManager managed object provides an interface for creating and managing
      *Task* managed objects.
      
      Many operations are non-blocking,
      returning a *Task* managed object that can be monitored by a
      client application. *Task* managed objects may also be
      accessed through the TaskManager.
  - name: TenantTenantManager
    description: |2
      A singleton managed object for managing vCenter tenants.
  - name: UserDirectory
    description: |2
      The *UserDirectory* managed object provides information about users
      and groups on a vSphere server and ESX hosts.
      
      The method
      *UserDirectory.RetrieveUserGroups* returns a list
      of user account data. The method can perform a search operation based on
      specific criteria - user name, group name, sub-string or string matching,
      and, on Windows, domain. Use the results as input
      to the AuthorizationManager methods
      *AuthorizationManager.SetEntityPermissions* and
      *AuthorizationManager.ResetEntityPermissions*.
      
      The content of the returned results depends on the server environment:
      - On a Windows host, *UserDirectory.RetrieveUserGroups* can search
        from the set of trusted domains on the host, including the primary
        domain of the system. A special domain (specified as an
        empty string - &quot;&quot;) refers to the users and groups local
        to the host.
      - On an ESX Server or a Linux host, the search operates on the
        users and groups defined in the /etc/passwd file. Always specify
        an empty string (&quot;&quot;) for the domain argument.
        If the /etc/passwd file contains Sun NIS or NIS+ users and groups,
        RetrieveUserGroups returns information about these accounts as well.
  - name: VStorageObjectManagerBase
    description: |2
      Base interface to manage virtual storage object.
  - name: VcenterVStorageObjectManager
    description: |2
      Interface to manage virtual storage object on a vCenter.
      
      VStorageObjectManager and SPBM policy support:
      All of the VStorageObjectManager APIs requiring ESXi host
      uses "Programatically selected" host to perform the actual operation.
      If the selected host is of 6.5 version then policy would not be passed
      down to host. In that case, user operation would succeed but if user checks
      SPBM Entity Compliance, it will show "Mismatch" / "Non Compliant" as a
      compliance result.
  - name: View
    description: |2
      *View* is the base class for session-specific view objects.
      
      A view is a mechanism that supports selection of objects on the server
      and subsequently, access to those objects.
      To create a view, use the *ViewManager* methods.
      A view exists until you terminate it by calling the *View.DestroyView* method,
      or until the end of the session.
      Access to a view is limited to the session in which it is created.
      
      There are three types of views:
      - *ContainerView*
      - *ListView*
      - *InventoryView*
        
      A view maintains a *ManagedObjectView.view* list that contains
      managed object references. You can use a view
      with the *PropertyCollector* to retrieve data and
      obtain notification of changes to the virtual environment.
      For information about using views with the PropertyCollector,
      see the description of *ViewManager*.
  - name: ViewManager
    description: |2
      The *ViewManager* managed object provides methods to create *ContainerView*,
      *InventoryView*, and *ListView* managed objects.
      
      The *ViewManager* also maintains a list of managed object references
      to the views that you have created. Use the *ViewManager.viewList*
      property to access the views.
      
      A *View* is a mechanism that supports selection of objects on the server
      and subsequently, access to those objects. Views can simplify the task of
      retrieving data from the server. When you use a view, you can use a single
      invocation of a *PropertyCollector* method
      to retrieve data or receive notification of changes instead of multiple invocations
      involving multiple filter specifications. A view exists until you destroy it
      or until the end of the session.
      
      The *ViewManager* supports the following views:
      - A *ContainerView* is based on *Folder*,
        *Datacenter*, *ComputeResource*,
        *ResourcePool*, or *HostSystem* managed objects.
        Use a container view to monitor the container contents and optionally,
        its descendants.
      - A *ListView* managed object is based on an arbitrary but
        specific set of objects. When you create a list view, you provide
        a list of objects to populate the view
        (*ViewManager.CreateListView*),
        or you provide an existing view from which the new view is created
        (*ViewManager.CreateListViewFromView*).
      - An *InventoryView* managed object is based on the entire inventory.
        Use an inventory view as a general mechanism to monitor the inventory
        or portions of the inventory.
        
      For example, you might use the following sequence of operations to get the
      names of all the virtual machines on a server:
      1. Create a *ContainerView* for the root folder in the server inventory.
         For the *ContainerView*, use the *ContainerView.type* property
         to include only virtual machines.
      2. Create a filter specification for the *PropertyCollector*.
         - Use the *ContainerView* as the starting object in the
           *ObjectSpec* for the filter.
         - Use the *TraversalSpec*
           to select all objects in the view list (all the virtual machines).
         - Use the *PropertySpec*
           to retrieve the name property from each virtual machine.
      3. Invoke the *PropertyCollector*
         *PropertyCollector.RetrieveProperties* method.
  - name: VirtualApp
    description: |2
      Represents a multi-tiered software solution.
      
      A vApp is a collection of
      virtual machines (and potentially other vApp containers) that are operated and
      monitored as a unit. From a manage perspective, a multi-tiered vApp acts a
      lot like a virtual machine object. It has power operations, networks, datastores,
      and its resource usage can be configured.
      
      From a technical perspective, a vApp container is a specialized resource pool that
      has been extended with the following capabilities:
      - Product information such as product name, vendor, properties,
        and licenses.
      - A power-on/power-off sequence specification
      - Support for import/export vApps as OVF packages
      - An OVF environment that allows for application-level customization
        
      **Destroying a vApp**
      
      When a vApp is destroyed, all of its virtual machines are destroyed,
      as well as any child vApps.
      
      The VApp.Delete privilege must be held on the vApp as well as the
      parent folder of the vApp. Also, the VApp.Delete privilege must
      be held on any child vApps that would be destroyed by the operation.
  - name: VirtualDiskManager
    description: |2
      Most VirtualDiskManager APIs will be DEPRECATED as of vSphere 6.5.
      Please use VStorageObjectManager APIs to manage Virtual disks.
      
      This managed object type provides a way to manage and manipulate virtual disks
      on datastores. The source and the destination names are in the form of
      a URL or a datastore path.
      
      A URL has the form
      > _scheme_://_authority_/folder/_path_?dcPath=_dcPath_&amp;dsName=_dsName_
      
      where
      - _scheme_ is <code>http</code> or <code>https</code>.
      - _authority_ specifies the hostname or IP address of the VirtualCenter or
        ESX server and optionally the port.
      - _dcPath_ is the inventory path to the Datacenter containing the
        Datastore.
      - _dsName_ is the name of the Datastore.
      - _path_ is a slash-delimited path from the root of the datastore.
      
      A datastore path has the form
      > \[_datastore_\] _path_
      
      where
      - _datastore_ is the datastore name.
      - _path_ is a slash-delimited path from the root of the datastore.
      
      An example datastore path is "\[storage\] path/to/file.extension".
      A listing of all the files, disks and folders on
      a datastore can be obtained from the datastore browser.
      
      See also *HostDatastoreBrowser*.
  - name: VirtualMachine
    description: |2
      VirtualMachine is the managed object type for manipulating virtual machines,
      including templates that can be deployed (repeatedly) as new virtual machines.
      
      This type provides methods for configuring and controlling a virtual machine.
      
      VirtualMachine extends the ManagedEntity type because virtual machines are
      part of a virtual infrastructure inventory. The parent of a virtual machine
      must be a folder, and a virtual machine has no children.
      
      Destroying a virtual machine disposes of all associated storage, including
      the virtual disks. To remove a virtual machine while retaining its
      virtual disk storage, a client must remove the virtual disks
      from the virtual machine before destroying it.
  - name: VirtualMachineCompatibilityChecker
    description: |2
      A singleton managed object that can answer questions about compatibility
      of a virtual machine with a host.
  - name: VirtualMachineGuestCustomizationManager
    description: |2
      GuestCustomizationManager is a singleton managed object that provides APIs
      for guest customization of a running VM.
  - name: VirtualMachineProvisioningChecker
    description: |2
      A singleton managed object that can answer questions about
      the feasibility of certain provisioning operations.
  - name: VirtualMachineSnapshot
    description: |2
      The Snapshot managed object type specifies the interface to individual snapshots
      of a virtual machine.
      
      Although these are managed objects, they are subordinate to
      their virtual machine.
  - name: VirtualizationManager
    description: |2
      Deprecated as of VI API 2.5, use the VMware vCenter Converter,
      an optional software plug-in for vCenter Server for
      migrating physical and virtual machines to VMware vSphere.
      
      The VirtualizationManager is the interface for discover and consolidate
      host and services from physical environment to virtualization environment.
  - name: VmwareDistributedVirtualSwitch
    description: |2
      The *VmwareDistributedVirtualSwitch* managed object
      is the VMware implementation of a distributed virtual switch.
      
      The functionality listed here is for a VMware distributed virtual switch only.
      
      When you use a VMware distributed virtual switch, you can perform
      backup and restore operations on the VMware switch. You can also
      perform rollback operations on the switch and on portgroups
      associated with the VMware switch. See the description for the
      following methods:
      - *DistributedVirtualSwitchManager.DVSManagerExportEntity_Task*
      - *DistributedVirtualSwitchManager.DVSManagerImportEntity_Task*
      - *DistributedVirtualSwitch.DVSRollback_Task*
      - *DistributedVirtualPortgroup.DVPortgroupRollback_Task*
  - name: VsanUpgradeSystem
    description: |2
      VSAN Upgrade System.
      
      Used to perform and monitor VSAN on-disk format
      upgrades.
  - name: Agency
    description: |2
      An <code>Agency</code> handles the deployment of a single type of agent
      virtual machine and any associated VIB bundle, on a set of compute resources.
      
      For a solution to deploy multiple types of agents, it must create multiple
      agencies by using <code>createAgency</code> on *EsxAgentManager* (see
      *EsxAgentManager.CreateAgency*).
      
      Creating an agency is a long-running process. vSphere ESX Agent Manager must
      install VIBs, configure hosts, install agent virtual machines and do many
      more things. Each of these steps can take a considerable amount of time.
      vSphere ESX Agent Manager can also encounter problems when creating the
      agency. In this case, the solution must remediate the problem. See
      *Issue* for a description of the kinds of issue that vSphere ESX Agent
      Manager will raise. Similarly, removing an agency from vSphere ESX Agent
      Manager is also a long-running process that involves many steps. Removing an
      agency can also raise issues.
      
      Use the <code>goalState</code> and <code>status</code> properties to show the
      progress of creating or removing an Agency. The <code>goalState</code> and
      <code>status</code> properties are found in the runtime information of an
      <code>Agency</code> (see *EamObjectRuntimeInfo.status* in
      *Agency.runtime*):
      - <code>goalState</code>. The goal state describes the overall goal of an
        <code>Agency</code>. The goal state can be <code>enabled</code> or
        <code>uninstalled</code>:
        - <code>enabled</code>. The <code>Agency</code> continuously deploys VIBs
          and agent virtual machines, powers on agent virtual machines, and monitors
          agents for issues.
        - <code>uninstalled</code>. The <code>Agency</code> uninstalls any
          installed VIBs and powers off and deletes any deployed agent virtual
          machines.
      - <code>status</code>. The status of the <code>Agency</code> regarding the
        given goal state. Status can be either red, yellow or green:
        - <code>red</code>. An issue is preventing the <code>Agency</code> from
          reaching its desired goal state. See *EamObjectRuntimeInfo.issue* in
          *Agency.runtime* for the types of issues that can block this
          <code>Agency</code>.
        - <code>yellow</code>. The <code>Agency</code> is actively working to reach
          the desired goal state. For the <code>enabled</code> goal state, this means
          that this <code>Agency</code> is currently installing VIBs, deploying agent
          virtual machines, and powering them on.
        - <code>green</code>. The <code>Agency</code> has reached the desired goal
          state. The <code>Agency</code> is no longer actively scheduling new tasks but
          is monitoring the vCenter Server for changes that might conflict with this
          <code>Agency</code>'s goal state.
          
      The following image shows in general terms how the status changes in the
      life-cycle of an <code>Agency</code>.
      
      "Agency degraded" means that something has happened in the vCenter Server
      that causes this <code>Agency</code> to actively schedule new tasks to reach
      the goal state. For example, adding a host to a cluster covered by the scope
      of the <code>Agency</code>, which causes ESX Agent Manager to install a VIB
      and deploy an agent virtual machine on the new host.
      A solution should monitor the list of issues associated with this
      <code>Agency</code>.
      
      The solution can poll *Agency.runtime*.
  - name: Agent
    description: |2
      An <code>Agent</code> is the vSphere ESX Agent Manager managed object
      responsible for deploying an <code>Agency</code> on a single host.
      
      The
      <code>Agent</code> maintains the state of the current deployment in its
      runtime information (see *Agent.runtime*).
      
      An <code>Agent</code> has the same <code>goalState</code> and
      <code>status</code> properties as an <code>Agency</code>, that are used in
      the same way:
      - <code>goalState</code>. The goal state describes the overall goal of this
        <code>Agent</code>. It can be <code>enabled</code> or
        <code>uninstalled</code>:
        - <code>enabled</code>. The <code>Agent</code> deploys its VIB, its agent
          virtual machine, and powers on the agent virtual machine. The
          <code>Agent</code> monitors in vCenter the status of the installation of the
          VIB (in case it is uninstalled outside of vSphere ESX Agent Manager) and of
          the agent virtual machine (in case an operation is performed on it outside of
          vSphere ESX Agent Manager).
        - <code>uninstalled</code>. The <code>Agent</code> uninstalls any installed
          VIB and power off and delete the deployed agent virtual machine.
      - <code>status</code>. The status of the <code>Agent</code> regarding the
        given goal state. Status can be either red, yellow or green:
        - <code>red</code>. An issue is preventing the <code>Agent</code> from
          reaching its desired goal state. See *EamObjectRuntimeInfo.issue* in
          *Agent.runtime* for the types of issues that can block this
          <code>Agent</code>.
        - <code>yellow</code>. The <code>Agent</code> is actively working to reach
          the desired goal state. For the <code>enabled</code> goal state, this means
          that this <code>Agent</code> is installing its VIB, deploying the agent
          virtual machine, and powering it on.
        - <code>green</code>. The <code>Agent</code> has reached the desired goal
          state. The <code>Agent</code> is no longer actively scheduling new tasks but
          is monitoring vCenter for changes that might conflict with this
          <code>Agent</code>'s goal state.
  - name: EamObject
    description: |2
      Base class for the <code>Agent</code>, <code>Agency</code> and
      <code>EsxAgentManager</code> classes.
  - name: EamTask
    description: |2
      Returned when invoking long-running operations in vSphere ESX Agent Manager.
  - name: EsxAgentManager
    description: |2
      The <code>EsxAgentManager</code> is the main entry point for a solution to
      create agencies in the vSphere ESX Agent Manager server.
      
      In vCenter 6.0, a _solution_ is either a vCenter extension or a regular
      user.
      
      The vSphere ESX Agent Manager VMODL API distinguishes between two types of
      users: VC extensions and regular vCenter users. These users have different
      privileges in the vSphere ESX Agent Manager VMODL API:
      - VC extensions have the privileges to call anything in the vSphere ESX
        Agent Manager VMODL API.
      - Regular vCenter users have restrictions on what methods they can call.
        The methods that a vCenter user that is not an extension can call are
        annotated with two types of privileges, <code>Eam.View</code> and
        <code>Eam.Modify</code>:
        - <code>Eam.View</code>. If a method has the <code>Eam.View</code>
          privilege, a user can call that method if they have the <code>EAM.View</code>
          privilege in vCenter.
        - <code>Eam.Modify</code>. Similarly to <code>Eam.View</code>, if a method
          has the <code>Eam.Modify</code> privilege, a user can call that method if
          they have the <code>EAM.Modify</code> privilege in vCenter. If a user has the
          <code>EAM.Modify</code> privilege, they automatically have
          <code>EAM.View</code>.
          
      In vCenter 6.5 every _solution_, which is making VMODL API calls to
      EsxAgentManager, should be aware of the posibility, that the data from
      vCenter database might not be fully loaded. In all such cases the clients
      will receive an _ESX Agent Manager_ runtime fault:
      _EamServiceNotInitialized_.
      NOTE: No issues are associated with <code>EsxAgentManager</code> any longer.
  - name: PbmCapabilityMetadataManager
    description: |2
      Intended for internal use.
  - name: PbmComplianceManager
    description: |2
      The *PbmComplianceManager* provides methods to verify the compliance
      of virtual machine and virtual disk requirement profiles.
      
      When you provision
      a virtual machine on a matching datastore, the Server sends the profile
      to the storage provider. When you perform a compliance check, the storage
      provider compares the requirements with its capabilities,
      returns the results to the Server, and the Server returns the results
      to your client. The Server maintains the compliance results for retrieval
      at a later time.
      
      You can check the compliance of one or more virtual machines and/or virtual disks.
      You can also perform a rollup compliance check, in which the Server checks the
      compliance of a virtual machine and all of its virtual disks.
  - name: PbmPlacementSolver
    description: |2
      The *PbmPlacementSolver* data object provides methods to identify
      placement hubs that support the capabilities to store virtual
      machine files.
      
      A placement hub is a datastore or a storage pod.
      A vSphere API <code>StoragePod</code> corresponds to Storage DRS in the vSphere Web Client.
  - name: PbmProfileProfileManager
    description: |2
      The *PbmProfileProfileManager* supports operations on virtual machine storage profiles.
      
      A Storage Policy API profile consists of a set of _subprofiles_.
      A subprofile corresponds to a _rule set_ in the vSphere Web Client.
      
      Virtual machine storage profiles specify the storage requirements
      for virtual machine files. You use the vSphere Web Client to define virtual machine
      storage profiles. The requirements
      (*PbmCapabilityProfile*.*PbmCapabilityProfile.constraints*)
      impose constraints on the placement of virtual machine files.
      
      The Storage Policy Server also supports datastore profiles. Datastore profiles
      define storage capabilities. Storage capabilities are resources defined by
      storage providers. Storage requirements are based on storage capabilities.
      When you associate a storage profile with a virtual machine or virtual disk,
      the Server sends the profile to the storage provider. When you perform compliance
      checking (*PbmComplianceManager*), the storage provider
      compares the requirements with the capabilities.
      
      The *PbmProfileProfileManager* supports the following operations on
      virtual machine storage profiles.
      - Create, update, and delete storage profiles.
      - Retrieve profile data based on specified criteria.
      - Retrieve storage vendor data.
        
      The following figure shows the set of data objects that comprise
      a storage profile specification (*PbmCapabilityProfileCreateSpec*).
      You pass a storage profile specification to the Storage Policy Server
      when you call the following methods:
      - *PbmProfileProfileManager*.*PbmProfileProfileManager.PbmCreate*
      - *PbmPlacementSolver*.*PbmPlacementSolver.PbmCheckCompatibilityWithSpec*
      - *PbmPlacementSolver*.*PbmPlacementSolver.PbmQueryMatchingHubWithSpec*
      <!-- -->
           +---------------------------------+
           |  PbmCapabilityProfileCreateSpec |
           |                            name |     +-------------------------+
           |                     description |     |  PbmProfileResourceType |
           |                    resourceType ------|    resourceType=STORAGE |
           |                     constraints ---   +-------------------------+
           +---------------------------------+ |
                                               |
                                               |
                  +------------------------------------+
                  | PbmCapabilitySubProfileConstraints |
                  |                        subprofiles ---
                  +------------------------------------+ |
                                                         | 1..n
                                                         |
                                    +-------------------------+
                                    | PbmCapabilitySubProfile |
                                    |                    name |
                                    |          forceProvision |
                                    |              capability ---
                                    +-------------------------+ |
                                                                | 1..n            +-------------------------------+
                                                                |                 | PbmCapabilityMetadataUniqueId |
                                              +-----------------------+           |                            id |
                                              | PbmCapabilityInstance |           |                     namespace |
                                              |                    id ------------+-------------------------------+
                                              |            constraint ---
                                              +-----------------------+ |
                                                                        | 1..n
                                                                        |                +-------------------------------+
                                             +---------------------------------+         | PbmCapabilityPropertyInstance |
                                             | PbmCapabilityConstraintInstance |  1..n   |                            id |
                                             |                propertyInstance ----------|                         value |
                                             +---------------------------------+         +-------------------------------+
  - name: PbmProvider
    description: |2
      Intended for internal use.
  - name: PbmReplicationManager
    description: |2
      The *PbmReplicationManager* provides methods dealing with replication aspects of virtual
      machine and virtual disk requirement profiles.
  - name: PbmServiceInstance
    description: |2
      The *PbmServiceInstance* managed object is the root object of the
      Storage Policy service.
      
      After you connect to the Storage Policy Server,
      you create a reference to the *PbmServiceInstance*, and use
      that reference to retrieve the *PbmServiceInstanceContent*
      data object. The *PbmServiceInstanceContent* object provides
      access to the Storage Policy managed objects.
  - name: SmsProvider
    description: |2
      Provider interface for Storage Monitoring Service (SMS).
  - name: SmsServiceInstance
    description: |2
      Service interface for the Storage Monitoring Service.
  - name: SmsSessionManager
    description: |2
      *SmsSessionManager* managed object manages client sessions.
      
      Login to SMS service is done through this interface.
      It is SSO enabled so only login by using SamlToken is allowed.
      This API is intended for internal use only.
  - name: SmsStorageManager
    description: |2
      The *SmsStorageManager* managed object (SMS) provides methods to retrieve
      information about available storage topology, capabilities, and state.
      
      SMS establishes and maintains connections with VASA providers. SMS retrieves
      information about storage availability from the providers, and clients can use
      the SMS API to perform the following operations.
      - Identify VASA providers.
      - Retrieve information about storage arrays.
      - Identify vSphere inventory entities (hosts and datastores)
        which are associated with external storage entities on the storage arrays.
  - name: SmsTask
    description: |2
      A task is used to monitor long running operations.
  - name: VasaProvider
    description: |2
      VASA(vStorage APIs for Storage Awareness) provider
      definition.
  - name: ManagedObject
    description: |2
      This is the built-in base interface implemented by all
      managed objects.
  - name: VslmServiceInstance
    description: |2
      The *VslmServiceInstance* managed object is the root object of the
      vSphere Storage Lifecycle Management(VSLM) service.
      
      After you connect to
      VSLM Server, you create a reference to the *VslmServiceInstance*, and use
      that reference to retrieve the *VslmServiceInstanceContent* data
      object. The *VslmServiceInstanceContent* object provides access to
      VSLM managed objects.
  - name: VslmSessionManager
    description: |2
      *VslmSessionManager* managed object manages client sessions.
      
      Login to VSLM service is done through this interface.
      It is SSO enabled so only login by using SamlToken is allowed.
      This API is intended for internal use only.
  - name: VslmStorageLifecycleManager
    description: |2
      Interface to manage storage inventory in VSLM service.
      
      VSLM maintains inventory of VStorageObjects present on all the datastores
      connected to VC. If there is a change in datastore membership in VC that has
      to be updated in VSLM as well.
      APIs in this class are called as callback functions when Datastore
      membership in VC changes.
  - name: VslmTask
    description: |2
      A task is used to monitor long running operations.
  - name: VslmVStorageObjectManager
    description: |2
      Interface to manage virtual storage object on a vCenter.
      
      VStorageObjectManager and SPBM policy support:
      All of the VStorageObjectManager APIs requiring ESXi host
      uses "Programatically selected" host to perform the actual operation.
      If the selected host is of 6.5 version then policy would not be passed
      down to host. In that case, user operation would succeed but if user checks
      SPBM Entity Compliance, it will show "Mismatch" / "Non Compliant" as a
      compliance result.
components:
  securitySchemes:
    Session:
      type: apiKey
      in: header
      name: vmware-api-session-id
      description: A session token, placed in the `vmware-api-session-id` HTTP header, returned by the `Login` operation of the `SessionManager` interface.
  schemas:
    Any:
      type: object
      description: |2
        The base of all data types. Not to be used directly on the wire.
      properties:
        _typeName:
          description: |2
            The type discriminator. Refers to the name of a valid data object type.
          type: string
      required:
        - _typeName
      discriminator:
        propertyName: _typeName
        mapping:
          boolean: '#/components/schemas/PrimitiveBoolean'
          byte: '#/components/schemas/PrimitiveByte'
          short: '#/components/schemas/PrimitiveShort'
          int: '#/components/schemas/PrimitiveInt'
          long: '#/components/schemas/PrimitiveLong'
          float: '#/components/schemas/PrimitiveFloat'
          double: '#/components/schemas/PrimitiveDouble'
          string: '#/components/schemas/PrimitiveString'
          dateTime: '#/components/schemas/PrimitiveDateTime'
          anyURI: '#/components/schemas/PrimitiveURI'
          ArrayOfAnyURI: '#/components/schemas/ArrayOfURI'
          base64Binary: '#/components/schemas/PrimitiveBinary'
          ArrayOfBase64Binary: '#/components/schemas/ArrayOfBinary'
          TypeName: '#/components/schemas/PrimitiveTypeName'
          PropertyPath: '#/components/schemas/PrimitivePropPath'
          ArrayOfPropertyPath: '#/components/schemas/ArrayOfPropPath'
          MethodName: '#/components/schemas/PrimitiveMethodName'

    ArrayOfAnyType:
      type: object
      description: |2
        A boxed array of *Any*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/Any'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ManagedObjectReference:
      type: object
      description: |2
        The ManagedObjectReference data object type is a special-purpose data object. Commonly referred to as simply a "reference", "MoRef", "MOR", or other variations of this theme, instances of managed object references contain data that identifies specific server-side managed objects. Managed object references are typically one of the return types from a method invocation.
        
        Managed object references are client application references to server-side managed objects. The client application uses ManagedObjectReference objects when it invokes operations on a server. A ManagedObjectReference is guaranteed to be unique and persistent during an object's lifetime. The reference persists after an object has moved within the inventory, across sessions, and across server restarts. If you remove an object, for example, a virtual machine, from the inventory, and then put it back, the reference changes.
      properties:
        type:
          description: |2
            The name of the Managed Object type this ManagedObjectReference refers to.
          $ref: '#/components/schemas/MoTypes_enum'
        value:
          description: |2
            A unique identifier (within this vCenter Server instance) for a specific managed object such as `group-d1` or `vm-015` or `ServiceInstance`.
          type: string
      required:
        - type
        - value
      allOf:
        - $ref: '#/components/schemas/Any'

    MoTypes_enum:
      type: string
      description: |2
        Possible values:
        - `Alarm`
        - `AlarmManager`
        - `AuthorizationManager`
        - `CertificateManager`
        - `ClusterComputeResource`
        - `ClusterEVCManager`
        - `ClusterProfile`
        - `ClusterProfileManager`
        - `ComputeResource`
        - `ContainerView`
        - `CryptoManager`
        - `CryptoManagerHost`
        - `CryptoManagerHostKMS`
        - `CryptoManagerKmip`
        - `CustomFieldsManager`
        - `CustomizationSpecManager`
        - `Datacenter`
        - `Datastore`
        - `DatastoreNamespaceManager`
        - `DiagnosticManager`
        - `DistributedVirtualPortgroup`
        - `DistributedVirtualSwitch`
        - `DistributedVirtualSwitchManager`
        - `EnvironmentBrowser`
        - `EventHistoryCollector`
        - `EventManager`
        - `ExtensibleManagedObject`
        - `ExtensionManager`
        - `FailoverClusterConfigurator`
        - `FailoverClusterManager`
        - `FileManager`
        - `Folder`
        - `GuestAliasManager`
        - `GuestAuthManager`
        - `GuestFileManager`
        - `GuestOperationsManager`
        - `GuestProcessManager`
        - `GuestWindowsRegistryManager`
        - `HealthUpdateManager`
        - `HistoryCollector`
        - `HostAccessManager`
        - `HostActiveDirectoryAuthentication`
        - `HostAssignableHardwareManager`
        - `HostAuthenticationManager`
        - `HostAuthenticationStore`
        - `HostAutoStartManager`
        - `HostBootDeviceSystem`
        - `HostCacheConfigurationManager`
        - `HostCertificateManager`
        - `HostCpuSchedulerSystem`
        - `HostDatastoreBrowser`
        - `HostDatastoreSystem`
        - `HostDateTimeSystem`
        - `HostDiagnosticSystem`
        - `HostDirectoryStore`
        - `HostEsxAgentHostManager`
        - `HostFirewallSystem`
        - `HostFirmwareSystem`
        - `HostGraphicsManager`
        - `HostHealthStatusSystem`
        - `HostImageConfigManager`
        - `HostKernelModuleSystem`
        - `HostLocalAccountManager`
        - `HostLocalAuthentication`
        - `HostMemorySystem`
        - `HostNetworkSystem`
        - `HostNvdimmSystem`
        - `HostPatchManager`
        - `HostPciPassthruSystem`
        - `HostPowerSystem`
        - `HostProfile`
        - `HostProfileManager`
        - `HostServiceSystem`
        - `HostSnmpSystem`
        - `HostSpecificationManager`
        - `HostStorageSystem`
        - `HostSystem`
        - `HostVFlashManager`
        - `HostVMotionSystem`
        - `HostVStorageObjectManager`
        - `HostVirtualNicManager`
        - `HostVsanInternalSystem`
        - `HostVsanSystem`
        - `HttpNfcLease`
        - `InventoryView`
        - `IoFilterManager`
        - `IpPoolManager`
        - `IscsiManager`
        - `LicenseAssignmentManager`
        - `LicenseManager`
        - `ListView`
        - `LocalizationManager`
        - `ManagedEntity`
        - `ManagedObjectView`
        - `MessageBusProxy`
        - `Network`
        - `OpaqueNetwork`
        - `OptionManager`
        - `OverheadMemoryManager`
        - `OvfManager`
        - `PerformanceManager`
        - `Profile`
        - `ProfileComplianceManager`
        - `ProfileManager`
        - `PropertyCollector`
        - `PropertyFilter`
        - `ResourcePlanningManager`
        - `ResourcePool`
        - `ScheduledTask`
        - `ScheduledTaskManager`
        - `SearchIndex`
        - `ServiceInstance`
        - `ServiceManager`
        - `SessionManager`
        - `SimpleCommand`
        - `SiteInfoManager`
        - `StoragePod`
        - `StorageQueryManager`
        - `StorageResourceManager`
        - `Task`
        - `TaskHistoryCollector`
        - `TaskManager`
        - `TenantTenantManager`
        - `UserDirectory`
        - `VStorageObjectManagerBase`
        - `VcenterVStorageObjectManager`
        - `View`
        - `ViewManager`
        - `VirtualApp`
        - `VirtualDiskManager`
        - `VirtualMachine`
        - `VirtualMachineCompatibilityChecker`
        - `VirtualMachineGuestCustomizationManager`
        - `VirtualMachineProvisioningChecker`
        - `VirtualMachineSnapshot`
        - `VirtualizationManager`
        - `VmwareDistributedVirtualSwitch`
        - `VsanUpgradeSystem`
        - `Agency`
        - `Agent`
        - `EamObject`
        - `EamTask`
        - `EsxAgentManager`
        - `PbmCapabilityMetadataManager`
        - `PbmComplianceManager`
        - `PbmPlacementSolver`
        - `PbmProfileProfileManager`
        - `PbmProvider`
        - `PbmReplicationManager`
        - `PbmServiceInstance`
        - `PbmSessionManager`
        - `SmsProvider`
        - `SmsServiceInstance`
        - `SmsSessionManager`
        - `SmsStorageManager`
        - `SmsTask`
        - `VasaProvider`
        - `ManagedObject`
        - `VslmServiceInstance`
        - `VslmSessionManager`
        - `VslmStorageLifecycleManager`
        - `VslmTask`
        - `VslmVStorageObjectManager`
      enum:
        - Alarm
        - AlarmManager
        - AuthorizationManager
        - CertificateManager
        - ClusterComputeResource
        - ClusterEVCManager
        - ClusterProfile
        - ClusterProfileManager
        - ComputeResource
        - ContainerView
        - CryptoManager
        - CryptoManagerHost
        - CryptoManagerHostKMS
        - CryptoManagerKmip
        - CustomFieldsManager
        - CustomizationSpecManager
        - Datacenter
        - Datastore
        - DatastoreNamespaceManager
        - DiagnosticManager
        - DistributedVirtualPortgroup
        - DistributedVirtualSwitch
        - DistributedVirtualSwitchManager
        - EnvironmentBrowser
        - EventHistoryCollector
        - EventManager
        - ExtensibleManagedObject
        - ExtensionManager
        - FailoverClusterConfigurator
        - FailoverClusterManager
        - FileManager
        - Folder
        - GuestAliasManager
        - GuestAuthManager
        - GuestFileManager
        - GuestOperationsManager
        - GuestProcessManager
        - GuestWindowsRegistryManager
        - HealthUpdateManager
        - HistoryCollector
        - HostAccessManager
        - HostActiveDirectoryAuthentication
        - HostAssignableHardwareManager
        - HostAuthenticationManager
        - HostAuthenticationStore
        - HostAutoStartManager
        - HostBootDeviceSystem
        - HostCacheConfigurationManager
        - HostCertificateManager
        - HostCpuSchedulerSystem
        - HostDatastoreBrowser
        - HostDatastoreSystem
        - HostDateTimeSystem
        - HostDiagnosticSystem
        - HostDirectoryStore
        - HostEsxAgentHostManager
        - HostFirewallSystem
        - HostFirmwareSystem
        - HostGraphicsManager
        - HostHealthStatusSystem
        - HostImageConfigManager
        - HostKernelModuleSystem
        - HostLocalAccountManager
        - HostLocalAuthentication
        - HostMemorySystem
        - HostNetworkSystem
        - HostNvdimmSystem
        - HostPatchManager
        - HostPciPassthruSystem
        - HostPowerSystem
        - HostProfile
        - HostProfileManager
        - HostServiceSystem
        - HostSnmpSystem
        - HostSpecificationManager
        - HostStorageSystem
        - HostSystem
        - HostVFlashManager
        - HostVMotionSystem
        - HostVStorageObjectManager
        - HostVirtualNicManager
        - HostVsanInternalSystem
        - HostVsanSystem
        - HttpNfcLease
        - InventoryView
        - IoFilterManager
        - IpPoolManager
        - IscsiManager
        - LicenseAssignmentManager
        - LicenseManager
        - ListView
        - LocalizationManager
        - ManagedEntity
        - ManagedObjectView
        - MessageBusProxy
        - Network
        - OpaqueNetwork
        - OptionManager
        - OverheadMemoryManager
        - OvfManager
        - PerformanceManager
        - Profile
        - ProfileComplianceManager
        - ProfileManager
        - PropertyCollector
        - PropertyFilter
        - ResourcePlanningManager
        - ResourcePool
        - ScheduledTask
        - ScheduledTaskManager
        - SearchIndex
        - ServiceInstance
        - ServiceManager
        - SessionManager
        - SimpleCommand
        - SiteInfoManager
        - StoragePod
        - StorageQueryManager
        - StorageResourceManager
        - Task
        - TaskHistoryCollector
        - TaskManager
        - TenantTenantManager
        - UserDirectory
        - VStorageObjectManagerBase
        - VcenterVStorageObjectManager
        - View
        - ViewManager
        - VirtualApp
        - VirtualDiskManager
        - VirtualMachine
        - VirtualMachineCompatibilityChecker
        - VirtualMachineGuestCustomizationManager
        - VirtualMachineProvisioningChecker
        - VirtualMachineSnapshot
        - VirtualizationManager
        - VmwareDistributedVirtualSwitch
        - VsanUpgradeSystem
        - Agency
        - Agent
        - EamObject
        - EamTask
        - EsxAgentManager
        - PbmCapabilityMetadataManager
        - PbmComplianceManager
        - PbmPlacementSolver
        - PbmProfileProfileManager
        - PbmProvider
        - PbmReplicationManager
        - PbmServiceInstance
        - PbmSessionManager
        - SmsProvider
        - SmsServiceInstance
        - SmsSessionManager
        - SmsStorageManager
        - SmsTask
        - VasaProvider
        - ManagedObject
        - VslmServiceInstance
        - VslmSessionManager
        - VslmStorageLifecycleManager
        - VslmTask
        - VslmVStorageObjectManager

    ArrayOfManagedObjectReference:
      type: object
      description: |2
        A boxed array of *ManagedObjectReference*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PrimitiveBoolean:
      type: object
      description: |2
        A boxed Boolean primitive. To be used in *Any* placeholders.
      properties:
        _value:
          type: boolean
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ArrayOfBoolean:
      type: object
      description: |2
        A boxed array of *PrimitiveBoolean*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            type: boolean
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PrimitiveByte:
      type: object
      description: |2
        A boxed Byte primitive. To be used in *Any* placeholders.
      properties:
        _value:
          type: integer
          minimum: -128
          maximum: 127
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ArrayOfByte:
      type: object
      description: |2
        A boxed array of *PrimitiveByte*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            type: integer
            minimum: -128
            maximum: 127
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PrimitiveShort:
      type: object
      description: |2
        A boxed Short primitive. To be used in *Any* placeholders.
      properties:
        _value:
          type: integer
          minimum: -32768
          maximum: 32767
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ArrayOfShort:
      type: object
      description: |2
        A boxed array of *PrimitiveShort*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            type: integer
            minimum: -32768
            maximum: 32767
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PrimitiveInt:
      type: object
      description: |2
        A boxed Int primitive. To be used in *Any* placeholders.
      properties:
        _value:
          type: integer
          format: int32
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ArrayOfInt:
      type: object
      description: |2
        A boxed array of *PrimitiveInt*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            type: integer
            format: int32
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PrimitiveLong:
      type: object
      description: |2
        A boxed Long primitive. To be used in *Any* placeholders.
      properties:
        _value:
          type: integer
          format: int64
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ArrayOfLong:
      type: object
      description: |2
        A boxed array of *PrimitiveLong*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            type: integer
            format: int64
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PrimitiveFloat:
      type: object
      description: |2
        A boxed Float primitive. To be used in *Any* placeholders.
      properties:
        _value:
          type: number
          format: float
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ArrayOfFloat:
      type: object
      description: |2
        A boxed array of *PrimitiveFloat*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            type: number
            format: float
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PrimitiveDouble:
      type: object
      description: |2
        A boxed Double primitive. To be used in *Any* placeholders.
      properties:
        _value:
          type: number
          format: double
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ArrayOfDouble:
      type: object
      description: |2
        A boxed array of *PrimitiveDouble*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            type: number
            format: double
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PrimitiveString:
      type: object
      description: |2
        A boxed String primitive. To be used in *Any* placeholders.
      properties:
        _value:
          type: string
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ArrayOfString:
      type: object
      description: |2
        A boxed array of *PrimitiveString*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            type: string
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PrimitiveDateTime:
      type: object
      description: |2
        A boxed DateTime primitive. To be used in *Any* placeholders.
      properties:
        _value:
          type: string
          format: date-time
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ArrayOfDateTime:
      type: object
      description: |2
        A boxed array of *PrimitiveDateTime*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            type: string
            format: date-time
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PrimitiveURI:
      type: object
      description: |2
        A boxed URI primitive. To be used in *Any* placeholders.
      properties:
        _value:
          type: string
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ArrayOfURI:
      type: object
      description: |2
        A boxed array of *PrimitiveURI*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            type: string
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PrimitiveBinary:
      type: object
      description: |2
        A boxed Binary primitive. To be used in *Any* placeholders.
      properties:
        _value:
          type: string
          format: byte
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ArrayOfBinary:
      type: object
      description: |2
        A boxed array of *PrimitiveBinary*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            type: string
            format: byte
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PrimitiveTypeName:
      type: object
      description: |2
        A boxed TypeName primitive. To be used in *Any* placeholders.
      properties:
        _value:
          type: string
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ArrayOfTypeName:
      type: object
      description: |2
        A boxed array of *PrimitiveTypeName*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            type: string
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PrimitivePropPath:
      type: object
      description: |2
        A boxed PropPath primitive. To be used in *Any* placeholders.
      properties:
        _value:
          type: string
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ArrayOfPropPath:
      type: object
      description: |2
        A boxed array of *PrimitivePropPath*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            type: string
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PrimitiveMethodName:
      type: object
      description: |2
        A boxed MethodName primitive. To be used in *Any* placeholders.
      properties:
        _value:
          type: string
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ArrayOfMethodName:
      type: object
      description: |2
        A boxed array of *PrimitiveMethodName*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            type: string
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    AbdicateDomOwnershipRequestType:
      type: object
      description: |2
        The parameters of *HostVsanInternalSystem.AbdicateDomOwnership*.
      properties:
        uuids:
          description: |2
            List of VSAN/DOM object UUIDs.
          type: array
          items:
            type: string
      required:
        - uuids

    AbortCustomizationRequestType:
      type: object
      description: |2
        The parameters of *VirtualMachineGuestCustomizationManager.AbortCustomization_Task*.
      properties:
        vm:
          description: |2
            The Virtual Machine managed object reference.
            
            Refers instance of *VirtualMachine*.
          $ref: '#/components/schemas/ManagedObjectReference'
        auth:
          description: |2
            The guest authentication data. See
            *GuestAuthentication*.
          $ref: '#/components/schemas/GuestAuthentication'
      required:
        - vm
        - auth

    AcknowledgeAlarmRequestType:
      type: object
      description: |2
        The parameters of *AlarmManager.AcknowledgeAlarm*.
      properties:
        alarm:
          description: |2
            The Alarm to acknowledge.
            
            ***Required privileges:*** Alarm.Acknowledge
            
            Refers instance of *Alarm*.
          $ref: '#/components/schemas/ManagedObjectReference'
        entity:
          description: |2
            The ManagedEntity for which to acknowledge the Alarm.
            
            ***Required privileges:*** System.Read
            
            Refers instance of *ManagedEntity*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - alarm
        - entity

    AcquireCredentialsInGuestRequestType:
      type: object
      description: |2
        The parameters of *GuestAuthManager.AcquireCredentialsInGuest*.
      properties:
        vm:
          description: |2
            MoRef of the VM to perform the operation on.
            
            ***Required privileges:*** VirtualMachine.GuestOperations.Query
            
            Refers instance of *VirtualMachine*.
          $ref: '#/components/schemas/ManagedObjectReference'
        requestedAuth:
          description: |2
            The guest authentication data used to acquire credentials.
            See *GuestAuthentication*.
          $ref: '#/components/schemas/GuestAuthentication'
        sessionID:
          description: |2
            The sessionID number should be provided only when
            responding to a server challenge. The sessionID number to be used with
            the challenge is found in the
            *GuestAuthenticationChallenge* object.
          type: integer
          format: int64
      required:
        - vm
        - requestedAuth

    AcquireGenericServiceTicketRequestType:
      type: object
      description: |2
        The parameters of *SessionManager.AcquireGenericServiceTicket*.
      properties:
        spec:
          description: |2
            specification for the service request which will be
            invoked with the ticket.
          $ref: '#/components/schemas/SessionManagerServiceRequestSpec'
      required:
        - spec

    AcquireLocalTicketRequestType:
      type: object
      description: |2
        The parameters of *SessionManager.AcquireLocalTicket*.
      properties:
        userName:
          description: |2
            User requesting one-time password.
          type: string
      required:
        - userName

    AcquireTicketRequestType:
      type: object
      description: |2
        The parameters of *VirtualMachine.AcquireTicket*.
      properties:
        ticketType:
          description: |2
            The type of service to acquire, the set of possible
            values is described in *VirtualMachineTicketType_enum*.
          type: string
      required:
        - ticketType

    AddAuthorizationRoleRequestType:
      type: object
      description: |2
        The parameters of *AuthorizationManager.AddAuthorizationRole*.
      properties:
        name:
          description: |2
            Name of the new role.
          type: string
        privIds:
          description: |2
            List of privileges to assign to the role.
          type: array
          items:
            type: string
      required:
        - name

    AddCustomFieldDefRequestType:
      type: object
      description: |2
        The parameters of *CustomFieldsManager.AddCustomFieldDef*.
      properties:
        name:
          description: |2
            The name of the field.
          type: string
        moType:
          description: |2
            The managed object type to which this field
            will apply
          type: string
        fieldDefPolicy:
          description: |2
            Privilege policy to apply to FieldDef being
            created
          $ref: '#/components/schemas/PrivilegePolicyDef'
        fieldPolicy:
          description: |2
            Privilege policy to apply to instances of field
          $ref: '#/components/schemas/PrivilegePolicyDef'
      required:
        - name

    AddDVPortgroupRequestType:
      type: object
      description: |2
        The parameters of *DistributedVirtualSwitch.AddDVPortgroup_Task*.
      properties:
        spec:
          description: |2
            The specification for the portgroup.
          type: array
          items:
            $ref: '#/components/schemas/DVPortgroupConfigSpec'
      required:
        - spec

    AddDisksRequestType:
      type: object
      description: |2
        The parameters of *HostVsanSystem.AddDisks_Task*.
      properties:
        disk:
          description: |2
            list of disks to add for use by the VSAN service
          type: array
          items:
            $ref: '#/components/schemas/HostScsiDisk'
      required:
        - disk

    AddFilterEntitiesRequestType:
      type: object
      description: |2
        The parameters of *HealthUpdateManager.AddFilterEntities*.
      properties:
        filterId:
          description: |2
            The filter id.
          type: string
        entities:
          description: |2
            The list of additional managed entities. Only
            entities of type HostSystem or
            ClusterComputeResource are valid.
            
            Refers instances of *ManagedEntity*.
          type: array
          items:
            $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - filterId

    AddFilterRequestType:
      type: object
      description: |2
        The parameters of *HealthUpdateManager.AddFilter*.
      properties:
        providerId:
          description: |2
            The provider identifier.
          type: string
        filterName:
          description: |2
            The filter name.
          type: string
        infoIds:
          description: |2
            The list of HealthUpdateInfo IDs that should be
            filtered.
          type: array
          items:
            type: string
      required:
        - providerId
        - filterName

    AddGuestAliasRequestType:
      type: object
      description: |2
        The parameters of *GuestAliasManager.AddGuestAlias*.
      properties:
        vm:
          description: |2
            Virtual machine to perform the operation on.
            
            ***Required privileges:*** VirtualMachine.GuestOperations.ModifyAliases
            
            Refers instance of *VirtualMachine*.
          $ref: '#/components/schemas/ManagedObjectReference'
        auth:
          description: |2
            The guest authentication data for this operation. See
            *GuestAuthentication*. These credentials must satisfy
            authentication requirements
            for a guest account on the specified virtual machine.
          $ref: '#/components/schemas/GuestAuthentication'
        username:
          description: |2
            Username for the guest account on the virtual machine.
          type: string
        mapCert:
          description: |2
            Indicates whether the certificate associated with the
            alias should be mapped. If an alias certificate is mapped,
            guest operation requests that use that alias do not have
            to specify the guest account username in the
            *SAMLTokenAuthentication* object. If mapCert is
            false, the request must specify the username.
          type: boolean
        base64Cert:
          description: |2
            X.509 certificate from the VMware SSO Server,
            in base64 encoded DER format. The ESXi
            Server uses this certificate to authenticate guest
            operation requests.
          type: string
        aliasInfo:
          description: |2
            Specifies the subject name for authentication.
            The subject name (when present) corresponds to
            the value of the Subject element
            in SAML tokens. The ESXi Server uses the subject
            name to authenticate guest operation requests.
          $ref: '#/components/schemas/GuestAuthAliasInfo'
      required:
        - vm
        - auth
        - username
        - mapCert
        - base64Cert
        - aliasInfo

    AddHostRequestType:
      type: object
      description: |2
        The parameters of *ClusterComputeResource.AddHost_Task*.
      properties:
        spec:
          description: |2
            Specifies the parameters needed to add a single host.
          $ref: '#/components/schemas/HostConnectSpec'
        asConnected:
          description: |2
            Flag to specify whether or not the host should be connected
            immediately after it is added. The host will not be added if
            a connection attempt is made and fails.
          type: boolean
        resourcePool:
          description: |2
            the resource pool for the root resource pool from the host.
            
            ***Required privileges:*** Resource.AssignVMToPool
            
            Refers instance of *ResourcePool*.
          $ref: '#/components/schemas/ManagedObjectReference'
        license:
          description: |2
            Provide a licenseKey or licenseKeyType. See *LicenseManager*
          type: string
      required:
        - spec
        - asConnected

    AddInternetScsiSendTargetsRequestType:
      type: object
      description: |2
        The parameters of *HostStorageSystem.AddInternetScsiSendTargets*.
      properties:
        iScsiHbaDevice:
          description: |2
            The device of the Internet SCSI HBA adapter.
          type: string
        targets:
          description: |2
            An array of iSCSI send targets.
          type: array
          items:
            $ref: '#/components/schemas/HostInternetScsiHbaSendTarget'
      required:
        - iScsiHbaDevice
        - targets

    AddInternetScsiStaticTargetsRequestType:
      type: object
      description: |2
        The parameters of *HostStorageSystem.AddInternetScsiStaticTargets*.
      properties:
        iScsiHbaDevice:
          description: |2
            The device of the Internet SCSI HBA adapter.
          type: string
        targets:
          description: |2
            An array of iSCSI static targets to add.
          type: array
          items:
            $ref: '#/components/schemas/HostInternetScsiHbaStaticTarget'
      required:
        - iScsiHbaDevice
        - targets

    AddIssueRequestType:
      type: object
      description: |2
        The parameters of *Agency.AddIssue*.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        issue:
          description: |2
            A new issue.
          $ref: '#/components/schemas/Issue'
      required:
        - issue

    AddKeyRequestType:
      type: object
      description: |2
        The parameters of *CryptoManager.AddKey*.
      properties:
        key:
          description: |2
            \[in\] The cryptographic key to add.
          $ref: '#/components/schemas/CryptoKeyPlain'
      required:
        - key

    AddKeysRequestType:
      type: object
      description: |2
        The parameters of *CryptoManager.AddKeys*.
      properties:
        keys:
          description: |2
            \[in\] List of cryptographic keys to add.
          type: array
          items:
            $ref: '#/components/schemas/CryptoKeyPlain'

    AddLicenseRequestType:
      type: object
      description: |2
        The parameters of *LicenseManager.AddLicense*.
      properties:
        licenseKey:
          description: |2
            A license. E.g. a serial license.
          type: string
        labels:
          description: |2
            array of key-value labels. Ignored by ESX Server.
          type: array
          items:
            $ref: '#/components/schemas/KeyValue'
      required:
        - licenseKey

    AddMonitoredEntitiesRequestType:
      type: object
      description: |2
        The parameters of *HealthUpdateManager.AddMonitoredEntities*.
      properties:
        providerId:
          description: |2
            The provider id.
          type: string
        entities:
          description: |2
            The entities that are newly monitored by this
            provider.
            
            Refers instances of *ManagedEntity*.
          type: array
          items:
            $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - providerId

    AddNetworkResourcePoolRequestType:
      type: object
      description: |2
        The parameters of *DistributedVirtualSwitch.AddNetworkResourcePool*.
      properties:
        configSpec:
          description: |2
            the network resource pool configuration specification.
          type: array
          items:
            $ref: '#/components/schemas/DVSNetworkResourcePoolConfigSpec'
      required:
        - configSpec

    AddPortGroupRequestType:
      type: object
      description: |2
        The parameters of *HostNetworkSystem.AddPortGroup*.
      properties:
        portgrp:
          $ref: '#/components/schemas/HostPortGroupSpec'
      required:
        - portgrp

    AddServiceConsoleVirtualNicRequestType:
      type: object
      description: |2
        The parameters of *HostNetworkSystem.AddServiceConsoleVirtualNic*.
      properties:
        portgroup:
          type: string
        nic:
          $ref: '#/components/schemas/HostVirtualNicSpec'
      required:
        - portgroup
        - nic

    AddStandaloneHostRequestType:
      type: object
      description: |2
        The parameters of *Folder.AddStandaloneHost_Task*.
      properties:
        spec:
          description: |2
            Specifies the parameters needed to add a single host.
          $ref: '#/components/schemas/HostConnectSpec'
        compResSpec:
          description: |2
            Optionally specify the configuration for the compute
            resource that will be created to contain the host.
          $ref: '#/components/schemas/ComputeResourceConfigSpec'
        addConnected:
          description: |2
            Flag to specify whether or not the host should be
            connected as soon as it is added. The host will not
            be added if a connection attempt is made and fails.
          type: boolean
        license:
          description: |2
            Provide a licenseKey or licenseKeyType. See *LicenseManager*
          type: string
      required:
        - spec
        - addConnected

    AddVirtualNicRequestType:
      type: object
      description: |2
        The parameters of *HostNetworkSystem.AddVirtualNic*.
      properties:
        portgroup:
          description: |2
            Note: Must be the empty string in case nic.distributedVirtualPort
            is set.
          type: string
        nic:
          $ref: '#/components/schemas/HostVirtualNicSpec'
      required:
        - portgroup
        - nic

    AddVirtualSwitchRequestType:
      type: object
      description: |2
        The parameters of *HostNetworkSystem.AddVirtualSwitch*.
      properties:
        vswitchName:
          type: string
        spec:
          $ref: '#/components/schemas/HostVirtualSwitchSpec'
      required:
        - vswitchName

    AllocateIpv4AddressRequestType:
      type: object
      description: |2
        The parameters of *IpPoolManager.AllocateIpv4Address*.
      properties:
        dc:
          description: |2
            The datacenter on which to find the pool
            
            Refers instance of *Datacenter*.
          $ref: '#/components/schemas/ManagedObjectReference'
        poolId:
          description: |2
            The unique ID of the pool
          type: integer
          format: int32
        allocationId:
          description: |2
            The unique ID for this allocation
          type: string
      required:
        - dc
        - poolId
        - allocationId

    AllocateIpv6AddressRequestType:
      type: object
      description: |2
        The parameters of *IpPoolManager.AllocateIpv6Address*.
      properties:
        dc:
          description: |2
            The datacenter on which to find the pool
            
            Refers instance of *Datacenter*.
          $ref: '#/components/schemas/ManagedObjectReference'
        poolId:
          description: |2
            The unique ID of the pool
          type: integer
          format: int32
        allocationId:
          description: |2
            The unique ID for this allocation
          type: string
      required:
        - dc
        - poolId
        - allocationId

    AnswerVMRequestType:
      type: object
      description: |2
        The parameters of *VirtualMachine.AnswerVM*.
      properties:
        questionId:
          description: |2
            The value from QuestionInfo.id that identifies the question
            to answer.
          type: string
        answerChoice:
          description: |2
            The contents of the QuestionInfo.choice.value array element
            that identifies the desired answer.
          type: string
      required:
        - questionId
        - answerChoice

    ApplyEntitiesConfigRequestType:
      type: object
      description: |2
        The parameters of *HostProfileManager.ApplyEntitiesConfig_Task*.
      properties:
        applyConfigSpecs:
          description: |2
            An array of
            *ApplyHostProfileConfigurationSpec*
            objects. Each applyConfigSpecs object contains the data objects
            required to remediate a host. The API caller should expand
            a cluster to all its hosts for the purpose of providing the
            required data object for configuration apply of each host.
          type: array
          items:
            $ref: '#/components/schemas/ApplyHostProfileConfigurationSpec'

    ApplyEvcModeVMRequestType:
      type: object
      description: |2
        The parameters of *VirtualMachine.ApplyEvcModeVM_Task*.
      properties:
        mask:
          description: |2
            The feature masks to apply to the virtual machine.
            An empty set of masks will clear EVC settings.
          type: array
          items:
            $ref: '#/components/schemas/HostFeatureMask'
        completeMasks:
          description: |2
            Defaults to true if not set. A true value implies
            that any unspecified feature will not be exposed to the guest.
            A false value will expose any unspecified feature to the guest
            with the value of the host.
          type: boolean

    ApplyHostConfigRequestType:
      type: object
      description: |2
        The parameters of *HostProfileManager.ApplyHostConfig_Task*.
      properties:
        host:
          description: |2
            Host to be updated. User must have sufficient credentials and privileges
            to satisfy the contents of the <code>configSpec</code>.
            
            Refers instance of *HostSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
        configSpec:
          description: |2
            Set of configuration changes to be applied to the host.
            The changes are returned by the
            *HostProfile*.*HostProfile.ExecuteHostProfile*
            method in the
            *ProfileExecuteResult*.*ProfileExecuteResult.configSpec*
            property.
          $ref: '#/components/schemas/HostConfigSpec'
        userInput:
          description: |2
            Additional host-specific data to be applied to the host.
            This data is the complete list of deferred parameters verified by the
            *HostProfile*.*HostProfile.ExecuteHostProfile*
            method, contained in the *ProfileExecuteResult* object
            returned by the method.
          type: array
          items:
            $ref: '#/components/schemas/ProfileDeferredPolicyOptionParameter'
      required:
        - host
        - configSpec

    ApplyRecommendationRequestType:
      type: object
      description: |2
        The parameters of *ClusterComputeResource.ApplyRecommendation*.
      properties:
        key:
          description: |2
            The key field of the DrsRecommendation or Recommendation.
          type: string
      required:
        - key

    ApplyStorageDrsRecommendationRequestType:
      type: object
      description: |2
        The parameters of *StorageResourceManager.ApplyStorageDrsRecommendation_Task*.
      properties:
        key:
          description: |2
            The key fields of the Recommendations that are applied.
          type: array
          items:
            type: string
      required:
        - key

    ApplyStorageDrsRecommendationToPodRequestType:
      type: object
      description: |2
        The parameters of *StorageResourceManager.ApplyStorageDrsRecommendationToPod_Task*.
      properties:
        pod:
          description: |2
            The storage pod.
            
            Refers instance of *StoragePod*.
          $ref: '#/components/schemas/ManagedObjectReference'
        key:
          description: |2
            The key field of the Recommendation.
          type: string
      required:
        - pod
        - key

    AreAlarmActionsEnabledRequestType:
      type: object
      description: |2
        The parameters of *AlarmManager.AreAlarmActionsEnabled*.
      properties:
        entity:
          description: |2
            The managed entity to look up.
            
            ***Required privileges:*** System.Read
            
            Refers instance of *ManagedEntity*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - entity

    AssignUserToGroupRequestType:
      type: object
      description: |2
        The parameters of *HostLocalAccountManager.AssignUserToGroup*.
      properties:
        user:
          description: |2
            User ID of the account whose group membership is
            being assigned.
          type: string
        group:
          description: |2
            Destination group account to which the user is
            being assigned.
          type: string
      required:
        - user
        - group

    AssociateProfileRequestType:
      type: object
      description: |2
        The parameters of *Profile.AssociateProfile*.
      properties:
        entity:
          description: |2
            The entity(s) to associate with the profile.
            If an entity is already associated with the profile, the association is
            maintained and the vCenter Server does not perform any action.
            
            Refers instances of *ManagedEntity*.
          type: array
          items:
            $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - entity

    AttachDiskRequestType:
      type: object
      description: |2
        The parameters of *VirtualMachine.AttachDisk_Task*.
      properties:
        diskId:
          description: |2
            The ID of the virtual disk to be operated. See
            *ID*
          $ref: '#/components/schemas/ID'
        datastore:
          description: |2
            The datastore where the virtual disk is located.
            
            Refers instance of *Datastore*.
          $ref: '#/components/schemas/ManagedObjectReference'
        controllerKey:
          description: |2
            Key of the controller the disk will connect to.
            It can be unset if there is only one controller
            (SCSI or SATA) with the available slot in the
            virtual machine. If there are multiple SCSI or
            SATA controllers available, user must specify
            the controller; if there is no available
            controllers, a *MissingController*
            fault will be thrown.
          type: integer
          format: int32
        unitNumber:
          description: |2
            The unit number of the attached disk on its controller.
            If unset, the next available slot on the specified
            controller or the only available controller will be
            assigned to the attached disk.
          type: integer
          format: int32
      required:
        - diskId
        - datastore

    AttachScsiLunExRequestType:
      type: object
      description: |2
        The parameters of *HostStorageSystem.AttachScsiLunEx_Task*.
      properties:
        lunUuid:
          description: |2
            each element specifies UUID of LUN to be attached.
          type: array
          items:
            type: string
      required:
        - lunUuid

    AttachScsiLunRequestType:
      type: object
      description: |2
        The parameters of *HostStorageSystem.AttachScsiLun*.
      properties:
        lunUuid:
          description: |2
            The uuid of the ScsiLun to update.
          type: string
      required:
        - lunUuid

    AttachTagToVStorageObjectRequestType:
      type: object
      description: |2
        The parameters of *VcenterVStorageObjectManager.AttachTagToVStorageObject*.
      properties:
        id:
          description: |2
            The identifier(ID) of the virtual storage object.
          $ref: '#/components/schemas/ID'
        category:
          description: |2
            The category to which the tag belongs.
          type: string
        tag:
          description: |2
            The tag which has to be associated with the virtual storage
            object.
          type: string
      required:
        - id
        - category
        - tag

    AttachVmfsExtentRequestType:
      type: object
      description: |2
        The parameters of *HostStorageSystem.AttachVmfsExtent*.
      properties:
        vmfsPath:
          description: |2
            The path of the VMFS to extend. See *FileSystemMountInfo*.
          type: string
        extent:
          description: |2
            A data object that describes the specification of a
            Disk partition.
          $ref: '#/components/schemas/HostScsiDiskPartition'
      required:
        - vmfsPath
        - extent

    BatchAddHostsToClusterRequestType:
      type: object
      description: |2
        The parameters of *Folder.BatchAddHostsToCluster_Task*.
      properties:
        cluster:
          description: |2
            Specifies the cluster to which hosts need to be
            added.
            
            Refers instance of *ClusterComputeResource*.
          $ref: '#/components/schemas/ManagedObjectReference'
        newHosts:
          description: |2
            Specifies a list of new hosts to be added to
            the cluster. Hosts are first added as standalone hosts.
          type: array
          items:
            $ref: '#/components/schemas/FolderNewHostSpec'
        existingHosts:
          description: |2
            Specifies a list of existing hosts to be
            added to the cluster. Hosts are first moved to the desired state
            before moving them to cluster.
            
            Refers instances of *HostSystem*.
          type: array
          items:
            $ref: '#/components/schemas/ManagedObjectReference'
        compResSpec:
          description: |2
            Specifies the configuration for the compute
            resource that will be created to contain all the hosts.
          $ref: '#/components/schemas/ComputeResourceConfigSpec'
        desiredState:
          description: |2
            Specifies desired state for hosts once added to
            the cluster. If not specified, hosts are added to the cluster in their
            current state. See *FolderDesiredHostState_enum* for valid values.
          type: string
      required:
        - cluster

    BatchAddStandaloneHostsRequestType:
      type: object
      description: |2
        The parameters of *Folder.BatchAddStandaloneHosts_Task*.
      properties:
        newHosts:
          description: |2
            Specifies a list of host specifications for new hosts.
          type: array
          items:
            $ref: '#/components/schemas/FolderNewHostSpec'
        compResSpec:
          description: |2
            Specifies the configuration for the compute
            resource that will be created to contain all the
            hosts.
          $ref: '#/components/schemas/ComputeResourceConfigSpec'
        addConnected:
          description: |2
            Flag to specify whether or not hosts should be
            connected at the time they are added. A host will not
            be added if a connection attempt is made and fails.
          type: boolean
      required:
        - addConnected

    BatchQueryConnectInfoRequestType:
      type: object
      description: |2
        The parameters of *Datacenter.BatchQueryConnectInfo*.
      properties:
        hostSpecs:
          description: |2
            Information about the set of hosts to query.
          type: array
          items:
            $ref: '#/components/schemas/HostConnectSpec'

    BindVnicRequestType:
      type: object
      description: |2
        The parameters of *IscsiManager.BindVnic*.
      properties:
        iScsiHbaName:
          description: |2
            iSCSI adapter name for which the Virtual NIC to
            be added.
          type: string
        vnicDevice:
          description: |2
            Virtual NIC that is to be bound to the iSCSI HBA
          type: string
      required:
        - iScsiHbaName
        - vnicDevice

    BrowseDiagnosticLogRequestType:
      type: object
      description: |2
        The parameters of *DiagnosticManager.BrowseDiagnosticLog*.
      properties:
        host:
          description: |2
            Specifies the host. If not specified, then it defaults
            to the default server. For example, if called on
            VirtualCenter, then the value defaults to VirtualCenter
            logs.
            
            Refers instance of *HostSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
        key:
          description: |2
            A string key specifying the key for the log file to
            browse. Keys can be obtained using the queryDescriptions
            method.
          type: string
        start:
          description: |2
            The line number for the first entry to be returned. If the
            parameter is not specified, then the operation returns
            with lines starting from the top of the log.
          type: integer
          format: int32
        lines:
          description: |2
            The number of lines to return. If not specified, then
            all lines are returned from the start value to the end of
            the file.
          type: integer
          format: int32
      required:
        - key

    CanProvisionObjectsRequestType:
      type: object
      description: |2
        The parameters of *HostVsanInternalSystem.CanProvisionObjects*.
      properties:
        npbs:
          description: |2
            List of NewPolicyBatch structure with sizes and policies.
          type: array
          items:
            $ref: '#/components/schemas/VsanNewPolicyBatch'
        ignoreSatisfiability:
          description: |2
            Optionally populate PolicyCost even though
            object cannot be provisioned in the current cluster topology.
          type: boolean
      required:
        - npbs

    CancelRecommendationRequestType:
      type: object
      description: |2
        The parameters of *ClusterComputeResource.CancelRecommendation*.
      properties:
        key:
          description: |2
            The key field of the Recommendation.
          type: string
      required:
        - key

    CancelRetrievePropertiesExRequestType:
      type: object
      description: |2
        The parameters of *PropertyCollector.CancelRetrievePropertiesEx*.
      properties:
        token:
          description: |2
            the token returned in the previous *RetrieveResult* returned on the same session by the
            same *PropertyCollector*.
          type: string
      required:
        - token

    CancelStorageDrsRecommendationRequestType:
      type: object
      description: |2
        The parameters of *StorageResourceManager.CancelStorageDrsRecommendation*.
      properties:
        key:
          description: |2
            The key field of the Recommendation.
          type: array
          items:
            type: string
      required:
        - key

    CertMgrRefreshCACertificatesAndCRLsRequestType:
      type: object
      description: |2
        The parameters of *CertificateManager.CertMgrRefreshCACertificatesAndCRLs_Task*.
      properties:
        host:
          description: |2
            the hosts on which the certificates need to be refreshed
            
            Refers instances of *HostSystem*.
          type: array
          items:
            $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - host

    CertMgrRefreshCertificatesRequestType:
      type: object
      description: |2
        The parameters of *CertificateManager.CertMgrRefreshCertificates_Task*.
      properties:
        host:
          description: |2
            the hosts on which the certificates need to be refreshed
            
            Refers instances of *HostSystem*.
          type: array
          items:
            $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - host

    CertMgrRevokeCertificatesRequestType:
      type: object
      description: |2
        The parameters of *CertificateManager.CertMgrRevokeCertificates_Task*.
      properties:
        host:
          description: |2
            the hosts on which the certificates need to be revoked
            
            Refers instances of *HostSystem*.
          type: array
          items:
            $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - host

    ChangeAccessModeRequestType:
      type: object
      description: |2
        The parameters of *HostAccessManager.ChangeAccessMode*.
      properties:
        principal:
          description: |2
            The affected user or group.
          type: string
        isGroup:
          description: |2
            True if principal refers to a group account,
            false otherwise.
          type: boolean
        accessMode:
          description: |2
            AccessMode to be granted.
            *accessOther* is meaningless and
            will result in InvalidArgument exception.
          $ref: '#/components/schemas/HostAccessMode_enum'
      required:
        - principal
        - isGroup
        - accessMode

    ChangeFileAttributesInGuestRequestType:
      type: object
      description: |2
        The parameters of *GuestFileManager.ChangeFileAttributesInGuest*.
      properties:
        vm:
          description: |2
            Virtual Machine to perform the operation on.
            
            ***Required privileges:*** VirtualMachine.GuestOperations.Modify
            
            Refers instance of *VirtualMachine*.
          $ref: '#/components/schemas/ManagedObjectReference'
        auth:
          description: |2
            The guest authentication data. See
            *GuestAuthentication*.
          $ref: '#/components/schemas/GuestAuthentication'
        guestFilePath:
          description: |2
            The complete path to the file to be copied in
            the guest. If the file points to an symbolic link, then the
            attributes of the target file are changed.
          type: string
        fileAttributes:
          description: |2
            Specifies the different file attributes of the
            guest file to be changed.
            See *GuestFileAttributes*.
            If any property is not specified, then the specific attribute of
            the file will be unchanged.
          $ref: '#/components/schemas/GuestFileAttributes'
      required:
        - vm
        - auth
        - guestFilePath
        - fileAttributes

    ChangeKeyRequestType:
      type: object
      description: |2
        The parameters of *CryptoManagerHost.ChangeKey_Task*.
      properties:
        newKey:
          description: |2
            The key that replaces the existing core dump encryption key
          $ref: '#/components/schemas/CryptoKeyPlain'
      required:
        - newKey

    ChangeLockdownModeRequestType:
      type: object
      description: |2
        The parameters of *HostAccessManager.ChangeLockdownMode*.
      properties:
        mode:
          description: |2
            The new desired lockdown mode.
            
            If this is the same as the current lockdown mode state, the
            operation will silently succeed and nothing will be changed.
            
            If this is *lockdownDisabled*
            then lockdown mode will be disabled and the system will
            start service DCUI if it is not running.
            
            If this is *lockdownNormal*
            then lockdown mode will be enabled and the system will
            start service DCUI if it is not running.
            
            If this is *lockdownStrict*
            then lockdown mode will be enabled and the system will
            stop service DCUI if it is running.
          $ref: '#/components/schemas/HostLockdownMode_enum'
      required:
        - mode

    ChangeNFSUserPasswordRequestType:
      type: object
      description: |2
        The parameters of *HostStorageSystem.ChangeNFSUserPassword*.
      properties:
        password:
          description: |2
            New password.
          type: string
          format: password
      required:
        - password

    ChangeOwnerRequestType:
      type: object
      description: |2
        The parameters of *FileManager.ChangeOwner*.
      properties:
        name:
          type: string
        datacenter:
          description: |2
            ***Required privileges:*** System.View
            
            Refers instance of *Datacenter*.
          $ref: '#/components/schemas/ManagedObjectReference'
        owner:
          type: string
      required:
        - name
        - owner

    ChangePasswordRequestType:
      type: object
      description: |2
        The parameters of *HostLocalAccountManager.ChangePassword*.
      properties:
        user:
          description: |2
            the user whose password will be changed.
          type: string
        oldPassword:
          description: |2
            the user's current (old) password.
          type: string
          format: password
        newPassword:
          description: |2
            the user's new password.
          type: string
          format: password
      required:
        - user
        - oldPassword
        - newPassword

    CheckAddHostEvcRequestType:
      type: object
      description: |2
        The parameters of *ClusterEVCManager.CheckAddHostEvc_Task*.
      properties:
        cnxSpec:
          description: |2
            The spec that will be used to add the host.
          $ref: '#/components/schemas/HostConnectSpec'
      required:
        - cnxSpec

    CheckAnswerFileStatusRequestType:
      type: object
      description: |2
        The parameters of *HostProfileManager.CheckAnswerFileStatus_Task*.
      properties:
        host:
          description: |2
            Set of hosts for which the answer file status will be checked.
            
            Refers instances of *HostSystem*.
          type: array
          items:
            $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - host

    CheckCloneRequestType:
      type: object
      description: |2
        The parameters of *VirtualMachineProvisioningChecker.CheckClone_Task*.
      properties:
        vm:
          description: |2
            The virtual machine we propose to clone.
            
            Refers instance of *VirtualMachine*.
          $ref: '#/components/schemas/ManagedObjectReference'
        folder:
          description: |2
            The location of the new virtual machine.
            
            Refers instance of *Folder*.
          $ref: '#/components/schemas/ManagedObjectReference'
        name:
          description: |2
            The name of the new virtual machine.
          type: string
        spec:
          description: |2
            Specifies how to clone the virtual machine. In cases
            where DRS would automatically select a host, all potential
            hosts are tested against.
          $ref: '#/components/schemas/VirtualMachineCloneSpec'
        testType:
          description: |2
            The set of tests to run. If this argument is not set, all
            tests will be run. See *CheckTestType_enum* for possible values.
          type: array
          items:
            type: string
      required:
        - vm
        - folder
        - name
        - spec

    CheckCompatibilityRequestType:
      type: object
      description: |2
        The parameters of *VirtualMachineCompatibilityChecker.CheckCompatibility_Task*.
      properties:
        vm:
          description: |2
            The virtual machine we'd like to place.
            
            Refers instance of *VirtualMachine*.
          $ref: '#/components/schemas/ManagedObjectReference'
        host:
          description: |2
            The host we would like the virtual machine
            to execute on. The host parameter may be left unset if the compute
            resource associated with the pool represents a stand-alone host
            or a DRS-enabled cluster. In the former case the stand-alone host is
            used. In the latter case, each connected host in the cluster
            that is not in maintenance mode is tested. If the virtual machine is a
            template then either this parameter or the pool parameter must be set.
            
            Refers instance of *HostSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
        pool:
          description: |2
            The resource pool we would like the virtual machine
            to reside in. If the pool parameter is left unset, then the virtual
            machine's current pool is assumed. If the virtual machine is a template
            then either this parameter or the host parameter must be set.
            
            Refers instance of *ResourcePool*.
          $ref: '#/components/schemas/ManagedObjectReference'
        testType:
          description: |2
            The set of tests to run. If this argument is not set, all
            tests will be run. See *CheckTestType_enum* for possible values.
          type: array
          items:
            type: string
      required:
        - vm

    CheckComplianceRequestType:
      type: object
      description: |2
        The parameters of *ProfileComplianceManager.CheckCompliance_Task*.
      properties:
        profile:
          description: |2
            If specified, check compliance against the specified profiles.
            If not specified, use the profiles associated with the entities.
            If both Profiles and Entities are specified, Check the compliance of each
            Entity against each of the profile specified.
              
            For more information, look at the KMap below.
              
            P represents if Profile is specified.
              
            E represents if Entity is specified.
            
                            P                        ^P
                  ---------------------------------------------------
                  | Check compliance      |  Profiles associated    |
                 E|  of each entity       |   with the specified    |
                  |  against each of the  |   entity will be used   |
                  |  profiles specified.  |   for checking          |
                  |                       |   compliance.           |
                  |                       |                         |
                  |                       |                         |
                  ---------------------------------------------------
                  | All entities          |   InvalidArgument       |
                  |  associated with the  |   Exception is thrown.  |
                  |  profile are checked. |                         |
                ^E|                       |                         |
                  |                       |                         |
                  |                       |                         |
                  |                       |                         |
                  ---------------------------------------------------
            
            Refers instances of *Profile*.
          type: array
          items:
            $ref: '#/components/schemas/ManagedObjectReference'
        entity:
          description: |2
            If specified, the compliance check is done against this entity.
            
            Refers instances of *ManagedEntity*.
          type: array
          items:
            $ref: '#/components/schemas/ManagedObjectReference'

    CheckConfigureEvcModeRequestType:
      type: object
      description: |2
        The parameters of *ClusterEVCManager.CheckConfigureEvcMode_Task*.
      properties:
        evcModeKey:
          description: |2
            A key referencing the desired EVC mode.
          type: string
        evcGraphicsModeKey:
          description: |2
            A key referencing the desired EVC Graphics
            mode *Capability.supportedEVCGraphicsMode*.
            
            ***Since:*** vSphere API Release 7.0.1.0
          type: string
      required:
        - evcModeKey

    CheckCustomizationResourcesRequestType:
      type: object
      description: |2
        The parameters of *CustomizationSpecManager.CheckCustomizationResources*.
      properties:
        guestOs:
          description: |2
            Short name from the guest OS descriptor list describing the OS
            we intend to customize.
          type: string
      required:
        - guestOs

    CheckCustomizationSpecRequestType:
      type: object
      description: |2
        The parameters of *VirtualMachine.CheckCustomizationSpec*.
      properties:
        spec:
          description: |2
            The customization specification to check.
          $ref: '#/components/schemas/CustomizationSpec'
      required:
        - spec

    CheckForUpdatesRequestType:
      type: object
      description: |2
        The parameters of *PropertyCollector.CheckForUpdates*.
      properties:
        version:
          description: |2
            The data version currently known to the client. The value
            must be either
            - the special initial version (an empty string)
            - a data version returned from *PropertyCollector.CheckForUpdates* or *PropertyCollector.WaitForUpdates* by the same *PropertyCollector* on the same session.
            - a non-truncated data version returned from *PropertyCollector.WaitForUpdatesEx* by the same *PropertyCollector* on the same
              session.
          type: string

    CheckHostPatchRequestType:
      type: object
      description: |2
        The parameters of *HostPatchManager.CheckHostPatch_Task*.
      properties:
        metaUrls:
          description: |2
            a list of urls pointing to metadata.zip.
          type: array
          items:
            type: string
        bundleUrls:
          description: |2
            a list of urls pointing to an "offline" bundle. It is not supported in 5.0 or later.
          type: array
          items:
            type: string
        spec:
          $ref: '#/components/schemas/HostPatchManagerPatchManagerOperationSpec'

    CheckInstantCloneRequestType:
      type: object
      description: |2
        The parameters of *VirtualMachineProvisioningChecker.CheckInstantClone_Task*.
      properties:
        vm:
          description: |2
            The virtual machine we propose to instant clone.
            
            Refers instance of *VirtualMachine*.
          $ref: '#/components/schemas/ManagedObjectReference'
        spec:
          description: |2
            Specifies how to instant clone the virtual machine.
          $ref: '#/components/schemas/VirtualMachineInstantCloneSpec'
        testType:
          description: |2
            The set of tests to run. If this argument is not set, all
            tests will be run. See *CheckTestType_enum* for possible values.
          type: array
          items:
            type: string
      required:
        - vm
        - spec

    CheckLicenseFeatureRequestType:
      type: object
      description: |2
        The parameters of *LicenseManager.CheckLicenseFeature*.
      properties:
        host:
          description: |2
            Host to act on if LicenseManager is not on a host.
            
            Refers instance of *HostSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
        featureKey:
          description: |2
            Name of the feature to enable.
          type: string
      required:
        - featureKey

    CheckMigrateRequestType:
      type: object
      description: |2
        The parameters of *VirtualMachineProvisioningChecker.CheckMigrate_Task*.
      properties:
        vm:
          description: |2
            The virtual machine we propose to migrate.
            
            Refers instance of *VirtualMachine*.
          $ref: '#/components/schemas/ManagedObjectReference'
        host:
          description: |2
            The target host on which the virtual machines will run. The host
            parameter may be left unset if the compute resource associated with
            the target pool represents a stand-alone host or a DRS-enabled
            cluster. In the former case the stand-alone host is used as the
            target host. In the latter case, each connected host in the cluster
            that is not in maintenance mode is tested as a target host.
            If the virtual machine is a template then either this
            parameter or the pool parameter must be set.
            
            Refers instance of *HostSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
        pool:
          description: |2
            The target resource pool for the virtual machines. If the
            pool parameter is left unset, the target pool for each particular
            virtual machine's migration will be that virtual machine's current
            pool. If the virtual machine is a template then either this
            parameter or the host parameter must be set.
            The pool parameter must be set for testing the feasibility of
            migration to a different datacenter or different vCenter service.
            
            Refers instance of *ResourcePool*.
          $ref: '#/components/schemas/ManagedObjectReference'
        state:
          description: |2
            The power state that the virtual machines must have. If
            this argument is not set, each virtual machine is evaluated
            according to its current power state.
          $ref: '#/components/schemas/VirtualMachinePowerState_enum'
        testType:
          description: |2
            The set of tests to run. If this argument is not set, all
            tests will be run. See *CheckTestType_enum* for possible values.
          type: array
          items:
            type: string
      required:
        - vm

    CheckPowerOnRequestType:
      type: object
      description: |2
        The parameters of *VirtualMachineCompatibilityChecker.CheckPowerOn_Task*.
      properties:
        vm:
          description: |2
            The virtual machine to power on.
            
            Refers instance of *VirtualMachine*.
          $ref: '#/components/schemas/ManagedObjectReference'
        host:
          description: |2
            The host on which we want to power on the virtual machine.
            The host parameter may be left unset if the compute
            resource associated with the pool represents a stand-alone host
            or a DRS-enabled cluster. In the former case the stand-alone host
            is used. In the latter case, each connected host in the cluster
            that is not in maintenance mode is tested. Either this parameter
            or the pool parameter must be set.
            
            Refers instance of *HostSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
        pool:
          description: |2
            The resource pool we would like the virtual machine to run
            in. If the pool parameter is left unset, we use the host's
            root resource pool.
            
            Refers instance of *ResourcePool*.
          $ref: '#/components/schemas/ManagedObjectReference'
        testType:
          description: |2
            The set of tests to run. If this argument is not set,
            all tests will be run. See *CheckTestType_enum* for possible values.
          type: array
          items:
            type: string
      required:
        - vm

    CheckProfileComplianceRequestType:
      type: object
      description: |2
        The parameters of *Profile.CheckProfileCompliance_Task*.
      properties:
        entity:
          description: |2
            If specified, the compliance check is performed on this entity.
            If the entity is not specified, the vCenter Server runs a compliance check on all the
            entities associated with the profile. The entity does not have to be associated with the
            profile.
            
            Refers instances of *ManagedEntity*.
          type: array
          items:
            $ref: '#/components/schemas/ManagedObjectReference'

    CheckRelocateRequestType:
      type: object
      description: |2
        The parameters of *VirtualMachineProvisioningChecker.CheckRelocate_Task*.
      properties:
        vm:
          description: |2
            The virtual machine we propose to relocate.
            
            Refers instance of *VirtualMachine*.
          $ref: '#/components/schemas/ManagedObjectReference'
        spec:
          description: |2
            The specification of where to relocate the virtual machine.
            In cases where DRS would automatically select a host, all potential
            hosts are tested against.
            The host parameter in the spec may be left unset for checking
            feasibility of relocation to a different datacenter or different
            vCenter service, if the compute resource associated with the
            target pool represents a stand-alone host, the host is tested
            against, otherwise each connected host in the cluster that is
            not in maintenance mode represented by the target pool is tested
            as a target host.
          $ref: '#/components/schemas/VirtualMachineRelocateSpec'
        testType:
          description: |2
            The set of tests to run. If this argument is not set, all
            tests will be run. See *CheckTestType_enum* for possible values.
          type: array
          items:
            type: string
      required:
        - vm
        - spec

    CheckVmConfigRequestType:
      type: object
      description: |2
        The parameters of *VirtualMachineCompatibilityChecker.CheckVmConfig_Task*.
      properties:
        spec:
          description: |2
            The specification of the virtual machine to create.
          $ref: '#/components/schemas/VirtualMachineConfigSpec'
        vm:
          description: |2
            The existing virtual machine to apply the spec to.
            If this is not provided, the spec is assumed to be for the creation
            of a new virtual machine.
            
            Refers instance of *VirtualMachine*.
          $ref: '#/components/schemas/ManagedObjectReference'
        host:
          description: |2
            The host we would like the virtual machine
            to execute on. The host parameter may be left unset if the compute
            resource associated with the pool represents a stand-alone host
            or a DRS-enabled cluster. In the former case the stand-alone host
            is used. In the latter case, each connected host in the cluster
            that is not in maintenance mode is tested. If the virtual machine
            is a template, then either this parameter or the pool parameter
            must be set.
            
            Refers instance of *HostSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
        pool:
          description: |2
            The resource pool we would like the virtual machine
            to reside in. If the pool parameter is left unset, then we use the
            host's root resource pool.
            
            Refers instance of *ResourcePool*.
          $ref: '#/components/schemas/ManagedObjectReference'
        testType:
          description: |2
            The set of tests to run. If this argument is not set, all
            tests will be run. See *CheckTestType_enum* for possible values.
          type: array
          items:
            type: string
      required:
        - spec

    ClearComplianceStatusRequestType:
      type: object
      description: |2
        The parameters of *ProfileComplianceManager.ClearComplianceStatus*.
      properties:
        profile:
          description: |2
            If specified, clear the ComplianceResult related to the Profile.
            
            Refers instances of *Profile*.
          type: array
          items:
            $ref: '#/components/schemas/ManagedObjectReference'
        entity:
          description: |2
            If specified, clear the ComplianceResult related to the entity.
            If profile and entity are not specified, all the ComplianceResults will be cleared.
            
            Refers instances of *ManagedEntity*.
          type: array
          items:
            $ref: '#/components/schemas/ManagedObjectReference'

    ClearTriggeredAlarmsRequestType:
      type: object
      description: |2
        The parameters of *AlarmManager.ClearTriggeredAlarms*.
      properties:
        filter:
          $ref: '#/components/schemas/AlarmFilterSpec'
      required:
        - filter

    ClearVStorageObjectControlFlagsRequestType:
      type: object
      description: |2
        The parameters of *VcenterVStorageObjectManager.ClearVStorageObjectControlFlags*.
      properties:
        id:
          description: |2
            The ID of the virtual storage object.
          $ref: '#/components/schemas/ID'
        datastore:
          description: |2
            The datastore where the source virtual storage
            object is located.
            
            ***Required privileges:*** Datastore.FileManagement
            
            Refers instance of *Datastore*.
          $ref: '#/components/schemas/ManagedObjectReference'
        controlFlags:
          description: |2
            control flags enum array to be cleared on the
            VStorageObject. All control flags not included
            in the array remain intact.
          type: array
          items:
            type: string
      required:
        - id
        - datastore

    CloneSessionRequestType:
      type: object
      description: |2
        The parameters of *SessionManager.CloneSession*.
      properties:
        cloneTicket:
          description: |2
            ticket string acquired via *SessionManager.AcquireCloneTicket*.
          type: string
          format: password
      required:
        - cloneTicket

    CloneVAppRequestType:
      type: object
      description: |2
        The parameters of *VirtualApp.CloneVApp_Task*.
      properties:
        name:
          description: |2
            The name of the new vApp.
          type: string
        target:
          description: |2
            The parent entity of the new vApp. Must be of type
            *ResourcePool* or *VirtualApp*.
            
            Refers instance of *ResourcePool*.
          $ref: '#/components/schemas/ManagedObjectReference'
        spec:
          description: |2
            Specifies how to clone the vApp.
          $ref: '#/components/schemas/VAppCloneSpec'
      required:
        - name
        - target
        - spec

    CloneVMRequestType:
      type: object
      description: |2
        The parameters of *VirtualMachine.CloneVM_Task*.
      properties:
        folder:
          description: |2
            The location of the new virtual machine.
            
            ***Required privileges:*** VirtualMachine.Inventory.CreateFromExisting
            
            Refers instance of *Folder*.
          $ref: '#/components/schemas/ManagedObjectReference'
        name:
          description: |2
            The name of the new virtual machine.
          type: string
        spec:
          description: |2
            Specifies how to clone the virtual machine. The folder
            specified in the spec takes precedence over the folder parameter.
          $ref: '#/components/schemas/VirtualMachineCloneSpec'
      required:
        - folder
        - name
        - spec

    CloneVStorageObjectRequestType:
      type: object
      description: |2
        The parameters of *VcenterVStorageObjectManager.CloneVStorageObject_Task*.
      properties:
        id:
          description: |2
            The ID of the virtual storage object.
          $ref: '#/components/schemas/ID'
        datastore:
          description: |2
            The datastore where the source virtual storage object
            is located.
            
            Refers instance of *Datastore*.
          $ref: '#/components/schemas/ManagedObjectReference'
        spec:
          description: |2
            The specification for cloning the virtual storage
            object.
          $ref: '#/components/schemas/VslmCloneSpec'
      required:
        - id
        - datastore
        - spec

    CloseInventoryViewFolderRequestType:
      type: object
      description: |2
        The parameters of *InventoryView.CloseInventoryViewFolder*.
      properties:
        entity:
          description: |2
            An array of managed object references. Each array entry is a
            reference to an entity to collapse.
            
            ***Required privileges:*** System.View
            
            Refers instances of *ManagedEntity*.
          type: array
          items:
            $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - entity

    ClusterEnterMaintenanceModeRequestType:
      type: object
      description: |2
        The parameters of *ClusterComputeResource.ClusterEnterMaintenanceMode*.
      properties:
        host:
          description: |2
            The array of hosts to put into maintenance mode.
            
            ***Required privileges:*** Host.Config.Maintenance
            
            Refers instances of *HostSystem*.
          type: array
          items:
            $ref: '#/components/schemas/ManagedObjectReference'
        option:
          description: |2
            An array of *OptionValue*
            options for this query. The specified options override the
            advanced options in *ClusterDrsConfigInfo*.
          type: array
          items:
            $ref: '#/components/schemas/OptionValue'
        info:
          description: |2
            ***Since:*** vSphere API Release 8.0.3.0
          $ref: '#/components/schemas/ClusterComputeResourceMaintenanceInfo'
      required:
        - host

    CompositeHostProfileRequestType:
      type: object
      description: |2
        The parameters of *HostProfileManager.CompositeHostProfile_Task*.
      properties:
        source:
          description: |2
            Refers instance of *Profile*.
          $ref: '#/components/schemas/ManagedObjectReference'
        targets:
          description: |2
            Refers instances of *Profile*.
          type: array
          items:
            $ref: '#/components/schemas/ManagedObjectReference'
        toBeMerged:
          $ref: '#/components/schemas/HostApplyProfile'
        toBeReplacedWith:
          $ref: '#/components/schemas/HostApplyProfile'
        toBeDeleted:
          $ref: '#/components/schemas/HostApplyProfile'
        enableStatusToBeCopied:
          $ref: '#/components/schemas/HostApplyProfile'
      required:
        - source

    ComputeDiskPartitionInfoForResizeRequestType:
      type: object
      description: |2
        The parameters of *HostStorageSystem.ComputeDiskPartitionInfoForResize*.
      properties:
        partition:
          description: |2
            The disk partition to resize.
          $ref: '#/components/schemas/HostScsiDiskPartition'
        blockRange:
          description: |2
            Specifies the desired block range for the resized
            partition. The start of the block range specified should match
            that of the current partition.
          $ref: '#/components/schemas/HostDiskPartitionBlockRange'
        partitionFormat:
          description: |2
            Specifies the desired partition format to be
            computed from the block range.
            If partitionFormat is not specified, the existing partitionFormat
            on disk is used, if the disk is not blank and mbr otherwise.
          type: string
      required:
        - partition
        - blockRange

    ComputeDiskPartitionInfoRequestType:
      type: object
      description: |2
        The parameters of *HostStorageSystem.ComputeDiskPartitionInfo*.
      properties:
        devicePath:
          description: |2
            The name of the device path for the specific disk.
          type: string
        layout:
          description: |2
            A data object that describes the disk partition layout.
          $ref: '#/components/schemas/HostDiskPartitionLayout'
        partitionFormat:
          description: |2
            Specifies the desired partition format to be
            computed from the block range.
            If partitionFormat is not specified, the existing partitionFormat
            on disk is used, if the disk is not blank and mbr otherwise.
          type: string
      required:
        - devicePath
        - layout

    ConfigureCryptoKeyRequestType:
      type: object
      description: |2
        The parameters of *HostSystem.ConfigureCryptoKey*.
      properties:
        keyId:
          description: |2
            The key to be used for coredump encryption. If unset, uses
            existing host or cluster key or new key is generated from
            the default KMIP server.
          $ref: '#/components/schemas/CryptoKeyId'

    ConfigureDatastoreIORMRequestType:
      type: object
      description: |2
        The parameters of *StorageResourceManager.ConfigureDatastoreIORM_Task*.
      properties:
        datastore:
          description: |2
            The datastore to be configured.
            
            Refers instance of *Datastore*.
          $ref: '#/components/schemas/ManagedObjectReference'
        spec:
          description: |2
            The configuration spec.
          $ref: '#/components/schemas/StorageIORMConfigSpec'
      required:
        - datastore
        - spec

    ConfigureDatastorePrincipalRequestType:
      type: object
      description: |2
        The parameters of *HostDatastoreSystem.ConfigureDatastorePrincipal*.
      properties:
        userName:
          description: |2
            Datastore principal user name.
          type: string
        password:
          description: |2
            Optional password for systems that require password for
            user impersonation.
          type: string
          format: password
      required:
        - userName

    ConfigureEvcModeRequestType:
      type: object
      description: |2
        The parameters of *ClusterEVCManager.ConfigureEvcMode_Task*.
      properties:
        evcModeKey:
          description: |2
            A key referencing the desired EVC mode.
          type: string
        evcGraphicsModeKey:
          description: |2
            A key referencing the desired EVC Graphics
            mode *Capability.supportedEVCGraphicsMode*.
            
            ***Since:*** vSphere API Release 7.0.1.0
          type: string
      required:
        - evcModeKey

    ConfigureHCIRequestType:
      type: object
      description: |2
        The parameters of *ClusterComputeResource.ConfigureHCI_Task*.
      properties:
        clusterSpec:
          description: |2
            Specification to configure the cluster,
            see *ClusterComputeResourceHCIConfigSpec*
            for details. The *DistributedVirtualSwitch* and
            *DistributedVirtualPortgroup* objects contained
            within the specification must be in the same datacenter as the
            cluster. Specify *ClusterComputeResourceHCIConfigSpec.vSanConfigSpec* only when
            vSan is enabled on the cluster.
          $ref: '#/components/schemas/ClusterComputeResourceHCIConfigSpec'
        hostInputs:
          description: |2
            Inputs to configure each host in the cluster,
            see *ClusterComputeResourceHostConfigurationInput*
            for details. Hosts in this list should be part of the cluster and
            should be in maintenance mode for them to be configured per
            specification. If this parameter is not specified, the API
            operates on all the hosts in the cluster. Hosts which were not
            configured due to not being in maintenance
            mode will be returned in *ClusterComputeResourceClusterConfigResult.failedHosts*.
          type: array
          items:
            $ref: '#/components/schemas/ClusterComputeResourceHostConfigurationInput'
      required:
        - clusterSpec

    ConfigureHostCacheRequestType:
      type: object
      description: |2
        The parameters of *HostCacheConfigurationManager.ConfigureHostCache_Task*.
      properties:
        spec:
          description: |2
            Specification for solid state drive cache configuration.
          $ref: '#/components/schemas/HostCacheConfigurationSpec'
      required:
        - spec

    ConfigureLicenseSourceRequestType:
      type: object
      description: |2
        The parameters of *LicenseManager.ConfigureLicenseSource*.
      properties:
        host:
          description: |2
            Host for which the license manager should be reconfigured.
            
            Refers instance of *HostSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
        licenseSource:
          description: |2
            ServedSource or LocalSource.
          $ref: '#/components/schemas/LicenseSource'
      required:
        - licenseSource

    ConfigurePowerPolicyRequestType:
      type: object
      description: |2
        The parameters of *HostPowerSystem.ConfigurePowerPolicy*.
      properties:
        key:
          description: |2
            A key from one of the policies in
            *PowerSystemCapability.availablePolicy*.
          type: integer
          format: int32
      required:
        - key

    ConfigureStorageDrsForPodRequestType:
      type: object
      description: |2
        The parameters of *StorageResourceManager.ConfigureStorageDrsForPod_Task*.
      properties:
        pod:
          description: |2
            The storage pod.
            
            ***Required privileges:*** StoragePod.Config
            
            Refers instance of *StoragePod*.
          $ref: '#/components/schemas/ManagedObjectReference'
        spec:
          description: |2
            A set of storage Drs configuration changes to apply to the storage pod.
            The specification can be a complete set of changes or a partial
            set of changes, applied incrementally.
          $ref: '#/components/schemas/StorageDrsConfigSpec'
        modify:
          description: |2
            Flag to specify whether the specification ("spec") should
            be applied incrementally. If "modify" is false and the
            operation succeeds, then the configuration of the storage pod
            matches the specification exactly; in this case any unset
            portions of the specification will result in unset or
            default portions of the configuration.
          type: boolean
      required:
        - pod
        - spec
        - modify

    ConfigureVFlashResourceExRequestType:
      type: object
      description: |2
        The parameters of *HostVFlashManager.ConfigureVFlashResourceEx_Task*.
      properties:
        devicePath:
          description: |2
            An array of device path names that identify disks.
            See *ScsiDisk*.
          type: array
          items:
            type: string

    ConnectNvmeControllerExRequestType:
      type: object
      description: |2
        The parameters of *HostStorageSystem.ConnectNvmeControllerEx_Task*.
        
        ***Since:*** vSphere API Release 7.0.3.0
      properties:
        connectSpec:
          description: |2
            A list of data objects, each specifying the parameters
            necessary to connect to an NVMe controller.
          type: array
          items:
            $ref: '#/components/schemas/HostNvmeConnectSpec'

    ConnectNvmeControllerRequestType:
      type: object
      description: |2
        The parameters of *HostStorageSystem.ConnectNvmeController*.
      properties:
        connectSpec:
          description: |2
            A data object that specifies the parameters
            necessary to connect to the controller.
          $ref: '#/components/schemas/HostNvmeConnectSpec'
      required:
        - connectSpec

    ContinueRetrievePropertiesExRequestType:
      type: object
      description: |2
        The parameters of *PropertyCollector.ContinueRetrievePropertiesEx*.
      properties:
        token:
          description: |2
            the token returned in the previous *RetrieveResult* returned on the same session by the
            same *PropertyCollector*.
          type: string
      required:
        - token

    ConvertNamespacePathToUuidPathRequestType:
      type: object
      description: |2
        The parameters of *DatastoreNamespaceManager.ConvertNamespacePathToUuidPath*.
      properties:
        datacenter:
          description: |2
            The datacenter of the namespace path. Needs to be set
            when making the call to VC; ignored when the call is
            made to ESX.
            
            Refers instance of *Datacenter*.
          $ref: '#/components/schemas/ManagedObjectReference'
        namespaceUrl:
          description: |2
            Namesapce URL of the form
            > \[ds://\]/vmfs/volumes/\[_datastore-uuid_\]/\[_directory-name_\]/...
            >
          type: string
      required:
        - namespaceUrl

    CopyDatastoreFileRequestType:
      type: object
      description: |2
        The parameters of *FileManager.CopyDatastoreFile_Task*.
      properties:
        sourceName:
          description: |2
            The name of the source, either a URL or a
            datastore path referring to the file or folder to be copied.
          type: string
        sourceDatacenter:
          description: |2
            If <code>sourceName</code> is a datastore path, the
            datacenter for that datastore path.
            Not needed when invoked directly on ESX.
            If not specified on a call to VirtualCenter,
            <code>sourceName</code> must be a URL.
            
            ***Required privileges:*** System.View
            
            Refers instance of *Datacenter*.
          $ref: '#/components/schemas/ManagedObjectReference'
        destinationName:
          description: |2
            The name of the destination, either a
            URL or a datastore path referring to the destination file
            or folder.
          type: string
        destinationDatacenter:
          description: |2
            If <code>destinationName</code> is a datastore
            path, the datacenter for that datastore path.
            Not needed when invoked directly on ESX.
            If not specified on a call to VirtualCenter, it is assumed that
            the destination path belongs to the source datacenter.
            
            ***Required privileges:*** System.View
            
            Refers instance of *Datacenter*.
          $ref: '#/components/schemas/ManagedObjectReference'
        force:
          description: |2
            If true, overwrite any identically named file
            at the destination. If not specified, it is assumed to be false.
          type: boolean
      required:
        - sourceName
        - destinationName

    CopyVirtualDiskRequestType:
      type: object
      description: |2
        The parameters of *VirtualDiskManager.CopyVirtualDisk_Task*.
      properties:
        sourceName:
          description: |2
            The name of the source, either a datastore path
            or a URL referring to the virtual disk to be copied.
          type: string
        sourceDatacenter:
          description: |2
            If <code>sourceName</code> is a datastore path, the
            datacenter for that datastore path.
            Not needed when invoked directly on ESX.
            If not specified on a call to VirtualCenter,
            <code>sourceName</code> must be a URL.
            
            Refers instance of *Datacenter*.
          $ref: '#/components/schemas/ManagedObjectReference'
        destName:
          description: |2
            The name of the destination, either a datastore path
            or a URL referring to the virtual disk to be created.
          type: string
        destDatacenter:
          description: |2
            If <code>destName</code> is a datastore
            path, the datacenter for that datastore path.
            Not needed when invoked directly on ESX.
            If not specified on a call to VirtualCenter, it is assumed that
            the destination path belongs to the source datacenter.
            
            Refers instance of *Datacenter*.
          $ref: '#/components/schemas/ManagedObjectReference'
        destSpec:
          description: |2
            The specification of the virtual disk to be created.
            If not specified, a preallocated format and busLogic adapter type is assumed.
          $ref: '#/components/schemas/VirtualDiskSpec'
        force:
          description: |2
            The force flag is currently ignored. The FileAlreadyExists fault is thrown if
            the destination file already exists.
          type: boolean
      required:
        - sourceName
        - destName

    CreateAgencyRequestType:
      type: object
      description: |2
        The parameters of *EsxAgentManager.CreateAgency*.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        agencyConfigInfo:
          description: |2
            The configuration that describes how to deploy the agents in the
            created agency.
          $ref: '#/components/schemas/AgencyConfigInfo'
        initialGoalState:
          description: |2
            Deprecated. No sence to create agency in other state than
            <code>enabled</code>. <code>disabled</code> is deprecated
            whereas <code>uninstalled</code> is useless.
            The initial goal state of the agency. See
            *EamObjectRuntimeInfoGoalState_enum*.
          type: string
      required:
        - agencyConfigInfo
        - initialGoalState

    CreateAlarmRequestType:
      type: object
      description: |2
        The parameters of *AlarmManager.CreateAlarm*.
      properties:
        entity:
          description: |2
            The entity with which the alarm is associated.
            
            ***Required privileges:*** Alarm.Create
            
            Refers instance of *ManagedEntity*.
          $ref: '#/components/schemas/ManagedObjectReference'
        spec:
          description: |2
            The specification for the new alarm.
          $ref: '#/components/schemas/AlarmSpec'
      required:
        - entity
        - spec

    CreateChildVMRequestType:
      type: object
      description: |2
        The parameters of *ResourcePool.CreateChildVM_Task*.
      properties:
        config:
          description: |2
            The configuration of the virtual machine hardware.
          $ref: '#/components/schemas/VirtualMachineConfigSpec'
        host:
          description: |2
            The target host on which the virtual machine will run. This must
            specify a host that is a member of the ComputeResource indirectly
            specified by the pool. For a stand-alone host or a cluster with DRS,
            host can be omitted, and the system selects a default.
            
            Refers instance of *HostSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - config

    CreateClusterExRequestType:
      type: object
      description: |2
        The parameters of *Folder.CreateClusterEx*.
      properties:
        name:
          description: |2
            Name for the new cluster.
          type: string
        spec:
          description: |2
            Specification for the cluster.
          $ref: '#/components/schemas/ClusterConfigSpecEx'
      required:
        - name
        - spec

    CreateClusterRequestType:
      type: object
      description: |2
        The parameters of *Folder.CreateCluster*.
      properties:
        name:
          description: |2
            Name for the new cluster.
          type: string
        spec:
          description: |2
            Specification for the cluster.
          $ref: '#/components/schemas/ClusterConfigSpec'
      required:
        - name
        - spec

    CreateCollectorForEventsRequestType:
      type: object
      description: |2
        The parameters of *EventManager.CreateCollectorForEvents*.
      properties:
        filter:
          description: |2
            The event query filter.
          $ref: '#/components/schemas/EventFilterSpec'
      required:
        - filter

    CreateCollectorForTasksRequestType:
      type: object
      description: |2
        The parameters of *TaskManager.CreateCollectorForTasks*.
      properties:
        filter:
          description: |2
            The specification for the task query filter.
          $ref: '#/components/schemas/TaskFilterSpec'
      required:
        - filter

    CreateCollectorWithInfoFilterForTasksRequestType:
      type: object
      description: |2
        The parameters of *TaskManager.CreateCollectorWithInfoFilterForTasks*.
        
        ***Since:*** vSphere API Release 8.0.3.0
      properties:
        filter:
          description: |2
            The specification for the task query filter.
          $ref: '#/components/schemas/TaskFilterSpec'
        infoFilter:
          description: |2
            The specification for the task info filter.
          $ref: '#/components/schemas/TaskInfoFilterSpec'
      required:
        - filter

    CreateContainerViewRequestType:
      type: object
      description: |2
        The parameters of *ViewManager.CreateContainerView*.
      properties:
        container:
          description: |2
            A reference to an instance of a *Folder*,
            *Datacenter*, *ComputeResource*,
            *ResourcePool*, or *HostSystem* object.
            
            ***Required privileges:*** System.View
            
            Refers instance of *ManagedEntity*.
          $ref: '#/components/schemas/ManagedObjectReference'
        type:
          description: |2
            An optional list of managed entity types. The server
            associates only objects of the specified type(s) with the view.
            If you specify an empty array, the server uses all types.
          type: array
          items:
            type: string
        recursive:
          description: |2
            Whether to include only the immediate children of the
            container instance, or to include additional objects by
            following paths beyond the immediate children.
            
            When recursive is false, the list of objects contains
            only immediate children.
            When recursive is true, the server populates the list
            by following references beyond the immediate children
            (using a child's references, and then references in the
            resulting objects, and so on).
            
            Depending on the container type, the server will use the following
            properties of the container instance to obtain objects for the
            view's object list:
            - *Folder* object - *Folder.childEntity*
              property.
              If recursive is false, the container list includes the reference
              to the child entity in the folder instance.
              If recursive is true, the server will follow the child
              folder path(s) to collect additional childEntity references.
            - *ResourcePool* object - *ResourcePool.vm*
              and *ResourcePool.resourcePool* properties.
              If recursive is false, the object list will contain references
              to the virtual machines associated with this resource pool,
              and references to virtual machines associated with the
              immediate child resource pools. If recursive is true,
              the server will follow all child resource pool paths
              extending from the immediate children (and their children,
              and so on) to collect additional references to virtual machines.
            - *ComputeResource* object - *ComputeResource.host*
              and *ComputeResource.resourcePool* properties.
              If recursive is false, the object list will contain references
              to the host systems associated with this compute resource,
              references to virtual machines associated with the
              host systems, and references to virtual machines associated
              with the immediate child resource pools.
              If recursive is true, the server will follow the child
              resource pool paths (and their child resource pool paths,
              and so on) to collect additional references to virtual machines.
            - *Datacenter* object - *Datacenter.vmFolder*,
              *Datacenter.hostFolder*,
              *Datacenter.datastoreFolder*, and
              *Datacenter.networkFolder* properties.
              If recursive is set to false, the server uses the
              immediate child folders for the virtual machines,
              hosts, datastores, and networks associated with this
              datacenter. If recursive is set to true, the server
              will follow the folder paths to collect references
              to additional objects.
            - *HostSystem* object - *HostSystem.vm*
              property.
              The view object list contains references to the virtual machines
              associated with this host system. The value of recursive does not
              affect this behavior.
          type: boolean
      required:
        - container
        - recursive

    CreateCustomizationSpecRequestType:
      type: object
      description: |2
        The parameters of *CustomizationSpecManager.CreateCustomizationSpec*.
      properties:
        item:
          $ref: '#/components/schemas/CustomizationSpecItem'
      required:
        - item

    CreateDVPortgroupRequestType:
      type: object
      description: |2
        The parameters of *DistributedVirtualSwitch.CreateDVPortgroup_Task*.
      properties:
        spec:
          description: |2
            The specification for the portgroup.
          $ref: '#/components/schemas/DVPortgroupConfigSpec'
      required:
        - spec

    CreateDVSRequestType:
      type: object
      description: |2
        The parameters of *Folder.CreateDVS_Task*.
      properties:
        spec:
          description: |2
            The *DVSCreateSpec*
            to create the distributed virtual switch.
          $ref: '#/components/schemas/DVSCreateSpec'
      required:
        - spec

    CreateDatacenterRequestType:
      type: object
      description: |2
        The parameters of *Folder.CreateDatacenter*.
      properties:
        name:
          description: |2
            Name for the new datacenter. An entity name
            must be a non-empty string of less than 80 characters.
            The slash (/), backslash (\\) and percent (%) will be escaped
            using the URL syntax. For example, %2F.
          type: string
      required:
        - name

    CreateDefaultProfileRequestType:
      type: object
      description: |2
        The parameters of *HostProfileManager.CreateDefaultProfile*.
      properties:
        profileType:
          description: |2
            Type of profile to create. The profile types
            are system-defined
            (*ApplyProfile*.*ApplyProfile.profileTypeName*).
          type: string
        profileTypeName:
          description: |2
            If specified, the method returns a profile object
            containing data for the named profile. The type name does not have
            to be system-defined. A user-defined profile can include various
            dynamically-defined profiles.
          type: string
        profile:
          description: |2
            Base profile used during the operation.
            
            Refers instance of *Profile*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - profileType

    CreateDescriptorRequestType:
      type: object
      description: |2
        The parameters of *OvfManager.CreateDescriptor*.
      properties:
        obj:
          description: |2
            The entity to export. Supported types are *VirtualMachine*
            and *VirtualApp*.
            
            ***Required privileges:*** VApp.Export
            
            Refers instance of *ManagedEntity*.
          $ref: '#/components/schemas/ManagedObjectReference'
        cdp:
          description: |2
            Parameters to the method, bundled in an instance of
            CreateDescriptorParams.
          $ref: '#/components/schemas/OvfCreateDescriptorParams'
      required:
        - obj
        - cdp

    CreateDiagnosticPartitionRequestType:
      type: object
      description: |2
        The parameters of *HostDiagnosticSystem.CreateDiagnosticPartition*.
      properties:
        spec:
          $ref: '#/components/schemas/HostDiagnosticPartitionCreateSpec'
      required:
        - spec

    CreateDirectoryRequestType:
      type: object
      description: |2
        The parameters of *DatastoreNamespaceManager.CreateDirectory*.
      properties:
        datastore:
          description: |2
            datastore on which to create a top-level directory
            
            ***Required privileges:*** Datastore.Config
            
            Refers instance of *Datastore*.
          $ref: '#/components/schemas/ManagedObjectReference'
        displayName:
          description: |2
            display name hint for the directory to create
          type: string
        policy:
          description: |2
            opaque storage policy to associate with the directory
          type: string
        size:
          description: |2
            directory size in MB on vvol/vsan backed object storage.
            default directory size will be used for vsan backed
            object storage if not set.
            
            ***Since:*** vSphere API Release 7.0.2.0
          type: integer
          format: int64
      required:
        - datastore

    CreateDiskFromSnapshotRequestType:
      type: object
      description: |2
        The parameters of *VcenterVStorageObjectManager.CreateDiskFromSnapshot_Task*.
      properties:
        id:
          description: |2
            The ID of the virtual storage object.
          $ref: '#/components/schemas/ID'
        datastore:
          description: |2
            The datastore where the source virtual storage object
            is located.
            
            Refers instance of *Datastore*.
          $ref: '#/components/schemas/ManagedObjectReference'
        snapshotId:
          description: |2
            The ID of the snapshot of the virtual storage object.
          $ref: '#/components/schemas/ID'
        name:
          description: |2
            A user friendly name to be associated with the new disk.
          type: string
        profile:
          description: |2
            SPBM Profile requirement on the new virtual storage object.
            If not specified datastore default policy would be
            assigned.
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineProfileSpec'
        crypto:
          description: |2
            Crypto information of the new disk.
            If unset and if profile contains an encryption iofilter and
            if snapshto is unencrypted, then cyrpto will be of
            type CryptoSpecEncrypt, and filled with keyId that is
            automatically generated and keyProviderId that is the
            default kms cluster.
            If unset and if profile is a default policy and if snapshot
            is unenrypted, then crypto is treated as CryptoSpecNoOp.
            If unset and if profile contains an encryption iofilter and
            if snapshot is encrypted, then cyrpto is treated as
            CryptoSpecNoOp.
            If unset and if profile is a default policy and if
            snapshot is encrypted, then cyrpto is treated as
            CryptoSpecDecrypt.
            To recrypt the disk during creating disk, crypto has to be
            present.
          $ref: '#/components/schemas/CryptoSpec'
        path:
          description: |2
            Relative location in the specified datastore where disk needs
            to be created. If not specified disk gets created at the
            defualt VStorageObject location on the specified datastore.
          type: string
      required:
        - id
        - datastore
        - snapshotId
        - name

    CreateDiskRequestType:
      type: object
      description: |2
        The parameters of *VcenterVStorageObjectManager.CreateDisk_Task*.
      properties:
        spec:
          description: |2
            The specification of the virtual storage object
            to be created.
          $ref: '#/components/schemas/VslmCreateSpec'
      required:
        - spec

    CreateFilterRequestType:
      type: object
      description: |2
        The parameters of *PropertyCollector.CreateFilter*.
      properties:
        spec:
          description: |2
            The specifications for the filter.
          $ref: '#/components/schemas/PropertyFilterSpec'
        partialUpdates:
          description: |2
            Flag to specify whether a change to a nested property should report
            only the nested change or the entire specified property value. If the
            value is true, a change should report only the nested property. If
            the value is false, a change should report the enclosing property
            named in the filter.
          type: boolean
      required:
        - spec
        - partialUpdates

    CreateFolderRequestType:
      type: object
      description: |2
        The parameters of *Folder.CreateFolder*.
      properties:
        name:
          description: |2
            The name to be given the new folder. An entity name
            must be a non-empty string of less than 80 characters.
            The slash (/), backslash (\\) and percent (%) will be escaped
            using the URL syntax. For example, %2F. Any percent (%)
            character used in this parameter must be escaped, unless
            it is used to start an escape sequence. Clients may also
            escape any other characters in this parameter.
          type: string
      required:
        - name

    CreateGroupRequestType:
      type: object
      description: |2
        The parameters of *HostLocalAccountManager.CreateGroup*.
      properties:
        group:
          description: |2
            Specification of group being created.
          $ref: '#/components/schemas/HostAccountSpec'
      required:
        - group

    CreateImportSpecRequestType:
      type: object
      description: |2
        The parameters of *OvfManager.CreateImportSpec*.
      properties:
        ovfDescriptor:
          description: |2
            The OVF descriptor of the entity.
          type: string
        resourcePool:
          description: |2
            The resource pool to import the entity to. May be a
            vApp.
            
            ***Required privileges:*** VApp.Import
            
            Refers instance of *ResourcePool*.
          $ref: '#/components/schemas/ManagedObjectReference'
        datastore:
          description: |2
            The datastore on which to create the inventory objects
            of the entity, for example "storage1". The privilege
            Datastore.AllocateSpace is required on the datastore.
            
            ***Required privileges:*** Datastore.AllocateSpace
            
            Refers instance of *Datastore*.
          $ref: '#/components/schemas/ManagedObjectReference'
        cisp:
          description: |2
            Additional parameters to the method, bundled in an instance of
            CreateImportSpecParams.
          $ref: '#/components/schemas/OvfCreateImportSpecParams'
      required:
        - ovfDescriptor
        - resourcePool
        - datastore
        - cisp

    CreateIpPoolRequestType:
      type: object
      description: |2
        The parameters of *IpPoolManager.CreateIpPool*.
      properties:
        dc:
          description: |2
            The datacenter on which to create the pool.
            
            ***Required privileges:*** Datacenter.IpPoolConfig
            
            Refers instance of *Datacenter*.
          $ref: '#/components/schemas/ManagedObjectReference'
        pool:
          description: |2
            The IP pool to create on the server
          $ref: '#/components/schemas/IpPool'
      required:
        - dc
        - pool

    CreateListViewFromViewRequestType:
      type: object
      description: |2
        The parameters of *ViewManager.CreateListViewFromView*.
      properties:
        view:
          description: |2
            The view that will provide the object list for the
            new ListView object.
            
            Refers instance of *View*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - view

    CreateListViewRequestType:
      type: object
      description: |2
        The parameters of *ViewManager.CreateListView*.
      properties:
        obj:
          description: |2
            The initial list of objects in the view.
            
            ***Required privileges:*** System.View
          type: array
          items:
            $ref: '#/components/schemas/ManagedObjectReference'

    CreateLocalDatastoreRequestType:
      type: object
      description: |2
        The parameters of *HostDatastoreSystem.CreateLocalDatastore*.
      properties:
        name:
          description: |2
            The name of a datastore to create on the local host.
          type: string
        path:
          description: |2
            The file path for a directory in which the virtual machine data
            will be stored.
          type: string
      required:
        - name
        - path

    CreateNasDatastoreRequestType:
      type: object
      description: |2
        The parameters of *HostDatastoreSystem.CreateNasDatastore*.
      properties:
        spec:
          description: |2
            The specification for creating a network-attached storage volume.
          $ref: '#/components/schemas/HostNasVolumeSpec'
      required:
        - spec

    CreateNvdimmNamespaceRequestType:
      type: object
      description: |2
        The parameters of *HostNvdimmSystem.CreateNvdimmNamespace_Task*.
      properties:
        createSpec:
          description: |2
            Parameters to create the required namespace.
          $ref: '#/components/schemas/NvdimmNamespaceCreateSpec'
      required:
        - createSpec

    CreateNvdimmPMemNamespaceRequestType:
      type: object
      description: |2
        The parameters of *HostNvdimmSystem.CreateNvdimmPMemNamespace_Task*.
      properties:
        createSpec:
          description: |2
            Parameters to create the required namespace.
          $ref: '#/components/schemas/NvdimmPMemNamespaceCreateSpec'
      required:
        - createSpec

    CreateNvmeOverRdmaAdapterRequestType:
      type: object
      description: |2
        The parameters of *HostStorageSystem.CreateNvmeOverRdmaAdapter*.
      properties:
        rdmaDeviceName:
          description: |2
            The device name of the RDMA device
            to be used to create the software adapter.
            Can be obtained from *HostRdmaDevice.device*.
          type: string
      required:
        - rdmaDeviceName

    CreateObjectScheduledTaskRequestType:
      type: object
      description: |2
        The parameters of *ScheduledTaskManager.CreateObjectScheduledTask*.
      properties:
        obj:
          description: |2
            The managed object for which the
            scheduled task triggers an action. You can
            schedule tasks on any managed object.
            
            ***Required privileges:*** ScheduledTask.Create
          $ref: '#/components/schemas/ManagedObjectReference'
        spec:
          description: |2
            The specification for the new scheduled task.
          $ref: '#/components/schemas/ScheduledTaskSpec'
      required:
        - obj
        - spec

    CreatePerfIntervalRequestType:
      type: object
      description: |2
        The parameters of *PerformanceManager.CreatePerfInterval*.
      properties:
        intervalId:
          description: |2
            A custom interval, specified as the number of seconds to hold data in the
            database, a user-specified unique name, and a sampling period (in
            seconds).
          $ref: '#/components/schemas/PerfInterval'
      required:
        - intervalId

    CreateProfileRequestType:
      type: object
      description: |2
        The parameters of *ProfileManager.CreateProfile*.
      properties:
        createSpec:
          description: |2
            Specification for the profile being created.
            Usually a derived class CreateSpec can be used to create the Profile.
          $ref: '#/components/schemas/ProfileCreateSpec'
      required:
        - createSpec

    CreateRegistryKeyInGuestRequestType:
      type: object
      description: |2
        The parameters of *GuestWindowsRegistryManager.CreateRegistryKeyInGuest*.
      properties:
        vm:
          description: |2
            Virtual machine to perform the operation on.
            
            ***Required privileges:*** VirtualMachine.GuestOperations.Modify
            
            Refers instance of *VirtualMachine*.
          $ref: '#/components/schemas/ManagedObjectReference'
        auth:
          description: |2
            The guest authentication data.
          $ref: '#/components/schemas/GuestAuthentication'
        keyName:
          description: |2
            The path to the registry key to be created.
          $ref: '#/components/schemas/GuestRegKeyNameSpec'
        isVolatile:
          description: |2
            If true, the key is created in memory and is not
            preserved across system reboot. Otherwise, it shall
            persist in the file system.
          type: boolean
        classType:
          description: |2
            User defined class type for this key. May be omitted.
          type: string
      required:
        - vm
        - auth
        - keyName
        - isVolatile

    CreateResourcePoolRequestType:
      type: object
      description: |2
        The parameters of *ResourcePool.CreateResourcePool*.
      properties:
        name:
          description: |2
            The name of the ResourcePool. Any % (percent) character
            used in this parameter must be escaped, unless it is used
            to start an escape sequence. Clients may also escape any
            other characters in this parameter.
          type: string
        spec:
          description: |2
            The spec for the ResourcePool.
            All values in ResourceAllocationInfo must be specified and
            are not optional.
          $ref: '#/components/schemas/ResourceConfigSpec'
      required:
        - name
        - spec

    CreateScheduledTaskRequestType:
      type: object
      description: |2
        The parameters of *ScheduledTaskManager.CreateScheduledTask*.
      properties:
        entity:
          description: |2
            The managed entity (or entities) for which the
            scheduled task triggers an action. You can
            schedule tasks on any managed entity. If the
            scheduled task is associated with a leaf node in
            the inventory tree, it applies only to a single
            entity (virtual machine or host). If the
            task is associated with a folder, a datacenter, a
            compute resource, or a resource pool, it applies to
            the virtual machine or host descendants of the entity.
            
            ***Required privileges:*** ScheduledTask.Create
            
            Refers instance of *ManagedEntity*.
          $ref: '#/components/schemas/ManagedObjectReference'
        spec:
          description: |2
            The specification for the new scheduled task.
          $ref: '#/components/schemas/ScheduledTaskSpec'
      required:
        - entity
        - spec

    CreateSecondaryVMExRequestType:
      type: object
      description: |2
        The parameters of *VirtualMachine.CreateSecondaryVMEx_Task*.
      properties:
        host:
          description: |2
            The host where the secondary virtual machine is to be
            created and powered on. If no host is specified, a compatible host will be
            selected by the system. If a host cannot be found for the secondary or the specified
            host is not suitable, the secondary will not be created and a fault will be returned.
            
            Refers instance of *HostSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
        spec:
          description: |2
            This parameter *FaultToleranceVMConfigSpec* can
            be used to specify the storage location of the fault tolerance
            tie-breaker file, secondary configuration file and secondary
            disks.
            
            If the virtual machine is on a vSAN datastore, then the
            Fault Tolerance secondary virtual machine and the tie-breaker
            file also have to be placed on that same vSAN datastore.
            Conversely, if a primary VM is not using vSAN datastore,
            then its Fault Tolerance secondary virtual machine can
            not be placed on a vSAN datastore. Fault Tolerance is not
            supported for VMs that are using both vSAN and non-vSAN
            datastores for its configuration and disks.
            
            If the virtual machine is using persistent memory for any of
            its disks, then its corresponding secondary disk placement
            entry should not be specified in the
            *FaultToleranceVMConfigSpec*. The system will
            automatically place the corresponding secondary disk on
            persistent memory.
          $ref: '#/components/schemas/FaultToleranceConfigSpec'

    CreateSecondaryVMRequestType:
      type: object
      description: |2
        The parameters of *VirtualMachine.CreateSecondaryVM_Task*.
      properties:
        host:
          description: |2
            The host where the secondary virtual machine is to be
            created and powered on. If no host is specified, a compatible host will be
            selected by the system. If a host cannot be found for the secondary or the specified
            host is not suitable, the secondary will not be created and a fault will be returned.
            
            Refers instance of *HostSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'

    CreateSnapshotExRequestType:
      type: object
      description: |2
        The parameters of *VirtualMachine.CreateSnapshotEx_Task*.
      properties:
        name:
          description: |2
            The name for this snapshot. The name need not be unique for
            this virtual machine.
          type: string
        description:
          description: |2
            A description for this snapshot. If omitted, a default
            description may be provided.
          type: string
        memory:
          description: |2
            If TRUE, a dump of the internal state of the virtual machine
            (basically a memory dump) is included in the snapshot. Memory snapshots
            consume time and resources, and thus take longer to create.
            When set to FALSE, the power state of the snapshot is set to powered off.
            
            *capabilities*
            indicates whether or not this virtual machine supports this operation.
            For a virtual machine in suspended state we always include memory
            unless *VirtualMachineCapability.diskOnlySnapshotOnSuspendedVMSupported* is
            true.
          type: boolean
        quiesceSpec:
          description: |2
            Spec for granular control over quiesce details.
            If quiesceSpec is set and the virtual machine is powered on when the
            snapshot is taken, VMware Tools is used to quiesce the file
            system in the virtual machine. This assures that a disk snapshot
            represents a consistent state of the guest file systems. If the virtual
            machine is powered off or VMware Tools are not available, the quiesce
            spec is ignored. If the spec type is *VirtualMachineGuestQuiesceSpec*, the
            default quiescing process will be applied. If the spec type is
            *VirtualMachineWindowsQuiesceSpec* and Guest OS is Windows, the parameters
            will control the VSS process.
          $ref: '#/components/schemas/VirtualMachineGuestQuiesceSpec'
      required:
        - name
        - memory

    CreateSnapshotRequestType:
      type: object
      description: |2
        The parameters of *VirtualMachine.CreateSnapshot_Task*.
      properties:
        name:
          description: |2
            The name for this snapshot. The name need not be unique for
            this virtual machine.
          type: string
        description:
          description: |2
            A description for this snapshot. If omitted, a default
            description may be provided.
          type: string
        memory:
          description: |2
            If TRUE, a dump of the internal state of the virtual machine
            (basically a memory dump) is included in the snapshot. Memory snapshots
            consume time and resources, and thus take longer to create. When set to FALSE,
            the power state of the snapshot is set to powered off.
            
            *capabilities*
            indicates whether or not this virtual machine supports this operation.
            For a virtual machine in suspended state we always include memory
            unless *VirtualMachineCapability.diskOnlySnapshotOnSuspendedVMSupported* is
            true.
          type: boolean
        quiesce:
          description: |2
            If TRUE and the virtual machine is powered on when the
            snapshot is taken, VMware Tools is used to quiesce the file
            system in the virtual machine. This assures that a disk snapshot
            represents a consistent state of the guest file systems. If the virtual machine
            is powered off or VMware Tools are not available, the quiesce flag is ignored.
          type: boolean
      required:
        - name
        - memory
        - quiesce

    CreateSoftwareAdapterRequestType:
      type: object
      description: |2
        The parameters of *HostStorageSystem.CreateSoftwareAdapter*.
        
        ***Since:*** vSphere API Release 7.0.3.0
      properties:
        spec:
          description: |2
            A data object that specifices the parameters necessary
            to create a software host bus adapter of a specific type.
          $ref: '#/components/schemas/HostHbaCreateSpec'
      required:
        - spec

    CreateStoragePodRequestType:
      type: object
      description: |2
        The parameters of *Folder.CreateStoragePod*.
      properties:
        name:
          description: |2
            Name for the new storage pod.
          type: string
      required:
        - name

    CreateTaskRequestType:
      type: object
      description: |2
        The parameters of *TaskManager.CreateTask*.
      properties:
        obj:
          description: |2
            ManagedObject with which Task will be associated
          $ref: '#/components/schemas/ManagedObjectReference'
        taskTypeId:
          description: |2
            Extension registered task type identifier
            for type of task being created
          type: string
        initiatedBy:
          description: |2
            The name of the user on whose behalf the
            Extension is creating the task
          type: string
        cancelable:
          description: |2
            True if the task should be cancelable,
            false otherwise
          type: boolean
        parentTaskKey:
          description: |2
            Key of the task that is the parent of this task
          type: string
        activationId:
          description: |2
            Activation Id is a client-provided token to link an
            API call with a task. When provided, the activationId is added to the
            *TaskInfo*
          type: string
      required:
        - obj
        - taskTypeId
        - cancelable

    CreateTemporaryDirectoryInGuestRequestType:
      type: object
      description: |2
        The parameters of *GuestFileManager.CreateTemporaryDirectoryInGuest*.
      properties:
        vm:
          description: |2
            Virtual Machine to perform the operation on.
            
            ***Required privileges:*** VirtualMachine.GuestOperations.Modify
            
            Refers instance of *VirtualMachine*.
          $ref: '#/components/schemas/ManagedObjectReference'
        auth:
          description: |2
            The guest authentication data. See
            *GuestAuthentication*.
          $ref: '#/components/schemas/GuestAuthentication'
        prefix:
          description: |2
            The prefix to be given to the new temporary directory.
          type: string
        suffix:
          description: |2
            The suffix to be given to the new temporary directory.
          type: string
        directoryPath:
          description: |2
            The complete path to the directory in which to create the
            new directory. If unset or an empty string, a guest-specific location
            will be used.
          type: string
      required:
        - vm
        - auth
        - prefix
        - suffix

    CreateTemporaryFileInGuestRequestType:
      type: object
      description: |2
        The parameters of *GuestFileManager.CreateTemporaryFileInGuest*.
      properties:
        vm:
          description: |2
            Virtual Machine to perform the operation on.
            
            ***Required privileges:*** VirtualMachine.GuestOperations.Modify
            
            Refers instance of *VirtualMachine*.
          $ref: '#/components/schemas/ManagedObjectReference'
        auth:
          description: |2
            The guest authentication data. See
            *GuestAuthentication*.
          $ref: '#/components/schemas/GuestAuthentication'
        prefix:
          description: |2
            The prefix to be given to the new temporary file.
          type: string
        suffix:
          description: |2
            The suffix to be given to the new temporary file.
          type: string
        directoryPath:
          description: |2
            The complete path to the directory in which to
            create the file.
            If unset, or an empty string, a guest-specific location will be used.
          type: string
      required:
        - vm
        - auth
        - prefix
        - suffix

    CreateUserRequestType:
      type: object
      description: |2
        The parameters of *HostLocalAccountManager.CreateUser*.
      properties:
        user:
          description: |2
            Specification of user being created.
          $ref: '#/components/schemas/HostAccountSpec'
      required:
        - user

    CreateVAppRequestType:
      type: object
      description: |2
        The parameters of *ResourcePool.CreateVApp*.
      properties:
        name:
          description: |2
            The name of the vApp container in the inventory
          type: string
        resSpec:
          description: |2
            The resource configuration for the vApp container (same as for a
            regular resource pool).
          $ref: '#/components/schemas/ResourceConfigSpec'
        configSpec:
          description: |2
            The specification of the vApp specific meta-data.
          $ref: '#/components/schemas/VAppConfigSpec'
        vmFolder:
          description: |2
            The parent folder for the vApp. This must be null if this is
            a child vApp.
            
            Refers instance of *Folder*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - name
        - resSpec
        - configSpec

    CreateVMRequestType:
      type: object
      description: |2
        The parameters of *Folder.CreateVM_Task*.
      properties:
        config:
          description: |2
            The configuration of the virtual machine hardware.
          $ref: '#/components/schemas/VirtualMachineConfigSpec'
        pool:
          description: |2
            The resource pool to which the virtual machine will be attached.
            
            ***Required privileges:*** Resource.AssignVMToPool
            
            Refers instance of *ResourcePool*.
          $ref: '#/components/schemas/ManagedObjectReference'
        host:
          description: |2
            The target host on which the virtual machine will run. This must
            specify a host that is a member of the ComputeResource indirectly
            specified by the pool. For a stand-alone host or a cluster with DRS,
            host can be omitted, and the system selects a default.
            
            Refers instance of *HostSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - config
        - pool

    CreateVirtualDiskRequestType:
      type: object
      description: |2
        The parameters of *VirtualDiskManager.CreateVirtualDisk_Task*.
      properties:
        name:
          description: |2
            The name of the disk, either a datastore path or a
            URL referring to the virtual disk to be created.
          type: string
        datacenter:
          description: |2
            If <code>name</code> is a datastore path, the datacenter for
            that datastore path. Not needed when invoked directly on ESX.
            If not specified on a call to VirtualCenter,
            <code>name</code> must be a URL.
            
            Refers instance of *Datacenter*.
          $ref: '#/components/schemas/ManagedObjectReference'
        spec:
          description: |2
            The specification of the virtual disk to be created.
          $ref: '#/components/schemas/VirtualDiskSpec'
      required:
        - name
        - spec

    CreateVmfsDatastoreRequestType:
      type: object
      description: |2
        The parameters of *HostDatastoreSystem.CreateVmfsDatastore*.
      properties:
        spec:
          description: |2
            The specification for creating a datastore backed by a VMFS.
          $ref: '#/components/schemas/VmfsDatastoreCreateSpec'
      required:
        - spec

    CreateVvolDatastoreRequestType:
      type: object
      description: |2
        The parameters of *HostDatastoreSystem.CreateVvolDatastore*.
      properties:
        spec:
          description: |2
            Specification for creating a Virtual-Volume based datastore.
          $ref: '#/components/schemas/HostDatastoreSystemVvolDatastoreSpec'
      required:
        - spec

    CryptoManagerHostEnableRequestType:
      type: object
      description: |2
        The parameters of *CryptoManagerHost.CryptoManagerHostEnable*.
      properties:
        initialKey:
          description: |2
            The key to be used for core dump encryption
          $ref: '#/components/schemas/CryptoKeyPlain'
      required:
        - initialKey

    CustomizationSpecItemToXmlRequestType:
      type: object
      description: |2
        The parameters of *CustomizationSpecManager.CustomizationSpecItemToXml*.
      properties:
        item:
          $ref: '#/components/schemas/CustomizationSpecItem'
      required:
        - item

    CustomizeGuestRequestType:
      type: object
      description: |2
        The parameters of *VirtualMachineGuestCustomizationManager.CustomizeGuest_Task*.
      properties:
        vm:
          description: |2
            The Virtual Machine managed object reference.
            
            Refers instance of *VirtualMachine*.
          $ref: '#/components/schemas/ManagedObjectReference'
        auth:
          description: |2
            The guest authentication data. See
            *GuestAuthentication*.
          $ref: '#/components/schemas/GuestAuthentication'
        spec:
          description: |2
            Is a *CustomizationSpec*.
            It specifies the virtual machine's configuration.
          $ref: '#/components/schemas/CustomizationSpec'
        configParams:
          description: |2
            addtional key/value pair list to support
            third party customization.
          type: array
          items:
            $ref: '#/components/schemas/OptionValue'
      required:
        - vm
        - auth
        - spec

    CustomizeVMRequestType:
      type: object
      description: |2
        The parameters of *VirtualMachine.CustomizeVM_Task*.
      properties:
        spec:
          description: |2
            The customization specification object.
          $ref: '#/components/schemas/CustomizationSpec'
      required:
        - spec

    DVPortgroupRollbackRequestType:
      type: object
      description: |2
        The parameters of *DistributedVirtualPortgroup.DVPortgroupRollback_Task*.
      properties:
        entityBackup:
          description: |2
            The backup of Distributed Virtual PortGroup entity.
          $ref: '#/components/schemas/EntityBackupConfig'

    DVSManagerExportEntityRequestType:
      type: object
      description: |2
        The parameters of *DistributedVirtualSwitchManager.DVSManagerExportEntity_Task*.
      properties:
        selectionSet:
          description: |2
            The selection criteria for a set of
            entities to export the configuration.
          type: array
          items:
            $ref: '#/components/schemas/SelectionSet'
      required:
        - selectionSet

    DVSManagerImportEntityRequestType:
      type: object
      description: |2
        The parameters of *DistributedVirtualSwitchManager.DVSManagerImportEntity_Task*.
      properties:
        entityBackup:
          description: |2
            Configuration of one or more entities to be imported.
            The entity backup configuration is returned
            by the *DistributedVirtualSwitchManager.DVSManagerExportEntity_Task* method.
          type: array
          items:
            $ref: '#/components/schemas/EntityBackupConfig'
        importType:
          description: |2
            Specifies whether to create a new configuration
            or restore a previous configuration. See *EntityImportType_enum* for valid values.
          type: string
      required:
        - entityBackup
        - importType

    DVSManagerLookupDvPortGroupRequestType:
      type: object
      description: |2
        The parameters of *DistributedVirtualSwitchManager.DVSManagerLookupDvPortGroup*.
      properties:
        switchUuid:
          description: |2
            The UUID of the *DistributedVirtualSwitch*.
          type: string
        portgroupKey:
          description: |2
            The key that identifies a
            *DistributedVirtualPortgroup*.
          type: string
      required:
        - switchUuid
        - portgroupKey

    DVSRollbackRequestType:
      type: object
      description: |2
        The parameters of *DistributedVirtualSwitch.DVSRollback_Task*.
      properties:
        entityBackup:
          description: |2
            Backup of a distributed virtual switch, returned by
            the *DistributedVirtualSwitchManager.DVSManagerExportEntity_Task*
            method.
          $ref: '#/components/schemas/EntityBackupConfig'

    DecodeLicenseRequestType:
      type: object
      description: |2
        The parameters of *LicenseManager.DecodeLicense*.
      properties:
        licenseKey:
          description: |2
            A license. E.g. a serial license.
          type: string
      required:
        - licenseKey

    DefragmentVirtualDiskRequestType:
      type: object
      description: |2
        The parameters of *VirtualDiskManager.DefragmentVirtualDisk_Task*.
      properties:
        name:
          description: |2
            The name of the disk, either a datastore path or a URL
            referring to the virtual disk that should be defragmented.
          type: string
        datacenter:
          description: |2
            If <code>name</code> is a datastore path, the datacenter for
            that datastore path. Not needed when invoked directly on ESX.
            If not specified on a call to VirtualCenter,
            <code>name</code> must be a URL.
            
            Refers instance of *Datacenter*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - name

    DeleteCustomizationSpecRequestType:
      type: object
      description: |2
        The parameters of *CustomizationSpecManager.DeleteCustomizationSpec*.
      properties:
        name:
          type: string
      required:
        - name

    DeleteDatastoreFileRequestType:
      type: object
      description: |2
        The parameters of *FileManager.DeleteDatastoreFile_Task*.
      properties:
        name:
          description: |2
            The name of the file or folder, either a URL or a datastore path
            referring to the file or folder to be deleted.
          type: string
        datacenter:
          description: |2
            If <code>name</code> is a datastore path, the datacenter for
            that datastore path. Not needed when invoked directly on ESX.
            If not specified on a call to VirtualCenter,
            <code>name</code> must be a URL.
            
            ***Required privileges:*** System.View
            
            Refers instance of *Datacenter*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - name

    DeleteDirectoryInGuestRequestType:
      type: object
      description: |2
        The parameters of *GuestFileManager.DeleteDirectoryInGuest*.
      properties:
        vm:
          description: |2
            Virtual Machine to perform the operation on.
            
            ***Required privileges:*** VirtualMachine.GuestOperations.Modify
            
            Refers instance of *VirtualMachine*.
          $ref: '#/components/schemas/ManagedObjectReference'
        auth:
          description: |2
            The guest authentication data. See
            *GuestAuthentication*.
          $ref: '#/components/schemas/GuestAuthentication'
        directoryPath:
          description: |2
            The complete path to the directory to be deleted.
          type: string
        recursive:
          description: |2
            If true, all subdirectories are also deleted.
            If false, the directory must be empty for the operation to succeed.
          type: boolean
      required:
        - vm
        - auth
        - directoryPath
        - recursive

    DeleteDirectoryRequestType:
      type: object
      description: |2
        The parameters of *DatastoreNamespaceManager.DeleteDirectory*.
      properties:
        datacenter:
          description: |2
            The datacenter of the datastore path. Needs to be set
            when making the call to VC; ignored when the call is
            made to ESX.
            
            ***Required privileges:*** System.View
            
            Refers instance of *Datacenter*.
          $ref: '#/components/schemas/ManagedObjectReference'
        datastorePath:
          description: |2
            Stable vmfs path of the directory to delete.
          type: string
      required:
        - datastorePath

    DeleteFileInGuestRequestType:
      type: object
      description: |2
        The parameters of *GuestFileManager.DeleteFileInGuest*.
      properties:
        vm:
          description: |2
            Virtual Machine to perform the operation on.
            
            ***Required privileges:*** VirtualMachine.GuestOperations.Modify
            
            Refers instance of *VirtualMachine*.
          $ref: '#/components/schemas/ManagedObjectReference'
        auth:
          description: |2
            The guest authentication data. See
            *GuestAuthentication*.
          $ref: '#/components/schemas/GuestAuthentication'
        filePath:
          description: |2
            The complete path to the file or symbolic link to be deleted.
          type: string
      required:
        - vm
        - auth
        - filePath

    DeleteFileRequestType:
      type: object
      description: |2
        The parameters of *HostDatastoreBrowser.DeleteFile*.
      properties:
        datastorePath:
          type: string
      required:
        - datastorePath

    DeleteHostSpecificationRequestType:
      type: object
      description: |2
        The parameters of *HostSpecificationManager.DeleteHostSpecification*.
      properties:
        host:
          description: |2
            The specified host for which the specification will be
            deleted.
            
            Refers instance of *HostSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - host

    DeleteHostSubSpecificationRequestType:
      type: object
      description: |2
        The parameters of *HostSpecificationManager.DeleteHostSubSpecification*.
      properties:
        host:
          description: |2
            The specified host for which the sub specification will be
            deleted.
            
            Refers instance of *HostSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
        subSpecName:
          description: |2
            The name of the host sub specification to be deleted.
          type: string
      required:
        - host
        - subSpecName

    DeleteNvdimmNamespaceRequestType:
      type: object
      description: |2
        The parameters of *HostNvdimmSystem.DeleteNvdimmNamespace_Task*.
      properties:
        deleteSpec:
          description: |2
            Details of namespace to be deleted.
          $ref: '#/components/schemas/NvdimmNamespaceDeleteSpec'
      required:
        - deleteSpec

    DeleteRegistryKeyInGuestRequestType:
      type: object
      description: |2
        The parameters of *GuestWindowsRegistryManager.DeleteRegistryKeyInGuest*.
      properties:
        vm:
          description: |2
            Virtual machine to perform the operation on.
            
            ***Required privileges:*** VirtualMachine.GuestOperations.Modify
            
            Refers instance of *VirtualMachine*.
          $ref: '#/components/schemas/ManagedObjectReference'
        auth:
          description: |2
            The guest authentication data.
          $ref: '#/components/schemas/GuestAuthentication'
        keyName:
          description: |2
            The path to the registry key to be deleted.
          $ref: '#/components/schemas/GuestRegKeyNameSpec'
        recursive:
          description: |2
            If true, the key is deleted along with any subkeys (if
            present). Otherwise, it shall only delete the key if it
            has no subkeys.
          type: boolean
      required:
        - vm
        - auth
        - keyName
        - recursive

    DeleteRegistryValueInGuestRequestType:
      type: object
      description: |2
        The parameters of *GuestWindowsRegistryManager.DeleteRegistryValueInGuest*.
      properties:
        vm:
          description: |2
            Virtual machine to perform the operation on.
            
            ***Required privileges:*** VirtualMachine.GuestOperations.Modify
            
            Refers instance of *VirtualMachine*.
          $ref: '#/components/schemas/ManagedObjectReference'
        auth:
          description: |2
            The guest authentication data.
          $ref: '#/components/schemas/GuestAuthentication'
        valueName:
          description: |2
            The registry value name to be deleted.
            The Value "name" (specified in
            *GuestRegValueNameSpec*)
            can be empty. If "name" is empty, it deletes the value
            for the unnamed or default value of the given key.
          $ref: '#/components/schemas/GuestRegValueNameSpec'
      required:
        - vm
        - auth
        - valueName

    DeleteScsiLunStateRequestType:
      type: object
      description: |2
        The parameters of *HostStorageSystem.DeleteScsiLunState*.
      properties:
        lunCanonicalName:
          description: |2
            The 'canonicalName' of the ScsiLun
            whose state needs to be deleted.
          type: string
      required:
        - lunCanonicalName

    DeleteSnapshotRequestType:
      type: object
      description: |2
        The parameters of *VcenterVStorageObjectManager.DeleteSnapshot_Task*.
      properties:
        id:
          description: |2
            The ID of the virtual storage object.
          $ref: '#/components/schemas/ID'
        datastore:
          description: |2
            The datastore where the source virtual storage object
            is located.
            
            Refers instance of *Datastore*.
          $ref: '#/components/schemas/ManagedObjectReference'
        snapshotId:
          description: |2
            The ID of the snapshot of a virtual storage object.
          $ref: '#/components/schemas/ID'
      required:
        - id
        - datastore
        - snapshotId

    DeleteVStorageObjectExRequestType:
      type: object
      description: |2
        The parameters of *VcenterVStorageObjectManager.DeleteVStorageObjectEx_Task*.
        
        ***Since:*** vSphere API Release 7.0.2.0
      properties:
        id:
          description: |2
            The ID of the virtual storage object to be deleted.
          $ref: '#/components/schemas/ID'
        datastore:
          description: |2
            The datastore where the virtual storage object
            is located.
            
            Refers instance of *Datastore*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - id
        - datastore

    DeleteVStorageObjectRequestType:
      type: object
      description: |2
        The parameters of *VcenterVStorageObjectManager.DeleteVStorageObject_Task*.
      properties:
        id:
          description: |2
            The ID of the virtual storage object to be deleted.
          $ref: '#/components/schemas/ID'
        datastore:
          description: |2
            The datastore where the virtual storage object
            is located.
            
            Refers instance of *Datastore*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - id
        - datastore

    DeleteVffsVolumeStateRequestType:
      type: object
      description: |2
        The parameters of *HostStorageSystem.DeleteVffsVolumeState*.
      properties:
        vffsUuid:
          description: |2
            The VFFS UUID.
          type: string
      required:
        - vffsUuid

    DeleteVirtualDiskRequestType:
      type: object
      description: |2
        The parameters of *VirtualDiskManager.DeleteVirtualDisk_Task*.
      properties:
        name:
          description: |2
            The name of the disk, either a datastore path or a URL
            referring to the virtual disk to be deleted.
          type: string
        datacenter:
          description: |2
            If <code>name</code> is a datastore path, the datacenter for
            that datastore path. Not needed when invoked directly on ESX.
            If not specified on a call to VirtualCenter,
            <code>name</code> must be a URL.
            
            Refers instance of *Datacenter*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - name

    DeleteVmfsVolumeStateRequestType:
      type: object
      description: |2
        The parameters of *HostStorageSystem.DeleteVmfsVolumeState*.
      properties:
        vmfsUuid:
          description: |2
            The VMFS UUID.
          type: string
      required:
        - vmfsUuid

    DeleteVsanObjectsRequestType:
      type: object
      description: |2
        The parameters of *HostVsanInternalSystem.DeleteVsanObjects*.
      properties:
        uuids:
          description: |2
            List of object UUIDs to be deleted.
          type: array
          items:
            type: string
        force:
          description: |2
            Optional force delete.
          type: boolean
      required:
        - uuids

    DeselectVnicForNicTypeRequestType:
      type: object
      description: |2
        The parameters of *HostVirtualNicManager.DeselectVnicForNicType*.
      properties:
        nicType:
          description: |2
            The type of VirtualNic that would be deselected
          type: string
        device:
          description: |2
            The device that uniquely identifies the VirtualNic.
          type: string
      required:
        - nicType
        - device

    DestroyIpPoolRequestType:
      type: object
      description: |2
        The parameters of *IpPoolManager.DestroyIpPool*.
      properties:
        dc:
          description: |2
            The datacenter on which to find the pool
            
            ***Required privileges:*** Datacenter.IpPoolConfig
            
            Refers instance of *Datacenter*.
          $ref: '#/components/schemas/ManagedObjectReference'
        id:
          description: |2
            The unique ID of the pool
          type: integer
          format: int32
        force:
          description: |2
            If true, the pool will be destroyed even if it is in use
          type: boolean
      required:
        - dc
        - id
        - force

    DestroyVffsRequestType:
      type: object
      description: |2
        The parameters of *HostStorageSystem.DestroyVffs*.
      properties:
        vffsPath:
          description: |2
            The path of the VFFS to destroy. See *FileSystemMountInfo*.
          type: string
      required:
        - vffsPath

    DetachDiskRequestType:
      type: object
      description: |2
        The parameters of *VirtualMachine.DetachDisk_Task*.
      properties:
        diskId:
          description: |2
            The ID of the virtual disk to be operated. See
            *ID*
          $ref: '#/components/schemas/ID'
      required:
        - diskId

    DetachScsiLunExRequestType:
      type: object
      description: |2
        The parameters of *HostStorageSystem.DetachScsiLunEx_Task*.
      properties:
        lunUuid:
          description: |2
            each element specifies UUID of LUN to be detached.
          type: array
          items:
            type: string
      required:
        - lunUuid

    DetachScsiLunRequestType:
      type: object
      description: |2
        The parameters of *HostStorageSystem.DetachScsiLun*.
      properties:
        lunUuid:
          description: |2
            The uuid of the ScsiLun device to detach.
          type: string
      required:
        - lunUuid

    DetachTagFromVStorageObjectRequestType:
      type: object
      description: |2
        The parameters of *VcenterVStorageObjectManager.DetachTagFromVStorageObject*.
      properties:
        id:
          description: |2
            The identifier(ID) of the virtual storage object.
          $ref: '#/components/schemas/ID'
        category:
          description: |2
            The category to which the tag belongs.
          type: string
        tag:
          description: |2
            The tag which has to be disassociated with the virtual storage
            object.
          type: string
      required:
        - id
        - category
        - tag

    DisableAlarmRequestType:
      type: object
      description: |2
        The parameters of *AlarmManager.DisableAlarm*.
      properties:
        alarm:
          description: |2
            The Alarm being disabled.
            
            ***Required privileges:*** Alarm.ToggleEnableOnEntity
            
            Refers instance of *Alarm*.
          $ref: '#/components/schemas/ManagedObjectReference'
        entity:
          description: |2
            The ManagedEntity on which to disable the alarm.
            
            ***Required privileges:*** System.Read
            
            Refers instance of *ManagedEntity*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - alarm
        - entity

    DisableClusteredVmdkSupportRequestType:
      type: object
      description: |2
        The parameters of *HostDatastoreSystem.DisableClusteredVmdkSupport*.
      properties:
        datastore:
          description: |2
            Datastore on which clustered vmdk should be
            disabled.
            
            Refers instance of *Datastore*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - datastore

    DisableFeatureRequestType:
      type: object
      description: |2
        The parameters of *LicenseManager.DisableFeature*.
      properties:
        host:
          description: |2
            Host to act on if LicenseManager is not on a host.
            
            Refers instance of *HostSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
        featureKey:
          description: |2
            key of the feature to disable.
          type: string
      required:
        - featureKey

    DisableMultipathPathRequestType:
      type: object
      description: |2
        The parameters of *HostStorageSystem.DisableMultipathPath*.
      properties:
        pathName:
          description: |2
            The name of the path to disable.
          type: string
      required:
        - pathName

    DisableRulesetRequestType:
      type: object
      description: |2
        The parameters of *HostFirewallSystem.DisableRuleset*.
      properties:
        id:
          type: string
      required:
        - id

    DisableSecondaryVMRequestType:
      type: object
      description: |2
        The parameters of *VirtualMachine.DisableSecondaryVM_Task*.
      properties:
        vm:
          description: |2
            The secondary virtual machine specified will be disabed.
            This field must specify a secondary virtual machine that is part of the fault
            tolerant group that this virtual machine is currently associated with. It can
            only be invoked from the primary virtual machine in the group.
            
            Refers instance of *VirtualMachine*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - vm

    DisconnectNvmeControllerExRequestType:
      type: object
      description: |2
        The parameters of *HostStorageSystem.DisconnectNvmeControllerEx_Task*.
        
        ***Since:*** vSphere API Release 7.0.3.0
      properties:
        disconnectSpec:
          description: |2
            A list of data objects, each specifying the parameters
            necessary to disconnect an NVMe controller.
          type: array
          items:
            $ref: '#/components/schemas/HostNvmeDisconnectSpec'

    DisconnectNvmeControllerRequestType:
      type: object
      description: |2
        The parameters of *HostStorageSystem.DisconnectNvmeController*.
      properties:
        disconnectSpec:
          description: |2
            A data object that specifies the parameters
            necessary to perform the disconnection.
          $ref: '#/components/schemas/HostNvmeDisconnectSpec'
      required:
        - disconnectSpec

    DiscoverFcoeHbasRequestType:
      type: object
      description: |2
        The parameters of *HostStorageSystem.DiscoverFcoeHbas*.
      properties:
        fcoeSpec:
          $ref: '#/components/schemas/FcoeConfigFcoeSpecification'
      required:
        - fcoeSpec

    DiscoverNvmeControllersRequestType:
      type: object
      description: |2
        The parameters of *HostStorageSystem.DiscoverNvmeControllers*.
      properties:
        discoverSpec:
          description: |2
            A data object that specifies the parameters
            necessary to retrieve the Discovery Log.
          $ref: '#/components/schemas/HostNvmeDiscoverSpec'
      required:
        - discoverSpec

    DissociateProfileRequestType:
      type: object
      description: |2
        The parameters of *Profile.DissociateProfile*.
      properties:
        entity:
          description: |2
            List of entities. The vCenter Server will remove the associations
            that the profile has with the entities in the list. If unset,
            the Server removes all the associations that the profile has with any
            managed entities in the inventory.
            If the specified entity is not associated with the profile,
            the Server does not perform any action.
            
            Refers instances of *ManagedEntity*.
          type: array
          items:
            $ref: '#/components/schemas/ManagedObjectReference'

    DoesCustomizationSpecExistRequestType:
      type: object
      description: |2
        The parameters of *CustomizationSpecManager.DoesCustomizationSpecExist*.
      properties:
        name:
          type: string
      required:
        - name

    DropConnectionsRequestType:
      type: object
      description: |2
        The parameters of *VirtualMachine.DropConnections*.
        
        ***Since:*** vSphere API Release 7.0.1.0
      properties:
        listOfConnections:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineConnection'

    DuplicateCustomizationSpecRequestType:
      type: object
      description: |2
        The parameters of *CustomizationSpecManager.DuplicateCustomizationSpec*.
      properties:
        name:
          type: string
        newName:
          type: string
      required:
        - name
        - newName

    DvsReconfigureVmVnicNetworkResourcePoolRequestType:
      type: object
      description: |2
        The parameters of *DistributedVirtualSwitch.DvsReconfigureVmVnicNetworkResourcePool_Task*.
      properties:
        configSpec:
          description: |2
            The Virtual NIC network resource pool configuration specification and operation type.
          type: array
          items:
            $ref: '#/components/schemas/DvsVmVnicResourcePoolConfigSpec'
      required:
        - configSpec

    EagerZeroVirtualDiskRequestType:
      type: object
      description: |2
        The parameters of *VirtualDiskManager.EagerZeroVirtualDisk_Task*.
      properties:
        name:
          description: |2
            The name of the disk, either a datastore path or a URL
            referring to the virtual disk that should be inflated.
          type: string
        datacenter:
          description: |2
            If <code>name</code> is a datastore path, the datacenter for
            that datastore path. Not needed when invoked directly on ESX.
            If not specified on a call to VirtualCenter,
            <code>name</code> must be a URL.
            
            Refers instance of *Datacenter*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - name

    EmitSyslogMarkRequestType:
      type: object
      description: |2
        The parameters of *DiagnosticManager.EmitSyslogMark*.
        
        ***Since:*** vSphere API Release 8.0.0.2
      properties:
        message:
          description: |2
            The string to be used.
          type: string
      required:
        - message

    EnableAlarmActionsRequestType:
      type: object
      description: |2
        The parameters of *AlarmManager.EnableAlarmActions*.
      properties:
        entity:
          description: |2
            The managed entity on which to set a schedule.
            
            ***Required privileges:*** Alarm.DisableActions
            
            Refers instance of *ManagedEntity*.
          $ref: '#/components/schemas/ManagedObjectReference'
        enabled:
          description: |2
            true, if alarms are enabled during the schedule.
          type: boolean
      required:
        - entity
        - enabled

    EnableAlarmRequestType:
      type: object
      description: |2
        The parameters of *AlarmManager.EnableAlarm*.
      properties:
        alarm:
          description: |2
            The Alarm being enabled.
            
            ***Required privileges:*** Alarm.ToggleEnableOnEntity
            
            Refers instance of *Alarm*.
          $ref: '#/components/schemas/ManagedObjectReference'
        entity:
          description: |2
            The ManagedEntity on which to enable the alarm.
            
            ***Required privileges:*** System.Read
            
            Refers instance of *ManagedEntity*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - alarm
        - entity

    EnableClusteredVmdkSupportRequestType:
      type: object
      description: |2
        The parameters of *HostDatastoreSystem.EnableClusteredVmdkSupport*.
      properties:
        datastore:
          description: |2
            Datastore on which clustered vmdk should be
            enabled
            
            Refers instance of *Datastore*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - datastore

    EnableCryptoRequestType:
      type: object
      description: |2
        The parameters of *HostSystem.EnableCrypto*.
      properties:
        keyPlain:
          description: |2
            The key to be used for coredump encryption
          $ref: '#/components/schemas/CryptoKeyPlain'
      required:
        - keyPlain

    EnableFeatureRequestType:
      type: object
      description: |2
        The parameters of *LicenseManager.EnableFeature*.
      properties:
        host:
          description: |2
            Host to act on if LicenseManager is not on a host.
            
            Refers instance of *HostSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
        featureKey:
          description: |2
            Name of the feature to enable.
          type: string
      required:
        - featureKey

    EnableMultipathPathRequestType:
      type: object
      description: |2
        The parameters of *HostStorageSystem.EnableMultipathPath*.
      properties:
        pathName:
          description: |2
            The name of the path to enable.
          type: string
      required:
        - pathName

    EnableNetworkResourceManagementRequestType:
      type: object
      description: |2
        The parameters of *DistributedVirtualSwitch.EnableNetworkResourceManagement*.
      properties:
        enable:
          description: |2
            If true, enables I/O control. If false,
            disables network I/O control.
          type: boolean
      required:
        - enable

    EnableRulesetRequestType:
      type: object
      description: |2
        The parameters of *HostFirewallSystem.EnableRuleset*.
      properties:
        id:
          type: string
      required:
        - id

    EnableSecondaryVMRequestType:
      type: object
      description: |2
        The parameters of *VirtualMachine.EnableSecondaryVM_Task*.
      properties:
        vm:
          description: |2
            The secondary virtual machine specified will be enabled.
            This field must specify a secondary virtual machine that is part of the fault
            tolerant group that this virtual machine is currently associated with. It can
            only be invoked from the primary virtual machine in the group.
            
            Refers instance of *VirtualMachine*.
          $ref: '#/components/schemas/ManagedObjectReference'
        host:
          description: |2
            The host on which the secondary virtual machine is to be
            enabled and possibly powered on. If no host is specified, a compatible host
            will be selected by the system. If the secondary virtual machine is not
            compatible with the specified host, the secondary will not be re-enabled
            and a fault will be returned.
            
            Refers instance of *HostSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - vm

    EnterMaintenanceModeRequestType:
      type: object
      description: |2
        The parameters of *HostSystem.EnterMaintenanceMode_Task*.
      properties:
        timeout:
          description: |2
            The task completes when the host successfully enters maintenance
            mode or the timeout expires, and in the latter case the task
            contains a Timeout fault. If the timeout is less than or equal to
            zero, there is no timeout. The timeout is specified in seconds.
          type: integer
          format: int32
        evacuatePoweredOffVms:
          description: |2
            This is a parameter only supported by VirtualCenter.
            If set to true, for a DRS disabled cluster, the task will not
            succeed unless all powered-off virtual machines have been manually
            reregistered; for a DRS enabled cluster, VirtualCenter will
            automatically reregister powered-off virtual machines and a
            powered-off virtual machine may remain at the host only for two
            reasons: (a) no compatible host found for reregistration, (b) DRS
            is disabled for the virtual machine. If set to false, powered-off
            virtual machines do not need to be moved.
          type: boolean
        maintenanceSpec:
          description: |2
            Any additional actions to be taken by the host upon
            entering maintenance mode. If omitted, default actions will
            be taken as documented in the *HostMaintenanceSpec*.
          $ref: '#/components/schemas/HostMaintenanceSpec'
      required:
        - timeout

    EstimateDatabaseSizeRequestType:
      type: object
      description: |2
        The parameters of *ResourcePlanningManager.EstimateDatabaseSize*.
      properties:
        dbSizeParam:
          description: |2
            *DatabaseSizeParam*
            Contains the summary of an inventory for which the database size
            requirements are to be computed. It also contains
            the historic interval setting for which the database
            computations are to be done. This is an optional parameter and
            the current virtual center historical settings are used by default.
            There are many other optional fields in the dbSizeParam structure
            that are appropriately filled up based on some heuristics.
          $ref: '#/components/schemas/DatabaseSizeParam'
      required:
        - dbSizeParam

    EsxAgentHostManagerUpdateConfigRequestType:
      type: object
      description: |2
        The parameters of *HostEsxAgentHostManager.EsxAgentHostManagerUpdateConfig*.
      properties:
        configInfo:
          description: |2
            configuration of agent virtual machine resources
          $ref: '#/components/schemas/HostEsxAgentHostManagerConfigInfo'
      required:
        - configInfo

    EvacuateVsanNodeRequestType:
      type: object
      description: |2
        The parameters of *HostVsanSystem.EvacuateVsanNode_Task*.
      properties:
        maintenanceSpec:
          description: |2
            Specifies the data evacuation mode. See *HostMaintenanceSpec*.
            If unspecified, the default mode chosen will be
            *ensureObjectAccessibility*.
          $ref: '#/components/schemas/HostMaintenanceSpec'
        timeout:
          description: |2
            Time to wait for the task to complete in seconds.
            If the value is less than or equal to zero, there
            is no timeout. The operation fails with a Timedout
            exception if it timed out.
          type: integer
          format: int32
      required:
        - maintenanceSpec
        - timeout

    ExecuteHostProfileRequestType:
      type: object
      description: |2
        The parameters of *HostProfile.ExecuteHostProfile*.
      properties:
        host:
          description: |2
            Host on which to execute the profile.
            The host does not have to be associated with the profile.
            
            Refers instance of *HostSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
        deferredParam:
          description: |2
            Additional configuration data to be applied to the host.
            This should contain all of the host-specific data, including data from from
            previous calls to the method.
          type: array
          items:
            $ref: '#/components/schemas/ProfileDeferredPolicyOptionParameter'
      required:
        - host

    ExecuteSimpleCommandRequestType:
      type: object
      description: |2
        The parameters of *SimpleCommand.ExecuteSimpleCommand*.
      properties:
        arguments:
          description: |2
            An arbitrary collection of arguments.
          type: array
          items:
            type: string

    ExitMaintenanceModeRequestType:
      type: object
      description: |2
        The parameters of *HostSystem.ExitMaintenanceMode_Task*.
      properties:
        timeout:
          description: |2
            Number of seconds to wait for the exit maintenance mode to
            succeed. If the timeout is less than or equal to zero, there
            is no timeout.
          type: integer
          format: int32
      required:
        - timeout

    ExpandVmfsDatastoreRequestType:
      type: object
      description: |2
        The parameters of *HostDatastoreSystem.ExpandVmfsDatastore*.
      properties:
        datastore:
          description: |2
            The datastore whose capacity should be increased.
            
            Refers instance of *Datastore*.
          $ref: '#/components/schemas/ManagedObjectReference'
        spec:
          description: |2
            The specification describing which extent of the VMFS
            datastore to expand.
          $ref: '#/components/schemas/VmfsDatastoreExpandSpec'
      required:
        - datastore
        - spec

    ExpandVmfsExtentRequestType:
      type: object
      description: |2
        The parameters of *HostStorageSystem.ExpandVmfsExtent*.
      properties:
        vmfsPath:
          description: |2
            The path of the VMFS to expand. See *FileSystemMountInfo*.
          type: string
        extent:
          description: |2
            The disk partition corresponding to the extent to be
            expanded.
          $ref: '#/components/schemas/HostScsiDiskPartition'
      required:
        - vmfsPath
        - extent

    ExportAnswerFileRequestType:
      type: object
      description: |2
        The parameters of *HostProfileManager.ExportAnswerFile_Task*.
      properties:
        host:
          description: |2
            Host with which the answer file is associated.
            
            Refers instance of *HostSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - host

    ExtendDiskRequestType:
      type: object
      description: |2
        The parameters of *VcenterVStorageObjectManager.ExtendDisk_Task*.
      properties:
        id:
          description: |2
            The ID of the virtual disk to be extended.
          $ref: '#/components/schemas/ID'
        datastore:
          description: |2
            The datastore where the virtual disk is located.
            
            Refers instance of *Datastore*.
          $ref: '#/components/schemas/ManagedObjectReference'
        newCapacityInMB:
          description: |2
            The new capacity of the virtual disk in MB.
          type: integer
          format: int64
      required:
        - id
        - datastore
        - newCapacityInMB

    ExtendHCIRequestType:
      type: object
      description: |2
        The parameters of *ClusterComputeResource.ExtendHCI_Task*.
      properties:
        hostInputs:
          description: |2
            Inputs to configure specified set of hosts in the
            cluster. See
            *ClusterComputeResourceHostConfigurationInput*
            for details. Hosts in this list should be part of the cluster and
            should be in maintenance mode for them to be configured per
            specification. Hosts which were not configured due to not
            being in maintenance mode will be returned in
            *ClusterComputeResourceClusterConfigResult.failedHosts*. Specify
            *ClusterComputeResourceHostConfigurationInput.hostVmkNics* only if *dvsSetting*
            is set.
          type: array
          items:
            $ref: '#/components/schemas/ClusterComputeResourceHostConfigurationInput'
        vSanConfigSpec:
          description: |2
            Specification to configure vSAN on specified set of
            hosts. See vim.vsan.ReconfigSpec for details. This parameter
            should be specified only when vSan is enabled on the cluster.
          $ref: '#/components/schemas/SDDCBase'

    ExtendVffsRequestType:
      type: object
      description: |2
        The parameters of *HostStorageSystem.ExtendVffs*.
      properties:
        vffsPath:
          description: |2
            The path of the VFFS to extend. See *FileSystemMountInfo*.
          type: string
        devicePath:
          description: |2
            Device path of the SSD disk.
          type: string
        spec:
          description: |2
            A data object that describes the SSD disk partition
            information. If this property is not provided, partition
            information will be computed and generated.
          $ref: '#/components/schemas/HostDiskPartitionSpec'
      required:
        - vffsPath
        - devicePath

    ExtendVirtualDiskRequestType:
      type: object
      description: |2
        The parameters of *VirtualDiskManager.ExtendVirtualDisk_Task*.
      properties:
        name:
          description: |2
            The name of the disk, either a datastore path or a URL
            referring to the virtual disk whose capacity should be expanded.
          type: string
        datacenter:
          description: |2
            If <code>name</code> is a datastore path, the datacenter for
            that datastore path. Not needed when invoked directly on ESX.
            If not specified on a call to VirtualCenter,
            <code>name</code> must be a URL.
            
            Refers instance of *Datacenter*.
          $ref: '#/components/schemas/ManagedObjectReference'
        newCapacityKb:
          description: |2
            The new capacty of the virtual disk in Kb.
          type: integer
          format: int64
        eagerZero:
          description: |2
            If true, the extended part of the disk will be
            explicitly filled with zeroes.
          type: boolean
      required:
        - name
        - newCapacityKb

    ExtendVmfsDatastoreRequestType:
      type: object
      description: |2
        The parameters of *HostDatastoreSystem.ExtendVmfsDatastore*.
      properties:
        datastore:
          description: |2
            The datastore whose capacity should be increased.
            
            Refers instance of *Datastore*.
          $ref: '#/components/schemas/ManagedObjectReference'
        spec:
          description: |2
            The specification describing what extents to add to a
            VMFS datastore.
          $ref: '#/components/schemas/VmfsDatastoreExtendSpec'
      required:
        - datastore
        - spec

    FailoverReplicationGroupRequestType:
      type: object
      description: |2
        The parameters of *VasaProvider.FailoverReplicationGroup_Task*.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        failoverParam:
          description: |2
            Settings for the failover.
          $ref: '#/components/schemas/FailoverParam'
      required:
        - failoverParam

    FetchAuditRecordsRequestType:
      type: object
      description: |2
        The parameters of *DiagnosticManager.FetchAuditRecords*.
        
        ***Since:*** vSphere API Release 7.0.3.0
      properties:
        token:
          description: |2
            The token to be used for the operation. The first call must
            be made without a token. All subsequent calls use the token
            returned in AuditRecordStatus.
          type: string

    FetchDVPortKeysRequestType:
      type: object
      description: |2
        The parameters of *DistributedVirtualSwitch.FetchDVPortKeys*.
      properties:
        criteria:
          description: |2
            The port selection criteria. If unset, the operation
            returns the keys of all the ports in the switch.
          $ref: '#/components/schemas/DistributedVirtualSwitchPortCriteria'

    FetchDVPortsRequestType:
      type: object
      description: |2
        The parameters of *DistributedVirtualSwitch.FetchDVPorts*.
      properties:
        criteria:
          description: |2
            The port selection criteria. If unset, the operation
            returns the keys of all the ports in the portgroup.
          $ref: '#/components/schemas/DistributedVirtualSwitchPortCriteria'

    FetchUserPrivilegeOnEntitiesRequestType:
      type: object
      description: |2
        The parameters of *AuthorizationManager.FetchUserPrivilegeOnEntities*.
      properties:
        entities:
          description: |2
            are the entities to retrieve privileges on
            
            ***Required privileges:*** System.View
            
            Refers instances of *ManagedEntity*.
          type: array
          items:
            $ref: '#/components/schemas/ManagedObjectReference'
        userName:
          description: |2
            is the user to retrieve privileges for
          type: string
      required:
        - entities
        - userName

    FindAllByDnsNameRequestType:
      type: object
      description: |2
        The parameters of *SearchIndex.FindAllByDnsName*.
      properties:
        datacenter:
          description: |2
            If specified, restricts the query to entities in
            a particular datacenter. If not specified, the entire inventory is
            searched.
            
            Refers instance of *Datacenter*.
          $ref: '#/components/schemas/ManagedObjectReference'
        dnsName:
          description: |2
            The fully qualified domain name to find.
          type: string
        vmSearch:
          description: |2
            If true, search for virtual machines, otherwise search for
            hosts.
          type: boolean
      required:
        - dnsName
        - vmSearch

    FindAllByIpRequestType:
      type: object
      description: |2
        The parameters of *SearchIndex.FindAllByIp*.
      properties:
        datacenter:
          description: |2
            If specified, restricts the query to entities in
            a particular datacenter. If not specified, the entire inventory is
            searched.
            
            Refers instance of *Datacenter*.
          $ref: '#/components/schemas/ManagedObjectReference'
        ip:
          description: |2
            The dot-decimal notation formatted IP address to find.
          type: string
        vmSearch:
          description: |2
            If true, search for virtual machines, otherwise search for
            hosts.
          type: boolean
      required:
        - ip
        - vmSearch

    FindAllByUuidRequestType:
      type: object
      description: |2
        The parameters of *SearchIndex.FindAllByUuid*.
      properties:
        datacenter:
          description: |2
            If specified, restricts the query to entities in
            a particular datacenter. If not specified, the entire inventory is
            searched.
            
            Refers instance of *Datacenter*.
          $ref: '#/components/schemas/ManagedObjectReference'
        uuid:
          description: |2
            The UUID to find. If vmSearch is true, the UUID can be either BIOS
            or instance UUID.
          type: string
        vmSearch:
          description: |2
            If true, search for virtual machines, otherwise search for
            hosts.
          type: boolean
        instanceUuid:
          description: |2
            Should only be set when vmSearch is true. If specified, search
            for virtual machines whose instance UUID matches the given uuid.
            Otherwise, search for virtual machines whose BIOS UUID matches the given
            uuid.
          type: boolean
      required:
        - uuid
        - vmSearch

    FindAssociatedProfileRequestType:
      type: object
      description: |2
        The parameters of *ProfileManager.FindAssociatedProfile*.
      properties:
        entity:
          description: |2
            Entity for which profile is being looked up.
            
            Refers instance of *ManagedEntity*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - entity

    FindByDatastorePathRequestType:
      type: object
      description: |2
        The parameters of *SearchIndex.FindByDatastorePath*.
      properties:
        datacenter:
          description: |2
            Specifies the datacenter to which the datastore path belongs.
            
            Refers instance of *Datacenter*.
          $ref: '#/components/schemas/ManagedObjectReference'
        path:
          description: |2
            A datastore path to the .vmx file for the virtual machine.
          type: string
      required:
        - datacenter
        - path

    FindByDnsNameRequestType:
      type: object
      description: |2
        The parameters of *SearchIndex.FindByDnsName*.
      properties:
        datacenter:
          description: |2
            If specified, restricts the query to entities in
            a particular datacenter. If not specified, the entire inventory is
            searched.
            
            Refers instance of *Datacenter*.
          $ref: '#/components/schemas/ManagedObjectReference'
        dnsName:
          description: |2
            The fully qualified domain name to find.
          type: string
        vmSearch:
          description: |2
            if true, search for virtual machines, otherwise search for
            hosts.
          type: boolean
      required:
        - dnsName
        - vmSearch

    FindByInventoryPathRequestType:
      type: object
      description: |2
        The parameters of *SearchIndex.FindByInventoryPath*.
      properties:
        inventoryPath:
          description: |2
            The path to the entity.
          type: string
      required:
        - inventoryPath

    FindByIpRequestType:
      type: object
      description: |2
        The parameters of *SearchIndex.FindByIp*.
      properties:
        datacenter:
          description: |2
            If specified, restricts the query to entities in
            a particular datacenter. If not specified, the entire inventory is
            searched.
            
            Refers instance of *Datacenter*.
          $ref: '#/components/schemas/ManagedObjectReference'
        ip:
          description: |2
            The dot-decimal notation formatted IP address to find.
          type: string
        vmSearch:
          description: |2
            if true, search for virtual machines, otherwise search for
            hosts.
          type: boolean
      required:
        - ip
        - vmSearch

    FindByUuidRequestType:
      type: object
      description: |2
        The parameters of *SearchIndex.FindByUuid*.
      properties:
        datacenter:
          description: |2
            If specified, restricts the query to entities in
            a particular datacenter. If not specified, the entire inventory is
            searched.
            
            Refers instance of *Datacenter*.
          $ref: '#/components/schemas/ManagedObjectReference'
        uuid:
          description: |2
            The UUID to find. If vmSearch is true, the uuid can be either BIOS
            or instance UUID.
          type: string
        vmSearch:
          description: |2
            If true, search for virtual machines, otherwise search for
            hosts.
          type: boolean
        instanceUuid:
          description: |2
            Should only be set when vmSearch is true. If specified, search
            for virtual machines whose instance UUID matches the given uuid.
            Otherwise, search for virtual machines whose BIOS UUID matches the given
            uuid.
          type: boolean
      required:
        - uuid
        - vmSearch

    FindChildRequestType:
      type: object
      description: |2
        The parameters of *SearchIndex.FindChild*.
      properties:
        entity:
          description: |2
            A reference to a managed entity.
            
            Refers instance of *ManagedEntity*.
          $ref: '#/components/schemas/ManagedObjectReference'
        name:
          description: |2
            The name of the child object.
          type: string
      required:
        - entity
        - name

    FindExtensionRequestType:
      type: object
      description: |2
        The parameters of *ExtensionManager.FindExtension*.
      properties:
        extensionKey:
          description: |2
            Key to search for.
          type: string
      required:
        - extensionKey

    FindRulesForVmRequestType:
      type: object
      description: |2
        The parameters of *ClusterComputeResource.FindRulesForVm*.
      properties:
        vm:
          description: |2
            The vm whose rules need to be looked up.
            
            Refers instance of *VirtualMachine*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - vm

    FormatVffsRequestType:
      type: object
      description: |2
        The parameters of *HostStorageSystem.FormatVffs*.
      properties:
        createSpec:
          description: |2
            A data object that describes the VFFS volume
            creation specification.
          $ref: '#/components/schemas/HostVffsSpec'
      required:
        - createSpec

    FormatVmfsRequestType:
      type: object
      description: |2
        The parameters of *HostStorageSystem.FormatVmfs*.
      properties:
        createSpec:
          description: |2
            A data object that describes the VMware File System
            (VMFS) creation specification.
          $ref: '#/components/schemas/HostVmfsSpec'
      required:
        - createSpec

    GenerateCertificateSigningRequestByDnRequestType:
      type: object
      description: |2
        The parameters of *HostCertificateManager.GenerateCertificateSigningRequestByDn*.
      properties:
        distinguishedName:
          description: |2
            DN to be used as subject in CSR.
          type: string
        spec:
          description: |2
            is used to generate CSR for selected certificate kind
            
            ***Since:*** vSphere API Release 8.0.1.0
          $ref: '#/components/schemas/HostCertificateManagerCertificateSpec'
      required:
        - distinguishedName

    GenerateCertificateSigningRequestRequestType:
      type: object
      description: |2
        The parameters of *HostCertificateManager.GenerateCertificateSigningRequest*.
      properties:
        useIpAddressAsCommonName:
          description: |2
            if true, use host's
            management IP address as CN in the CSR;
            otherwise use host's FQDN.
          type: boolean
        spec:
          description: |2
            is used to generate CSR for selected
            certificate kind.
            
            ***Since:*** vSphere API Release 8.0.1.0
          $ref: '#/components/schemas/HostCertificateManagerCertificateSpec'
      required:
        - useIpAddressAsCommonName

    GenerateClientCsrRequestType:
      type: object
      description: |2
        The parameters of *CryptoManagerKmip.GenerateClientCsr*.
      properties:
        cluster:
          description: |2
            \[in\] KMIP cluster.
          $ref: '#/components/schemas/KeyProviderId'
        request:
          description: |2
            \[in\] Certificate sign request.
            
            ***Since:*** vSphere API Release 8.0.1.0
          $ref: '#/components/schemas/CryptoManagerKmipCertSignRequest'
      required:
        - cluster

    GenerateConfigTaskListRequestType:
      type: object
      description: |2
        The parameters of *HostProfileManager.GenerateConfigTaskList*.
      properties:
        configSpec:
          description: |2
            ConfigSpec which was proposed by
            *HostProfile.ExecuteHostProfile* method.
          $ref: '#/components/schemas/HostConfigSpec'
        host:
          description: |2
            Host on which the HostProfile application needs to be
            carried out.
            
            Refers instance of *HostSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - configSpec
        - host

    GenerateHostConfigTaskSpecRequestType:
      type: object
      description: |2
        The parameters of *HostProfileManager.GenerateHostConfigTaskSpec_Task*.
      properties:
        hostsInfo:
          description: |2
            List of host data for which configuration task list
            needs to be generated. The
            *StructuredCustomizations.customizations* value should be
            provided only if the host customization data for that host is
            invalid. If this property is not provided, the API will use the
            host customization data stored in VC and generate task list.
          type: array
          items:
            $ref: '#/components/schemas/StructuredCustomizations'

    GenerateHostProfileTaskListRequestType:
      type: object
      description: |2
        The parameters of *HostProfileManager.GenerateHostProfileTaskList_Task*.
      properties:
        configSpec:
          description: |2
            ConfigSpec which was proposed by
            *HostProfile.ExecuteHostProfile* method.
          $ref: '#/components/schemas/HostConfigSpec'
        host:
          description: |2
            Host on which the HostProfile application needs to be
            carried out.
            
            Refers instance of *HostSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - configSpec
        - host

    GenerateKeyRequestType:
      type: object
      description: |2
        The parameters of *CryptoManagerKmip.GenerateKey*.
      properties:
        keyProvider:
          description: |2
            \[in\] Which provider will generate the key.
            If omitted, will use the default key provider.
          $ref: '#/components/schemas/KeyProviderId'
        spec:
          description: |2
            \[in\] The spec that contains custom attributes key/value pairs.
            
            ***Since:*** vSphere API Release 8.0.1.0
          $ref: '#/components/schemas/CryptoManagerKmipCustomAttributeSpec'

    GenerateLogBundlesRequestType:
      type: object
      description: |2
        The parameters of *DiagnosticManager.GenerateLogBundles_Task*.
      properties:
        includeDefault:
          description: |2
            Specifies if the bundle should include the
            default server. If called on a VirtualCenter
            server, then this means the VirtualCenter
            diagnostic files. If called directly on a host,
            then includeDefault must be set to true.
          type: boolean
        host:
          description: |2
            Lists hosts that are included. This is only used
            when called on VirtualCenter. If called directly
            on a host, then this parameter must be empty.
            
            Refers instances of *HostSystem*.
          type: array
          items:
            $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - includeDefault

    GenerateSelfSignedClientCertRequestType:
      type: object
      description: |2
        The parameters of *CryptoManagerKmip.GenerateSelfSignedClientCert*.
      properties:
        cluster:
          description: |2
            \[in\] KMIP cluster.
          $ref: '#/components/schemas/KeyProviderId'
        request:
          description: |2
            \[in\] Certificate sign request.
            
            ***Since:*** vSphere API Release 8.0.1.0
          $ref: '#/components/schemas/CryptoManagerKmipCertSignRequest'
      required:
        - cluster

    GetAlarmRequestType:
      type: object
      description: |2
        The parameters of *AlarmManager.GetAlarm*.
      properties:
        entity:
          description: |2
            The entity. If not set, alarms are returned for
            all visible entities.
            
            Refers instance of *ManagedEntity*.
          $ref: '#/components/schemas/ManagedObjectReference'

    GetAlarmStateRequestType:
      type: object
      description: |2
        The parameters of *AlarmManager.GetAlarmState*.
      properties:
        entity:
          description: |2
            The entity.
            
            ***Required privileges:*** System.Read
            
            Refers instance of *ManagedEntity*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - entity

    GetCryptoKeyStatusRequestType:
      type: object
      description: |2
        The parameters of *CryptoManagerHost.GetCryptoKeyStatus*.
        
        ***Since:*** vSphere API Release 8.0.1.0
      properties:
        keys:
          description: |2
            \[in\] Cryptographic keys to query status.
          type: array
          items:
            $ref: '#/components/schemas/CryptoKeyId'

    GetCustomizationSpecRequestType:
      type: object
      description: |2
        The parameters of *CustomizationSpecManager.GetCustomizationSpec*.
      properties:
        name:
          description: |2
            Unique name identifying the requested customization specification.
          type: string
      required:
        - name

    GetDefaultKmsClusterRequestType:
      type: object
      description: |2
        The parameters of *CryptoManagerKmip.GetDefaultKmsCluster*.
      properties:
        entity:
          description: |2
            \[in\] The entity where the default KMS cluster to get.
            If omitted, then return global default KMS cluster.
            
            Refers instance of *ManagedEntity*.
          $ref: '#/components/schemas/ManagedObjectReference'
        defaultsToParent:
          description: |2
            \[in\] (Optional, default = false) If set to true,
            then get the default kms cluster follow the
            entity hierarchy. That means if the entity has
            no default kms cluster, then try to get from
            its parent.
          type: boolean

    GetVsanObjExtAttrsRequestType:
      type: object
      description: |2
        The parameters of *HostVsanInternalSystem.GetVsanObjExtAttrs*.
      properties:
        uuids:
          description: |2
            List of object UUIDs.
          type: array
          items:
            type: string
      required:
        - uuids

    HasMonitoredEntityRequestType:
      type: object
      description: |2
        The parameters of *HealthUpdateManager.HasMonitoredEntity*.
      properties:
        providerId:
          description: |2
            The provider id.
          type: string
        entity:
          description: |2
            An entity of type HostSystem.
            
            Refers instance of *ManagedEntity*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - providerId
        - entity

    HasPrivilegeOnEntitiesRequestType:
      type: object
      description: |2
        The parameters of *AuthorizationManager.HasPrivilegeOnEntities*.
      properties:
        entity:
          description: |2
            The set of entities on which the privileges are checked.
            
            ***Required privileges:*** System.Read
            
            Refers instances of *ManagedEntity*.
          type: array
          items:
            $ref: '#/components/schemas/ManagedObjectReference'
        sessionId:
          description: |2
            The session ID to check privileges for. A sesssion ID can be
            obtained from *UserSession.key*.
          type: string
        privId:
          description: |2
            The array of privilege IDs to check.
          type: array
          items:
            type: string
      required:
        - entity
        - sessionId

    HasPrivilegeOnEntityRequestType:
      type: object
      description: |2
        The parameters of *AuthorizationManager.HasPrivilegeOnEntity*.
      properties:
        entity:
          description: |2
            The entity on which the privileges are checked.
            
            ***Required privileges:*** System.Read
            
            Refers instance of *ManagedEntity*.
          $ref: '#/components/schemas/ManagedObjectReference'
        sessionId:
          description: |2
            The session ID to check privileges for. A sesssion ID can be
            obtained from *UserSession.key*.
          type: string
        privId:
          description: |2
            The array of privilege IDs to check.
          type: array
          items:
            type: string
      required:
        - entity
        - sessionId

    HasProviderRequestType:
      type: object
      description: |2
        The parameters of *HealthUpdateManager.HasProvider*.
      properties:
        id:
          description: |2
            The provider id.
          type: string
      required:
        - id

    HasUserPrivilegeOnEntitiesRequestType:
      type: object
      description: |2
        The parameters of *AuthorizationManager.HasUserPrivilegeOnEntities*.
      properties:
        entities:
          description: |2
            are the managed objects to check privileges on. If they
            refer to managed objects that are not managed entities
            the privilege check will be done on the root folder.
            
            ***Required privileges:*** System.View
          type: array
          items:
            $ref: '#/components/schemas/ManagedObjectReference'
        userName:
          description: |2
            is the name of the user to check privileges for. Both
            UPN and PreWindows2000LogonName user name formats
            are supported.
          type: string
        privId:
          description: |2
            is the set of privileges to check for
          type: array
          items:
            type: string
      required:
        - entities
        - userName

    HostClearVStorageObjectControlFlagsRequestType:
      type: object
      description: |2
        The parameters of *HostVStorageObjectManager.HostClearVStorageObjectControlFlags*.
      properties:
        id:
          description: |2
            The ID of the virtual storage object.
          $ref: '#/components/schemas/ID'
        datastore:
          description: |2
            The datastore where the source virtual storage
            object is located.
            
            ***Required privileges:*** Datastore.FileManagement
            
            Refers instance of *Datastore*.
          $ref: '#/components/schemas/ManagedObjectReference'
        controlFlags:
          description: |2
            control flags enum array to be cleared on the
            VStorageObject. All control flags not included
            in the array remain intact.
          type: array
          items:
            type: string
      required:
        - id
        - datastore

    HostCloneVStorageObjectRequestType:
      type: object
      description: |2
        The parameters of *HostVStorageObjectManager.HostCloneVStorageObject_Task*.
      properties:
        id:
          description: |2
            The ID of the virtual storage object.
          $ref: '#/components/schemas/ID'
        datastore:
          description: |2
            The datastore where the source virtual storage
            object is located.
            
            Refers instance of *Datastore*.
          $ref: '#/components/schemas/ManagedObjectReference'
        spec:
          description: |2
            The specification for cloning the virtual storage
            object.
          $ref: '#/components/schemas/VslmCloneSpec'
      required:
        - id
        - datastore
        - spec

    HostConfigVFlashCacheRequestType:
      type: object
      description: |2
        The parameters of *HostVFlashManager.HostConfigVFlashCache*.
      properties:
        spec:
          description: |2
            Specification for host cache configuration.
          $ref: '#/components/schemas/HostVFlashManagerVFlashCacheConfigSpec'
      required:
        - spec

    HostConfigureVFlashResourceRequestType:
      type: object
      description: |2
        The parameters of *HostVFlashManager.HostConfigureVFlashResource*.
      properties:
        spec:
          description: |2
            the vFlash resource specification.
          $ref: '#/components/schemas/HostVFlashManagerVFlashResourceConfigSpec'
      required:
        - spec

    HostCreateDiskRequestType:
      type: object
      description: |2
        The parameters of *HostVStorageObjectManager.HostCreateDisk_Task*.
      properties:
        spec:
          description: |2
            The specification of the virtual storage object
            to be created.
            2
          $ref: '#/components/schemas/VslmCreateSpec'
      required:
        - spec

    HostDeleteVStorageObjectExRequestType:
      type: object
      description: |2
        The parameters of *HostVStorageObjectManager.HostDeleteVStorageObjectEx_Task*.
        
        ***Since:*** vSphere API Release 7.0.2.0
      properties:
        id:
          description: |2
            The ID of the virtual storage object to be deleted.
          $ref: '#/components/schemas/ID'
        datastore:
          description: |2
            The datastore where the virtual storage object is
            located.
            
            Refers instance of *Datastore*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - id
        - datastore

    HostDeleteVStorageObjectRequestType:
      type: object
      description: |2
        The parameters of *HostVStorageObjectManager.HostDeleteVStorageObject_Task*.
      properties:
        id:
          description: |2
            The ID of the virtual storage object to be deleted.
          $ref: '#/components/schemas/ID'
        datastore:
          description: |2
            The datastore where the virtual storage object is
            located.
            
            Refers instance of *Datastore*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - id
        - datastore

    HostExtendDiskRequestType:
      type: object
      description: |2
        The parameters of *HostVStorageObjectManager.HostExtendDisk_Task*.
      properties:
        id:
          description: |2
            The ID of the virtual disk to be extended.
          $ref: '#/components/schemas/ID'
        datastore:
          description: |2
            The datastore where the virtual disk is located.
            
            Refers instance of *Datastore*.
          $ref: '#/components/schemas/ManagedObjectReference'
        newCapacityInMB:
          description: |2
            The new capacity of the virtual disk in MB.
          type: integer
          format: int64
      required:
        - id
        - datastore
        - newCapacityInMB

    HostGetVFlashModuleDefaultConfigRequestType:
      type: object
      description: |2
        The parameters of *HostVFlashManager.HostGetVFlashModuleDefaultConfig*.
      properties:
        vFlashModule:
          description: |2
            Name of the vFlash module
          type: string
      required:
        - vFlashModule

    HostInflateDiskRequestType:
      type: object
      description: |2
        The parameters of *HostVStorageObjectManager.HostInflateDisk_Task*.
      properties:
        id:
          description: |2
            The ID of the virtual disk to be inflated.
          $ref: '#/components/schemas/ID'
        datastore:
          description: |2
            The datastore where the virtual disk is located.
            
            Refers instance of *Datastore*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - id
        - datastore

    HostListVStorageObjectRequestType:
      type: object
      description: |2
        The parameters of *HostVStorageObjectManager.HostListVStorageObject*.
      properties:
        datastore:
          description: |2
            The datastore to query for the virtual storage objects.
            
            Refers instance of *Datastore*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - datastore

    HostQueryVirtualDiskUuidRequestType:
      type: object
      description: |2
        The parameters of *HostVStorageObjectManager.HostQueryVirtualDiskUuid*.
        
        ***Since:*** vSphere API Release 8.0.3.0
      properties:
        name:
          description: |2
            The name of the disk, either a datastore path or a URL
            referring to the virtual disk whose uuid for the DDB entry needs to be queried.
            A URL has the form
            > _scheme_://_authority_/folder/_path_?dsName=_dsName_
            
            where
            - _scheme_ is <code>http</code> or <code>https</code>.
            - _authority_ specifies the hostname or IP address of the VirtualCenter or
              ESX server and optionally the port.
            - _dsName_ is the name of the Datastore.
            - _path_ is a slash-delimited path from the root of the datastore.
            
            A datastore path has the form
            > \[_datastore_\] _path_
            
            where
            - _datastore_ is the datastore name.
            - _path_ is a slash-delimited path from the root of the datastore.
            
            An example datastore path is "\[storage\] path/to/file.extension".
          type: string
      required:
        - name

    HostReconcileDatastoreInventoryRequestType:
      type: object
      description: |2
        The parameters of *HostVStorageObjectManager.HostReconcileDatastoreInventory_Task*.
      properties:
        datastore:
          description: |2
            The datastore that needs to be reconciled.
            
            Refers instance of *Datastore*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - datastore

    HostRegisterDiskRequestType:
      type: object
      description: |2
        The parameters of *HostVStorageObjectManager.HostRegisterDisk*.
      properties:
        path:
          description: |2
            URL or datastore path to the virtual disk.
          type: string
        name:
          description: |2
            The descriptive name of the disk object. If
            unset the name will be automatically determined
            from the path. @see vim.vslm.BaseConfigInfo#name
          type: string
        modifyControlFlags:
          description: |2
            Optional Parameter describing if the control Flags should be changed to default values
            
            ***Since:*** vSphere API Release 8.0.2.0
          type: boolean
      required:
        - path

    HostRelocateVStorageObjectRequestType:
      type: object
      description: |2
        The parameters of *HostVStorageObjectManager.HostRelocateVStorageObject_Task*.
      properties:
        id:
          description: |2
            The ID of the virtual storage object.
          $ref: '#/components/schemas/ID'
        datastore:
          description: |2
            The datastore where the source virtual storage
            object is located.
            
            Refers instance of *Datastore*.
          $ref: '#/components/schemas/ManagedObjectReference'
        spec:
          description: |2
            The specification for relocation of the virtual
            storage object.
          $ref: '#/components/schemas/VslmRelocateSpec'
      required:
        - id
        - datastore
        - spec

    HostRenameVStorageObjectRequestType:
      type: object
      description: |2
        The parameters of *HostVStorageObjectManager.HostRenameVStorageObject*.
      properties:
        id:
          description: |2
            The ID of the virtual storage object to be renamed.
          $ref: '#/components/schemas/ID'
        datastore:
          description: |2
            The datastore where the virtual storage object is
            located.
            
            Refers instance of *Datastore*.
          $ref: '#/components/schemas/ManagedObjectReference'
        name:
          description: |2
            The new name for the virtual storage object.
          type: string
      required:
        - id
        - datastore
        - name

    HostRetrieveVStorageInfrastructureObjectPolicyRequestType:
      type: object
      description: |2
        The parameters of *HostVStorageObjectManager.HostRetrieveVStorageInfrastructureObjectPolicy*.
      properties:
        datastore:
          description: |2
            Datastore on which policy needs to be retrieved.
            
            Refers instance of *Datastore*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - datastore

    HostRetrieveVStorageObjectMetadataRequestType:
      type: object
      description: |2
        The parameters of *HostVStorageObjectManager.HostRetrieveVStorageObjectMetadata*.
      properties:
        id:
          description: |2
            The ID of the virtual storage object.
          $ref: '#/components/schemas/ID'
        datastore:
          description: |2
            The datastore to query for the virtual storage objects.
            
            Refers instance of *Datastore*.
          $ref: '#/components/schemas/ManagedObjectReference'
        snapshotId:
          description: |2
            The ID of the snapshot of virtual storage object.
          $ref: '#/components/schemas/ID'
        prefix:
          description: |2
            The prefix of the metadata key that needs to be retrieved
          type: string
      required:
        - id
        - datastore

    HostRetrieveVStorageObjectMetadataValueRequestType:
      type: object
      description: |2
        The parameters of *HostVStorageObjectManager.HostRetrieveVStorageObjectMetadataValue*.
      properties:
        id:
          description: |2
            The ID of the virtual storage object.
          $ref: '#/components/schemas/ID'
        datastore:
          description: |2
            The datastore to query for the virtual storage objects.
            
            Refers instance of *Datastore*.
          $ref: '#/components/schemas/ManagedObjectReference'
        snapshotId:
          description: |2
            The ID of the snapshot of virtual storage object.
          $ref: '#/components/schemas/ID'
        key:
          description: |2
            The key for the the virtual storage object
          type: string
      required:
        - id
        - datastore
        - key

    HostRetrieveVStorageObjectRequestType:
      type: object
      description: |2
        The parameters of *HostVStorageObjectManager.HostRetrieveVStorageObject*.
      properties:
        id:
          description: |2
            The ID of the virtual storage object to be retrieved.
          $ref: '#/components/schemas/ID'
        datastore:
          description: |2
            The datastore where the virtual storage object is
            located.
            
            Refers instance of *Datastore*.
          $ref: '#/components/schemas/ManagedObjectReference'
        diskInfoFlags:
          description: |2
            Flags indicating the FCD information to be
            retrieved. If diskInfoFlags is unset, then all FCD
            information will be retrieved. See
            *vslmDiskInfoFlag_enum* for the list of
            supported values.
            
            ***Since:*** vSphere API Release 8.0.0.1
          type: array
          items:
            type: string
      required:
        - id
        - datastore

    HostRetrieveVStorageObjectStateRequestType:
      type: object
      description: |2
        The parameters of *HostVStorageObjectManager.HostRetrieveVStorageObjectState*.
      properties:
        id:
          description: |2
            The ID of the virtual storage object the state to be retrieved.
          $ref: '#/components/schemas/ID'
        datastore:
          description: |2
            The datastore where the virtual storage object is
            located.
            
            Refers instance of *Datastore*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - id
        - datastore

    HostScheduleReconcileDatastoreInventoryRequestType:
      type: object
      description: |2
        The parameters of *HostVStorageObjectManager.HostScheduleReconcileDatastoreInventory*.
      properties:
        datastore:
          description: |2
            The datastore that needs to be reconciled.
            
            Refers instance of *Datastore*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - datastore

    HostSetVStorageObjectControlFlagsRequestType:
      type: object
      description: |2
        The parameters of *HostVStorageObjectManager.HostSetVStorageObjectControlFlags*.
      properties:
        id:
          description: |2
            The ID of the virtual storage object.
          $ref: '#/components/schemas/ID'
        datastore:
          description: |2
            The datastore where the source virtual storage
            object is located.
            
            ***Required privileges:*** Datastore.FileManagement
            
            Refers instance of *Datastore*.
          $ref: '#/components/schemas/ManagedObjectReference'
        controlFlags:
          description: |2
            control flags enum array to be set on the
            VStorageObject. All control flags not included
            in the array remain intact.
          type: array
          items:
            type: string
      required:
        - id
        - datastore

    HostSetVirtualDiskUuidRequestType:
      type: object
      description: |2
        The parameters of *HostVStorageObjectManager.HostSetVirtualDiskUuid_Task*.
        
        ***Since:*** vSphere API Release 8.0.3.0
      properties:
        name:
          description: |2
            The name of the disk, either a datastore path or a URL
            referring to the virtual disk whose uuid for the DDB entry needs to be set.
            A URL has the form
            > _scheme_://_authority_/folder/_path_?dsName=_dsName_
            
            where
            - _scheme_ is <code>http</code> or <code>https</code>.
            - _authority_ specifies the hostname or IP address of the VirtualCenter or
              ESX server and optionally the port.
            - _dsName_ is the name of the Datastore.
            - _path_ is a slash-delimited path from the root of the datastore.
            
            A datastore path has the form
            > \[_datastore_\] _path_
            
            where
            - _datastore_ is the datastore name.
            - _path_ is a slash-delimited path from the root of the datastore.
            
            An example datastore path is "\[storage\] path/to/file.extension".
          type: string
        uuid:
          description: |2
            The hex representation of the unique ID for this virtual disk. If uuid is not set or missing,
            a random UUID is generated and assigned.
          type: string
      required:
        - name

    HostSpecGetUpdatedHostsRequestType:
      type: object
      description: |2
        The parameters of *HostSpecificationManager.HostSpecGetUpdatedHosts*.
      properties:
        startChangeID:
          description: |2
            The beginning of the time period.
          type: string
        endChangeID:
          description: |2
            The ending of the time period.
          type: string

    HostStorageSystem_MarkForRemovalRequestType:
      type: object
      description: |2
        The parameters of *HostStorageSystem.HostStorageSystem_MarkForRemoval*.
      properties:
        hbaName:
          type: string
        remove:
          type: boolean
      required:
        - hbaName
        - remove

    HostUpdateVStorageObjectMetadataExRequestType:
      type: object
      description: |2
        The parameters of *HostVStorageObjectManager.HostUpdateVStorageObjectMetadataEx_Task*.
        
        ***Since:*** vSphere API Release 7.0.2.0
      properties:
        id:
          description: |2
            The ID of the virtual storage object.
          $ref: '#/components/schemas/ID'
        datastore:
          description: |2
            The datastore to query for the virtual storage objects.
            
            Refers instance of *Datastore*.
          $ref: '#/components/schemas/ManagedObjectReference'
        metadata:
          description: |2
            array of key/value strings. (keys must be unique
            within the list)
          type: array
          items:
            $ref: '#/components/schemas/KeyValue'
        deleteKeys:
          description: |2
            array of keys need to be deleted
          type: array
          items:
            type: string
      required:
        - id
        - datastore

    HostUpdateVStorageObjectMetadataRequestType:
      type: object
      description: |2
        The parameters of *HostVStorageObjectManager.HostUpdateVStorageObjectMetadata_Task*.
      properties:
        id:
          description: |2
            The ID of the virtual storage object.
          $ref: '#/components/schemas/ID'
        datastore:
          description: |2
            The datastore to query for the virtual storage objects.
            
            Refers instance of *Datastore*.
          $ref: '#/components/schemas/ManagedObjectReference'
        metadata:
          description: |2
            array of key/value strings. (keys must be unique
            within the list)
          type: array
          items:
            $ref: '#/components/schemas/KeyValue'
        deleteKeys:
          description: |2
            array of keys need to be deleted
          type: array
          items:
            type: string
      required:
        - id
        - datastore

    HostVStorageObjectCreateDiskFromSnapshotRequestType:
      type: object
      description: |2
        The parameters of *HostVStorageObjectManager.HostVStorageObjectCreateDiskFromSnapshot_Task*.
      properties:
        id:
          description: |2
            The ID of the virtual storage object.
          $ref: '#/components/schemas/ID'
        datastore:
          description: |2
            The datastore where the source virtual storage object
            is located.
            
            Refers instance of *Datastore*.
          $ref: '#/components/schemas/ManagedObjectReference'
        snapshotId:
          description: |2
            The ID of the snapshot of the virtual storage object.
          $ref: '#/components/schemas/ID'
        name:
          description: |2
            A user friendly name to be associated with the new disk.
          type: string
        profile:
          description: |2
            SPBM Profile requirement on the new virtual storage object.
            If not specified datastore default policy would be
            assigned.
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineProfileSpec'
        crypto:
          description: |2
            Crypto information of the new disk.
          $ref: '#/components/schemas/CryptoSpec'
        path:
          description: |2
            Relative location in the specified datastore where disk needs
            to be created. If not specified disk gets created at defualt
            VStorageObject location on the specified datastore.
          type: string
        provisioningType:
          description: |2
            Provisioining type of the disk as specified in above
            mentioned profile. The list of supported values can be found in
            *BaseConfigInfoDiskFileBackingInfoProvisioningType_enum*
            
            ***Since:*** vSphere API Release 8.0.0.1
          type: string
      required:
        - id
        - datastore
        - snapshotId
        - name

    HostVStorageObjectCreateSnapshotRequestType:
      type: object
      description: |2
        The parameters of *HostVStorageObjectManager.HostVStorageObjectCreateSnapshot_Task*.
      properties:
        id:
          description: |2
            The ID of the virtual storage object.
          $ref: '#/components/schemas/ID'
        datastore:
          description: |2
            The datastore where the source virtual storage object
            is located.
            
            Refers instance of *Datastore*.
          $ref: '#/components/schemas/ManagedObjectReference'
        description:
          description: |2
            A short description to be associated with the snapshot.
          type: string
      required:
        - id
        - datastore
        - description

    HostVStorageObjectDeleteSnapshotRequestType:
      type: object
      description: |2
        The parameters of *HostVStorageObjectManager.HostVStorageObjectDeleteSnapshot_Task*.
      properties:
        id:
          description: |2
            The ID of the virtual storage object.
          $ref: '#/components/schemas/ID'
        datastore:
          description: |2
            The datastore where the source virtual storage object
            is located.
            
            Refers instance of *Datastore*.
          $ref: '#/components/schemas/ManagedObjectReference'
        snapshotId:
          description: |2
            The ID of the snapshot of a virtual storage object.
          $ref: '#/components/schemas/ID'
      required:
        - id
        - datastore
        - snapshotId

    HostVStorageObjectRetrieveSnapshotInfoRequestType:
      type: object
      description: |2
        The parameters of *HostVStorageObjectManager.HostVStorageObjectRetrieveSnapshotInfo*.
      properties:
        id:
          description: |2
            The ID of the virtual storage object.
          $ref: '#/components/schemas/ID'
        datastore:
          description: |2
            The datastore where the source virtual storage object
            is located.
            
            Refers instance of *Datastore*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - id
        - datastore

    HostVStorageObjectRevertRequestType:
      type: object
      description: |2
        The parameters of *HostVStorageObjectManager.HostVStorageObjectRevert_Task*.
      properties:
        id:
          description: |2
            The ID of the virtual storage object.
          $ref: '#/components/schemas/ID'
        datastore:
          description: |2
            The datastore where the source virtual storage object
            is located.
            
            Refers instance of *Datastore*.
          $ref: '#/components/schemas/ManagedObjectReference'
        snapshotId:
          description: |2
            The ID of the snapshot of a virtual storage object.
          $ref: '#/components/schemas/ID'
      required:
        - id
        - datastore
        - snapshotId

    HttpNfcLeaseAbortRequestType:
      type: object
      description: |2
        The parameters of *HttpNfcLease.HttpNfcLeaseAbort*.
      properties:
        fault:
          description: |2
            \[in\] The fault that caused the abort, if any.
          $ref: '#/components/schemas/MethodFault'

    HttpNfcLeaseProbeUrlsRequestType:
      type: object
      description: |2
        The parameters of *HttpNfcLease.HttpNfcLeaseProbeUrls*.
        
        ***Since:*** vSphere API Release 7.0.2.0
      properties:
        files:
          description: |2
            \[in\] List of remote source file descriptors
            There should be the same number of *HttpNfcLeaseSourceFile*
            as *HttpNfcLeaseDeviceUrl* provided by this lease.
          type: array
          items:
            $ref: '#/components/schemas/HttpNfcLeaseSourceFile'
        timeout:
          description: |2
            \[in\] time in seconds for each url validation.
            Maximum timeout is 60.
          type: integer
          format: int32

    HttpNfcLeaseProgressRequestType:
      type: object
      description: |2
        The parameters of *HttpNfcLease.HttpNfcLeaseProgress*.
      properties:
        percent:
          description: |2
            \[in\] Completion status represented as an integer
            in the 0-100 range.
          type: integer
          format: int32
      required:
        - percent

    HttpNfcLeasePullFromUrlsRequestType:
      type: object
      description: |2
        The parameters of *HttpNfcLease.HttpNfcLeasePullFromUrls_Task*.
      properties:
        files:
          description: |2
            \[in\] List of remote source file descriptors
            There should be the same number of *HttpNfcLeaseSourceFile*
            as *HttpNfcLeaseDeviceUrl* provided by this lease.
            Privilege VApp.PullFromUrls is required.
          type: array
          items:
            $ref: '#/components/schemas/HttpNfcLeaseSourceFile'

    HttpNfcLeaseSetManifestChecksumTypeRequestType:
      type: object
      description: |2
        The parameters of *HttpNfcLease.HttpNfcLeaseSetManifestChecksumType*.
      properties:
        deviceUrlsToChecksumTypes:
          description: |2
            \[in\] Should contain key value pairs:
            where key is *HttpNfcLeaseDeviceUrl.key* returned in this lease info and value
            is desired algorithm from *HttpNfcLeaseManifestEntryChecksumType_enum*.
          type: array
          items:
            $ref: '#/components/schemas/KeyValue'

    ImpersonateUserRequestType:
      type: object
      description: |2
        The parameters of *SessionManager.ImpersonateUser*.
      properties:
        userName:
          description: |2
            The user or extension key to impersonate.
          type: string
        locale:
          description: |2
            A two-character ISO-639 language ID (like "en")
            optionally followed by an
            underscore and a two-character ISO 3166 country ID (like "US").
            
            Examples are "de", "fr\_CA", "zh", "zh\_CN", and "zh\_TW".
            Note: The method uses the server default locale when
            a locale is not provided. This default can be configured in the
            server configuration file. If unspecified, it defaults to the
            locale of the server environment or English ("en") if unsupported.
          type: string
      required:
        - userName

    ImportCertificateForCAMRequestType:
      type: object
      description: |2
        The parameters of *HostActiveDirectoryAuthentication.ImportCertificateForCAM_Task*.
      properties:
        certPath:
          description: |2
            full path of the certificate on ESXi
          type: string
        camServer:
          description: |2
            IP of server providing the CAM service.
          type: string
      required:
        - certPath
        - camServer

    ImportUnmanagedSnapshotRequestType:
      type: object
      description: |2
        The parameters of *VirtualDiskManager.ImportUnmanagedSnapshot*.
      properties:
        vdisk:
          description: |2
            \- The name of the disk to import, either a datastore path or a URL
            referring to the virtual disk from which to get geometry information.
          type: string
        datacenter:
          description: |2
            If <code>vdisk</code> is a datastore path, the datacenter for
            that datastore path. Not needed when invoked directly on ESX.
            If not specified on a call to VirtualCenter,
            <code>vdisk</code> must be a URL.
            
            Refers instance of *Datacenter*.
          $ref: '#/components/schemas/ManagedObjectReference'
        vvolId:
          description: |2
            \- unmanaged snapshot identifier
          type: string
      required:
        - vdisk
        - vvolId

    ImportVAppRequestType:
      type: object
      description: |2
        The parameters of *ResourcePool.ImportVApp*.
      properties:
        spec:
          description: |2
            An *ImportSpec* describing what to import.
          $ref: '#/components/schemas/ImportSpec'
        folder:
          description: |2
            The folder to which the entity will be attached.
            
            ***Required privileges:*** VApp.Import
            
            Refers instance of *Folder*.
          $ref: '#/components/schemas/ManagedObjectReference'
        host:
          description: |2
            The target host on which the entity will run. This must
            specify a host that is a member of the ComputeResource indirectly
            specified by the pool. For a stand-alone host or a cluster with DRS,
            host can be omitted, and the system selects a default.
            
            Refers instance of *HostSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - spec

    IncreaseDirectorySizeRequestType:
      type: object
      description: |2
        The parameters of *DatastoreNamespaceManager.IncreaseDirectorySize*.
        
        ***Since:*** vSphere API Release 8.0.1.0
      properties:
        datacenter:
          description: |2
            the datacenter of the namespace path. Needs to be set
            when making the call to VC; ignored when the call is
            made to ESX.
            
            ***Required privileges:*** System.View
            
            Refers instance of *Datacenter*.
          $ref: '#/components/schemas/ManagedObjectReference'
        stableName:
          description: |2
            stable vmfs path of the top-level directory
          type: string
        size:
          description: |2
            the desired final size in MB of the directory, not a diff
            from the current size; should be more than current size
          type: integer
          format: int64
      required:
        - stableName
        - size

    InflateDiskRequestType:
      type: object
      description: |2
        The parameters of *VcenterVStorageObjectManager.InflateDisk_Task*.
      properties:
        id:
          description: |2
            The ID of the virtual disk to be inflated.
          $ref: '#/components/schemas/ID'
        datastore:
          description: |2
            The datastore where the virtual disk is located.
            
            Refers instance of *Datastore*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - id
        - datastore

    InflateVirtualDiskRequestType:
      type: object
      description: |2
        The parameters of *VirtualDiskManager.InflateVirtualDisk_Task*.
      properties:
        name:
          description: |2
            The name of the disk, either a datastore path or a URL
            referring to the virtual disk that should be inflated.
          type: string
        datacenter:
          description: |2
            If <code>name</code> is a datastore path, the datacenter for
            that datastore path. Not needed when invoked directly on ESX.
            If not specified on a call to VirtualCenter,
            <code>name</code> must be a URL.
            
            Refers instance of *Datacenter*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - name

    InitializeDisksRequestType:
      type: object
      description: |2
        The parameters of *HostVsanSystem.InitializeDisks_Task*.
      properties:
        mapping:
          description: |2
            list of disk mappings to initialize
          type: array
          items:
            $ref: '#/components/schemas/VsanHostDiskMapping'
      required:
        - mapping

    InitiateFileTransferFromGuestRequestType:
      type: object
      description: |2
        The parameters of *GuestFileManager.InitiateFileTransferFromGuest*.
      properties:
        vm:
          description: |2
            Virtual Machine to perform the operation on.
            
            ***Required privileges:*** VirtualMachine.GuestOperations.Query
            
            Refers instance of *VirtualMachine*.
          $ref: '#/components/schemas/ManagedObjectReference'
        auth:
          description: |2
            The guest authentication data.
          $ref: '#/components/schemas/GuestAuthentication'
        guestFilePath:
          description: |2
            The complete path to the file inside the guest
            that has to be transferred to the client. It cannot be a path to
            a directory or a symbolic link.
          type: string
      required:
        - vm
        - auth
        - guestFilePath

    InitiateFileTransferToGuestRequestType:
      type: object
      description: |2
        The parameters of *GuestFileManager.InitiateFileTransferToGuest*.
      properties:
        vm:
          description: |2
            Virtual Machine to perform the operation on.
            
            ***Required privileges:*** VirtualMachine.GuestOperations.Modify
            
            Refers instance of *VirtualMachine*.
          $ref: '#/components/schemas/ManagedObjectReference'
        auth:
          description: |2
            The guest authentication data. See
            *GuestAuthentication*.
          $ref: '#/components/schemas/GuestAuthentication'
        guestFilePath:
          description: |2
            The complete destination path in the guest to
            transfer the file from the client. It cannot be a path to
            a directory or a symbolic link.
          type: string
        fileAttributes:
          description: |2
            File attributes of the file that has to be
            created in the guest. See *GuestFileAttributes*.
            If any file attribute is not specified, then the default value
            of that property will be set for the file.
          $ref: '#/components/schemas/GuestFileAttributes'
        fileSize:
          description: |2
            Size of the file to transfer to the guest in bytes.
          type: integer
          format: int64
        overwrite:
          description: |2
            If set, the destination file is clobbered.
          type: boolean
      required:
        - vm
        - auth
        - guestFilePath
        - fileAttributes
        - fileSize
        - overwrite

    InstallHostPatchRequestType:
      type: object
      description: |2
        The parameters of *HostPatchManager.InstallHostPatch_Task*.
      properties:
        repository:
          description: |2
            Location of the repository that contains the
            bulletin depot. The depot must be organized as a flat
            collection of bulletins with each one being a folder named
            after the bulletin ID. Each folder must contain both
            update metadata and required binaries.
          $ref: '#/components/schemas/HostPatchManagerLocator'
        updateID:
          description: |2
            The update to be installed on the host.
          type: string
        force:
          description: |2
            Specify whether to force reinstall an update.
            By default, installing an already-installed update would fail
            with the *PatchAlreadyInstalled* fault. If
            force is set to true, the update will be forcefully reinstalled,
            thus overwriting the already installed update.
          type: boolean
      required:
        - repository
        - updateID

    InstallHostPatchV2RequestType:
      type: object
      description: |2
        The parameters of *HostPatchManager.InstallHostPatchV2_Task*.
      properties:
        metaUrls:
          description: |2
            A list of urls pointing to metadata.zip.
          type: array
          items:
            type: string
        bundleUrls:
          description: |2
            a list of urls pointing to an "offline" bundle. It is not supported in 5.0 or later.
          type: array
          items:
            type: string
        vibUrls:
          description: |2
            The urls of update binary files to be installed.
          type: array
          items:
            type: string
        spec:
          $ref: '#/components/schemas/HostPatchManagerPatchManagerOperationSpec'

    InstallIoFilterRequestType:
      type: object
      description: |2
        The parameters of *IoFilterManager.InstallIoFilter_Task*.
      properties:
        vibUrl:
          description: |2
            The URL that points to the IO Filter VIB package.
          type: string
        compRes:
          description: |2
            The compute resource to install the IO Filter on.
            "compRes" must be a cluster.
            
            Refers instance of *ComputeResource*.
          $ref: '#/components/schemas/ManagedObjectReference'
        vibSslTrust:
          description: |2
            This specifies SSL trust policy *IoFilterManagerSslTrust*
            for the given VIB URL. If unset, the server certificate is
            validated against the trusted root certificates.
            
            ***Since:*** vSphere API Release 8.0.3.0
          $ref: '#/components/schemas/IoFilterManagerSslTrust'
      required:
        - vibUrl
        - compRes

    InstallServerCertificateRequestType:
      type: object
      description: |2
        The parameters of *HostCertificateManager.InstallServerCertificate*.
      properties:
        cert:
          description: |2
            SSL certificate in PEM format
          type: string
      required:
        - cert

    InstallSmartCardTrustAnchorRequestType:
      type: object
      description: |2
        The parameters of *HostActiveDirectoryAuthentication.InstallSmartCardTrustAnchor*.
      properties:
        cert:
          description: |2
            SSL certificate in PEM format
          type: string
      required:
        - cert

    InstantCloneRequestType:
      type: object
      description: |2
        The parameters of *VirtualMachine.InstantClone_Task*.
      properties:
        spec:
          description: |2
            Is a *VirtualMachineInstantCloneSpec*. It specifies the
            cloned virtual machine's configuration.
          $ref: '#/components/schemas/VirtualMachineInstantCloneSpec'
      required:
        - spec

    IsKmsClusterActiveRequestType:
      type: object
      description: |2
        The parameters of *CryptoManagerKmip.IsKmsClusterActive*.
      properties:
        cluster:
          description: |2
            \[in\] KMIP cluster.
            Will use default cluster if omitted.
          $ref: '#/components/schemas/KeyProviderId'

    JoinDomainRequestType:
      type: object
      description: |2
        The parameters of *HostActiveDirectoryAuthentication.JoinDomain_Task*.
      properties:
        domainName:
          description: |2
            Name of the domain to be joined.
          type: string
        userName:
          description: |2
            Name for an Active Directory account
            that has the authority to add hosts to the domain.
          type: string
        password:
          description: |2
            Password for the <code>userName</code> account.
          type: string
          format: password
      required:
        - domainName
        - userName
        - password

    JoinDomainWithCAMRequestType:
      type: object
      description: |2
        The parameters of *HostActiveDirectoryAuthentication.JoinDomainWithCAM_Task*.
      properties:
        domainName:
          description: |2
            Name of the domain to be joined.
          type: string
        camServer:
          description: |2
            Name of server providing the CAM service.
          type: string
      required:
        - domainName
        - camServer

    LeaveCurrentDomainRequestType:
      type: object
      description: |2
        The parameters of *HostActiveDirectoryAuthentication.LeaveCurrentDomain_Task*.
      properties:
        force:
          description: |2
            If <code>True</code>, any existing permissions on managed entities for
            Active Directory users will be deleted. If <code>False</code> and such
            permissions exist, the operation will fail.
          type: boolean
      required:
        - force

    ListFilesInGuestRequestType:
      type: object
      description: |2
        The parameters of *GuestFileManager.ListFilesInGuest*.
      properties:
        vm:
          description: |2
            Virtual Machine to perform the operation on.
            
            ***Required privileges:*** VirtualMachine.GuestOperations.Query
            
            Refers instance of *VirtualMachine*.
          $ref: '#/components/schemas/ManagedObjectReference'
        auth:
          description: |2
            The guest authentication data. See
            *GuestAuthentication*.
          $ref: '#/components/schemas/GuestAuthentication'
        filePath:
          description: |2
            The complete path to the directory or file to query.
          type: string
        index:
          description: |2
            Which result to start the list with. The default is 0.
          type: integer
          format: int32
        maxResults:
          description: |2
            The maximum number of results to return. The default
            is 50.
          type: integer
          format: int32
        matchPattern:
          description: |2
            A filter for the return values.
            Match patterns are specified using perl-compatible regular
            expressions.
            If matchPattern is unset, then the pattern '.\*' is used.
          type: string
      required:
        - vm
        - auth
        - filePath

    ListGuestAliasesRequestType:
      type: object
      description: |2
        The parameters of *GuestAliasManager.ListGuestAliases*.
      properties:
        vm:
          description: |2
            Virtual machine to perform the operation on.
            
            ***Required privileges:*** VirtualMachine.GuestOperations.QueryAliases
            
            Refers instance of *VirtualMachine*.
          $ref: '#/components/schemas/ManagedObjectReference'
        auth:
          description: |2
            The guest authentication data for this operation. See
            *GuestAuthentication*. These credentials must satisfy
            authentication requirements
            for a guest account on the specified virtual machine.
          $ref: '#/components/schemas/GuestAuthentication'
        username:
          description: |2
            The guest user whose Alias store is being queried.
          type: string
      required:
        - vm
        - auth
        - username

    ListGuestMappedAliasesRequestType:
      type: object
      description: |2
        The parameters of *GuestAliasManager.ListGuestMappedAliases*.
      properties:
        vm:
          description: |2
            Virtual machine to perform the operation on.
            
            ***Required privileges:*** VirtualMachine.GuestOperations.QueryAliases
            
            Refers instance of *VirtualMachine*.
          $ref: '#/components/schemas/ManagedObjectReference'
        auth:
          description: |2
            The guest authentication data for this operation. See
            *GuestAuthentication*. These credentials must satisfy
            authentication requirements
            for a guest account on the specified virtual machine.
          $ref: '#/components/schemas/GuestAuthentication'
      required:
        - vm
        - auth

    ListKeysRequestType:
      type: object
      description: |2
        The parameters of *CryptoManager.ListKeys*.
      properties:
        limit:
          description: |2
            \[in\] maximum keys to return.
          type: integer
          format: int32

    ListKmipServersRequestType:
      type: object
      description: |2
        The parameters of *CryptoManagerKmip.ListKmipServers*.
      properties:
        limit:
          description: |2
            \[in\] maximum clusters to return.
          type: integer
          format: int32

    ListKmsClustersRequestType:
      type: object
      description: |2
        The parameters of *CryptoManagerKmip.ListKmsClusters*.
      properties:
        includeKmsServers:
          description: |2
            \[in\] Whether to list KMS servers information
            in the cluster.
            By default will not include the KMS servers
            information.
          type: boolean
        managementTypeFilter:
          description: |2
            \[in\] The KMS cluster management type filter.
            Bit map values:
            0x01 - Return VC managed Key Providers
            registered in the CryptoManager.
            0x02 - Return Trusted Key Providers
            registered in the CryptoManager.
            0x04 - Return Trusted Key Providers which are
            not registered with the CryptoManager.
            0x08 - Return Native Key Providers.
            others - reserved, will be ignored
            If omitted or -1, then all kinds of Key Providers
            will be returned.
          type: integer
          format: int32
        statusFilter:
          description: |2
            \[in\] The Key Provider status filter.
            Bit map values:
            0x01 - Return active Key Providers.
            0x02 - Return inactive Key Providers.
            others - reserved, will be ignored
            If omitted or -1, then all status of Key Providers
            will be returned.
          type: integer
          format: int32

    ListProcessesInGuestRequestType:
      type: object
      description: |2
        The parameters of *GuestProcessManager.ListProcessesInGuest*.
      properties:
        vm:
          description: |2
            Virtual machine to perform the operation on.
            
            ***Required privileges:*** VirtualMachine.GuestOperations.Query
            
            Refers instance of *VirtualMachine*.
          $ref: '#/components/schemas/ManagedObjectReference'
        auth:
          description: |2
            The guest authentication data. See
            *GuestAuthentication*.
          $ref: '#/components/schemas/GuestAuthentication'
        pids:
          description: |2
            If set, only return information about the specified processes.
            Otherwise, information about all processes are returned.
            If a specified processes does not exist, nothing will
            be returned for that process.
          type: array
          items:
            type: integer
            format: int64
      required:
        - vm
        - auth

    ListRegistryKeysInGuestRequestType:
      type: object
      description: |2
        The parameters of *GuestWindowsRegistryManager.ListRegistryKeysInGuest*.
      properties:
        vm:
          description: |2
            Virtual machine to perform the operation on.
            
            ***Required privileges:*** VirtualMachine.GuestOperations.Query
            
            Refers instance of *VirtualMachine*.
          $ref: '#/components/schemas/ManagedObjectReference'
        auth:
          description: |2
            The guest authentication data.
          $ref: '#/components/schemas/GuestAuthentication'
        keyName:
          description: |2
            The path to the registry key for which all subkeys are to
            be listed.
          $ref: '#/components/schemas/GuestRegKeyNameSpec'
        recursive:
          description: |2
            If true, all subkeys are listed recursively.
          type: boolean
        matchPattern:
          description: |2
            A filter for the key names returned, specified using
            perl-compatible regular expressions. If matchPattern
            is unset, then the pattern '.\*' is used, which returns
            all key names found, otherwise only those key names
            that match the input pattern shall be returned.
          type: string
      required:
        - vm
        - auth
        - keyName
        - recursive

    ListRegistryValuesInGuestRequestType:
      type: object
      description: |2
        The parameters of *GuestWindowsRegistryManager.ListRegistryValuesInGuest*.
      properties:
        vm:
          description: |2
            Virtual machine to perform the operation on.
            
            ***Required privileges:*** VirtualMachine.GuestOperations.Query
            
            Refers instance of *VirtualMachine*.
          $ref: '#/components/schemas/ManagedObjectReference'
        auth:
          description: |2
            The guest authentication data.
          $ref: '#/components/schemas/GuestAuthentication'
        keyName:
          description: |2
            The path to the registry key for which all values are to be
            listed.
          $ref: '#/components/schemas/GuestRegKeyNameSpec'
        expandStrings:
          description: |2
            If true, all values that have expandable data such
            as environment variable names, shall get expanded in
            the result.
          type: boolean
        matchPattern:
          description: |2
            A filter for the value names returned, specified using
            perl-compatible regular expressions. If matchPattern
            is unset, then the pattern '.\*' is used, which returns
            all value names found, otherwise only those value
            names that match the input pattern shall be returned.
          type: string
      required:
        - vm
        - auth
        - keyName
        - expandStrings

    ListTagsAttachedToVStorageObjectRequestType:
      type: object
      description: |2
        The parameters of *VcenterVStorageObjectManager.ListTagsAttachedToVStorageObject*.
      properties:
        id:
          description: |2
            The ID of the virtual storage object.
          $ref: '#/components/schemas/ID'
      required:
        - id

    ListVStorageObjectRequestType:
      type: object
      description: |2
        The parameters of *VcenterVStorageObjectManager.ListVStorageObject*.
      properties:
        datastore:
          description: |2
            The datastore to query for the virtual storage objects.
            
            Refers instance of *Datastore*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - datastore

    ListVStorageObjectsAttachedToTagRequestType:
      type: object
      description: |2
        The parameters of *VcenterVStorageObjectManager.ListVStorageObjectsAttachedToTag*.
      properties:
        category:
          description: |2
            The category to which the tag belongs.
          type: string
        tag:
          description: |2
            The tag to be queried.
          type: string
      required:
        - category
        - tag

    LogUserEventRequestType:
      type: object
      description: |2
        The parameters of *EventManager.LogUserEvent*.
      properties:
        entity:
          description: |2
            The entity against which the event is logged. The entity must be
            the root folder, a DataCenter, a VirtualMachine, a HostSystem,
            or a ComputeResource.
            
            ***Required privileges:*** Global.LogEvent
            
            Refers instance of *ManagedEntity*.
          $ref: '#/components/schemas/ManagedObjectReference'
        msg:
          description: |2
            The message to be logged.
          type: string
      required:
        - entity
        - msg

    LoginBySSPIRequestType:
      type: object
      description: |2
        The parameters of *SessionManager.LoginBySSPI*.
      properties:
        base64Token:
          description: |2
            The partially formed context returned from
            InitializeSecurityContext().
          type: string
        locale:
          description: |2
            A two-character ISO-639 language ID (like "en")
            optionally followed by an
            underscore and a two-character ISO 3166 country ID (like "US").
            
            Examples are "de", "fr\_CA", "zh", "zh\_CN", and "zh\_TW".
            Note: The method uses the server default locale when
            a locale is not provided. This default can be configured in the
            server configuration file. If unspecified, it defaults to the
            locale of the server environment or English ("en") if unsupported.
          type: string
      required:
        - base64Token

    LoginByTokenRequestType:
      type: object
      description: |2
        The parameters of *SessionManager.LoginByToken*.
      properties:
        locale:
          description: |2
            A two-character ISO-639 language ID (like "en")
            optionally followed by an
            underscore and a two-character ISO 3166 country ID (like "US").
            
            Examples are "de", "fr\_CA", "zh", "zh\_CN", and "zh\_TW".
            Note: The method uses the server default locale when
            a locale is not provided. This default can be configured in the
            server configuration file. If unspecified, it defaults to the
            locale of the server environment or English ("en") if unsupported.
          type: string

    LoginExtensionByCertificateRequestType:
      type: object
      description: |2
        The parameters of *SessionManager.LoginExtensionByCertificate*.
      properties:
        extensionKey:
          description: |2
            Key of extension that is logging in.
          type: string
        locale:
          description: |2
            A two-character ISO-639 language ID (like "en")
            optionally followed by an
            underscore and a two-character ISO 3166 country ID (like "US").
            
            Examples are "de", "fr\_CA", "zh", "zh\_CN", and "zh\_TW".
            Note: The method uses the server default locale when
            a locale is not provided. This default can be configured in the
            server configuration file. If unspecified, it defaults to the
            locale of the server environment or English ("en") if unsupported.
          type: string
      required:
        - extensionKey

    LoginExtensionBySubjectNameRequestType:
      type: object
      description: |2
        The parameters of *SessionManager.LoginExtensionBySubjectName*.
      properties:
        extensionKey:
          description: |2
            Key of extension that is logging in.
          type: string
        locale:
          description: |2
            A two-character ISO-639 language ID (like "en")
            optionally followed by an
            underscore and a two-character ISO 3166 country ID (like "US").
            
            Examples are "de", "fr\_CA", "zh", "zh\_CN", and "zh\_TW".
            Note: The method uses the server default locale when
            a locale is not provided. This default can be configured in the
            server configuration file. If unspecified, it defaults to the
            locale of the server environment or English ("en") if unsupported.
          type: string
      required:
        - extensionKey

    LoginExtensionRequestType:
      type: object
      description: |2
        The parameters of *SessionManager.LoginExtension*.
      properties:
        extensionKey:
          description: |2
            Key of extension that is logging in.
          type: string
        base64SignedCredentials:
          description: |2
            base-64 encoding of the SHA-1
            digest of the string "login" signed with the extension's
            private RSA key using PKCS#1 padding.
          type: string
        locale:
          description: |2
            A two-character ISO-639 language ID (like "en")
            optionally followed by an
            underscore and a two-character ISO 3166 country ID (like "US").
            
            Examples are "de", "fr\_CA", "zh", "zh\_CN", and "zh\_TW".
            Note: The method uses the server default locale when
            a locale is not provided. This default can be configured in the
            server configuration file. If unspecified, it defaults to the
            locale of the server environment or English ("en") if unsupported.
          type: string
      required:
        - extensionKey
        - base64SignedCredentials

    LoginRequestType:
      type: object
      description: |2
        The parameters of *SessionManager.Login*.
      properties:
        userName:
          description: |2
            The *ID*
            of the user who is logging on to the server.
          type: string
        password:
          description: |2
            The *HostAccountSpec.password*
            of the user who is logging on to the server.
          type: string
          format: password
        locale:
          description: |2
            A two-character ISO-639 language ID (like "en")
            optionally followed by an
            underscore and a two-character ISO 3166 country ID (like "US").
            
            Examples are "de", "fr\_CA", "zh", "zh\_CN", and "zh\_TW".
            Note: The method uses the server default locale when
            a locale is not provided. This default can be configured in the
            server configuration file. If unspecified, it defaults to the
            locale of the server environment or English ("en") if unsupported.
          type: string
      required:
        - userName
        - password

    LookupDvPortGroupRequestType:
      type: object
      description: |2
        The parameters of *DistributedVirtualSwitch.LookupDvPortGroup*.
      properties:
        portgroupKey:
          description: |2
            The key that identifies a portgroup of this VDS.
          type: string
      required:
        - portgroupKey

    LookupVmOverheadMemoryRequestType:
      type: object
      description: |2
        The parameters of *OverheadMemoryManager.LookupVmOverheadMemory*.
      properties:
        vm:
          description: |2
            The Virtual Machine managed object reference.
            
            Refers instance of *VirtualMachine*.
          $ref: '#/components/schemas/ManagedObjectReference'
        host:
          description: |2
            The Host managed object reference.
            
            Refers instance of *HostSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - vm
        - host

    MakeDirectoryInGuestRequestType:
      type: object
      description: |2
        The parameters of *GuestFileManager.MakeDirectoryInGuest*.
      properties:
        vm:
          description: |2
            Virtual Machine to perform the operation on.
            
            ***Required privileges:*** VirtualMachine.GuestOperations.Modify
            
            Refers instance of *VirtualMachine*.
          $ref: '#/components/schemas/ManagedObjectReference'
        auth:
          description: |2
            The guest authentication data. See
            *GuestAuthentication*.
          $ref: '#/components/schemas/GuestAuthentication'
        directoryPath:
          description: |2
            The complete path to the directory to be created.
          type: string
        createParentDirectories:
          description: |2
            Whether any parent directories
            are to be created.
          type: boolean
      required:
        - vm
        - auth
        - directoryPath
        - createParentDirectories

    MakeDirectoryRequestType:
      type: object
      description: |2
        The parameters of *FileManager.MakeDirectory*.
      properties:
        name:
          description: |2
            The name of the folder, either a URL or a datastore path
            referring to the folder to be created.
          type: string
        datacenter:
          description: |2
            If <code>name</code> is a datastore path, the datacenter for
            that datastore path. Not needed when invoked directly on ESX.
            If not specified on a call to VirtualCenter,
            <code>name</code> must be a URL.
            
            ***Required privileges:*** System.View
            
            Refers instance of *Datacenter*.
          $ref: '#/components/schemas/ManagedObjectReference'
        createParentDirectories:
          description: |2
            If true, any non-existent intermediate level
            folders will be created. If not specified,
            it is assumed to be false.
          type: boolean
      required:
        - name

    MakePrimaryVMRequestType:
      type: object
      description: |2
        The parameters of *VirtualMachine.MakePrimaryVM_Task*.
      properties:
        vm:
          description: |2
            The secondary virtual machine specified will be made the primary
            virtual machine.
            This field must specify a secondary virtual machine that is part of the fault
            tolerant group that this virtual machine is currently associated with. It can
            only be invoked from the primary virtual machine in the group.
            
            Refers instance of *VirtualMachine*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - vm

    MarkAsLocalRequestType:
      type: object
      description: |2
        The parameters of *HostStorageSystem.MarkAsLocal_Task*.
      properties:
        scsiDiskUuid:
          description: |2
            The SCSI disk UUID.
          type: string
      required:
        - scsiDiskUuid

    MarkAsNonLocalRequestType:
      type: object
      description: |2
        The parameters of *HostStorageSystem.MarkAsNonLocal_Task*.
      properties:
        scsiDiskUuid:
          description: |2
            The SCSI disk UUID.
          type: string
      required:
        - scsiDiskUuid

    MarkAsNonSsdRequestType:
      type: object
      description: |2
        The parameters of *HostStorageSystem.MarkAsNonSsd_Task*.
      properties:
        scsiDiskUuid:
          description: |2
            The SCSI disk UUID.
          type: string
      required:
        - scsiDiskUuid

    MarkAsSsdRequestType:
      type: object
      description: |2
        The parameters of *HostStorageSystem.MarkAsSsd_Task*.
      properties:
        scsiDiskUuid:
          description: |2
            The SCSI disk UUID.
          type: string
      required:
        - scsiDiskUuid

    MarkAsVirtualMachineRequestType:
      type: object
      description: |2
        The parameters of *VirtualMachine.MarkAsVirtualMachine*.
      properties:
        pool:
          description: |2
            Resource pool to associate with the virtual machine.
            
            ***Required privileges:*** Resource.AssignVMToPool
            
            Refers instance of *ResourcePool*.
          $ref: '#/components/schemas/ManagedObjectReference'
        host:
          description: |2
            The target host on which the virtual machine is intended to run. The
            host
            parameter must specify a host that is a member of the ComputeResource
            indirectly specified by the pool. For a stand-alone host or a cluster with
            DRS, it can be omitted and the system selects a default.
            
            Refers instance of *HostSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - pool

    MarkDefaultRequestType:
      type: object
      description: |2
        The parameters of *CryptoManagerKmip.MarkDefault*.
      properties:
        clusterId:
          description: |2
            \[in\] KMIP cluster ID to become default.
          $ref: '#/components/schemas/KeyProviderId'
      required:
        - clusterId

    MarkPerenniallyReservedExRequestType:
      type: object
      description: |2
        The parameters of *HostStorageSystem.MarkPerenniallyReservedEx_Task*.
      properties:
        lunUuid:
          description: |2
            The UUIDs of the ScsiLun devices that need a change in
            the perennially reserved flag state.
          type: array
          items:
            type: string
        state:
          description: |2
            State of the ScsiLun perennially reserved flag to be set.
          type: boolean
      required:
        - state

    MarkPerenniallyReservedRequestType:
      type: object
      description: |2
        The parameters of *HostStorageSystem.MarkPerenniallyReserved*.
      properties:
        lunUuid:
          description: |2
            The UUID of the ScsiLun device to be marked as perennially
            reserved.
          type: string
        state:
          description: |2
            State of the ScsiLun perennially reserved flag to be set.
          type: boolean
      required:
        - lunUuid
        - state

    MarkServiceProviderEntitiesRequestType:
      type: object
      description: |2
        The parameters of *TenantTenantManager.MarkServiceProviderEntities*.
      properties:
        entity:
          description: |2
            an array of management entities.
            
            ***Required privileges:*** TenantManager.Update
            
            Refers instances of *ManagedEntity*.
          type: array
          items:
            $ref: '#/components/schemas/ManagedObjectReference'

    MergeDvsRequestType:
      type: object
      description: |2
        The parameters of *DistributedVirtualSwitch.MergeDvs_Task*.
      properties:
        dvs:
          description: |2
            The switch (source) to be merged
            
            ***Required privileges:*** DVSwitch.Delete
            
            Refers instance of *DistributedVirtualSwitch*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - dvs

    MergePermissionsRequestType:
      type: object
      description: |2
        The parameters of *AuthorizationManager.MergePermissions*.
      properties:
        srcRoleId:
          description: |2
            The ID of the source role providing the permissions
            which are changing.
          type: integer
          format: int32
        dstRoleId:
          description: |2
            The ID of the destination role to which the
            permissions are reassigned.
          type: integer
          format: int32
      required:
        - srcRoleId
        - dstRoleId

    MigrateVMRequestType:
      type: object
      description: |2
        The parameters of *VirtualMachine.MigrateVM_Task*.
      properties:
        pool:
          description: |2
            The target resource pool for the virtual machine. If the pool
            parameter is left unset, the virtual machine's current pool is used
            as the target pool.
            
            ***Required privileges:*** Resource.AssignVMToPool
            
            Refers instance of *ResourcePool*.
          $ref: '#/components/schemas/ManagedObjectReference'
        host:
          description: |2
            The target host to which the virtual machine is intended to migrate.
            The host parameter
            may be left unset if the compute resource associated with the
            target pool represents a stand-alone host or a DRS-enabled cluster.
            In the former case the stand-alone host is used as the target host.
            In the latter case, the DRS system selects an appropriate
            target host from the cluster.
            
            Refers instance of *HostSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
        priority:
          description: |2
            The task priority (@see vim.VirtualMachine.MovePriority).
          $ref: '#/components/schemas/VirtualMachineMovePriority_enum'
        state:
          description: |2
            If specified, the virtual machine migrates only if
            its state matches the specified state.
          $ref: '#/components/schemas/VirtualMachinePowerState_enum'
      required:
        - priority

    ModifyListViewRequestType:
      type: object
      description: |2
        The parameters of *ListView.ModifyListView*.
      properties:
        add:
          description: |2
            Optional list of objects to add to the view.
            
            ***Required privileges:*** System.View
          type: array
          items:
            $ref: '#/components/schemas/ManagedObjectReference'
        remove:
          description: |2
            Optional list of objects to remove from the view.
            
            ***Required privileges:*** System.View
          type: array
          items:
            $ref: '#/components/schemas/ManagedObjectReference'

    MountVffsVolumeRequestType:
      type: object
      description: |2
        The parameters of *HostStorageSystem.MountVffsVolume*.
      properties:
        vffsUuid:
          type: string
      required:
        - vffsUuid

    MountVmfsVolumeExRequestType:
      type: object
      description: |2
        The parameters of *HostStorageSystem.MountVmfsVolumeEx_Task*.
      properties:
        vmfsUuid:
          description: |2
            each element specifies the UUID of a VMFS volume to be unmounted.
          type: array
          items:
            type: string
      required:
        - vmfsUuid

    MountVmfsVolumeRequestType:
      type: object
      description: |2
        The parameters of *HostStorageSystem.MountVmfsVolume*.
      properties:
        vmfsUuid:
          type: string
      required:
        - vmfsUuid

    MoveDVPortRequestType:
      type: object
      description: |2
        The parameters of *DistributedVirtualSwitch.MoveDVPort_Task*.
      properties:
        portKey:
          description: |2
            The keys of the ports to be moved into the portgroup.
          type: array
          items:
            type: string
        destinationPortgroupKey:
          description: |2
            The key of the portgroup to be moved into.
            If unset, the port will be moved under the switch.
          type: string
      required:
        - portKey

    MoveDatastoreFileRequestType:
      type: object
      description: |2
        The parameters of *FileManager.MoveDatastoreFile_Task*.
      properties:
        sourceName:
          description: |2
            The name of the source, either a URL or a datastore path
            referring to the file or folder to be moved.
          type: string
        sourceDatacenter:
          description: |2
            If <code>sourceName</code> is a datastore path, the
            datacenter for that datastore path.
            Not needed when invoked directly on ESX.
            If not specified on a call to VirtualCenter,
            <code>sourceName</code> must be a URL.
            
            ***Required privileges:*** System.View
            
            Refers instance of *Datacenter*.
          $ref: '#/components/schemas/ManagedObjectReference'
        destinationName:
          description: |2
            The name of the destination, either a URL or a
            datastore path referring to the destination file or folder.
          type: string
        destinationDatacenter:
          description: |2
            If <code>destinationName</code> is a datastore
            path, the datacenter for that datastore path.
            Not needed when invoked directly on ESX.
            If not specified on a call to VirtualCenter, it is assumed that
            the destination path belongs to the source datacenter.
            
            ***Required privileges:*** System.View
            
            Refers instance of *Datacenter*.
          $ref: '#/components/schemas/ManagedObjectReference'
        force:
          description: |2
            If true, overwrite any identically named file
            at the destination. If not specified, it is assumed to be false.
          type: boolean
      required:
        - sourceName
        - destinationName

    MoveDirectoryInGuestRequestType:
      type: object
      description: |2
        The parameters of *GuestFileManager.MoveDirectoryInGuest*.
      properties:
        vm:
          description: |2
            Virtual Machine to perform the operation on.
            
            ***Required privileges:*** VirtualMachine.GuestOperations.Modify
            
            Refers instance of *VirtualMachine*.
          $ref: '#/components/schemas/ManagedObjectReference'
        auth:
          description: |2
            The guest authentication data. See
            *GuestAuthentication*.
          $ref: '#/components/schemas/GuestAuthentication'
        srcDirectoryPath:
          description: |2
            The complete path to the directory to be moved.
          type: string
        dstDirectoryPath:
          description: |2
            The complete path to the where the directory is
            moved or its new name. It cannot be a path to an existing directory
            or an existing file.
          type: string
      required:
        - vm
        - auth
        - srcDirectoryPath
        - dstDirectoryPath

    MoveFileInGuestRequestType:
      type: object
      description: |2
        The parameters of *GuestFileManager.MoveFileInGuest*.
      properties:
        vm:
          description: |2
            Virtual Machine to perform the operation on.
            
            ***Required privileges:*** VirtualMachine.GuestOperations.Modify
            
            Refers instance of *VirtualMachine*.
          $ref: '#/components/schemas/ManagedObjectReference'
        auth:
          description: |2
            The guest authentication data. See
            *GuestAuthentication*.
          $ref: '#/components/schemas/GuestAuthentication'
        srcFilePath:
          description: |2
            The complete path to the original file or
            symbolic link to be moved.
          type: string
        dstFilePath:
          description: |2
            The complete path to the where the file is renamed.
            It cannot be a path to an existing directory.
          type: string
        overwrite:
          description: |2
            If set, the destination file is clobbered.
          type: boolean
      required:
        - vm
        - auth
        - srcFilePath
        - dstFilePath
        - overwrite

    MoveHostIntoRequestType:
      type: object
      description: |2
        The parameters of *ClusterComputeResource.MoveHostInto_Task*.
      properties:
        host:
          description: |2
            The list of hosts to move into the cluster.
            
            ***Required privileges:*** Host.Inventory.MoveHost
            
            Refers instance of *HostSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
        resourcePool:
          description: |2
            The resource pool to match the root resource pool of
            stand-alone hosts. This argument has no effect if the host is part of a
            cluster.
            
            Refers instance of *ResourcePool*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - host

    MoveIntoFolderRequestType:
      type: object
      description: |2
        The parameters of *Folder.MoveIntoFolder_Task*.
      properties:
        list:
          description: |2
            The list of objects to be moved into the folder.
            
            Refers instances of *ManagedEntity*.
          type: array
          items:
            $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - list

    MoveIntoRequestType:
      type: object
      description: |2
        The parameters of *ClusterComputeResource.MoveInto_Task*.
      properties:
        host:
          description: |2
            The list of hosts to move into the cluster.
            
            ***Required privileges:*** Host.Inventory.MoveHost
            
            Refers instances of *HostSystem*.
          type: array
          items:
            $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - host

    MoveIntoResourcePoolRequestType:
      type: object
      description: |2
        The parameters of *ResourcePool.MoveIntoResourcePool*.
      properties:
        list:
          description: |2
            A list of ResourcePool and VirtualMachine objects.
            
            Refers instances of *ManagedEntity*.
          type: array
          items:
            $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - list

    MoveVirtualDiskRequestType:
      type: object
      description: |2
        The parameters of *VirtualDiskManager.MoveVirtualDisk_Task*.
      properties:
        sourceName:
          description: |2
            The name of the source, either a datastore path
            or a URL referring to the virtual disk to be moved.
          type: string
        sourceDatacenter:
          description: |2
            If <code>sourceName</code> is a datastore path, the
            datacenter for that datastore path.
            Not needed when invoked directly on ESX.
            If not specified on a call to VirtualCenter,
            <code>sourceName</code> must be a URL.
            
            Refers instance of *Datacenter*.
          $ref: '#/components/schemas/ManagedObjectReference'
        destName:
          description: |2
            The name of the destination, either a datastore path
            or a URL referring to the destination virtual disk.
          type: string
        destDatacenter:
          description: |2
            If <code>destName</code> is a datastore
            path, the datacenter for that datastore path.
            Not needed when invoked directly on ESX.
            If not specified on a call to VirtualCenter, it is assumed that
            the destination path belongs to the source datacenter.
            
            Refers instance of *Datacenter*.
          $ref: '#/components/schemas/ManagedObjectReference'
        force:
          description: |2
            If true, overwrite any indentically named disk at the destination.
            If not specified, it is assumed to be false
          type: boolean
        profile:
          description: |2
            User can specify new set of profile when moving virtual disk.
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineProfileSpec'
      required:
        - sourceName
        - destName

    NotifyAffectedServicesRequestType:
      type: object
      description: |2
        The parameters of *HostCertificateManager.NotifyAffectedServices*.
      properties:
        services:
          description: |2
            list of services that need to be notified and no
            other service would be notified. if not provided all supported
            services would be notified.
            
            ***Since:*** vSphere API Release 8.0.1.0
          type: array
          items:
            type: string

    OpenInventoryViewFolderRequestType:
      type: object
      description: |2
        The parameters of *InventoryView.OpenInventoryViewFolder*.
      properties:
        entity:
          description: |2
            An array of managed object references. Each array entry is a reference
            to an entity to expand. Expands each entity in the
            order given. If an entity is not in the current view,
            expands the view as needed.
            
            ***Required privileges:*** System.View
            
            Refers instances of *ManagedEntity*.
          type: array
          items:
            $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - entity

    OverwriteCustomizationSpecRequestType:
      type: object
      description: |2
        The parameters of *CustomizationSpecManager.OverwriteCustomizationSpec*.
      properties:
        item:
          $ref: '#/components/schemas/CustomizationSpecItem'
      required:
        - item

    ParseDescriptorRequestType:
      type: object
      description: |2
        The parameters of *OvfManager.ParseDescriptor*.
      properties:
        ovfDescriptor:
          description: |2
            The OVF descriptor to examine.
          type: string
        pdp:
          description: |2
            Additional parameters for parseDescriptor, wrapped in an instance of
            ParseDescriptorParams.
          $ref: '#/components/schemas/OvfParseDescriptorParams'
      required:
        - ovfDescriptor
        - pdp

    PbmAssignDefaultRequirementProfileRequestType:
      type: object
      description: |2
        The parameters of *PbmProfileProfileManager.PbmAssignDefaultRequirementProfile*.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        profile:
          description: |2
            The profile that needs to be made default profile.
          $ref: '#/components/schemas/PbmProfileId'
        datastores:
          description: |2
            The datastores for which the profile needs to be made as default profile.
          type: array
          items:
            $ref: '#/components/schemas/PbmPlacementHub'
      required:
        - profile
        - datastores

    PbmCheckCompatibilityRequestType:
      type: object
      description: |2
        The parameters of *PbmPlacementSolver.PbmCheckCompatibility*.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        hubsToSearch:
          description: |2
            Candidate list of hubs, either datastores or storage pods or a
            mix. If this parameter is not specified, the Server uses all
            of the datastores and storage pods for placement compatibility
            checking.
          type: array
          items:
            $ref: '#/components/schemas/PbmPlacementHub'
        profile:
          description: |2
            Storage requirement profile.
          $ref: '#/components/schemas/PbmProfileId'
      required:
        - profile

    PbmCheckCompatibilityWithSpecRequestType:
      type: object
      description: |2
        The parameters of *PbmPlacementSolver.PbmCheckCompatibilityWithSpec*.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        hubsToSearch:
          description: |2
            Candidate list of hubs, either datastores or storage pods
            or a mix. If this parameter is not specified, the Server uses all of the
            datastores and storage pods for placement compatibility checking.
          type: array
          items:
            $ref: '#/components/schemas/PbmPlacementHub'
        profileSpec:
          description: |2
            Specification for a capability based profile.
          $ref: '#/components/schemas/PbmCapabilityProfileCreateSpec'
      required:
        - profileSpec

    PbmCheckComplianceRequestType:
      type: object
      description: |2
        The parameters of *PbmComplianceManager.PbmCheckCompliance*.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        entities:
          description: |2
            One or more references to storage entities.
            You can specify virtual machines and virtual disks
            A maximum of 1000 virtual machines and/or virtual disks can be specified
            in a call. The results of calling the checkCompliance API with
            more than a 1000 entities is undefined.
            - If the list of entities also contains datastores, the Server
              will ignore the datastores.
            - If the list contains valid and invalid entities, the Server ignores
              the invalid entities and returns results for the valid entities.
              Invalid entities are entities that are not in the vCenter inventory.
            - If the list contains only datastores, the method throws
              an <code>InvalidArgument</code> fault.
            - If the list contains virtual machines and disks and the entities
              are invalid or have been deleted by the time of the request, the method
              throws an <code>InvalidArgument</code> fault.
              
            If an entity does not have an associated storage profile, the entity
            is removed from the list.
          type: array
          items:
            $ref: '#/components/schemas/PbmServerObjectRef'
        profile:
          description: |2
            Not used. If specified, the Server ignores the value.
            The Server uses the profiles associated with the specified entities.
          $ref: '#/components/schemas/PbmProfileId'
      required:
        - entities

    PbmCheckRequirementsRequestType:
      type: object
      description: |2
        The parameters of *PbmPlacementSolver.PbmCheckRequirements*.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        hubsToSearch:
          description: |2
            Candidate list of hubs, either datastores or storage pods
            or a mix. If this parameter is not specified, the Server uses all of the
            datastores and storage pods for placement compatibility checking.
          type: array
          items:
            $ref: '#/components/schemas/PbmPlacementHub'
        placementSubjectRef:
          description: |2
            reference to the object being placed. Should be null when a new
            object is being provisioned. Should be specified when placement compatibility is being checked
            for an existing object. Supported objects are
            *virtualMachine*,
            *virtualMachineAndDisks*,
            *virtualDiskId*,
            *virtualDiskUUID*
          $ref: '#/components/schemas/PbmServerObjectRef'
        placementSubjectRequirement:
          description: |2
            Requirements including the policy requirements, compute
            requirements and capacity requirements. It is invalid to specify no requirements. It is also
            invalid to specify duplicate requirements or multiple conflicting requirements such as
            specifying both *PbmPlacementCapabilityConstraintsRequirement* and
            *PbmPlacementCapabilityProfileRequirement*.
          type: array
          items:
            $ref: '#/components/schemas/PbmPlacementRequirement'

    PbmCheckRollupComplianceRequestType:
      type: object
      description: |2
        The parameters of *PbmComplianceManager.PbmCheckRollupCompliance*.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        entity:
          description: |2
            One or more references to virtual machines.
            A maximum of 1000 virtual machines can be specified
            in a call. The results of calling the checkRollupCompliance API with
            more than a 1000 entities is undefined.
          type: array
          items:
            $ref: '#/components/schemas/PbmServerObjectRef'
      required:
        - entity

    PbmCreateRequestType:
      type: object
      description: |2
        The parameters of *PbmProfileProfileManager.PbmCreate*.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        createSpec:
          description: |2
            Capability-based profile specification.
          $ref: '#/components/schemas/PbmCapabilityProfileCreateSpec'
      required:
        - createSpec

    PbmDeleteRequestType:
      type: object
      description: |2
        The parameters of *PbmProfileProfileManager.PbmDelete*.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        profileId:
          description: |2
            Array of profile identifiers.
          type: array
          items:
            $ref: '#/components/schemas/PbmProfileId'
      required:
        - profileId

    PbmFetchCapabilityMetadataRequestType:
      type: object
      description: |2
        The parameters of *PbmProfileProfileManager.PbmFetchCapabilityMetadata*.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        resourceType:
          description: |2
            Type of profile resource. The Server supports the "STORAGE" resource
            type only. If not specified, this method will return capability metadata for the storage
            resources. Any other <code>resourceType</code> is considered invalid.
          $ref: '#/components/schemas/PbmProfileResourceType'
        vendorUuid:
          description: |2
            Unique identifier for the vendor/owner of capability
            metadata. The specified vendor ID must match
            *PbmCapabilitySchemaVendorInfo*.*PbmCapabilitySchemaVendorInfo.vendorUuid*.
            If omitted, the Server searchs all capability metadata registered with the system. If a
            <code>vendorUuid</code> unknown to the Server is specified, empty results will be returned.
          type: string

    PbmFetchCapabilitySchemaRequestType:
      type: object
      description: |2
        The parameters of *PbmProfileProfileManager.PbmFetchCapabilitySchema*.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        vendorUuid:
          description: |2
            Unique identifier for the vendor/owner of capability metadata.
            If omitted, the server searchs all capability metadata registered
            with the system. The specified vendor ID must match
            *PbmCapabilitySchemaVendorInfo*.*PbmCapabilitySchemaVendorInfo.vendorUuid*.
          type: string
        lineOfService:
          description: |2
            Optional line of service that must match *PbmLineOfServiceInfoLineOfServiceEnum_enum*.
            If specified, the capability schema objects
            are returned for the given lineOfServices. If null, then all
            capability schema objects that may or may not have data service capabilities
            are returned.
          type: array
          items:
            type: string

    PbmFetchComplianceResultRequestType:
      type: object
      description: |2
        The parameters of *PbmComplianceManager.PbmFetchComplianceResult*.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        entities:
          description: |2
            One or more references to storage entities.
            A maximum of 1000 virtual machines and/or virtual disks can be specified
            in a call. The results of calling the fetchComplianceResult API with
            more than a 1000 entities is undefined.
            - If the list of entities also contains datastores, the Server
              will ignore the datastores.
            - If the list contains valid and invalid entities, the Server ignores
              the invalid entities and returns results for the valid entities.
              Invalid entities are entities that are not in the vCenter inventory.
            - If the list contains only datastores, the method throws
              an <code>InvalidArgument</code> fault.
          type: array
          items:
            $ref: '#/components/schemas/PbmServerObjectRef'
        profile:
          description: |2
            Not used. if specified, the Server ignores the value.
            The Server uses the profiles associated with the specified entities.
          $ref: '#/components/schemas/PbmProfileId'
      required:
        - entities

    PbmFetchRollupComplianceResultRequestType:
      type: object
      description: |2
        The parameters of *PbmComplianceManager.PbmFetchRollupComplianceResult*.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        entity:
          description: |2
            One or more virtual machines.
            A maximum of 1000 virtual machines can be specified
            in a call. The results of calling the fetchRollupComplianceResult API with
            more than a 1000 entity objects is undefined.
          type: array
          items:
            $ref: '#/components/schemas/PbmServerObjectRef'
      required:
        - entity

    PbmFetchVendorInfoRequestType:
      type: object
      description: |2
        The parameters of *PbmProfileProfileManager.PbmFetchVendorInfo*.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        resourceType:
          description: |2
            Specifies the resource type. The Server supports the STORAGE resource
            type only. If not specified, server defaults to STORAGE resource type. Any other
            <code>resourceType</code> is considered invalid.
          $ref: '#/components/schemas/PbmProfileResourceType'

    PbmFindApplicableDefaultProfileRequestType:
      type: object
      description: |2
        The parameters of *PbmProfileProfileManager.PbmFindApplicableDefaultProfile*.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        datastores:
          description: |2
            Datastores for which the default profile is found out. Note that
            the datastore pods/clusters are not supported.
          type: array
          items:
            $ref: '#/components/schemas/PbmPlacementHub'
      required:
        - datastores

    PbmQueryAssociatedEntitiesRequestType:
      type: object
      description: |2
        The parameters of *PbmProfileProfileManager.PbmQueryAssociatedEntities*.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        profiles:
          description: |2
            Storage policy array.
          type: array
          items:
            $ref: '#/components/schemas/PbmProfileId'

    PbmQueryAssociatedEntityRequestType:
      type: object
      description: |2
        The parameters of *PbmProfileProfileManager.PbmQueryAssociatedEntity*.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        profile:
          description: |2
            Profile identifier.
          $ref: '#/components/schemas/PbmProfileId'
        entityType:
          description: |2
            If specified, the method returns only those entities
            which match the type. The <code>entityType</code> string value must match
            one of the *PbmObjectType_enum* values.
            If not specified, the method returns all entities associated with the profile.
          type: string
      required:
        - profile

    PbmQueryAssociatedProfileRequestType:
      type: object
      description: |2
        The parameters of *PbmProfileProfileManager.PbmQueryAssociatedProfile*.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        entity:
          description: |2
            Reference to a virtual machine, virtual disk, or datastore.
          $ref: '#/components/schemas/PbmServerObjectRef'
      required:
        - entity

    PbmQueryAssociatedProfilesRequestType:
      type: object
      description: |2
        The parameters of *PbmProfileProfileManager.PbmQueryAssociatedProfiles*.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        entities:
          description: |2
            Array of server object references.
          type: array
          items:
            $ref: '#/components/schemas/PbmServerObjectRef'
      required:
        - entities

    PbmQueryByRollupComplianceStatusRequestType:
      type: object
      description: |2
        The parameters of *PbmComplianceManager.PbmQueryByRollupComplianceStatus*.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        status:
          description: |2
            *PbmComplianceStatus_enum*
          type: string
      required:
        - status

    PbmQueryDefaultRequirementProfileRequestType:
      type: object
      description: |2
        The parameters of *PbmProfileProfileManager.PbmQueryDefaultRequirementProfile*.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        hub:
          description: |2
            Placement hub (i.e. datastore).
          $ref: '#/components/schemas/PbmPlacementHub'
      required:
        - hub

    PbmQueryDefaultRequirementProfilesRequestType:
      type: object
      description: |2
        The parameters of *PbmProfileProfileManager.PbmQueryDefaultRequirementProfiles*.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        datastores:
          description: |2
            The datastores for which the default profiles are requested. For
            legacy datastores we set
            `DefaultProfileInfo.defaultProfile` to `null`.
          type: array
          items:
            $ref: '#/components/schemas/PbmPlacementHub'
      required:
        - datastores

    PbmQueryMatchingHubRequestType:
      type: object
      description: |2
        The parameters of *PbmPlacementSolver.PbmQueryMatchingHub*.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        hubsToSearch:
          description: |2
            Candidate list of hubs, either datastores or storage pods or a
            mix. If this parameter is not specified, the Server uses all
            of the datastores and storage pods.
          type: array
          items:
            $ref: '#/components/schemas/PbmPlacementHub'
        profile:
          description: |2
            Storage requirement profile.
          $ref: '#/components/schemas/PbmProfileId'
      required:
        - profile

    PbmQueryMatchingHubWithSpecRequestType:
      type: object
      description: |2
        The parameters of *PbmPlacementSolver.PbmQueryMatchingHubWithSpec*.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        hubsToSearch:
          description: |2
            Candidate list of hubs, either datastores or storage
            pods or a mix. If this parameter is not specified, the Server uses
            all of the datastores and storage pods for placement compatibility checking.
          type: array
          items:
            $ref: '#/components/schemas/PbmPlacementHub'
        createSpec:
          description: |2
            Storage profile creation specification.
          $ref: '#/components/schemas/PbmCapabilityProfileCreateSpec'
      required:
        - createSpec

    PbmQueryProfileRequestType:
      type: object
      description: |2
        The parameters of *PbmProfileProfileManager.PbmQueryProfile*.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        resourceType:
          description: |2
            Type of resource. You can specify only STORAGE.
          $ref: '#/components/schemas/PbmProfileResourceType'
        profileCategory:
          description: |2
            Profile category. The string value must correspond
            to one of the *PbmProfileCategoryEnum_enum* values.
            If you do not specify a profile category, the method returns profiles in all
            categories.
          type: string
      required:
        - resourceType

    PbmQueryReplicationGroupsRequestType:
      type: object
      description: |2
        The parameters of *PbmReplicationManager.PbmQueryReplicationGroups*.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        entities:
          description: |2
            Array of server object references. Valid types are
            *virtualMachine*,
            *virtualMachineAndDisks*,
            *virtualDiskId*,
            *virtualDiskUUID*
          type: array
          items:
            $ref: '#/components/schemas/PbmServerObjectRef'

    PbmQuerySpaceStatsForStorageContainerRequestType:
      type: object
      description: |2
        The parameters of *PbmProfileProfileManager.PbmQuerySpaceStatsForStorageContainer*.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        datastore:
          description: |2
            Entity for which space statistics are being requested i.e datastore.
          $ref: '#/components/schemas/PbmServerObjectRef'
        capabilityProfileId:
          description: |2
            \- capability profile Ids.
            If omitted, the statistics for the container
            as a whole would be returned.
          type: array
          items:
            $ref: '#/components/schemas/PbmProfileId'
      required:
        - datastore

    PbmResetDefaultRequirementProfileRequestType:
      type: object
      description: |2
        The parameters of *PbmProfileProfileManager.PbmResetDefaultRequirementProfile*.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        profile:
          description: |2
            Profile to reset.
          $ref: '#/components/schemas/PbmProfileId'

    PbmRetrieveContentRequestType:
      type: object
      description: |2
        The parameters of *PbmProfileProfileManager.PbmRetrieveContent*.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        profileIds:
          description: |2
            Array of storage profile identifiers.
          type: array
          items:
            $ref: '#/components/schemas/PbmProfileId'
      required:
        - profileIds

    PbmUpdateRequestType:
      type: object
      description: |2
        The parameters of *PbmProfileProfileManager.PbmUpdate*.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        profileId:
          description: |2
            Profile identifier.
          $ref: '#/components/schemas/PbmProfileId'
        updateSpec:
          description: |2
            Capability-based update specification.
          $ref: '#/components/schemas/PbmCapabilityProfileUpdateSpec'
      required:
        - profileId
        - updateSpec

    PerformDvsProductSpecOperationRequestType:
      type: object
      description: |2
        The parameters of *DistributedVirtualSwitch.PerformDvsProductSpecOperation_Task*.
      properties:
        operation:
          description: |2
            The operation. See *DistributedVirtualSwitchProductSpecOperationType_enum* for
            valid values. For
            *VmwareDistributedVirtualSwitch*,
            only *upgrade*
            is valid.
          type: string
        productSpec:
          description: |2
            The product info of the implementation.
          $ref: '#/components/schemas/DistributedVirtualSwitchProductSpec'
      required:
        - operation

    PerformVsanUpgradePreflightCheckRequestType:
      type: object
      description: |2
        The parameters of *VsanUpgradeSystem.PerformVsanUpgradePreflightCheck*.
      properties:
        cluster:
          description: |2
            The cluster for which to perform the check.
            
            Refers instance of *ClusterComputeResource*.
          $ref: '#/components/schemas/ManagedObjectReference'
        downgradeFormat:
          description: |2
            Intend to perform a on-disk format downgrade instead
            of upgrade. Adds additional checks.
          type: boolean
      required:
        - cluster

    PerformVsanUpgradeRequestType:
      type: object
      description: |2
        The parameters of *VsanUpgradeSystem.PerformVsanUpgrade_Task*.
      properties:
        cluster:
          description: |2
            The cluster to be upgraded
            
            Refers instance of *ClusterComputeResource*.
          $ref: '#/components/schemas/ManagedObjectReference'
        performObjectUpgrade:
          description: |2
            After all disk groups have been updated, also
            upgrade all objects. Once started, rollback
            of the on disk format is no longer possible.
            Object upgrade unlocks new VSAN features.
          type: boolean
        downgradeFormat:
          description: |2
            Perform a on-disk format downgrade instead of
            upgrade. Only possible if no upgraded objects exist.
          type: boolean
        allowReducedRedundancy:
          description: |2
            Removes the need for one disk group worth of
            free space, by allowing reduced redundancy
            during disk upgrade.
          type: boolean
        excludeHosts:
          description: |2
            Internal debug option meant for functional testing
            of VSAN upgrades. Skips upgrade on certain hosts and
            implies performObjectUpgrade being false. Should not
            be used by customers.
            
            Refers instances of *HostSystem*.
          type: array
          items:
            $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - cluster

    PlaceVmRequestType:
      type: object
      description: |2
        The parameters of *ClusterComputeResource.PlaceVm*.
      properties:
        placementSpec:
          description: |2
            Specification for placing a virtual machine
            and its virtual disks
          $ref: '#/components/schemas/PlacementSpec'
      required:
        - placementSpec

    PostEventRequestType:
      type: object
      description: |2
        The parameters of *EventManager.PostEvent*.
      properties:
        eventToPost:
          description: |2
            Fully-specified event to post
          $ref: '#/components/schemas/Event'
        taskInfo:
          description: |2
            optional task associated with the event
          $ref: '#/components/schemas/TaskInfo'
      required:
        - eventToPost

    PostHealthUpdatesRequestType:
      type: object
      description: |2
        The parameters of *HealthUpdateManager.PostHealthUpdates*.
      properties:
        providerId:
          description: |2
            The provider id.
          type: string
        updates:
          description: |2
            The changes in health states.
          type: array
          items:
            $ref: '#/components/schemas/HealthUpdate'
      required:
        - providerId

    PowerDownHostToStandByRequestType:
      type: object
      description: |2
        The parameters of *HostSystem.PowerDownHostToStandBy_Task*.
      properties:
        timeoutSec:
          description: |2
            The task completes when the host successfully
            enters standby mode and stops sending heartbeat signals.
            If heartbeats are still coming after timeoutSecs seconds,
            the host is declared timedout, and the task is assumed
            failed.
          type: integer
          format: int32
        evacuatePoweredOffVms:
          description: |2
            This is a parameter used only by VirtualCenter. If
            set to true, for a DRS disabled cluster, the task will not
            succeed unless all powered-off virtual machines have been manually
            reregistered; for a DRS enabled cluster, VirtualCenter will
            automatically reregister powered-off virtual machines and a
            powered-off virtual machine may remain at the host only for two
            reasons: (a) no compatible host found for reregistration, (b) DRS
            is disabled for the virtual machine.
          type: boolean
      required:
        - timeoutSec

    PowerOffVAppRequestType:
      type: object
      description: |2
        The parameters of *VirtualApp.PowerOffVApp_Task*.
      properties:
        force:
          description: |2
            If force is false, the shutdown order in the vApp is
            executed. If force is true, all virtual machines are powered-off
            (regardless of shutdown order).
          type: boolean
      required:
        - force

    PowerOnMultiVMRequestType:
      type: object
      description: |2
        The parameters of *Datacenter.PowerOnMultiVM_Task*.
      properties:
        vm:
          description: |2
            The virtual machines to power on.
            
            ***Required privileges:*** VirtualMachine.Interact.PowerOn
            
            Refers instances of *VirtualMachine*.
          type: array
          items:
            $ref: '#/components/schemas/ManagedObjectReference'
        option:
          description: |2
            An array of *OptionValue* options
            for this power-on session. The names and values of the
            options are defined in
            *ClusterPowerOnVmOption_enum*.
          type: array
          items:
            $ref: '#/components/schemas/OptionValue'
      required:
        - vm

    PowerOnVMRequestType:
      type: object
      description: |2
        The parameters of *VirtualMachine.PowerOnVM_Task*.
      properties:
        host:
          description: |2
            (optional) The host where the virtual machine is to be powered on.
            If no host is specified, the current associated host is used. This field must
            specify a host that is part of the same compute resource that the virtual machine
            is currently associated with. If this host is not compatible, the current host
            association is used.
            
            Refers instance of *HostSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'

    PowerUpHostFromStandByRequestType:
      type: object
      description: |2
        The parameters of *HostSystem.PowerUpHostFromStandBy_Task*.
      properties:
        timeoutSec:
          description: |2
            The task completes when the host successfully
            exits standby state and sends a heartbeat signal. If nothing is
            received from the host for timeoutSec seconds, the host is
            declared timedout, and the task is assumed failed.
          type: integer
          format: int32
      required:
        - timeoutSec

    PrepareFailoverReplicationGroupRequestType:
      type: object
      description: |2
        The parameters of *VasaProvider.PrepareFailoverReplicationGroup_Task*.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        groupId:
          description: |2
            List of replication group IDs.
          type: array
          items:
            $ref: '#/components/schemas/ReplicationGroupId'

    PromoteDisksRequestType:
      type: object
      description: |2
        The parameters of *VirtualMachine.PromoteDisks_Task*.
      properties:
        unlink:
          description: |2
            If true, then these disks will be unlinked before consolidation.
          type: boolean
        disks:
          description: |2
            The set of disks that are to be promoted.
            If this value is unset or the array is empty,
            all disks which have delta disk backings are promoted.
          type: array
          items:
            $ref: '#/components/schemas/VirtualDisk'
      required:
        - unlink

    PromoteReplicationGroupRequestType:
      type: object
      description: |2
        The parameters of *VasaProvider.PromoteReplicationGroup_Task*.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        promoteParam:
          description: |2
            Specifies an array of replication group IDs whose
            in-test devices (*INTEST*) need to be
            promoted to failover *FAILEDOVER* state.
          $ref: '#/components/schemas/PromoteParam'
      required:
        - promoteParam

    ProvisionServerPrivateKeyRequestType:
      type: object
      description: |2
        The parameters of *HostCertificateManager.ProvisionServerPrivateKey*.
        
        ***Since:*** vSphere API Release 8.0.3.0
      properties:
        key:
          description: |2
            SSL private key in PEM format
          type: string
          format: password
      required:
        - key

    PutUsbScanCodesRequestType:
      type: object
      description: |2
        The parameters of *VirtualMachine.PutUsbScanCodes*.
      properties:
        spec:
          $ref: '#/components/schemas/UsbScanCodeSpec'
      required:
        - spec

    QueryActiveAlarmRequestType:
      type: object
      description: |2
        The parameters of *VasaProvider.QueryActiveAlarm*.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        alarmFilter:
          description: |2
            Filter criteria for the alarm state.
          $ref: '#/components/schemas/AlarmFilter'

    QueryAnswerFileStatusRequestType:
      type: object
      description: |2
        The parameters of *HostProfileManager.QueryAnswerFileStatus*.
      properties:
        host:
          description: |2
            The hosts the answer file is associated with.
            
            Refers instances of *HostSystem*.
          type: array
          items:
            $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - host

    QueryArrayAssociatedWithLunRequestType:
      type: object
      description: |2
        The parameters of *SmsStorageManager.QueryArrayAssociatedWithLun*.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        canonicalName:
          description: |2
            *ScsiLun.canonicalName*
            of ScsiLun
          type: string
      required:
        - canonicalName

    QueryArrayRequestType:
      type: object
      description: |2
        The parameters of *SmsStorageManager.QueryArray*.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        providerId:
          description: |2
            List of *SmsProviderInfo.uid* for the VASA
            provider objects.
          type: array
          items:
            type: string

    QueryAssignedLicensesRequestType:
      type: object
      description: |2
        The parameters of *LicenseAssignmentManager.QueryAssignedLicenses*.
      properties:
        entityId:
          description: |2
            ID of the entity. E.g. HostSystem.
          type: string

    QueryAssociatedBackingStoragePoolRequestType:
      type: object
      description: |2
        The parameters of *SmsStorageManager.QueryAssociatedBackingStoragePool*.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        entityId:
          description: |2
            Unique identifier of a StorageLun or StorageFileSystem.
          type: string
        entityType:
          description: |2
            Entity type of the entity specified using entityId. This can be either
            StorageLun or StorageFileSystem.
          type: string

    QueryAvailableDisksForVmfsRequestType:
      type: object
      description: |2
        The parameters of *HostDatastoreSystem.QueryAvailableDisksForVmfs*.
      properties:
        datastore:
          description: |2
            The managed object reference of the VMFS datastore
            you want extents for.
            
            Refers instance of *Datastore*.
          $ref: '#/components/schemas/ManagedObjectReference'

    QueryAvailableDvsSpecRequestType:
      type: object
      description: |2
        The parameters of *DistributedVirtualSwitchManager.QueryAvailableDvsSpec*.
      properties:
        recommended:
          description: |2
            If set to true, return only the recommended versions.
            If set to false, return only the not recommended versions.
            If unset, return all supported versions.
          type: boolean

    QueryAvailablePerfMetricRequestType:
      type: object
      description: |2
        The parameters of *PerformanceManager.QueryAvailablePerfMetric*.
      properties:
        entity:
          description: |2
            The *managed object* that
            provides performance metrics.
          $ref: '#/components/schemas/ManagedObjectReference'
        beginTime:
          description: |2
            Starting time (server time) for a period of time from which to return
            available metrics. If not specified, defaults to oldest available metric
            for the specified entity.
          type: string
          format: date-time
        endTime:
          description: |2
            Ending time (server time) for a period of time from which to return
            available performance metrics. If not specified, defaults to the most
            recently generated metric for the specified entity.
          type: string
          format: date-time
        intervalId:
          description: |2
            Period of time from which to retrieve metrics, defined by intervalId
            (rather than beginTime or endTime). Valid intervalIds include:
            - For real-time counters, the *refreshRate* of
              the *performance
              provider*.
            - For historical counters, the *samplingPeriod* of the *historical interval*. 
              
            If this parameter is not specified, the system returns available metrics
            for historical statistics&#46;
          type: integer
          format: int32
      required:
        - entity

    QueryAvailableSsdsRequestType:
      type: object
      description: |2
        The parameters of *HostStorageSystem.QueryAvailableSsds*.
      properties:
        vffsPath:
          description: |2
            The path of the VFFS to extend. See *FileSystemMountInfo*.
          type: string

    QueryBoundVnicsRequestType:
      type: object
      description: |2
        The parameters of *IscsiManager.QueryBoundVnics*.
      properties:
        iScsiHbaName:
          description: |2
            iSCSI adapter name for which the method to be
            applied.
          type: string
      required:
        - iScsiHbaName

    QueryCandidateNicsRequestType:
      type: object
      description: |2
        The parameters of *IscsiManager.QueryCandidateNics*.
      properties:
        iScsiHbaName:
          description: |2
            iSCSI Adapter name for which the method to be
            applied.
          type: string
      required:
        - iScsiHbaName

    QueryChangedDiskAreasRequestType:
      type: object
      description: |2
        The parameters of *VirtualMachine.QueryChangedDiskAreas*.
      properties:
        snapshot:
          description: |2
            Snapshot for which changes that have been made sine
            "changeId" should be computed. If not set, changes are computed
            against the "current" snapshot of the virtual machine. However,
            using the "current" snapshot will only work for virtual machines
            that are powered off.
            
            Refers instance of *VirtualMachineSnapshot*.
          $ref: '#/components/schemas/ManagedObjectReference'
        deviceKey:
          description: |2
            Identifies the virtual disk for which to compute changes.
          type: integer
          format: int32
        startOffset:
          description: |2
            Start Offset in bytes at which to start computing changes.
            Typically, callers will make multiple calls to this function, starting
            with startOffset 0 and then examine the "length" property in the
            returned DiskChangeInfo structure, repeatedly calling queryChangedDiskAreas
            until a map forthe entire virtual disk has been obtained.
          type: integer
          format: int64
        changeId:
          description: |2
            Identifyer referring to a point in the past that should be used
            as the point in time at which to begin including changes to the disk in
            the result. A typical use case would be a backup application obtaining a
            changeId from a virtual disk's backing info when performing a
            backup. When a subsequent incremental backup is to be performed, this
            change Id can be used to obtain a list of changed areas on disk.
          type: string
      required:
        - deviceKey
        - startOffset
        - changeId

    QueryCmmdsRequestType:
      type: object
      description: |2
        The parameters of *HostVsanInternalSystem.QueryCmmds*.
      properties:
        queries:
          description: |2
            List of CMMDS query specs.
          type: array
          items:
            $ref: '#/components/schemas/HostVsanInternalSystemCmmdsQuery'
      required:
        - queries

    QueryCompatibleHostForExistingDvsRequestType:
      type: object
      description: |2
        The parameters of *DistributedVirtualSwitchManager.QueryCompatibleHostForExistingDvs*.
      properties:
        container:
          description: |2
            Where to look for hosts. Supported types of objects for
            this parameter are *Datacenter*,
            *ComputeResource* and *Folder*.
            
            Refers instance of *ManagedEntity*.
          $ref: '#/components/schemas/ManagedObjectReference'
        recursive:
          description: |2
            Whether to search for hosts in the subfolders,
            if applicable. In the case when container is a *Datacenter*,
            the recursive flag is applied to its HostFolder.
          type: boolean
        dvs:
          description: |2
            Search the host based on the specification published in the
            *DVSCapability.compatibleHostComponentProductInfo*
            of a *DistributedVirtualSwitch*. If not
            set, it is assumed to be the specification that a
            DistributedVirtualSwitch would have if it is created
            with the default *DistributedVirtualSwitchProductSpec*.
            
            Refers instance of *DistributedVirtualSwitch*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - container
        - recursive
        - dvs

    QueryCompatibleHostForNewDvsRequestType:
      type: object
      description: |2
        The parameters of *DistributedVirtualSwitchManager.QueryCompatibleHostForNewDvs*.
      properties:
        container:
          description: |2
            Where to look for hosts. Supported types of objects for
            this parameter are *Datacenter*,
            *ComputeResource* and *Folder*.
            
            Refers instance of *ManagedEntity*.
          $ref: '#/components/schemas/ManagedObjectReference'
        recursive:
          description: |2
            Whether to search for hosts in the subfolders,
            if applicable. In the case when container is a *Datacenter*,
            the recursive flag is applied to its HostFolder.
          type: boolean
        switchProductSpec:
          description: |2
            The productSpec of a *DistributedVirtualSwitch*.
            If not set, it is assumed to be the default one used for
            DistributedVirtualSwitch creation.
          $ref: '#/components/schemas/DistributedVirtualSwitchProductSpec'
      required:
        - container
        - recursive

    QueryCompatibleVmnicsFromHostsRequestType:
      type: object
      description: |2
        The parameters of *DistributedVirtualSwitchManager.QueryCompatibleVmnicsFromHosts*.
        
        ***Since:*** vSphere API Release 8.0.0.1
      properties:
        hosts:
          description: |2
            The array of hosts on which the query is to be made to
            fetch valid PhysicalNics on each host.
            
            Refers instances of *HostSystem*.
          type: array
          items:
            $ref: '#/components/schemas/ManagedObjectReference'
        dvs:
          description: |2
            The distributed virtual switch on which the query is to be
            made.
            
            Refers instance of *DistributedVirtualSwitch*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - dvs

    QueryComplianceStatusRequestType:
      type: object
      description: |2
        The parameters of *ProfileComplianceManager.QueryComplianceStatus*.
      properties:
        profile:
          description: |2
            If specified, compliance result for the specified profiles will be
            returned. This acts like a filtering criteria for the ComplianceResults based on
            specified profiles.
            
            Refers instances of *Profile*.
          type: array
          items:
            $ref: '#/components/schemas/ManagedObjectReference'
        entity:
          description: |2
            If specified, compliance results for these entities will be returned.
            This acts like a filtering criteria for the ComplianceResults based on entities.
            
            Refers instances of *ManagedEntity*.
          type: array
          items:
            $ref: '#/components/schemas/ManagedObjectReference'

    QueryConfigOptionExRequestType:
      type: object
      description: |2
        The parameters of *EnvironmentBrowser.QueryConfigOptionEx*.
      properties:
        spec:
          description: |2
            Search criteria and filters to control the result.
            If a *EnvironmentBrowserConfigOptionQuerySpec.key* or
            *EnvironmentBrowserConfigOptionQuerySpec.host* (or both)
            are specified, they will be used to search for a config option.
            If *EnvironmentBrowserConfigOptionQuerySpec.guestId*
            is nonempty, the *VirtualMachineConfigOption.guestOSDescriptor*
            array of the config option is filtered to match against the guest
            IDs in the spec. If there is no match, the whole list is returned.
            If the spec argument is omitted, the default
            *VirtualMachineConfigOption* for this environment browser is
            returned.
          $ref: '#/components/schemas/EnvironmentBrowserConfigOptionQuerySpec'

    QueryConfigOptionRequestType:
      type: object
      description: |2
        The parameters of *EnvironmentBrowser.QueryConfigOption*.
      properties:
        key:
          description: |2
            The key found in the VirtualMachineConfigOptionDescriptor,
            obtained by invoking the
            *EnvironmentBrowser.QueryConfigOptionDescriptor* operation.
          type: string
        host:
          description: |2
            The host whose ConfigOption is requested.
            
            Refers instance of *HostSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'

    QueryConfigTargetRequestType:
      type: object
      description: |2
        The parameters of *EnvironmentBrowser.QueryConfigTarget*.
      properties:
        host:
          description: |2
            If specified, the host whose default BackingInfo is requested.
            
            Refers instance of *HostSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'

    QueryConfiguredModuleOptionStringRequestType:
      type: object
      description: |2
        The parameters of *HostKernelModuleSystem.QueryConfiguredModuleOptionString*.
      properties:
        name:
          description: |2
            Module name.
          type: string
      required:
        - name

    QueryConnectionInfoRequestType:
      type: object
      description: |2
        The parameters of *Datacenter.QueryConnectionInfo*.
      properties:
        hostname:
          description: |2
            The target of the query.
          type: string
        port:
          description: |2
            The port number of the target host. For ESX 2.x this is the authd port
            (902 by default). For ESX 3.x and above and for VMware Server hosts
            this is the https port (443 by default). You can specify -1 to have the
            vCenter Server try the default ports.
          type: integer
          format: int32
        username:
          description: |2
            The name of the user.
          type: string
        password:
          description: |2
            The password of the user.
          type: string
          format: password
        sslThumbprint:
          description: |2
            The expected SSL thumbprint of the host's certificate.
          type: string
      required:
        - hostname
        - port
        - username
        - password

    QueryConnectionInfoViaSpecRequestType:
      type: object
      description: |2
        The parameters of *Datacenter.QueryConnectionInfoViaSpec*.
      properties:
        spec:
          description: |2
            The connection spec for the host to be queried. It must contain
            values for all parameters required by *Datacenter.QueryConnectionInfo*
            See *Datacenter.QueryConnectionInfo* or a list of thrown expections.
          $ref: '#/components/schemas/HostConnectSpec'
      required:
        - spec

    QueryCryptoKeyStatusRequestType:
      type: object
      description: |2
        The parameters of *CryptoManagerKmip.QueryCryptoKeyStatus*.
      properties:
        keyIds:
          description: |2
            \[in\] The Crypto Key Ids to query.
          type: array
          items:
            $ref: '#/components/schemas/CryptoKeyId'
        checkKeyBitMap:
          description: |2
            \[in\] The key state to check. Supported value:
            0x01. check if key data is available to VC.
            0x02. check the VMs which use that key.
            0x04. check the hosts using this key as host key.
            0x08. Check 3rd party program which use that key.
            Other bits - reserved and will be igonred.
          type: integer
          format: int32
      required:
        - checkKeyBitMap

    QueryDatastoreBackingPoolMappingRequestType:
      type: object
      description: |2
        The parameters of *SmsStorageManager.QueryDatastoreBackingPoolMapping*.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        datastore:
          description: |2
            Array containing references to *Datastore* objects.
            
            Refers instances of *Datastore*.
          type: array
          items:
            $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - datastore

    QueryDatastoreCapabilityRequestType:
      type: object
      description: |2
        The parameters of *SmsStorageManager.QueryDatastoreCapability*.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        datastore:
          description: |2
            reference to *Datastore*
            
            Refers instance of *Datastore*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - datastore

    QueryDatastorePerformanceSummaryRequestType:
      type: object
      description: |2
        The parameters of *StorageResourceManager.QueryDatastorePerformanceSummary*.
      properties:
        datastore:
          description: |2
            Datastore for which summary statistics is requested.
            
            Refers instance of *Datastore*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - datastore

    QueryDescriptionsRequestType:
      type: object
      description: |2
        The parameters of *DiagnosticManager.QueryDescriptions*.
      properties:
        host:
          description: |2
            Specifies the host. If not specified, then it defaults
            to the server itself. For example, if called on
            VirtualCenter, then the value defaults to VirtualCenter
            logs. When called on an ESX server host, the host should
            not be specified.
            
            Refers instance of *HostSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'

    QueryDirectoryInfoRequestType:
      type: object
      description: |2
        The parameters of *DatastoreNamespaceManager.QueryDirectoryInfo*.
        
        ***Since:*** vSphere API Release 8.0.1.0
      properties:
        datacenter:
          description: |2
            the datacenter of the namespace path. Needs to be set
            when making the call to VC; ignored when the call is
            made to ESX.
            
            Refers instance of *Datacenter*.
          $ref: '#/components/schemas/ManagedObjectReference'
        stableName:
          description: |2
            stable vmfs path of the top-level directory to query
          type: string
      required:
        - stableName

    QueryDisksForVsanRequestType:
      type: object
      description: |2
        The parameters of *HostVsanSystem.QueryDisksForVsan*.
      properties:
        canonicalName:
          description: |2
            may be set to restrict the query to the list of
            *HostScsiDisk* objects named by the
            given paths
          type: array
          items:
            type: string

    QueryDisksUsingFilterRequestType:
      type: object
      description: |2
        The parameters of *IoFilterManager.QueryDisksUsingFilter*.
      properties:
        filterId:
          description: |2
            ID of the filter.
          type: string
        compRes:
          description: |2
            The compute resource that the filter has been installed on.
            "compRes" must be a cluster.
            
            Refers instance of *ComputeResource*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - filterId
        - compRes

    QueryDrsMigrationCapabilityForPerformanceExRequestType:
      type: object
      description: |2
        The parameters of *SmsStorageManager.QueryDrsMigrationCapabilityForPerformanceEx*.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        datastore:
          description: |2
            Array containing references to *Datastore* objects.
            
            Refers instances of *Datastore*.
          type: array
          items:
            $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - datastore

    QueryDrsMigrationCapabilityForPerformanceRequestType:
      type: object
      description: |2
        The parameters of *SmsStorageManager.QueryDrsMigrationCapabilityForPerformance*.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        srcDatastore:
          description: |2
            Reference to the source *Datastore*
            
            Refers instance of *Datastore*.
          $ref: '#/components/schemas/ManagedObjectReference'
        dstDatastore:
          description: |2
            Reference to the destination *Datastore*
            
            Refers instance of *Datastore*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - srcDatastore
        - dstDatastore

    QueryDvsByUuidRequestType:
      type: object
      description: |2
        The parameters of *DistributedVirtualSwitchManager.QueryDvsByUuid*.
      properties:
        uuid:
          type: string
      required:
        - uuid

    QueryDvsCheckCompatibilityRequestType:
      type: object
      description: |2
        The parameters of *DistributedVirtualSwitchManager.QueryDvsCheckCompatibility*.
      properties:
        hostContainer:
          description: |2
            The container of hosts on which we check the compatibility.
            This container can be a datacenter, folder, or computeResource.
            We can also include all the hosts in the hierarchy with container
            as root of the tree.
          $ref: '#/components/schemas/DistributedVirtualSwitchManagerHostContainer'
        dvsProductSpec:
          description: |2
            The productSpec of a DistributedVirtualSwitch. If not
            set, it is assumed to be the default one used for
            DistributedVirtualSwitch creation for current version.
          $ref: '#/components/schemas/DistributedVirtualSwitchManagerDvsProductSpec'
        hostFilterSpec:
          description: |2
            The hosts against which to check compatibility. This is a
            filterSpec and users can use this to specify all hosts in a
            container (datacenter, folder, or computeResource), an array
            of hosts, or hosts that might or might not be a DVS member.
          type: array
          items:
            $ref: '#/components/schemas/DistributedVirtualSwitchManagerHostDvsFilterSpec'
      required:
        - hostContainer

    QueryDvsCompatibleHostSpecRequestType:
      type: object
      description: |2
        The parameters of *DistributedVirtualSwitchManager.QueryDvsCompatibleHostSpec*.
      properties:
        switchProductSpec:
          description: |2
            The productSpec of a *DistributedVirtualSwitch*.
            If not set, it is assumed to be the default one used for
            DistributedVirtualSwitch creation.
          $ref: '#/components/schemas/DistributedVirtualSwitchProductSpec'

    QueryDvsConfigTargetRequestType:
      type: object
      description: |2
        The parameters of *DistributedVirtualSwitchManager.QueryDvsConfigTarget*.
      properties:
        host:
          description: |2
            The host on which the query is to be made. If called
            directly on the host this parameter need not be specified.
            
            Refers instance of *HostSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
        dvs:
          description: |2
            The distributed virtual switch on which the query is to be
            made. If unspecified the config target will encompass all the
            distributed virtual switches available on the host.
            
            Refers instance of *DistributedVirtualSwitch*.
          $ref: '#/components/schemas/ManagedObjectReference'

    QueryDvsFeatureCapabilityRequestType:
      type: object
      description: |2
        The parameters of *DistributedVirtualSwitchManager.QueryDvsFeatureCapability*.
      properties:
        switchProductSpec:
          description: |2
            The productSpec of a *DistributedVirtualSwitch*.
            If not set, it is assumed to be the default one used for
            DistributedVirtualSwitch creation.
          $ref: '#/components/schemas/DistributedVirtualSwitchProductSpec'

    QueryEventsRequestType:
      type: object
      description: |2
        The parameters of *EventManager.QueryEvents*.
      properties:
        filter:
          description: |2
            The events qualified.
          $ref: '#/components/schemas/EventFilterSpec'
      required:
        - filter

    QueryExpressionMetadataRequestType:
      type: object
      description: |2
        The parameters of *ProfileComplianceManager.QueryExpressionMetadata*.
      properties:
        expressionName:
          description: |2
            Names of the Expressions for which metadata is requested.
            If expressionNames are not specified, metadata for all known expressions is returned
          type: array
          items:
            type: string
        profile:
          description: |2
            Base profile whose context needs to be used during the operation
            
            Refers instance of *Profile*.
          $ref: '#/components/schemas/ManagedObjectReference'

    QueryExtensionIpAllocationUsageRequestType:
      type: object
      description: |2
        The parameters of *ExtensionManager.QueryExtensionIpAllocationUsage*.
      properties:
        extensionKeys:
          description: |2
            List of extensions whose IP allocation is being queried.
            If no extension keys are specified then allocation data
            for all registered extensions are returned.
          type: array
          items:
            type: string

    QueryFaultDomainRequestType:
      type: object
      description: |2
        The parameters of *SmsStorageManager.QueryFaultDomain*.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        filter:
          description: |2
            spec for the query operation.
          $ref: '#/components/schemas/FaultDomainFilter'

    QueryFaultToleranceCompatibilityExRequestType:
      type: object
      description: |2
        The parameters of *VirtualMachine.QueryFaultToleranceCompatibilityEx*.
      properties:
        forLegacyFt:
          description: |2
            checks for legacy record-replay FT compatibility only
            if this is set to true.
          type: boolean

    QueryFileLockInfoRequestType:
      type: object
      description: |2
        The parameters of *FileManager.QueryFileLockInfo*.
        
        ***Since:*** vSphere API Release 8.0.2.0
      properties:
        path:
          description: |2
            Full file path to look up lock information on.
            For example specific VM file like:
            /vmfs/volumes/datastore1/vm/vm-flat.vmdk
          type: string
        host:
          description: |2
            Host id is required if API is invoked on vCenter Server.
            It is optional if invoked on host directly. Esx does not
            require this parameter.
            
            Refers instance of *HostSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - path

    QueryFileSystemAssociatedWithArrayRequestType:
      type: object
      description: |2
        The parameters of *SmsStorageManager.QueryFileSystemAssociatedWithArray*.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        arrayId:
          description: |2
            *StorageArray.uuid* for the StorageArray
            object.
          type: string
      required:
        - arrayId

    QueryFilterEntitiesRequestType:
      type: object
      description: |2
        The parameters of *HealthUpdateManager.QueryFilterEntities*.
      properties:
        filterId:
          description: |2
            The filter id.
          type: string
      required:
        - filterId

    QueryFilterInfoIdsRequestType:
      type: object
      description: |2
        The parameters of *HealthUpdateManager.QueryFilterInfoIds*.
      properties:
        filterId:
          description: |2
            The filter id.
          type: string
      required:
        - filterId

    QueryFilterListRequestType:
      type: object
      description: |2
        The parameters of *HealthUpdateManager.QueryFilterList*.
      properties:
        providerId:
          description: |2
            The provider id.
          type: string
      required:
        - providerId

    QueryFilterNameRequestType:
      type: object
      description: |2
        The parameters of *HealthUpdateManager.QueryFilterName*.
      properties:
        filterId:
          description: |2
            The filter id.
          type: string
      required:
        - filterId

    QueryHealthUpdateInfosRequestType:
      type: object
      description: |2
        The parameters of *HealthUpdateManager.QueryHealthUpdateInfos*.
      properties:
        providerId:
          description: |2
            The provider id.
          type: string
      required:
        - providerId

    QueryHealthUpdatesRequestType:
      type: object
      description: |2
        The parameters of *HealthUpdateManager.QueryHealthUpdates*.
      properties:
        providerId:
          description: |2
            The provider id.
          type: string
      required:
        - providerId

    QueryHostAssociatedWithLunRequestType:
      type: object
      description: |2
        The parameters of *SmsStorageManager.QueryHostAssociatedWithLun*.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        scsi3Id:
          description: |2
            *StorageLun.uuid* for the StorageLun
            object.
          type: string
        arrayId:
          description: |2
            *StorageArray.uuid* for the StorageArray
            object.
          type: string
      required:
        - scsi3Id
        - arrayId

    QueryHostPatchRequestType:
      type: object
      description: |2
        The parameters of *HostPatchManager.QueryHostPatch_Task*.
      properties:
        spec:
          $ref: '#/components/schemas/HostPatchManagerPatchManagerOperationSpec'

    QueryHostProfileMetadataRequestType:
      type: object
      description: |2
        The parameters of *HostProfileManager.QueryHostProfileMetadata*.
      properties:
        profileName:
          description: |2
            Names of the profiles for which metadata is requested.
            If not set, the method returns metadata for all the profiles.
          type: array
          items:
            type: string
        profile:
          description: |2
            Base profile whose context needs to be used during the operation
            
            Refers instance of *Profile*.
          $ref: '#/components/schemas/ManagedObjectReference'

    QueryHostsWithAttachedLunRequestType:
      type: object
      description: |2
        The parameters of *StorageQueryManager.QueryHostsWithAttachedLun*.
      properties:
        lunUuid:
          description: |2
            The UUID of the ScsiLun device.
          type: string
      required:
        - lunUuid

    QueryIORMConfigOptionRequestType:
      type: object
      description: |2
        The parameters of *StorageResourceManager.QueryIORMConfigOption*.
      properties:
        host:
          description: |2
            \[in\] - The host VC will forward the query
            to. This parameter is ignored by host if this method is
            called on a host directly.
            
            Refers instance of *HostSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - host

    QueryIPAllocationsRequestType:
      type: object
      description: |2
        The parameters of *IpPoolManager.QueryIPAllocations*.
      properties:
        dc:
          description: |2
            The datacenter on which to find the pool
            
            ***Required privileges:*** Datacenter.IpPoolQueryAllocations
            
            Refers instance of *Datacenter*.
          $ref: '#/components/schemas/ManagedObjectReference'
        poolId:
          description: |2
            The unique ID of the pool
          type: integer
          format: int32
        extensionKey:
          description: |2
            The key of the extension
          type: string
      required:
        - dc
        - poolId
        - extensionKey

    QueryIoFilterInfoRequestType:
      type: object
      description: |2
        The parameters of *IoFilterManager.QueryIoFilterInfo*.
      properties:
        compRes:
          description: |2
            The compute resource.
            "compRes" must be a cluster.
            
            Refers instance of *ComputeResource*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - compRes

    QueryIoFilterIssuesRequestType:
      type: object
      description: |2
        The parameters of *IoFilterManager.QueryIoFilterIssues*.
      properties:
        filterId:
          description: |2
            The filter.
          type: string
        compRes:
          description: |2
            The compute resource.
            "compRes" must be a cluster.
            
            Refers instance of *ComputeResource*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - filterId
        - compRes

    QueryIpPoolsRequestType:
      type: object
      description: |2
        The parameters of *IpPoolManager.QueryIpPools*.
      properties:
        dc:
          description: |2
            The datacenter for which to look up the IP pools.
            
            ***Required privileges:*** System.Read
            
            Refers instance of *Datacenter*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - dc

    QueryIssueRequestType:
      type: object
      description: |2
        The parameters of *EamObject.QueryIssue*.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        issueKey:
          description: |2
            An optional array of issue keys. If not set, all issues for this
            entity are returned.
          type: array
          items:
            type: integer
            format: int32

    QueryLicenseSourceAvailabilityRequestType:
      type: object
      description: |2
        The parameters of *LicenseManager.QueryLicenseSourceAvailability*.
      properties:
        host:
          description: |2
            Use the license source of the specified host.
            
            Refers instance of *HostSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'

    QueryLicenseUsageRequestType:
      type: object
      description: |2
        The parameters of *LicenseManager.QueryLicenseUsage*.
      properties:
        host:
          description: |2
            Host to query for usage. If missing, query the server the
            *LicenseManager* is on.
            
            Refers instance of *HostSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'

    QueryLunAssociatedWithArrayRequestType:
      type: object
      description: |2
        The parameters of *SmsStorageManager.QueryLunAssociatedWithArray*.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        arrayId:
          description: |2
            *StorageArray.uuid* for the StorageArray
            object.
          type: string
      required:
        - arrayId

    QueryLunAssociatedWithPortRequestType:
      type: object
      description: |2
        The parameters of *SmsStorageManager.QueryLunAssociatedWithPort*.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        portId:
          description: |2
            *StoragePort.uuid* for the StoragePort
            object.
          type: string
        arrayId:
          description: |2
            *StorageArray.uuid* for the StorageArray
            object.
          type: string
      required:
        - portId
        - arrayId

    QueryManagedByRequestType:
      type: object
      description: |2
        The parameters of *ExtensionManager.QueryManagedBy*.
      properties:
        extensionKey:
          description: |2
            Key of the extension to find managed entities for.
          type: string
      required:
        - extensionKey

    QueryMaxQueueDepthRequestType:
      type: object
      description: |2
        The parameters of *HostDatastoreSystem.QueryMaxQueueDepth*.
        
        ***Since:*** vSphere API Release 8.0.0.1
      properties:
        datastore:
          description: |2
            The NFS datastore which need to query max queue depth
            
            Refers instance of *Datastore*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - datastore

    QueryMemoryOverheadExRequestType:
      type: object
      description: |2
        The parameters of *HostSystem.QueryMemoryOverheadEx*.
      properties:
        vmConfigInfo:
          description: |2
            The configuration of the virtual machine.
          $ref: '#/components/schemas/VirtualMachineConfigInfo'
      required:
        - vmConfigInfo

    QueryMemoryOverheadRequestType:
      type: object
      description: |2
        The parameters of *HostSystem.QueryMemoryOverhead*.
      properties:
        memorySize:
          description: |2
            The amount of virtual system RAM, in bytes. For an existing
            virtual machine, this value can be found (in megabytes) as the memoryMB
            property of the *VirtualHardware*.
          type: integer
          format: int64
        videoRamSize:
          description: |2
            The amount of virtual video RAM, in bytes. For an existing
            virtual machine on a host that supports advertising this property, this
            value can be found (in kilobytes) as the videoRamSizeInKB property of the
            *VirtualMachineVideoCard*. If this parameter is left unset, the
            default video RAM size for virtual machines on this host is assumed.
          type: integer
          format: int32
        numVcpus:
          description: |2
            The number of virtual CPUs. For an existing virtual machine, this
            value can be found as the numCPU property of the
            *VirtualHardware*.
          type: integer
          format: int32
      required:
        - memorySize
        - numVcpus

    QueryMigrationDependenciesRequestType:
      type: object
      description: |2
        The parameters of *IscsiManager.QueryMigrationDependencies*.
      properties:
        pnicDevice:
          description: |2
            List of Physical NICs to be migrated
          type: array
          items:
            type: string
      required:
        - pnicDevice

    QueryMonitoredEntitiesRequestType:
      type: object
      description: |2
        The parameters of *HealthUpdateManager.QueryMonitoredEntities*.
      properties:
        providerId:
          description: |2
            The provider id.
          type: string
      required:
        - providerId

    QueryNetConfigRequestType:
      type: object
      description: |2
        The parameters of *HostVirtualNicManager.QueryNetConfig*.
      properties:
        nicType:
          description: |2
            The *HostVirtualNicManagerNicType_enum*
          type: string
      required:
        - nicType

    QueryNetworkHintRequestType:
      type: object
      description: |2
        The parameters of *HostNetworkSystem.QueryNetworkHint*.
      properties:
        device:
          type: array
          items:
            type: string

    QueryNfsDatastoreAssociatedWithFileSystemRequestType:
      type: object
      description: |2
        The parameters of *SmsStorageManager.QueryNfsDatastoreAssociatedWithFileSystem*.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        fileSystemId:
          description: |2
            *StorageFileSystem.uuid* for the
            StorageFileSystem object
          type: string
        arrayId:
          description: |2
            *StorageArray.uuid* for the StorageArray
            object.
          type: string
      required:
        - fileSystemId
        - arrayId

    QueryObjectsOnPhysicalVsanDiskRequestType:
      type: object
      description: |2
        The parameters of *HostVsanInternalSystem.QueryObjectsOnPhysicalVsanDisk*.
      properties:
        disks:
          description: |2
            List of VSAN disk UUIDs.
          type: array
          items:
            type: string
      required:
        - disks

    QueryOptionsRequestType:
      type: object
      description: |2
        The parameters of *OptionManager.QueryOptions*.
      properties:
        name:
          type: string

    QueryPartitionCreateDescRequestType:
      type: object
      description: |2
        The parameters of *HostDiagnosticSystem.QueryPartitionCreateDesc*.
      properties:
        diskUuid:
          type: string
        diagnosticType:
          type: string
      required:
        - diskUuid
        - diagnosticType

    QueryPartitionCreateOptionsRequestType:
      type: object
      description: |2
        The parameters of *HostDiagnosticSystem.QueryPartitionCreateOptions*.
      properties:
        storageType:
          type: string
        diagnosticType:
          type: string
      required:
        - storageType
        - diagnosticType

    QueryPerfCompositeRequestType:
      type: object
      description: |2
        The parameters of *PerformanceManager.QueryPerfComposite*.
      properties:
        querySpec:
          description: |2
            A *PerfQuerySpec* object specifying the query
            parameters. This *PerfQuerySpec* object specifies a
            managed object for which composite statistics should be retrieved, with
            specific optional criteria for filtering the results.
            
            This *PerfQuerySpec* requires a valid *PerfQuerySpec.metricId* property that specifies a metric
            that is available, in common, to the entity and its children. If the
            specified metricId is not available to the entity and its children, it is
            ignored.
          $ref: '#/components/schemas/PerfQuerySpec'
      required:
        - querySpec

    QueryPerfCounterByLevelRequestType:
      type: object
      description: |2
        The parameters of *PerformanceManager.QueryPerfCounterByLevel*.
      properties:
        level:
          description: |2
            A number between 1 and 4 that specifies the collection level.
          type: integer
          format: int32
      required:
        - level

    QueryPerfCounterRequestType:
      type: object
      description: |2
        The parameters of *PerformanceManager.QueryPerfCounter*.
      properties:
        counterId:
          description: |2
            An array of one or more *counterIds* representing performance counters for which information is
            being retrieved.
          type: array
          items:
            type: integer
            format: int32
      required:
        - counterId

    QueryPerfProviderSummaryRequestType:
      type: object
      description: |2
        The parameters of *PerformanceManager.QueryPerfProviderSummary*.
      properties:
        entity:
          description: |2
            Reference to a managed object that provides performance data. If the
            entity specified by managed object reference is not a performance
            provider, an "InvalidArgument" exception is thrown.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - entity

    QueryPerfRequestType:
      type: object
      description: |2
        The parameters of *PerformanceManager.QueryPerf*.
      properties:
        querySpec:
          description: |2
            An array of *PerfQuerySpec* objects. Each *PerfQuerySpec* object specifies a managed object reference
            for an entity, plus optional criteria for filtering results. Only metrics
            for entities that can be resolved and that are valid *performance providers* are returned in
            any result.
            
            Each *PerfQuerySpec* object in the array
            submitted in this operation can query for different metrics. Or, select
            all types of statistics for a single managed entity.
            
            Raw data feed workaround: Normally, QueryPerf will return performance
            statistics stored in the VirtualCenter database. However this may not be
            suitable for certain applications. For example, applications that treat
            VirtualCenter as a raw data source, query for performance statistics
            regularly (say every 5 minutes) and extract the data for external
            archival and reporting. Such applications need better query performance.
            These applications should query statistics using QueryPerf for the base
            historical interval (5 minutes by default) having a start and end time
            range within 30 minutes from the current VirtualCenter server system
            time. These QueryPerf calls will have better performance than other
            QueryPerf calls.
          type: array
          items:
            $ref: '#/components/schemas/PerfQuerySpec'
      required:
        - querySpec

    QueryPhysicalVsanDisksRequestType:
      type: object
      description: |2
        The parameters of *HostVsanInternalSystem.QueryPhysicalVsanDisks*.
      properties:
        props:
          description: |2
            List of properties to gather. Not specifying a list will
            fetch all properties.
          type: array
          items:
            type: string

    QueryPnicStatusRequestType:
      type: object
      description: |2
        The parameters of *IscsiManager.QueryPnicStatus*.
      properties:
        pnicDevice:
          description: |2
            Physical NIC device name to check the status for
          type: string
      required:
        - pnicDevice

    QueryPointInTimeReplicaRequestType:
      type: object
      description: |2
        The parameters of *VasaProvider.QueryPointInTimeReplica*.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        groupId:
          description: |2
            List of replication group IDs.
          type: array
          items:
            $ref: '#/components/schemas/ReplicationGroupId'
        queryParam:
          description: |2
            Search criteria specification for all the groups.
          $ref: '#/components/schemas/QueryPointInTimeReplicaParam'

    QueryPolicyMetadataRequestType:
      type: object
      description: |2
        The parameters of *ProfileManager.QueryPolicyMetadata*.
      properties:
        policyName:
          description: |2
            Retrieve metadata for the specified policyNames.
            If policyName is not specified, metadata for all policies will be returned.
          type: array
          items:
            type: string
        profile:
          description: |2
            Base profile whose context needs to be used during the operation
            
            Refers instance of *Profile*.
          $ref: '#/components/schemas/ManagedObjectReference'

    QueryPortAssociatedWithArrayRequestType:
      type: object
      description: |2
        The parameters of *SmsStorageManager.QueryPortAssociatedWithArray*.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        arrayId:
          description: |2
            *StorageArray.uuid* for the StorageArray
            object.
          type: string
      required:
        - arrayId

    QueryPortAssociatedWithLunRequestType:
      type: object
      description: |2
        The parameters of *SmsStorageManager.QueryPortAssociatedWithLun*.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        scsi3Id:
          description: |2
            *StorageLun.uuid* for the StorageLun
            object.
          type: string
        arrayId:
          description: |2
            *StorageArray.uuid* for the StorageArray
            object.
          type: string
      required:
        - scsi3Id
        - arrayId

    QueryPortAssociatedWithProcessorRequestType:
      type: object
      description: |2
        The parameters of *SmsStorageManager.QueryPortAssociatedWithProcessor*.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        processorId:
          description: |2
            *StorageProcessor.uuid* for the
            StorageProcessor object.
          type: string
        arrayId:
          description: |2
            *StorageArray.uuid* for the StorageArray
            object.
          type: string
      required:
        - processorId
        - arrayId

    QueryProcessorAssociatedWithArrayRequestType:
      type: object
      description: |2
        The parameters of *SmsStorageManager.QueryProcessorAssociatedWithArray*.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        arrayId:
          description: |2
            *StorageArray.uuid* for the StorageArray
            object.
          type: string
      required:
        - arrayId

    QueryProfileStructureRequestType:
      type: object
      description: |2
        The parameters of *HostProfileManager.QueryProfileStructure*.
      properties:
        profile:
          description: |2
            Base profile whose context needs to be used during the operation
            
            Refers instance of *Profile*.
          $ref: '#/components/schemas/ManagedObjectReference'

    QueryProviderNameRequestType:
      type: object
      description: |2
        The parameters of *HealthUpdateManager.QueryProviderName*.
      properties:
        id:
          type: string
      required:
        - id

    QueryReplicationGroupInfoRequestType:
      type: object
      description: |2
        The parameters of *SmsStorageManager.QueryReplicationGroupInfo*.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        rgFilter:
          $ref: '#/components/schemas/ReplicationGroupFilter'
      required:
        - rgFilter

    QueryReplicationGroupRequestType:
      type: object
      description: |2
        The parameters of *VasaProvider.QueryReplicationGroup*.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        groupId:
          description: |2
            List of replication group IDs.
          type: array
          items:
            $ref: '#/components/schemas/ReplicationGroupId'

    QueryReplicationPeerRequestType:
      type: object
      description: |2
        The parameters of *VasaProvider.QueryReplicationPeer*.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        faultDomainId:
          description: |2
            An optional list of source fault domain ID.
          type: array
          items:
            $ref: '#/components/schemas/FaultDomainId'

    QueryServiceListRequestType:
      type: object
      description: |2
        The parameters of *ServiceManager.QueryServiceList*.
      properties:
        serviceName:
          description: |2
            The name of the service to be located.
          type: string
        location:
          description: |2
            The list of location information that needs to match for a service to be
            considered a match.
          type: array
          items:
            type: string

    QueryStorageContainerRequestType:
      type: object
      description: |2
        The parameters of *SmsStorageManager.QueryStorageContainer*.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        containerSpec:
          description: |2
            *StorageContainerSpec*
          $ref: '#/components/schemas/StorageContainerSpec'

    QuerySupportedFeaturesRequestType:
      type: object
      description: |2
        The parameters of *LicenseManager.QuerySupportedFeatures*.
      properties:
        host:
          description: |2
            Use the license source of the specified host.
            
            Refers instance of *HostSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'

    QuerySupportedNetworkOffloadSpecRequestType:
      type: object
      description: |2
        The parameters of *DistributedVirtualSwitchManager.QuerySupportedNetworkOffloadSpec*.
        
        ***Since:*** vSphere API Release 8.0.0.1
      properties:
        switchProductSpec:
          description: |2
            The productSpec of a
            *DistributedVirtualSwitch*.
          $ref: '#/components/schemas/DistributedVirtualSwitchProductSpec'
      required:
        - switchProductSpec

    QuerySyncingVsanObjectsRequestType:
      type: object
      description: |2
        The parameters of *HostVsanInternalSystem.QuerySyncingVsanObjects*.
      properties:
        uuids:
          description: |2
            List of VSAN/DOM object UUIDs to restrict search to.
          type: array
          items:
            type: string

    QueryTargetCapabilitiesRequestType:
      type: object
      description: |2
        The parameters of *EnvironmentBrowser.QueryTargetCapabilities*.
      properties:
        host:
          description: |2
            If specified, the host whose capabilities are requested.
            
            Refers instance of *HostSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'

    QueryUnmonitoredHostsRequestType:
      type: object
      description: |2
        The parameters of *HealthUpdateManager.QueryUnmonitoredHosts*.
      properties:
        providerId:
          description: |2
            The provider id.
          type: string
        cluster:
          description: |2
            The cluster.
            
            Refers instance of *ClusterComputeResource*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - providerId
        - cluster

    QueryVMotionCompatibilityExRequestType:
      type: object
      description: |2
        The parameters of *VirtualMachineProvisioningChecker.QueryVMotionCompatibilityEx_Task*.
      properties:
        vm:
          description: |2
            The set of virtual machines to analyze for compatibility. All
            virtual machines are assumed to be powered-on for the purposes of
            this operation.
            
            Refers instances of *VirtualMachine*.
          type: array
          items:
            $ref: '#/components/schemas/ManagedObjectReference'
        host:
          description: |2
            The set of hosts to analyze for compatibility. All hosts
            are assumed to be connected and not in maintenance mode for the
            purposes of this operation.
            
            Refers instances of *HostSystem*.
          type: array
          items:
            $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - vm
        - host

    QueryVMotionCompatibilityRequestType:
      type: object
      description: |2
        The parameters of *ServiceInstance.QueryVMotionCompatibility*.
      properties:
        vm:
          description: |2
            The virtual machine that is the designated VMotion candidate.
            
            Refers instance of *VirtualMachine*.
          $ref: '#/components/schemas/ManagedObjectReference'
        host:
          description: |2
            The group of hosts to analyze for compatibility.
            
            Refers instances of *HostSystem*.
          type: array
          items:
            $ref: '#/components/schemas/ManagedObjectReference'
        compatibility:
          description: |2
            The set of compatibility types to investigate.
            Each is a string chosen from VMotionCompatibilityType. If this
            argument is not set, then all compatibility types are
            investigated.
          type: array
          items:
            type: string
      required:
        - vm
        - host

    QueryVirtualDiskFragmentationRequestType:
      type: object
      description: |2
        The parameters of *VirtualDiskManager.QueryVirtualDiskFragmentation*.
      properties:
        name:
          description: |2
            The name of the disk, either a datastore path or a URL
            referring to the virtual disk for which to return the
            percentage of fragmentation.
          type: string
        datacenter:
          description: |2
            If <code>name</code> is a datastore path, the datacenter for
            that datastore path. Not needed when invoked directly on ESX.
            If not specified on a call to VirtualCenter,
            <code>name</code> must be a URL.
            
            Refers instance of *Datacenter*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - name

    QueryVirtualDiskGeometryRequestType:
      type: object
      description: |2
        The parameters of *VirtualDiskManager.QueryVirtualDiskGeometry*.
      properties:
        name:
          description: |2
            The name of the disk, either a datastore path or a URL
            referring to the virtual disk from which to get geometry information.
          type: string
        datacenter:
          description: |2
            If <code>name</code> is a datastore path, the datacenter for
            that datastore path. Not needed when invoked directly on ESX.
            If not specified on a call to VirtualCenter,
            <code>name</code> must be a URL.
            
            Refers instance of *Datacenter*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - name

    QueryVirtualDiskUuidExRequestType:
      type: object
      description: |2
        The parameters of *VcenterVStorageObjectManager.QueryVirtualDiskUuidEx*.
        
        ***Since:*** vSphere API Release 8.0.3.0
      properties:
        name:
          description: |2
            The name of the disk, either a datastore path or a URL
            referring to the virtual disk whose uuid for the DDB entry needs to be queried.
            A datastore path has the form
            > \[_datastore_\] _path_
            
            where
            - _datastore_ is the datastore name.
            - _path_ is a slash-delimited path from the root of the datastore.
            
            An example datastore path is "\[storage\] path/to/file.extension".
          type: string
        datacenter:
          description: |2
            If <code>name</code> is a datastore path, the datacenter for
            that datastore path is mandatory. Not needed when invoked directly on ESX.
            If not specified on a call from VirtualCenter,
            <code>name</code> must be a URL.
            
            Refers instance of *Datacenter*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - name

    QueryVirtualDiskUuidRequestType:
      type: object
      description: |2
        The parameters of *VirtualDiskManager.QueryVirtualDiskUuid*.
      properties:
        name:
          description: |2
            The name of the disk, either a datastore path or a URL
            referring to the virtual disk from which to get SCSI inquiry
            page 0x83 data.
          type: string
        datacenter:
          description: |2
            If <code>name</code> is a datastore path, the datacenter for
            that datastore path. Not needed when invoked directly on ESX.
            If not specified on a call to VirtualCenter,
            <code>name</code> must be a URL.
            
            Refers instance of *Datacenter*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - name

    QueryVmfsDatastoreAssociatedWithLunRequestType:
      type: object
      description: |2
        The parameters of *SmsStorageManager.QueryVmfsDatastoreAssociatedWithLun*.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        scsi3Id:
          description: |2
            *StorageLun.uuid* for the StorageLun object
          type: string
        arrayId:
          description: |2
            *StorageArray.uuid* for the StorageArray
            object.
          type: string
      required:
        - scsi3Id
        - arrayId

    QueryVmfsDatastoreCreateOptionsRequestType:
      type: object
      description: |2
        The parameters of *HostDatastoreSystem.QueryVmfsDatastoreCreateOptions*.
      properties:
        devicePath:
          description: |2
            The devicePath of the disk on which datastore creation
            options are generated.
          type: string
        vmfsMajorVersion:
          description: |2
            major version of VMFS to be used for
            formatting the datastore. If this
            parameter is not specified, then the highest
            *supported VMFS major version* for the host
            is used.
          type: integer
          format: int32
      required:
        - devicePath

    QueryVmfsDatastoreExpandOptionsRequestType:
      type: object
      description: |2
        The parameters of *HostDatastoreSystem.QueryVmfsDatastoreExpandOptions*.
      properties:
        datastore:
          description: |2
            The datastore to be expanded.
            
            Refers instance of *Datastore*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - datastore

    QueryVmfsDatastoreExtendOptionsRequestType:
      type: object
      description: |2
        The parameters of *HostDatastoreSystem.QueryVmfsDatastoreExtendOptions*.
      properties:
        datastore:
          description: |2
            The datastore to be extended.
            
            Refers instance of *Datastore*.
          $ref: '#/components/schemas/ManagedObjectReference'
        devicePath:
          description: |2
            The devicePath of the disk on which datastore extension
            options are generated.
          type: string
        suppressExpandCandidates:
          description: |2
            Indicates whether to exclude options that can be
            used for extent expansion also.
            Free space can be used for adding an extent or expanding an existing
            extent. If this parameter is set to true, the list of options
            returned will not include free space that can be used for expansion.
          type: boolean
      required:
        - datastore
        - devicePath

    QueryVnicStatusRequestType:
      type: object
      description: |2
        The parameters of *IscsiManager.QueryVnicStatus*.
      properties:
        vnicDevice:
          description: |2
            Virtual NIC device to check the status for
          type: string
      required:
        - vnicDevice

    QueryVsanObjectUuidsByFilterRequestType:
      type: object
      description: |2
        The parameters of *HostVsanInternalSystem.QueryVsanObjectUuidsByFilter*.
      properties:
        uuids:
          description: |2
            Objects UUID will be checked against the filtering
            conditions.
          type: array
          items:
            type: string
        limit:
          description: |2
            To limit the size of the result set.
          type: integer
          format: int32
        version:
          description: |2
            Filtering condition 1: object version.
          type: integer
          format: int32

    QueryVsanObjectsRequestType:
      type: object
      description: |2
        The parameters of *HostVsanInternalSystem.QueryVsanObjects*.
      properties:
        uuids:
          description: |2
            List of VSAN/DOM object UUIDs.
          type: array
          items:
            type: string

    QueryVsanStatisticsRequestType:
      type: object
      description: |2
        The parameters of *HostVsanInternalSystem.QueryVsanStatistics*.
      properties:
        labels:
          description: |2
            List of labels of counters to retrieve.
          type: array
          items:
            type: string
      required:
        - labels

    QueryVsanUpgradeStatusRequestType:
      type: object
      description: |2
        The parameters of *VsanUpgradeSystem.QueryVsanUpgradeStatus*.
      properties:
        cluster:
          description: |2
            The cluster for which to retrieve the upgrade status.
            
            Refers instance of *ClusterComputeResource*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - cluster

    ReadEnvironmentVariableInGuestRequestType:
      type: object
      description: |2
        The parameters of *GuestProcessManager.ReadEnvironmentVariableInGuest*.
      properties:
        vm:
          description: |2
            Virtual machine to perform the operation on.
            
            ***Required privileges:*** VirtualMachine.GuestOperations.Query
            
            Refers instance of *VirtualMachine*.
          $ref: '#/components/schemas/ManagedObjectReference'
        auth:
          description: |2
            The guest authentication data. See
            *GuestAuthentication*.
          $ref: '#/components/schemas/GuestAuthentication'
        names:
          description: |2
            The names of the variables to be read. If not set, then
            all the environment variables are returned.
          type: array
          items:
            type: string
      required:
        - vm
        - auth

    ReadNextEventsRequestType:
      type: object
      description: |2
        The parameters of *EventHistoryCollector.ReadNextEvents*.
      properties:
        maxCount:
          description: |2
            The maximum number of items in the page.
          type: integer
          format: int32
      required:
        - maxCount

    ReadNextTasksRequestType:
      type: object
      description: |2
        The parameters of *TaskHistoryCollector.ReadNextTasks*.
      properties:
        maxCount:
          description: |2
            The maximum number of items in the page.
          type: integer
          format: int32
      required:
        - maxCount

    ReadPreviousEventsRequestType:
      type: object
      description: |2
        The parameters of *EventHistoryCollector.ReadPreviousEvents*.
      properties:
        maxCount:
          description: |2
            The maximum number of items in the page.
          type: integer
          format: int32
      required:
        - maxCount

    ReadPreviousTasksRequestType:
      type: object
      description: |2
        The parameters of *TaskHistoryCollector.ReadPreviousTasks*.
      properties:
        maxCount:
          description: |2
            The maximum number of items in the page.
          type: integer
          format: int32
      required:
        - maxCount

    RebootHostRequestType:
      type: object
      description: |2
        The parameters of *HostSystem.RebootHost_Task*.
      properties:
        force:
          description: |2
            Flag to specify whether or not the host should be rebooted
            regardless of whether it is in maintenance mode. If true, the host
            is rebooted, even if there are virtual machines running or other
            operations in progress.
          type: boolean
      required:
        - force

    RecommendDatastoresRequestType:
      type: object
      description: |2
        The parameters of *StorageResourceManager.RecommendDatastores*.
      properties:
        storageSpec:
          $ref: '#/components/schemas/StoragePlacementSpec'
      required:
        - storageSpec

    RecommendHostsForVmRequestType:
      type: object
      description: |2
        The parameters of *ClusterComputeResource.RecommendHostsForVm*.
      properties:
        vm:
          description: |2
            Specifies the virtual machine for which the user is requesting a
            recommendations.
            
            Refers instance of *VirtualMachine*.
          $ref: '#/components/schemas/ManagedObjectReference'
        pool:
          description: |2
            Specifies the ResourcePool into which the virtual machine is to be
            migrated. If the virtual machine is powered-on, this argument must be
            specified and it is relevant only when the virtual machine is
            powered-on. This ResourcePool cannot be in the same cluster as the
            virtual machine.
            
            Refers instance of *ResourcePool*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - vm

    ReconcileDatastoreInventoryRequestType:
      type: object
      description: |2
        The parameters of *VcenterVStorageObjectManager.ReconcileDatastoreInventory_Task*.
      properties:
        datastore:
          description: |2
            The datastore that needs to be reconciled.
            
            Refers instance of *Datastore*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - datastore

    ReconfigVMRequestType:
      type: object
      description: |2
        The parameters of *VirtualMachine.ReconfigVM_Task*.
      properties:
        spec:
          description: |2
            The new configuration values.
          $ref: '#/components/schemas/VirtualMachineConfigSpec'
      required:
        - spec

    ReconfigurationSatisfiableRequestType:
      type: object
      description: |2
        The parameters of *HostVsanInternalSystem.ReconfigurationSatisfiable*.
      properties:
        pcbs:
          description: |2
            List of PolicyChangeBatch structure with uuids and policies.
          type: array
          items:
            $ref: '#/components/schemas/VsanPolicyChangeBatch'
        ignoreSatisfiability:
          description: |2
            Optionally populate PolicyCost even though
            object cannot be reconfigured in the current cluster topology.
          type: boolean
      required:
        - pcbs

    ReconfigureAlarmRequestType:
      type: object
      description: |2
        The parameters of *Alarm.ReconfigureAlarm*.
      properties:
        spec:
          description: |2
            The new specification for the alarm.
          $ref: '#/components/schemas/AlarmSpec'
      required:
        - spec

    ReconfigureAutostartRequestType:
      type: object
      description: |2
        The parameters of *HostAutoStartManager.ReconfigureAutostart*.
      properties:
        spec:
          description: |2
            List of changes to defaults and auto-start/auto-stop order.
          $ref: '#/components/schemas/HostAutoStartManagerConfig'
      required:
        - spec

    ReconfigureClusterRequestType:
      type: object
      description: |2
        The parameters of *ClusterComputeResource.ReconfigureCluster_Task*.
      properties:
        spec:
          description: |2
            A set of configuration changes to apply to the cluster. The
            specification can be a complete set of changes or a partial set of
            changes, applied incrementally.
          $ref: '#/components/schemas/ClusterConfigSpec'
        modify:
          description: |2
            Flag to specify whether the specification ("spec") should
            be applied incrementally. If "modify" is false and the
            operation succeeds, then the configuration of the cluster
            matches the specification exactly; in this case any unset
            portions of the specification will result in unset or
            default portions of the configuration.
          type: boolean
      required:
        - spec
        - modify

    ReconfigureComputeResourceRequestType:
      type: object
      description: |2
        The parameters of *ComputeResource.ReconfigureComputeResource_Task*.
      properties:
        spec:
          description: |2
            A set of configuration changes to apply to the compute resource.
            The specification can be a complete set of changes or a partial
            set of changes, applied incrementally. When invoking
            reconfigureEx on a cluster, this argument may be a
            *ClusterConfigSpecEx* object.
          $ref: '#/components/schemas/ComputeResourceConfigSpec'
        modify:
          description: |2
            Flag to specify whether the specification ("spec") should
            be applied incrementally. If "modify" is false and the
            operation succeeds, then the configuration of the cluster
            matches the specification exactly; in this case any unset
            portions of the specification will result in unset or
            default portions of the configuration.
          type: boolean
      required:
        - spec
        - modify

    ReconfigureDVPortRequestType:
      type: object
      description: |2
        The parameters of *DistributedVirtualSwitch.ReconfigureDVPort_Task*.
      properties:
        port:
          description: |2
            The specification of the ports.
          type: array
          items:
            $ref: '#/components/schemas/DVPortConfigSpec'
      required:
        - port

    ReconfigureDVPortgroupRequestType:
      type: object
      description: |2
        The parameters of *DistributedVirtualPortgroup.ReconfigureDVPortgroup_Task*.
      properties:
        spec:
          description: |2
            Configuration data for the portgroup.
          $ref: '#/components/schemas/DVPortgroupConfigSpec'
      required:
        - spec

    ReconfigureDatacenterRequestType:
      type: object
      description: |2
        The parameters of *Datacenter.ReconfigureDatacenter_Task*.
      properties:
        spec:
          description: |2
            A set of configuration changes to apply to the datacenter.
            The specification can be a complete set of changes or a partial
            set of changes, applied incrementally.
          $ref: '#/components/schemas/DatacenterConfigSpec'
        modify:
          description: |2
            Flag to specify whether the specification ("spec") should
            be applied incrementally. If "modify" is false and the
            operation succeeds, then the configuration of the datacenter
            matches the specification exactly; in this case any unset
            portions of the specification will result in unset or
            default portions of the configuration.
          type: boolean
      required:
        - spec
        - modify

    ReconfigureDomObjectRequestType:
      type: object
      description: |2
        The parameters of *HostVsanInternalSystem.ReconfigureDomObject*.
      properties:
        uuid:
          description: |2
            DOM object UUID.
          type: string
        policy:
          description: |2
            VSAN expression formatted policy string.
          type: string
      required:
        - uuid
        - policy

    ReconfigureDvsRequestType:
      type: object
      description: |2
        The parameters of *DistributedVirtualSwitch.ReconfigureDvs_Task*.
      properties:
        spec:
          description: |2
            The configuration of the switch
          $ref: '#/components/schemas/DVSConfigSpec'
      required:
        - spec

    ReconfigureScheduledTaskRequestType:
      type: object
      description: |2
        The parameters of *ScheduledTask.ReconfigureScheduledTask*.
      properties:
        spec:
          description: |2
            The new specification for the scheduled task.
          $ref: '#/components/schemas/ScheduledTaskSpec'
      required:
        - spec

    ReconfigureServiceConsoleReservationRequestType:
      type: object
      description: |2
        The parameters of *HostMemorySystem.ReconfigureServiceConsoleReservation*.
      properties:
        cfgBytes:
          type: integer
          format: int64
      required:
        - cfgBytes

    ReconfigureSnmpAgentRequestType:
      type: object
      description: |2
        The parameters of *HostSnmpSystem.ReconfigureSnmpAgent*.
      properties:
        spec:
          $ref: '#/components/schemas/HostSnmpConfigSpec'
      required:
        - spec

    ReconfigureVirtualMachineReservationRequestType:
      type: object
      description: |2
        The parameters of *HostMemorySystem.ReconfigureVirtualMachineReservation*.
      properties:
        spec:
          $ref: '#/components/schemas/VirtualMachineMemoryReservationSpec'
      required:
        - spec

    ReconnectHostRequestType:
      type: object
      description: |2
        The parameters of *HostSystem.ReconnectHost_Task*.
      properties:
        cnxSpec:
          description: |2
            Includes the parameters to use, including user name and password,
            when reconnecting to the host. If this parameter is not specified,
            the default connection parameters is used.
          $ref: '#/components/schemas/HostConnectSpec'
        reconnectSpec:
          description: |2
            Includes connection parameters specific to
            reconnect. This will mainly be used to indicate how to
            handle divergence between the host settings and vCenter Server
            settings when the host was disconnected.
          $ref: '#/components/schemas/HostSystemReconnectSpec'

    RectifyDvsHostRequestType:
      type: object
      description: |2
        The parameters of *DistributedVirtualSwitch.RectifyDvsHost_Task*.
      properties:
        hosts:
          description: |2
            The hosts to be rectified.
            
            Refers instances of *HostSystem*.
          type: array
          items:
            $ref: '#/components/schemas/ManagedObjectReference'

    RectifyDvsOnHostRequestType:
      type: object
      description: |2
        The parameters of *DistributedVirtualSwitchManager.RectifyDvsOnHost_Task*.
      properties:
        hosts:
          description: |2
            The hosts to be rectified.
            
            Refers instances of *HostSystem*.
          type: array
          items:
            $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - hosts

    RefreshDVPortStateRequestType:
      type: object
      description: |2
        The parameters of *DistributedVirtualSwitch.RefreshDVPortState*.
      properties:
        portKeys:
          description: |2
            The keys of the ports to be refreshed. If not specified, all port
            states are refreshed.
          type: array
          items:
            type: string

    RefreshStorageDrsRecommendationRequestType:
      type: object
      description: |2
        The parameters of *StorageResourceManager.RefreshStorageDrsRecommendation*.
      properties:
        pod:
          description: |2
            The storage pod.
            The recommendations generated is stored at
            *PodStorageDrsEntry.recommendation*.
            
            Refers instance of *StoragePod*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - pod

    RefreshStorageDrsRecommendationsForPodRequestType:
      type: object
      description: |2
        The parameters of *StorageResourceManager.RefreshStorageDrsRecommendationsForPod_Task*.
      properties:
        pod:
          description: |2
            The storage pod.
            The recommendations generated is stored at
            *PodStorageDrsEntry.recommendation*.
            
            Refers instance of *StoragePod*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - pod

    RegisterAgentVmRequestType:
      type: object
      description: |2
        The parameters of *Agency.RegisterAgentVm*.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        agentVm:
          description: |2
            The managed object reference to the agent VM.
            
            Refers instance of *VirtualMachine*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - agentVm

    RegisterChildVMRequestType:
      type: object
      description: |2
        The parameters of *ResourcePool.RegisterChildVM_Task*.
      properties:
        path:
          description: |2
            A datastore path to the virtual machine. If the path ends with
            ".vmtx", indicating that it refers to a VM template, an InvalidArgument
            fault is thrown.
          type: string
        name:
          description: |2
            The name to be assigned to the virtual machine. If this parameter is
            not set, the displayName configuration parameter of the virtual machine is
            used. An entity name must be a non-empty string of less than 80
            characters. The slash (/), backslash (\\) and percent (%) will be
            escaped using the URL syntax. For example, %2F.
          type: string
        host:
          description: |2
            The target host on which the virtual machine will run. This parameter
            must specify a host that is a member of the ComputeResource to which this
            resource pool belongs. For a stand-alone host or a cluster with DRS,
            the parameter can be omitted, and the system selects a default.
            
            Refers instance of *HostSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - path

    RegisterDiskRequestType:
      type: object
      description: |2
        The parameters of *VcenterVStorageObjectManager.RegisterDisk*.
      properties:
        path:
          description: |2
            URL path to the virtual disk.
          type: string
        name:
          description: |2
            The descriptive name of the disk object. If
            unset the name will be automatically determined
            from the path. @see vim.vslm.BaseConfigInfo#name
          type: string
      required:
        - path

    RegisterExtensionRequestType:
      type: object
      description: |2
        The parameters of *ExtensionManager.RegisterExtension*.
      properties:
        extension:
          description: |2
            Extension description to register.
          $ref: '#/components/schemas/Extension'
      required:
        - extension

    RegisterHealthUpdateProviderRequestType:
      type: object
      description: |2
        The parameters of *HealthUpdateManager.RegisterHealthUpdateProvider*.
      properties:
        name:
          description: |2
            The provider name. Should follow Java package
            naming convention to minimize name clashes with
            currently registered providers.
            For example, "com.vmware.HealthUpdateProvider".
          type: string
        healthUpdateInfo:
          description: |2
            The list of healthUpdateInfo that can be
            reported in healthUpdates.
          type: array
          items:
            $ref: '#/components/schemas/HealthUpdateInfo'
      required:
        - name

    RegisterKmipServerRequestType:
      type: object
      description: |2
        The parameters of *CryptoManagerKmip.RegisterKmipServer*.
      properties:
        server:
          description: |2
            \[in\] KMIP server connection information.
          $ref: '#/components/schemas/KmipServerSpec'
      required:
        - server

    RegisterKmsClusterRequestType:
      type: object
      description: |2
        The parameters of *CryptoManagerKmip.RegisterKmsCluster*.
      properties:
        clusterId:
          description: |2
            \[in\] KMS cluster ID to register.
          $ref: '#/components/schemas/KeyProviderId'
        managementType:
          description: |2
            \[in\] Key provider management type
            See *KmipClusterInfoKmsManagementType_enum*
            for valid values.
            By default trustAuthority.
          type: string
      required:
        - clusterId

    RegisterProviderRequestType:
      type: object
      description: |2
        The parameters of *SmsStorageManager.RegisterProvider_Task*.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        providerSpec:
          description: |2
            *SmsProviderSpec*
            containing parameters needed to register the
            provider
          $ref: '#/components/schemas/SmsProviderSpec'
      required:
        - providerSpec

    RegisterVMRequestType:
      type: object
      description: |2
        The parameters of *Folder.RegisterVM_Task*.
      properties:
        path:
          description: |2
            A datastore path to the virtual machine.
          type: string
        name:
          description: |2
            The name to be assigned to the virtual machine. If this parameter is
            not set, the displayName configuration parameter of the virtual machine is
            used. An entity name must be a non-empty string of less than 80
            characters. The slash (/), backslash (\\) and percent (%) will be
            escaped using the URL syntax. For example, %2F.
          type: string
        asTemplate:
          description: |2
            Flag to specify whether or not the virtual machine
            should be marked as a template.
          type: boolean
        pool:
          description: |2
            The resource pool to which the virtual machine should be attached.
            If imported as a template, this parameter is not set.
            
            ***Required privileges:*** Resource.AssignVMToPool
            
            Refers instance of *ResourcePool*.
          $ref: '#/components/schemas/ManagedObjectReference'
        host:
          description: |2
            The target host on which the virtual machine will run. This parameter
            must specify a host that is a member of the ComputeResource indirectly
            specified by the pool. For a stand-alone host or a cluster,
            the parameter can be omitted, and the system selects a default.
            
            Refers instance of *HostSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - path
        - asTemplate

    ReleaseCredentialsInGuestRequestType:
      type: object
      description: |2
        The parameters of *GuestAuthManager.ReleaseCredentialsInGuest*.
      properties:
        vm:
          description: |2
            MoRef of the VM to perform the operation on.
            
            ***Required privileges:*** VirtualMachine.GuestOperations.Query
            
            Refers instance of *VirtualMachine*.
          $ref: '#/components/schemas/ManagedObjectReference'
        auth:
          description: |2
            The guest authentication data. See
            *GuestAuthentication*.
          $ref: '#/components/schemas/GuestAuthentication'
      required:
        - vm
        - auth

    ReleaseIpAllocationRequestType:
      type: object
      description: |2
        The parameters of *IpPoolManager.ReleaseIpAllocation*.
      properties:
        dc:
          description: |2
            The datacenter on which to find the pool
            
            ***Required privileges:*** Datacenter.IpPoolReleaseIp
            
            Refers instance of *Datacenter*.
          $ref: '#/components/schemas/ManagedObjectReference'
        poolId:
          description: |2
            The unique ID of the pool
          type: integer
          format: int32
        allocationId:
          description: |2
            The unique ID for this allocation
          type: string
      required:
        - dc
        - poolId
        - allocationId

    ReleaseManagedSnapshotRequestType:
      type: object
      description: |2
        The parameters of *VirtualDiskManager.ReleaseManagedSnapshot*.
      properties:
        vdisk:
          description: |2
            \- The name of the disk to release, either a datastore path or a URL
            referring to the virtual disk.
          type: string
        datacenter:
          description: |2
            If <code>vdisk</code> is a datastore path, the datacenter for
            that datastore path. Not needed when invoked directly on ESX.
            If not specified on a call to VirtualCenter,
            <code>vdisk</code> must be a URL.
            
            Refers instance of *Datacenter*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - vdisk

    RelocateVMRequestType:
      type: object
      description: |2
        The parameters of *VirtualMachine.RelocateVM_Task*.
      properties:
        spec:
          description: |2
            The specification of where to relocate the virtual machine
            (see *VirtualMachineRelocateSpec*).
          $ref: '#/components/schemas/VirtualMachineRelocateSpec'
        priority:
          description: |2
            The task priority
            (see *VirtualMachineMovePriority_enum*).
          $ref: '#/components/schemas/VirtualMachineMovePriority_enum'
      required:
        - spec

    RelocateVStorageObjectRequestType:
      type: object
      description: |2
        The parameters of *VcenterVStorageObjectManager.RelocateVStorageObject_Task*.
      properties:
        id:
          description: |2
            The ID of the virtual storage object.
          $ref: '#/components/schemas/ID'
        datastore:
          description: |2
            The datastore where the source virtual storage object
            is located.
            
            Refers instance of *Datastore*.
          $ref: '#/components/schemas/ManagedObjectReference'
        spec:
          description: |2
            The specification for relocation of the virtual
            storage object.
          $ref: '#/components/schemas/VslmRelocateSpec'
      required:
        - id
        - datastore
        - spec

    RemoveAllSnapshotsRequestType:
      type: object
      description: |2
        The parameters of *VirtualMachine.RemoveAllSnapshots_Task*.
      properties:
        consolidate:
          description: |2
            (optional) If set to true, the virtual disks of the deleted
            snapshot will be merged with other disk if possible. Default to true.
          type: boolean
        spec:
          description: |2
            (optional) When provided, only snapshots satisfying the
            criteria described by the spec will be removed. If unset, all snapshots
            will be removed.
            
            ***Since:*** vSphere API Release 8.0.3.0
          $ref: '#/components/schemas/SnapshotSelectionSpec'

    RemoveAssignedLicenseRequestType:
      type: object
      description: |2
        The parameters of *LicenseAssignmentManager.RemoveAssignedLicense*.
      properties:
        entityId:
          description: |2
            ID of the entity. E.g. HostSystem.
          type: string
      required:
        - entityId

    RemoveAuthorizationRoleRequestType:
      type: object
      description: |2
        The parameters of *AuthorizationManager.RemoveAuthorizationRole*.
      properties:
        roleId:
          type: integer
          format: int32
        failIfUsed:
          description: |2
            If true, prevents the role from being
            removed if any permissions are using it.
          type: boolean
      required:
        - roleId
        - failIfUsed

    RemoveCustomFieldDefRequestType:
      type: object
      description: |2
        The parameters of *CustomFieldsManager.RemoveCustomFieldDef*.
      properties:
        key:
          description: |2
            The unique key for the field definition.
          type: integer
          format: int32
      required:
        - key

    RemoveDatastoreExRequestType:
      type: object
      description: |2
        The parameters of *HostDatastoreSystem.RemoveDatastoreEx_Task*.
      properties:
        datastore:
          description: |2
            each element specifies one datastore to be removed.
            
            Refers instances of *Datastore*.
          type: array
          items:
            $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - datastore

    RemoveDatastoreRequestType:
      type: object
      description: |2
        The parameters of *HostDatastoreSystem.RemoveDatastore*.
      properties:
        datastore:
          description: |2
            The datastore to be removed.
            
            Refers instance of *Datastore*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - datastore

    RemoveDiskMappingRequestType:
      type: object
      description: |2
        The parameters of *HostVsanSystem.RemoveDiskMapping_Task*.
      properties:
        mapping:
          description: |2
            list of disk mappings to be removed from VSAN usage.
          type: array
          items:
            $ref: '#/components/schemas/VsanHostDiskMapping'
        maintenanceSpec:
          description: |2
            Any additional actions to move data out of the disk
            before removing it. See *HostMaintenanceSpec*.
            If unspecified, there is no action taken to move
            data from the disk.
          $ref: '#/components/schemas/HostMaintenanceSpec'
        timeout:
          description: |2
            Time to wait for the task to complete in seconds.
            If the value is less than or equal to zero, there
            is no timeout. The operation fails with a Timedout
            exception if it timed out.
          type: integer
          format: int32
      required:
        - mapping

    RemoveDiskRequestType:
      type: object
      description: |2
        The parameters of *HostVsanSystem.RemoveDisk_Task*.
      properties:
        disk:
          description: |2
            list of disks to be removed from use by the VSAN service.
          type: array
          items:
            $ref: '#/components/schemas/HostScsiDisk'
        maintenanceSpec:
          description: |2
            Any additional actions to move data out of the disk
            before removing it. See *HostMaintenanceSpec*.
            If unspecified, there is no action taken to move
            data from the disk.
          $ref: '#/components/schemas/HostMaintenanceSpec'
        timeout:
          description: |2
            Time to wait for the task to complete in seconds.
            If the value is less than or equal to zero, there
            is no timeout. The operation fails with a Timedout
            exception if it timed out.
          type: integer
          format: int32
      required:
        - disk

    RemoveEntityPermissionRequestType:
      type: object
      description: |2
        The parameters of *AuthorizationManager.RemoveEntityPermission*.
      properties:
        entity:
          description: |2
            Entity on which a permission is removed.
            
            ***Required privileges:*** Authorization.ModifyPermissions
            
            Refers instance of *ManagedEntity*.
          $ref: '#/components/schemas/ManagedObjectReference'
        user:
          description: |2
            User or group for which the permission is defined.
          type: string
        isGroup:
          description: |2
            True, if user refers to a group name; false, for a user name.
          type: boolean
      required:
        - entity
        - user
        - isGroup

    RemoveFilterEntitiesRequestType:
      type: object
      description: |2
        The parameters of *HealthUpdateManager.RemoveFilterEntities*.
      properties:
        filterId:
          description: |2
            The filter id.
          type: string
        entities:
          description: |2
            The list of removed managed entities.
            
            Refers instances of *ManagedEntity*.
          type: array
          items:
            $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - filterId

    RemoveFilterRequestType:
      type: object
      description: |2
        The parameters of *HealthUpdateManager.RemoveFilter*.
      properties:
        filterId:
          description: |2
            The filter id.
          type: string
      required:
        - filterId

    RemoveGroupRequestType:
      type: object
      description: |2
        The parameters of *HostLocalAccountManager.RemoveGroup*.
      properties:
        groupName:
          description: |2
            Group ID of the group account being removed.
          type: string
      required:
        - groupName

    RemoveGuestAliasByCertRequestType:
      type: object
      description: |2
        The parameters of *GuestAliasManager.RemoveGuestAliasByCert*.
      properties:
        vm:
          description: |2
            Virtual machine to perform the operation on.
            
            ***Required privileges:*** VirtualMachine.GuestOperations.ModifyAliases
            
            Refers instance of *VirtualMachine*.
          $ref: '#/components/schemas/ManagedObjectReference'
        auth:
          description: |2
            The guest authentication data for this operation. See
            *GuestAuthentication*. These credentials must satisfy
            authentication requirements
            for a guest account on the specified virtual machine.
          $ref: '#/components/schemas/GuestAuthentication'
        username:
          description: |2
            Username for the guest account on the virtual machine.
          type: string
        base64Cert:
          description: |2
            The X.509 certificate to be removed, in base64
            encoded DER format.
          type: string
      required:
        - vm
        - auth
        - username
        - base64Cert

    RemoveGuestAliasRequestType:
      type: object
      description: |2
        The parameters of *GuestAliasManager.RemoveGuestAlias*.
      properties:
        vm:
          description: |2
            Virtual machine to perform the operation on.
            
            ***Required privileges:*** VirtualMachine.GuestOperations.ModifyAliases
            
            Refers instance of *VirtualMachine*.
          $ref: '#/components/schemas/ManagedObjectReference'
        auth:
          description: |2
            The guest authentication data for this operation. See
            *GuestAuthentication*. These credentials must satisfy
            authentication requirements
            for a guest account on the specified virtual machine.
          $ref: '#/components/schemas/GuestAuthentication'
        username:
          description: |2
            Username for the guest account on the virtual machine.
          type: string
        base64Cert:
          description: |2
            The X.509 certificate associated with the alias to be
            removed, in base64 encoded DER format.
          type: string
        subject:
          description: |2
            The subject of the alias.
          $ref: '#/components/schemas/GuestAuthSubject'
      required:
        - vm
        - auth
        - username
        - base64Cert
        - subject

    RemoveInternetScsiSendTargetsRequestType:
      type: object
      description: |2
        The parameters of *HostStorageSystem.RemoveInternetScsiSendTargets*.
      properties:
        iScsiHbaDevice:
          description: |2
            The device of the Internet SCSI HBA adapter.
          type: string
        targets:
          description: |2
            An array of iSCSI send targets to remove.
          type: array
          items:
            $ref: '#/components/schemas/HostInternetScsiHbaSendTarget'
        force:
          description: |2
            flag for forced removal of iSCSI send targets.
            If unset, force flag will be treated as false.
            
            ***Since:*** vSphere API Release 7.0.1.0
          type: boolean
      required:
        - iScsiHbaDevice
        - targets

    RemoveInternetScsiStaticTargetsRequestType:
      type: object
      description: |2
        The parameters of *HostStorageSystem.RemoveInternetScsiStaticTargets*.
      properties:
        iScsiHbaDevice:
          description: |2
            The device of the Internet SCSI HBA adapter.
          type: string
        targets:
          description: |2
            An array of iSCSI static targets to remove.
          type: array
          items:
            $ref: '#/components/schemas/HostInternetScsiHbaStaticTarget'
      required:
        - iScsiHbaDevice
        - targets

    RemoveKeyRequestType:
      type: object
      description: |2
        The parameters of *CryptoManager.RemoveKey*.
      properties:
        key:
          description: |2
            \[in\] The key to remove.
          $ref: '#/components/schemas/CryptoKeyId'
        force:
          description: |2
            \[in\] Remove the key even if in use or not existent.
          type: boolean
      required:
        - key
        - force

    RemoveKeysRequestType:
      type: object
      description: |2
        The parameters of *CryptoManager.RemoveKeys*.
      properties:
        keys:
          description: |2
            \[in\] List of keys to remove.
          type: array
          items:
            $ref: '#/components/schemas/CryptoKeyId'
        force:
          description: |2
            \[in\] Remove the key even if in use. Always successful.
          type: boolean
      required:
        - force

    RemoveKmipServerRequestType:
      type: object
      description: |2
        The parameters of *CryptoManagerKmip.RemoveKmipServer*.
      properties:
        clusterId:
          description: |2
            \[in\] KMIP cluster ID.
          $ref: '#/components/schemas/KeyProviderId'
        serverName:
          description: |2
            \[in\] KMIP server name.
          type: string
      required:
        - clusterId
        - serverName

    RemoveLicenseLabelRequestType:
      type: object
      description: |2
        The parameters of *LicenseManager.RemoveLicenseLabel*.
      properties:
        licenseKey:
          description: |2
            A license.
          type: string
        labelKey:
          description: |2
            A label key.
          type: string
      required:
        - licenseKey
        - labelKey

    RemoveLicenseRequestType:
      type: object
      description: |2
        The parameters of *LicenseManager.RemoveLicense*.
      properties:
        licenseKey:
          description: |2
            A licenses. E.g. a serial license.
          type: string
      required:
        - licenseKey

    RemoveMonitoredEntitiesRequestType:
      type: object
      description: |2
        The parameters of *HealthUpdateManager.RemoveMonitoredEntities*.
      properties:
        providerId:
          description: |2
            The provider id.
          type: string
        entities:
          description: |2
            The entities that are no longer monitored by
            this provider.
            
            Refers instances of *ManagedEntity*.
          type: array
          items:
            $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - providerId

    RemoveNetworkResourcePoolRequestType:
      type: object
      description: |2
        The parameters of *DistributedVirtualSwitch.RemoveNetworkResourcePool*.
      properties:
        key:
          description: |2
            The network resource pool key.
          type: array
          items:
            type: string
      required:
        - key

    RemoveNvmeOverRdmaAdapterRequestType:
      type: object
      description: |2
        The parameters of *HostStorageSystem.RemoveNvmeOverRdmaAdapter*.
      properties:
        hbaDeviceName:
          description: |2
            The device name of the NVME over RDMA adapter to be removed.
          type: string
      required:
        - hbaDeviceName

    RemovePerfIntervalRequestType:
      type: object
      description: |2
        The parameters of *PerformanceManager.RemovePerfInterval*.
      properties:
        samplePeriod:
          description: |2
            The sampling period, in seconds, for the specified interval being
            removed.
          type: integer
          format: int32
      required:
        - samplePeriod

    RemovePortGroupRequestType:
      type: object
      description: |2
        The parameters of *HostNetworkSystem.RemovePortGroup*.
      properties:
        pgName:
          type: string
      required:
        - pgName

    RemoveServiceConsoleVirtualNicRequestType:
      type: object
      description: |2
        The parameters of *HostNetworkSystem.RemoveServiceConsoleVirtualNic*.
      properties:
        device:
          type: string
      required:
        - device

    RemoveSmartCardTrustAnchorByFingerprintRequestType:
      type: object
      description: |2
        The parameters of *HostActiveDirectoryAuthentication.RemoveSmartCardTrustAnchorByFingerprint*.
      properties:
        fingerprint:
          description: |2
            Certificate fingerprint
          type: string
        digest:
          description: |2
            Digest function used to compute fingerprint. One of
            *HostActiveDirectoryAuthenticationCertificateDigest_enum*.
          type: string
      required:
        - fingerprint
        - digest

    RemoveSmartCardTrustAnchorRequestType:
      type: object
      description: |2
        The parameters of *HostActiveDirectoryAuthentication.RemoveSmartCardTrustAnchor*.
      properties:
        issuer:
          description: |2
            Certificate issuer
          type: string
        serial:
          description: |2
            Certificate serial number (decimal integer)
          type: string
      required:
        - issuer
        - serial

    RemoveSnapshotRequestType:
      type: object
      description: |2
        The parameters of *VirtualMachineSnapshot.RemoveSnapshot_Task*.
      properties:
        removeChildren:
          description: |2
            Flag to specify removal of the entire snapshot subtree.
          type: boolean
        consolidate:
          description: |2
            (optional) If set to true, the virtual disk associated
            with this snapshot will be merged with other disk if possible. Defaults to true.
          type: boolean
      required:
        - removeChildren

    RemoveSoftwareAdapterRequestType:
      type: object
      description: |2
        The parameters of *HostStorageSystem.RemoveSoftwareAdapter*.
        
        ***Since:*** vSphere API Release 7.0.3.0
      properties:
        hbaDeviceName:
          description: |2
            The device name of the adapter to be removed.
          type: string
      required:
        - hbaDeviceName

    RemoveUserRequestType:
      type: object
      description: |2
        The parameters of *HostLocalAccountManager.RemoveUser*.
      properties:
        userName:
          description: |2
            User ID of the user account being removed.
          type: string
      required:
        - userName

    RemoveVirtualNicRequestType:
      type: object
      description: |2
        The parameters of *HostNetworkSystem.RemoveVirtualNic*.
      properties:
        device:
          type: string
      required:
        - device

    RemoveVirtualSwitchRequestType:
      type: object
      description: |2
        The parameters of *HostNetworkSystem.RemoveVirtualSwitch*.
      properties:
        vswitchName:
          type: string
      required:
        - vswitchName

    RenameCustomFieldDefRequestType:
      type: object
      description: |2
        The parameters of *CustomFieldsManager.RenameCustomFieldDef*.
      properties:
        key:
          description: |2
            The unique key for the field definition.
          type: integer
          format: int32
        name:
          description: |2
            The new name for the field.
          type: string
      required:
        - key
        - name

    RenameCustomizationSpecRequestType:
      type: object
      description: |2
        The parameters of *CustomizationSpecManager.RenameCustomizationSpec*.
      properties:
        name:
          type: string
        newName:
          type: string
      required:
        - name
        - newName

    RenameDatastoreRequestType:
      type: object
      description: |2
        The parameters of *Datastore.RenameDatastore*.
      properties:
        newName:
          description: |2
            The new name to assign to the datastore.
          type: string
      required:
        - newName

    RenameRequestType:
      type: object
      description: |2
        The parameters of *ManagedEntity.Rename_Task*.
      properties:
        newName:
          type: string
      required:
        - newName

    RenameSnapshotRequestType:
      type: object
      description: |2
        The parameters of *VirtualMachineSnapshot.RenameSnapshot*.
      properties:
        name:
          description: |2
            New name for the snapshot.
          type: string
        description:
          description: |2
            New description for the snapshot.
          type: string

    RenameVStorageObjectExRequestType:
      type: object
      description: |2
        The parameters of *VStorageObjectManagerBase.RenameVStorageObjectEx*.
        
        ***Since:*** vSphere API Release 8.0.2.0
      properties:
        id:
          description: |2
            The ID of the virtual storage object to be renamed.
          $ref: '#/components/schemas/ID'
        datastore:
          description: |2
            The datastore where the virtual storage object is
            located.
            
            Refers instance of *Datastore*.
          $ref: '#/components/schemas/ManagedObjectReference'
        name:
          description: |2
            The new name for the virtual storage object.
          type: string
      required:
        - id
        - datastore
        - name

    RenameVStorageObjectRequestType:
      type: object
      description: |2
        The parameters of *VcenterVStorageObjectManager.RenameVStorageObject*.
      properties:
        id:
          description: |2
            The ID of the virtual storage object to be renamed.
          $ref: '#/components/schemas/ID'
        datastore:
          description: |2
            The datastore where the virtual storage object is
            located.
            
            Refers instance of *Datastore*.
          $ref: '#/components/schemas/ManagedObjectReference'
        name:
          description: |2
            The new name for the virtual storage object.
          type: string
      required:
        - id
        - datastore
        - name

    ReplaceCACertificatesAndCRLsRequestType:
      type: object
      description: |2
        The parameters of *HostCertificateManager.ReplaceCACertificatesAndCRLs*.
      properties:
        caCert:
          description: |2
            List of SSL certificates, in PEM format,
            of all CAs that should be trusted
          type: array
          items:
            type: string
        caCrl:
          description: |2
            List of SSL CRLs, in PEM format,
            issued by trusted CAs from the above list
          type: array
          items:
            type: string
      required:
        - caCert

    ReplaceSmartCardTrustAnchorsRequestType:
      type: object
      description: |2
        The parameters of *HostActiveDirectoryAuthentication.ReplaceSmartCardTrustAnchors*.
      properties:
        certs:
          description: |2
            List of trusted CA certificates in PEM format. If empty
            then all existing trust anchors are removed.
          type: array
          items:
            type: string

    RescanHbaRequestType:
      type: object
      description: |2
        The parameters of *HostStorageSystem.RescanHba*.
      properties:
        hbaDevice:
          description: |2
            The device of the host bus adapter.
          type: string
      required:
        - hbaDevice

    ResetCounterLevelMappingRequestType:
      type: object
      description: |2
        The parameters of *PerformanceManager.ResetCounterLevelMapping*.
      properties:
        counters:
          description: |2
            An array of counter ids.
          type: array
          items:
            type: integer
            format: int32
      required:
        - counters

    ResetEntityPermissionsRequestType:
      type: object
      description: |2
        The parameters of *AuthorizationManager.ResetEntityPermissions*.
      properties:
        entity:
          description: |2
            The entity on which permissions are updated.
            
            ***Required privileges:*** Authorization.ModifyPermissions
            
            Refers instance of *ManagedEntity*.
          $ref: '#/components/schemas/ManagedObjectReference'
        permission:
          description: |2
            The list of Permission objects that define
            the new rules for access to the entity and
            potentially entities below it. If the list
            is empty, all permissions on the entity are removed.
          type: array
          items:
            $ref: '#/components/schemas/Permission'
      required:
        - entity

    ResetListViewFromViewRequestType:
      type: object
      description: |2
        The parameters of *ListView.ResetListViewFromView*.
      properties:
        view:
          description: |2
            The view to copy objects from.
            
            Refers instance of *View*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - view

    ResetListViewRequestType:
      type: object
      description: |2
        The parameters of *ListView.ResetListView*.
      properties:
        obj:
          description: |2
            The new list of objects.
            
            ***Required privileges:*** System.View
          type: array
          items:
            $ref: '#/components/schemas/ManagedObjectReference'

    ResignatureUnresolvedVmfsVolumeRequestType:
      type: object
      description: |2
        The parameters of *HostDatastoreSystem.ResignatureUnresolvedVmfsVolume_Task*.
      properties:
        resolutionSpec:
          description: |2
            A data object that describes what the disk
            extents to be used for creating the new
            VMFS volume.
          $ref: '#/components/schemas/HostUnresolvedVmfsResignatureSpec'
      required:
        - resolutionSpec

    ResolveInstallationErrorsOnClusterRequestType:
      type: object
      description: |2
        The parameters of *IoFilterManager.ResolveInstallationErrorsOnCluster_Task*.
      properties:
        filterId:
          description: |2
            ID of the filter.
          type: string
        cluster:
          description: |2
            The cluster.
            
            Refers instance of *ClusterComputeResource*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - filterId
        - cluster

    ResolveInstallationErrorsOnHostRequestType:
      type: object
      description: |2
        The parameters of *IoFilterManager.ResolveInstallationErrorsOnHost_Task*.
      properties:
        filterId:
          description: |2
            ID of the filter.
          type: string
        host:
          description: |2
            The host.
            
            Refers instance of *HostSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - filterId
        - host

    ResolveMultipleUnresolvedVmfsVolumesExRequestType:
      type: object
      description: |2
        The parameters of *HostStorageSystem.ResolveMultipleUnresolvedVmfsVolumesEx_Task*.
      properties:
        resolutionSpec:
          description: |2
            List of data object that describes what the disk
            extents to be used for creating the new
            VMFS volume.
          type: array
          items:
            $ref: '#/components/schemas/HostUnresolvedVmfsResolutionSpec'
      required:
        - resolutionSpec

    ResolveMultipleUnresolvedVmfsVolumesRequestType:
      type: object
      description: |2
        The parameters of *HostStorageSystem.ResolveMultipleUnresolvedVmfsVolumes*.
      properties:
        resolutionSpec:
          description: |2
            List of data object that describes what the disk
            extents to be used for creating the new
            VMFS volume.
          type: array
          items:
            $ref: '#/components/schemas/HostUnresolvedVmfsResolutionSpec'
      required:
        - resolutionSpec

    ResolveRequestType:
      type: object
      description: |2
        The parameters of *EamObject.Resolve*.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        issueKey:
          description: |2
            A non-empty array of issue keys.
          type: array
          items:
            type: integer
            format: int32
      required:
        - issueKey

    RestartServiceConsoleVirtualNicRequestType:
      type: object
      description: |2
        The parameters of *HostNetworkSystem.RestartServiceConsoleVirtualNic*.
      properties:
        device:
          type: string
      required:
        - device

    RestartServiceRequestType:
      type: object
      description: |2
        The parameters of *HostServiceSystem.RestartService*.
      properties:
        id:
          description: |2
            Service identifier
            (*HostServiceSystem.serviceInfo*.*HostServiceInfo.service*.*HostService.key*).
          type: string
      required:
        - id

    RestoreFirmwareConfigurationRequestType:
      type: object
      description: |2
        The parameters of *HostFirmwareSystem.RestoreFirmwareConfiguration*.
      properties:
        force:
          description: |2
            Forces application of the configuration even if the bundle
            is mismatched.
          type: boolean
      required:
        - force

    RetrieveAnswerFileForProfileRequestType:
      type: object
      description: |2
        The parameters of *HostProfileManager.RetrieveAnswerFileForProfile*.
      properties:
        host:
          description: |2
            Host with which the answer file is associated.
            
            ***Required privileges:*** Profile.Edit
            
            Refers instance of *HostSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
        applyProfile:
          description: |2
            Profile configuration used to generate answer file
          $ref: '#/components/schemas/HostApplyProfile'
      required:
        - host
        - applyProfile

    RetrieveAnswerFileRequestType:
      type: object
      description: |2
        The parameters of *HostProfileManager.RetrieveAnswerFile*.
      properties:
        host:
          description: |2
            Host with which the answer file is associated.
            
            ***Required privileges:*** Profile.Edit
            
            Refers instance of *HostSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - host

    RetrieveArgumentDescriptionRequestType:
      type: object
      description: |2
        The parameters of *EventManager.RetrieveArgumentDescription*.
      properties:
        eventTypeId:
          type: string
      required:
        - eventTypeId

    RetrieveClientCertRequestType:
      type: object
      description: |2
        The parameters of *CryptoManagerKmip.RetrieveClientCert*.
      properties:
        cluster:
          description: |2
            \[in\] KMIP cluster.
          $ref: '#/components/schemas/KeyProviderId'
      required:
        - cluster

    RetrieveClientCsrRequestType:
      type: object
      description: |2
        The parameters of *CryptoManagerKmip.RetrieveClientCsr*.
      properties:
        cluster:
          description: |2
            \[in\] KMIP cluster.
          $ref: '#/components/schemas/KeyProviderId'
      required:
        - cluster

    RetrieveDiskPartitionInfoRequestType:
      type: object
      description: |2
        The parameters of *HostStorageSystem.RetrieveDiskPartitionInfo*.
      properties:
        devicePath:
          description: |2
            An array of device path names that identify disks.
            See *ScsiDisk*.
          type: array
          items:
            type: string
      required:
        - devicePath

    RetrieveEntityPermissionsRequestType:
      type: object
      description: |2
        The parameters of *AuthorizationManager.RetrieveEntityPermissions*.
      properties:
        entity:
          description: |2
            ***Required privileges:*** System.Read
            
            Refers instance of *ManagedEntity*.
          $ref: '#/components/schemas/ManagedObjectReference'
        inherited:
          description: |2
            Whether or not to include propagating permissions
            defined by parent entities.
          type: boolean
      required:
        - entity
        - inherited

    RetrieveEntityScheduledTaskRequestType:
      type: object
      description: |2
        The parameters of *ScheduledTaskManager.RetrieveEntityScheduledTask*.
      properties:
        entity:
          description: |2
            The entity. If null, all scheduled tasks are returned
            for visible entities.
            
            Refers instance of *ManagedEntity*.
          $ref: '#/components/schemas/ManagedObjectReference'

    RetrieveHostCustomizationsForProfileRequestType:
      type: object
      description: |2
        The parameters of *HostProfileManager.RetrieveHostCustomizationsForProfile*.
      properties:
        hosts:
          description: |2
            Hosts with which the answer files are associated.
            
            ***Required privileges:*** Profile.Edit
            
            Refers instances of *HostSystem*.
          type: array
          items:
            $ref: '#/components/schemas/ManagedObjectReference'
        applyProfile:
          description: |2
            Profile configuration used to generate answer file
          $ref: '#/components/schemas/HostApplyProfile'
      required:
        - applyProfile

    RetrieveHostCustomizationsRequestType:
      type: object
      description: |2
        The parameters of *HostProfileManager.RetrieveHostCustomizations*.
      properties:
        hosts:
          description: |2
            Hosts with which the answer files are associated.
            
            ***Required privileges:*** Profile.Edit
            
            Refers instances of *HostSystem*.
          type: array
          items:
            $ref: '#/components/schemas/ManagedObjectReference'

    RetrieveHostSpecificationRequestType:
      type: object
      description: |2
        The parameters of *HostSpecificationManager.RetrieveHostSpecification*.
      properties:
        host:
          description: |2
            The specified host whose host specification will be retrieved.
            
            Refers instance of *HostSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
        fromHost:
          description: |2
            Whether retrieve from the host.
          type: boolean
      required:
        - host
        - fromHost

    RetrieveKmipServerCertRequestType:
      type: object
      description: |2
        The parameters of *CryptoManagerKmip.RetrieveKmipServerCert*.
      properties:
        keyProvider:
          description: |2
            \[in\] KMIP cluster in which the server is placed
            or will be created.
          $ref: '#/components/schemas/KeyProviderId'
        server:
          description: |2
            \[in\] KMIP server.
          $ref: '#/components/schemas/KmipServerInfo'
      required:
        - keyProvider
        - server

    RetrieveKmipServersStatusRequestType:
      type: object
      description: |2
        The parameters of *CryptoManagerKmip.RetrieveKmipServersStatus_Task*.
      properties:
        clusters:
          description: |2
            \[in\] KMIP clusters and their servers.
          type: array
          items:
            $ref: '#/components/schemas/KmipClusterInfo'

    RetrieveObjectScheduledTaskRequestType:
      type: object
      description: |2
        The parameters of *ScheduledTaskManager.RetrieveObjectScheduledTask*.
      properties:
        obj:
          description: |2
            The object. If not specified, all scheduled tasks are returned
            for visible entities and visible ManagedObjects.
          $ref: '#/components/schemas/ManagedObjectReference'

    RetrievePropertiesExRequestType:
      type: object
      description: |2
        The parameters of *PropertyCollector.RetrievePropertiesEx*.
      properties:
        specSet:
          description: |2
            Specifies the properties to retrieve.
          type: array
          items:
            $ref: '#/components/schemas/PropertyFilterSpec'
        options:
          description: |2
            Additional method options. If omitted, equivalent to an options
            argument with no fields set.
          $ref: '#/components/schemas/RetrieveOptions'
      required:
        - specSet
        - options

    RetrievePropertiesRequestType:
      type: object
      description: |2
        The parameters of *PropertyCollector.RetrieveProperties*.
      properties:
        specSet:
          description: |2
            Specifies the properties to retrieve.
          type: array
          items:
            $ref: '#/components/schemas/PropertyFilterSpec'
      required:
        - specSet

    RetrieveRolePermissionsRequestType:
      type: object
      description: |2
        The parameters of *AuthorizationManager.RetrieveRolePermissions*.
      properties:
        roleId:
          type: integer
          format: int32
      required:
        - roleId

    RetrieveSelfSignedClientCertRequestType:
      type: object
      description: |2
        The parameters of *CryptoManagerKmip.RetrieveSelfSignedClientCert*.
      properties:
        cluster:
          description: |2
            \[in\] KMIP cluster.
          $ref: '#/components/schemas/KeyProviderId'
      required:
        - cluster

    RetrieveSnapshotDetailsRequestType:
      type: object
      description: |2
        The parameters of *VcenterVStorageObjectManager.RetrieveSnapshotDetails*.
      properties:
        id:
          description: |2
            The ID of the virtual storage object.
          $ref: '#/components/schemas/ID'
        datastore:
          description: |2
            The datastore where the source virtual storage object
            is located.
            
            Refers instance of *Datastore*.
          $ref: '#/components/schemas/ManagedObjectReference'
        snapshotId:
          description: |2
            The ID of the snapshot of a virtual storage object.
          $ref: '#/components/schemas/ID'
      required:
        - id
        - datastore
        - snapshotId

    RetrieveSnapshotInfoRequestType:
      type: object
      description: |2
        The parameters of *VcenterVStorageObjectManager.RetrieveSnapshotInfo*.
      properties:
        id:
          description: |2
            The ID of the virtual storage object.
          $ref: '#/components/schemas/ID'
        datastore:
          description: |2
            The datastore where the source virtual storage object
            is located.
            
            Refers instance of *Datastore*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - id
        - datastore

    RetrieveUserGroupsRequestType:
      type: object
      description: |2
        The parameters of *UserDirectory.RetrieveUserGroups*.
      properties:
        domain:
          description: |2
            Domain to be searched. If not set, then the method searches
            the local machine.
          type: string
        searchStr:
          description: |2
            Case insensitive substring used to filter results;
            the search string is compared to the login and full name for users,
            and the name and description for groups. Leave
            this blank to match all users.
          type: string
        belongsToGroup:
          description: |2
            If present, the returned list contains only users or groups
            that directly belong to the specified group. Users or groups that
            have indirect membership will not be included in the list.
          type: string
        belongsToUser:
          description: |2
            If present, the returned list contains only groups that directly
            contain the specified user. Groups that indirectly contain
            the user will not be included in the list.
          type: string
        exactMatch:
          description: |2
            Indicates the searchStr passed should match a user or
            group name exactly.
          type: boolean
        findUsers:
          description: |2
            True, if users should be included in the result.
          type: boolean
        findGroups:
          description: |2
            True, if groups should be included in the result.
          type: boolean
      required:
        - searchStr
        - exactMatch
        - findUsers
        - findGroups

    RetrieveVStorageInfrastructureObjectPolicyRequestType:
      type: object
      description: |2
        The parameters of *VcenterVStorageObjectManager.RetrieveVStorageInfrastructureObjectPolicy*.
      properties:
        datastore:
          description: |2
            Datastore on which policy needs to be retrieved.
            
            Refers instance of *Datastore*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - datastore

    RetrieveVStorageObjectAssociationsRequestType:
      type: object
      description: |2
        The parameters of *VcenterVStorageObjectManager.RetrieveVStorageObjectAssociations*.
      properties:
        ids:
          description: |2
            The IDs of the virtual storage objects of the query.
          type: array
          items:
            $ref: '#/components/schemas/RetrieveVStorageObjSpec'

    RetrieveVStorageObjectRequestType:
      type: object
      description: |2
        The parameters of *VcenterVStorageObjectManager.RetrieveVStorageObject*.
      properties:
        id:
          description: |2
            The ID of the virtual storage object to be retrieved.
          $ref: '#/components/schemas/ID'
        datastore:
          description: |2
            The datastore where the virtual storage object is
            located.
            
            Refers instance of *Datastore*.
          $ref: '#/components/schemas/ManagedObjectReference'
        diskInfoFlags:
          description: |2
            Flags indicating the FCD information to be
            retrieved. If diskInfoFlags is unset, then all FCD
            information will be retrieved. See
            *vslmDiskInfoFlag_enum* for the list of
            supported values.
            
            ***Since:*** vSphere API Release 8.0.0.1
          type: array
          items:
            type: string
      required:
        - id
        - datastore

    RetrieveVStorageObjectStateRequestType:
      type: object
      description: |2
        The parameters of *VcenterVStorageObjectManager.RetrieveVStorageObjectState*.
      properties:
        id:
          description: |2
            The ID of the virtual storage object the state to be retrieved.
          $ref: '#/components/schemas/ID'
        datastore:
          description: |2
            The datastore where the virtual storage object is
            located.
            
            Refers instance of *Datastore*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - id
        - datastore

    ReverseReplicateGroupRequestType:
      type: object
      description: |2
        The parameters of *VasaProvider.ReverseReplicateGroup_Task*.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        groupId:
          description: |2
            Array of replication groups (currently in
            *FAILEDOVER* state) that need to be reversed.
          type: array
          items:
            $ref: '#/components/schemas/ReplicationGroupId'

    RevertToCurrentSnapshotRequestType:
      type: object
      description: |2
        The parameters of *VirtualMachine.RevertToCurrentSnapshot_Task*.
      properties:
        host:
          description: |2
            (optional) Choice of host for the virtual machine,
            in case this operation causes the virtual machine to power on.
            
            If a snapshot was taken while a virtual machine was powered on,
            and this operation is invoked after the virtual machine was
            powered off, the operation causes the virtual machine to power
            on to reach the snapshot state. This parameter can be used to
            specify a choice of host where the virtual machine should power
            on.
            
            If this parameter is not set, and the vBalance feature is
            configured for automatic load balancing, a host is
            automatically selected. Otherwise, the virtual machine keeps
            its existing host affiliation.
            
            This is not supported for virtual machines associated with hosts on ESX 2.x
            servers.
            
            Refers instance of *HostSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
        suppressPowerOn:
          description: |2
            (optional) If set to true, the virtual
            machine will not be powered on regardless of the power state when
            the current snapshot was created. Default to false.
          type: boolean

    RevertToSnapshotRequestType:
      type: object
      description: |2
        The parameters of *VirtualMachineSnapshot.RevertToSnapshot_Task*.
      properties:
        host:
          description: |2
            (optional) Choice of host for the virtual machine, in case this
            operation causes the virtual machine to power on.
            
            If a snapshot was taken while a virtual machine was powered on, and this operation
            is invoked after the virtual machine was powered off, the operation causes the
            virtual machine to power on to reach the snapshot state. This parameter can be
            used to specify a choice of host where the virtual machine should power on.
            
            If this parameter is not set and the vBalance feature is configured for automatic
            load balancing, a host is automatically selected. Otherwise, the virtual machine
            keeps its existing host affiliation.
            
            Refers instance of *HostSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
        suppressPowerOn:
          description: |2
            (optional) If set to true, the virtual
            machine will not be powered on regardless of the power state when
            the snapshot was created. Default to false.
          type: boolean

    RevertVStorageObjectExRequestType:
      type: object
      description: |2
        The parameters of *VStorageObjectManagerBase.RevertVStorageObjectEx_Task*.
        
        ***Since:*** vSphere API Release 8.0.2.0
      properties:
        id:
          description: |2
            The ID of the virtual storage object.
          $ref: '#/components/schemas/ID'
        datastore:
          description: |2
            The datastore where the source virtual storage object
            is located.
            
            Refers instance of *Datastore*.
          $ref: '#/components/schemas/ManagedObjectReference'
        snapshotId:
          description: |2
            The ID of the snapshot of a virtual storage object.
          $ref: '#/components/schemas/ID'
      required:
        - id
        - datastore
        - snapshotId

    RevertVStorageObjectRequestType:
      type: object
      description: |2
        The parameters of *VcenterVStorageObjectManager.RevertVStorageObject_Task*.
      properties:
        id:
          description: |2
            The ID of the virtual storage object.
          $ref: '#/components/schemas/ID'
        datastore:
          description: |2
            The datastore where the source virtual storage object
            is located.
            
            Refers instance of *Datastore*.
          $ref: '#/components/schemas/ManagedObjectReference'
        snapshotId:
          description: |2
            The ID of the snapshot of a virtual storage object.
          $ref: '#/components/schemas/ID'
      required:
        - id
        - datastore
        - snapshotId

    RunVsanPhysicalDiskDiagnosticsRequestType:
      type: object
      description: |2
        The parameters of *HostVsanInternalSystem.RunVsanPhysicalDiskDiagnostics*.
      properties:
        disks:
          description: |2
            List of VSAN disk UUIDs. If specified restricts the
            diagnostics run to VSAN disks present in the provided list.
          type: array
          items:
            type: string

    ScanHostPatchRequestType:
      type: object
      description: |2
        The parameters of *HostPatchManager.ScanHostPatch_Task*.
      properties:
        repository:
          description: |2
            Location of the repository that contains the
            bulletin depot. The depot must be organized as a flat
            collection of bulletins with each one being a folder named
            after the bulletin ID. Each folder must contain the full
            update metadata.
          $ref: '#/components/schemas/HostPatchManagerLocator'
        updateID:
          description: |2
            The updates to scan. Wildcards can be used to specify
            the update IDs. The wildcards will be expanded to include all
            updates whose IDs match the specified wildcard and whose metadata
            is available in the repository. Specifying no update is
            equivalent to a wildcard "\*". In this case all updates available
            in the repository will be scanned.
          type: array
          items:
            type: string
      required:
        - repository

    ScanHostPatchV2RequestType:
      type: object
      description: |2
        The parameters of *HostPatchManager.ScanHostPatchV2_Task*.
      properties:
        metaUrls:
          description: |2
            a list of urls pointing to metadata.zip.
          type: array
          items:
            type: string
        bundleUrls:
          description: |2
            a list of urls pointing to an "offline" bundle. It is not supported in 5.0 or later.
          type: array
          items:
            type: string
        spec:
          $ref: '#/components/schemas/HostPatchManagerPatchManagerOperationSpec'

    ScheduleReconcileDatastoreInventoryRequestType:
      type: object
      description: |2
        The parameters of *VcenterVStorageObjectManager.ScheduleReconcileDatastoreInventory*.
      properties:
        datastore:
          description: |2
            The datastore that needs to be reconciled.
            
            Refers instance of *Datastore*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - datastore

    SearchDatastoreRequestType:
      type: object
      description: |2
        The parameters of *HostDatastoreBrowser.SearchDatastore_Task*.
      properties:
        datastorePath:
          type: string
        searchSpec:
          $ref: '#/components/schemas/HostDatastoreBrowserSearchSpec'
      required:
        - datastorePath

    SearchDatastoreSubFoldersRequestType:
      type: object
      description: |2
        The parameters of *HostDatastoreBrowser.SearchDatastoreSubFolders_Task*.
      properties:
        datastorePath:
          type: string
        searchSpec:
          $ref: '#/components/schemas/HostDatastoreBrowserSearchSpec'
      required:
        - datastorePath

    SelectActivePartitionRequestType:
      type: object
      description: |2
        The parameters of *HostDiagnosticSystem.SelectActivePartition*.
      properties:
        partition:
          $ref: '#/components/schemas/HostScsiDiskPartition'

    SelectVnicForNicTypeRequestType:
      type: object
      description: |2
        The parameters of *HostVirtualNicManager.SelectVnicForNicType*.
      properties:
        nicType:
          description: |2
            The type of VirtualNic that would be selected
          type: string
        device:
          description: |2
            The device that uniquely identifies the VirtualNic.
          type: string
      required:
        - nicType
        - device

    SelectVnicRequestType:
      type: object
      description: |2
        The parameters of *HostVMotionSystem.SelectVnic*.
      properties:
        device:
          description: |2
            The device that uniquely identifies the VirtualNic.
          type: string
      required:
        - device

    SessionIsActiveRequestType:
      type: object
      description: |2
        The parameters of *SessionManager.SessionIsActive*.
      properties:
        sessionID:
          description: |2
            Session ID to validate.
          type: string
        userName:
          description: |2
            User name to validate.
          type: string
      required:
        - sessionID
        - userName

    SetCollectorPageSizeRequestType:
      type: object
      description: |2
        The parameters of *HistoryCollector.SetCollectorPageSize*.
      properties:
        maxCount:
          description: |2
            The maximum number of items in the page.
          type: integer
          format: int32
      required:
        - maxCount

    SetCryptoModeRequestType:
      type: object
      description: |2
        The parameters of *ClusterComputeResource.SetCryptoMode*.
      properties:
        cryptoMode:
          description: |2
            The encryption mode for the cluster.
            See *ClusterCryptoConfigInfoCryptoMode_enum* for
            supported values. An empty string is treated as a valid
            input and will be interpreted as
            *onDemand*.
          type: string
        policy:
          description: |2
            The encryption mode policy for the cluster. When no policy
            is specified, host keys will be automcatically generated
            using the current default key provider.
            
            ***Since:*** vSphere API Release 8.0.3.0
          $ref: '#/components/schemas/ClusterComputeResourceCryptoModePolicy'
      required:
        - cryptoMode

    SetDefaultKmsClusterRequestType:
      type: object
      description: |2
        The parameters of *CryptoManagerKmip.SetDefaultKmsCluster*.
      properties:
        entity:
          description: |2
            \[in\] The managed entity where the default KMS cluster to be
            set. Currently the valid managed entity could be
            cluster or host folder.
            If omitted, then will set global default KMS cluster.
            
            Refers instance of *ManagedEntity*.
          $ref: '#/components/schemas/ManagedObjectReference'
        clusterId:
          description: |2
            \[in\] KMS cluster ID to become default.
            If omitted, then will clear the default KMS cluster
            setting.
          $ref: '#/components/schemas/KeyProviderId'

    SetDisplayTopologyRequestType:
      type: object
      description: |2
        The parameters of *VirtualMachine.SetDisplayTopology*.
      properties:
        displays:
          description: |2
            The topology for each monitor that the
            virtual machine's display must span.
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineDisplayTopology'
      required:
        - displays

    SetEntityPermissionsRequestType:
      type: object
      description: |2
        The parameters of *AuthorizationManager.SetEntityPermissions*.
      properties:
        entity:
          description: |2
            The entity on which to set permissions.
            
            ***Required privileges:*** Authorization.ModifyPermissions
            
            Refers instance of *ManagedEntity*.
          $ref: '#/components/schemas/ManagedObjectReference'
        permission:
          description: |2
            An array of specifications for permissions on the entity.
          type: array
          items:
            $ref: '#/components/schemas/Permission'
      required:
        - entity

    SetExtensionCertificateRequestType:
      type: object
      description: |2
        The parameters of *ExtensionManager.SetExtensionCertificate*.
      properties:
        extensionKey:
          description: |2
            Key of extension to update.
          type: string
        certificatePem:
          description: |2
            PEM encoded certificate. If not specified, the
            certificate passed over SSL handshake is used.
          type: string
      required:
        - extensionKey

    SetFieldRequestType:
      type: object
      description: |2
        The parameters of *CustomFieldsManager.SetField*.
      properties:
        entity:
          description: |2
            ***Required privileges:*** Global.SetCustomField
            
            Refers instance of *ManagedEntity*.
          $ref: '#/components/schemas/ManagedObjectReference'
        key:
          type: integer
          format: int32
        value:
          type: string
      required:
        - entity
        - key
        - value

    SetKeyCustomAttributesRequestType:
      type: object
      description: |2
        The parameters of *CryptoManagerKmip.SetKeyCustomAttributes*.
        
        ***Since:*** vSphere API Release 8.0.1.0
      properties:
        keyId:
          description: |2
            \[in\] The crypto Key Id.
          $ref: '#/components/schemas/CryptoKeyId'
        spec:
          description: |2
            \[in\] The spec that contains custom attributes key/value pairs.
          $ref: '#/components/schemas/CryptoManagerKmipCustomAttributeSpec'
      required:
        - keyId
        - spec

    SetLicenseEditionRequestType:
      type: object
      description: |2
        The parameters of *LicenseManager.SetLicenseEdition*.
      properties:
        host:
          description: |2
            Host to act on if LicenseManager is not on a host.
            
            Refers instance of *HostSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
        featureKey:
          description: |2
            Name of edition feature to select. If featureKey is not
            set or set to empty string, the product becomes unlicensed.
          type: string

    SetLocaleRequestType:
      type: object
      description: |2
        The parameters of *SessionManager.SetLocale*.
      properties:
        locale:
          description: |2
            A two-character ISO-639 language ID (like "en")
            optionally followed by an
            underscore and a two-character ISO 3166 country ID (like "US").
            
            Examples are "de", "fr\_CA", "zh", "zh\_CN", and "zh\_TW".
            Note: The method uses the server default locale when
            a locale is not provided. This default can be configured in the
            server configuration file. If unspecified, it defaults to the
            locale of the server environment or English ("en") if unsupported.
          type: string
      required:
        - locale

    SetMaintenanceModePolicyRequestType:
      type: object
      description: |2
        The parameters of *EsxAgentManager.SetMaintenanceModePolicy*.
        
        This structure may be used only with operations rendered under `/eam`.
        
        ***Since:*** vEAM API 7.4
      properties:
        policy:
          description: |2
            The policy to use.
          type: string
      required:
        - policy

    SetMaxQueueDepthRequestType:
      type: object
      description: |2
        The parameters of *HostDatastoreSystem.SetMaxQueueDepth*.
        
        ***Since:*** vSphere API Release 8.0.0.1
      properties:
        datastore:
          description: |2
            The NFS datastore which need to set max queue depth
            
            Refers instance of *Datastore*.
          $ref: '#/components/schemas/ManagedObjectReference'
        maxQdepth:
          description: |2
            Max queue depth value for a datastore
          type: integer
          format: int64
      required:
        - datastore
        - maxQdepth

    SetMultipathLunPolicyRequestType:
      type: object
      description: |2
        The parameters of *HostStorageSystem.SetMultipathLunPolicy*.
      properties:
        lunId:
          description: |2
            The logical unit ID
          type: string
        policy:
          description: |2
            A data object that describes a path selection policy for
            the logical unit.
          $ref: '#/components/schemas/HostMultipathInfoLogicalUnitPolicy'
      required:
        - lunId
        - policy

    SetNFSUserRequestType:
      type: object
      description: |2
        The parameters of *HostStorageSystem.SetNFSUser*.
      properties:
        user:
          description: |2
            User to be saved on the the esx host
          type: string
        password:
          description: |2
            Password for the user.
          type: string
          format: password
      required:
        - user
        - password

    SetPublicKeyRequestType:
      type: object
      description: |2
        The parameters of *ExtensionManager.SetPublicKey*.
      properties:
        extensionKey:
          description: |2
            Key of extension to update.
          type: string
        publicKey:
          description: |2
            Public key of extension, encoded
            in PEM (privacy-enhanced mail) format.
          type: string
      required:
        - extensionKey
        - publicKey

    SetRegistryValueInGuestRequestType:
      type: object
      description: |2
        The parameters of *GuestWindowsRegistryManager.SetRegistryValueInGuest*.
      properties:
        vm:
          description: |2
            Virtual machine to perform the operation on.
            
            ***Required privileges:*** VirtualMachine.GuestOperations.Modify
            
            Refers instance of *VirtualMachine*.
          $ref: '#/components/schemas/ManagedObjectReference'
        auth:
          description: |2
            The guest authentication data.
          $ref: '#/components/schemas/GuestAuthentication'
        value:
          description: |2
            The information for the registry value to be set/created.
            The Value "name" (specified in
            *GuestRegValueNameSpec*)
            and the Value "data" (specified in
            *GuestRegValueSpec*)
            can both be empty. If "name" is empty, it sets the value for
            the unnamed or default value of the given key.
          $ref: '#/components/schemas/GuestRegValueSpec'
      required:
        - vm
        - auth
        - value

    SetScreenResolutionRequestType:
      type: object
      description: |2
        The parameters of *VirtualMachine.SetScreenResolution*.
      properties:
        width:
          description: |2
            The screen width that should be set.
          type: integer
          format: int32
        height:
          description: |2
            The screen height that should be set.
          type: integer
          format: int32
      required:
        - width
        - height

    SetServiceAccountRequestType:
      type: object
      description: |2
        The parameters of *ExtensionManager.SetServiceAccount*.
        
        ***Since:*** vSphere API Release 8.0.2.0
      properties:
        extensionKey:
          description: |2
            Key of extension to update.
          type: string
        serviceAccount:
          description: |2
            account name qualified with SSO domain.
          type: string
      required:
        - extensionKey
        - serviceAccount

    SetTaskDescriptionRequestType:
      type: object
      description: |2
        The parameters of *Task.SetTaskDescription*.
      properties:
        description:
          description: |2
            New description for task
          $ref: '#/components/schemas/LocalizableMessage'
      required:
        - description

    SetTaskStateRequestType:
      type: object
      description: |2
        The parameters of *Task.SetTaskState*.
      properties:
        state:
          description: |2
            New state for task
          $ref: '#/components/schemas/TaskInfoState_enum'
        result:
          description: |2
            Result to set, valid only if task state is
            TaskInfo.State.success
          $ref: '#/components/schemas/Any'
        fault:
          description: |2
            Fault to set, valid only if task state is
            *error*. The fault must be a of a fault type that
            directly or indirectly extends *VimFault*.
          $ref: '#/components/schemas/MethodFault'
      required:
        - state

    SetVStorageObjectControlFlagsRequestType:
      type: object
      description: |2
        The parameters of *VcenterVStorageObjectManager.SetVStorageObjectControlFlags*.
      properties:
        id:
          description: |2
            The ID of the virtual storage object.
          $ref: '#/components/schemas/ID'
        datastore:
          description: |2
            The datastore where the source virtual storage
            object is located.
            
            ***Required privileges:*** Datastore.FileManagement
            
            Refers instance of *Datastore*.
          $ref: '#/components/schemas/ManagedObjectReference'
        controlFlags:
          description: |2
            control flags enum array to be set on the
            VStorageObject. All control flags not included
            in the array remain intact.
          type: array
          items:
            type: string
      required:
        - id
        - datastore

    SetVirtualDiskUuidExRequestType:
      type: object
      description: |2
        The parameters of *VcenterVStorageObjectManager.SetVirtualDiskUuidEx_Task*.
        
        ***Since:*** vSphere API Release 8.0.3.0
      properties:
        name:
          description: |2
            The name of the disk, either a datastore path or a URL
            referring to the virtual disk whose uuid for the DDB entry needs to be set.
            A datastore path has the form
            > \[_datastore_\] _path_
            
            where
            - _datastore_ is the datastore name.
            - _path_ is a slash-delimited path from the root of the datastore.
            
            An example datastore path is "\[storage\] path/to/file.extension".
          type: string
        datacenter:
          description: |2
            If <code>name</code> is a datastore path, the datacenter for
            that datastore path is mandatory. Not needed when invoked directly on ESX.
            If not specified on a call from VirtualCenter,
            <code>name</code> must be a URL.
            
            Refers instance of *Datacenter*.
          $ref: '#/components/schemas/ManagedObjectReference'
        uuid:
          description: |2
            The hex representation of the unique ID for this virtual disk. If uuid is not set or missing,
            a random UUID is generated and assigned.
          type: string
      required:
        - name

    SetVirtualDiskUuidRequestType:
      type: object
      description: |2
        The parameters of *VirtualDiskManager.SetVirtualDiskUuid*.
      properties:
        name:
          description: |2
            The name of the disk, either a datastore path or a URL
            referring to the virtual disk whose SCSI inquiry page 0x83
            data should be set.
          type: string
        datacenter:
          description: |2
            If <code>name</code> is a datastore path, the datacenter for
            that datastore path. Not needed when invoked directly on ESX.
            If not specified on a call to VirtualCenter,
            <code>name</code> must be a URL.
            
            Refers instance of *Datacenter*.
          $ref: '#/components/schemas/ManagedObjectReference'
        uuid:
          description: |2
            The hex representation of the unique ID for this virtual disk.
          type: string
      required:
        - name
        - uuid

    ShrinkVirtualDiskRequestType:
      type: object
      description: |2
        The parameters of *VirtualDiskManager.ShrinkVirtualDisk_Task*.
      properties:
        name:
          description: |2
            The name of the disk, either a datastore path or a URL
            referring to the virtual disk that should be shrink.
          type: string
        datacenter:
          description: |2
            If <code>name</code> is a datastore path, the datacenter for
            that datastore path. Not needed when invoked directly on ESX.
            If not specified on a call to VirtualCenter,
            <code>name</code> must be a URL.
            
            Refers instance of *Datacenter*.
          $ref: '#/components/schemas/ManagedObjectReference'
        copy:
          description: |2
            If true or omitted, performs shrink in copy-shrink mode, otherwise
            shrink in in-place mode.
          type: boolean
      required:
        - name

    ShutdownHostRequestType:
      type: object
      description: |2
        The parameters of *HostSystem.ShutdownHost_Task*.
      properties:
        force:
          description: |2
            Flag to specify whether or not the host should be shut down
            regardless of whether it is in maintenance mode.
            If true, the host is shut down, even if there are
            virtual machines running or other operations in progress.
          type: boolean
      required:
        - force

    SmsRefreshCACertificatesAndCRLsRequestType:
      type: object
      description: |2
        The parameters of *SmsStorageManager.SmsRefreshCACertificatesAndCRLs_Task*.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        providerId:
          description: |2
            *SmsProviderInfo.uid* for providers
          type: array
          items:
            type: string

    StageHostPatchRequestType:
      type: object
      description: |2
        The parameters of *HostPatchManager.StageHostPatch_Task*.
      properties:
        metaUrls:
          description: |2
            A list of urls pointing to metadata.zip.
          type: array
          items:
            type: string
        bundleUrls:
          description: |2
            a list of urls pointing to an "offline" bundle. It is not supported in 5.0 or later.
          type: array
          items:
            type: string
        vibUrls:
          description: |2
            The urls of update binary files to be staged.
          type: array
          items:
            type: string
        spec:
          $ref: '#/components/schemas/HostPatchManagerPatchManagerOperationSpec'

    StartGuestNetworkRequestType:
      type: object
      description: |2
        The parameters of *VirtualMachineGuestCustomizationManager.StartGuestNetwork_Task*.
      properties:
        vm:
          description: |2
            The Virtual Machine managed object reference.
            
            Refers instance of *VirtualMachine*.
          $ref: '#/components/schemas/ManagedObjectReference'
        auth:
          description: |2
            The guest authentication data. See
            *GuestAuthentication*.
          $ref: '#/components/schemas/GuestAuthentication'
      required:
        - vm
        - auth

    StartProgramInGuestRequestType:
      type: object
      description: |2
        The parameters of *GuestProcessManager.StartProgramInGuest*.
      properties:
        vm:
          description: |2
            Virtual machine to perform the operation on.
            
            ***Required privileges:*** VirtualMachine.GuestOperations.Execute
            
            Refers instance of *VirtualMachine*.
          $ref: '#/components/schemas/ManagedObjectReference'
        auth:
          description: |2
            The guest authentication data. See
            *GuestAuthentication*.
          $ref: '#/components/schemas/GuestAuthentication'
        spec:
          description: |2
            The arguments describing the program to be started.
          $ref: '#/components/schemas/GuestProgramSpec'
      required:
        - vm
        - auth
        - spec

    StartRecordingRequestType:
      type: object
      description: |2
        The parameters of *VirtualMachine.StartRecording_Task*.
      properties:
        name:
          description: |2
            The name for the snapshot associated with this recording.
            The name need not be unique for this virtual machine.
          type: string
        description:
          description: |2
            A description for the snapshot associated with this
            recording. If omitted, a default description may be provided.
          type: string
      required:
        - name

    StartReplayingRequestType:
      type: object
      description: |2
        The parameters of *VirtualMachine.StartReplaying_Task*.
      properties:
        replaySnapshot:
          description: |2
            The snapshot from which to start the replay. This
            snapshot must have been created by a record operation on the
            virtual machine.
            
            Refers instance of *VirtualMachineSnapshot*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - replaySnapshot

    StartServiceRequestType:
      type: object
      description: |2
        The parameters of *HostServiceSystem.StartService*.
      properties:
        id:
          description: |2
            Service identifier
            (*HostServiceSystem.serviceInfo*.*HostServiceInfo.service*.*HostService.key*).
          type: string
      required:
        - id

    StopServiceRequestType:
      type: object
      description: |2
        The parameters of *HostServiceSystem.StopService*.
      properties:
        id:
          description: |2
            Service identifier
            (*HostServiceSystem.serviceInfo*.*HostServiceInfo.service*.*HostService.key*).
          type: string
      required:
        - id

    SyncReplicationGroupRequestType:
      type: object
      description: |2
        The parameters of *VasaProvider.SyncReplicationGroup_Task*.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        groupId:
          description: |2
            List of replication group IDs.
          type: array
          items:
            $ref: '#/components/schemas/ReplicationGroupId'
        pitName:
          description: |2
            Localized name for the point-in-time snapshot created.
          type: string
      required:
        - pitName

    TerminateFaultTolerantVMRequestType:
      type: object
      description: |2
        The parameters of *VirtualMachine.TerminateFaultTolerantVM_Task*.
      properties:
        vm:
          description: |2
            The secondary virtual machine specified will be terminated, allowing
            fault tolerance to activate. If no virtual machine is specified,
            all secondary virtual machines will be terminated. If vm is a
            primary, InvalidArgument exception is thrown.
            This field must specify a virtual machine that is part of the fault
            tolerant group that this virtual machine is currently associated with. It can
            only be invoked from the primary virtual machine in the group. If the primary
            virtual machine is terminated, an available secondary virtual machine will be
            promoted to primary. If no secondary exists, an exception will be thrown and
            the primary virtual machine will not be terminated. If a secondary virtual
            machine is terminated, it may be respawned on a potentially different host.
            
            Refers instance of *VirtualMachine*.
          $ref: '#/components/schemas/ManagedObjectReference'

    TerminateProcessInGuestRequestType:
      type: object
      description: |2
        The parameters of *GuestProcessManager.TerminateProcessInGuest*.
      properties:
        vm:
          description: |2
            Virtual machine to perform the operation on.
            
            ***Required privileges:*** VirtualMachine.GuestOperations.Execute
            
            Refers instance of *VirtualMachine*.
          $ref: '#/components/schemas/ManagedObjectReference'
        auth:
          description: |2
            The guest authentication data. See
            *GuestAuthentication*.
          $ref: '#/components/schemas/GuestAuthentication'
        pid:
          description: |2
            Process ID of the process to be terminated
          type: integer
          format: int64
      required:
        - vm
        - auth
        - pid

    TerminateSessionRequestType:
      type: object
      description: |2
        The parameters of *SessionManager.TerminateSession*.
      properties:
        sessionId:
          description: |2
            A list of sessions to terminate.
          type: array
          items:
            type: string
      required:
        - sessionId

    TestFailoverReplicationGroupStartRequestType:
      type: object
      description: |2
        The parameters of *VasaProvider.TestFailoverReplicationGroupStart_Task*.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        testFailoverParam:
          description: |2
            Settings for the failover.
          $ref: '#/components/schemas/TestFailoverParam'
      required:
        - testFailoverParam

    TestFailoverReplicationGroupStopRequestType:
      type: object
      description: |2
        The parameters of *VasaProvider.TestFailoverReplicationGroupStop_Task*.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        groupId:
          description: |2
            Array of replication groups that need to stop test.
          type: array
          items:
            $ref: '#/components/schemas/ReplicationGroupId'
        force:
          description: |2
            \- if true, VP should force-unbind all Virtual Volumes
            and move the RG from INTEST to TARGET state. If false, VP will report all the
            Virtual Volumes which need to be cleaned up before a failover operation
            can be triggered. The default value will be false.
          type: boolean
      required:
        - force

    TurnDiskLocatorLedOffRequestType:
      type: object
      description: |2
        The parameters of *HostStorageSystem.TurnDiskLocatorLedOff_Task*.
      properties:
        scsiDiskUuids:
          description: |2
            The SCSI disk UUIDs for which the disk locator LED
            should be turned off.
          type: array
          items:
            type: string
      required:
        - scsiDiskUuids

    TurnDiskLocatorLedOnRequestType:
      type: object
      description: |2
        The parameters of *HostStorageSystem.TurnDiskLocatorLedOn_Task*.
      properties:
        scsiDiskUuids:
          description: |2
            The SCSI disk UUIDs for which the disk locator LED
            should be turned on.
          type: array
          items:
            type: string
      required:
        - scsiDiskUuids

    UnassignUserFromGroupRequestType:
      type: object
      description: |2
        The parameters of *HostLocalAccountManager.UnassignUserFromGroup*.
      properties:
        user:
          description: |2
            User being unassigned from group.
          type: string
        group:
          description: |2
            Group from which the user is being removed.
          type: string
      required:
        - user
        - group

    UnbindVnicRequestType:
      type: object
      description: |2
        The parameters of *IscsiManager.UnbindVnic*.
      properties:
        iScsiHbaName:
          description: |2
            iSCSI adapter name for which the Virtual NIC to
            be removed.
          type: string
        vnicDevice:
          description: |2
            Virtual NIC that is to be removed from the iSCSI HBA
          type: string
        force:
          type: boolean
      required:
        - iScsiHbaName
        - vnicDevice
        - force

    UninstallHostPatchRequestType:
      type: object
      description: |2
        The parameters of *HostPatchManager.UninstallHostPatch_Task*.
      properties:
        bulletinIds:
          description: |2
            A list of bulletin IDs to be removed.
          type: array
          items:
            type: string
        spec:
          $ref: '#/components/schemas/HostPatchManagerPatchManagerOperationSpec'

    UninstallIoFilterRequestType:
      type: object
      description: |2
        The parameters of *IoFilterManager.UninstallIoFilter_Task*.
      properties:
        filterId:
          description: |2
            ID of the filter.
          type: string
        compRes:
          description: |2
            The compute resource to uninstall the IO Filter from.
            "compRes" must be a cluster.
            
            Refers instance of *ComputeResource*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - filterId
        - compRes

    UninstallServiceRequestType:
      type: object
      description: |2
        The parameters of *HostServiceSystem.UninstallService*.
      properties:
        id:
          description: |2
            Service identifier
            (*HostServiceSystem.serviceInfo*.*HostServiceInfo.service*.*HostService.key*).
          type: string
      required:
        - id

    UnmapVmfsVolumeExRequestType:
      type: object
      description: |2
        The parameters of *HostStorageSystem.UnmapVmfsVolumeEx_Task*.
      properties:
        vmfsUuid:
          description: |2
            each element specifies the UUID of a VMFS volume to be unmapped.
          type: array
          items:
            type: string
      required:
        - vmfsUuid

    UnmarkServiceProviderEntitiesRequestType:
      type: object
      description: |2
        The parameters of *TenantTenantManager.UnmarkServiceProviderEntities*.
      properties:
        entity:
          description: |2
            an array of management entities.
            
            ***Required privileges:*** TenantManager.Update
            
            Refers instances of *ManagedEntity*.
          type: array
          items:
            $ref: '#/components/schemas/ManagedObjectReference'

    UnmountDiskMappingRequestType:
      type: object
      description: |2
        The parameters of *HostVsanSystem.UnmountDiskMapping_Task*.
      properties:
        mapping:
          type: array
          items:
            $ref: '#/components/schemas/VsanHostDiskMapping'
      required:
        - mapping

    UnmountForceMountedVmfsVolumeRequestType:
      type: object
      description: |2
        The parameters of *HostStorageSystem.UnmountForceMountedVmfsVolume*.
      properties:
        vmfsUuid:
          type: string
      required:
        - vmfsUuid

    UnmountVffsVolumeRequestType:
      type: object
      description: |2
        The parameters of *HostStorageSystem.UnmountVffsVolume*.
      properties:
        vffsUuid:
          type: string
      required:
        - vffsUuid

    UnmountVmfsVolumeExRequestType:
      type: object
      description: |2
        The parameters of *HostStorageSystem.UnmountVmfsVolumeEx_Task*.
      properties:
        vmfsUuid:
          description: |2
            each element specifies the UUID of a VMFS volume to be unmounted.
          type: array
          items:
            type: string
      required:
        - vmfsUuid

    UnmountVmfsVolumeRequestType:
      type: object
      description: |2
        The parameters of *HostStorageSystem.UnmountVmfsVolume*.
      properties:
        vmfsUuid:
          type: string
      required:
        - vmfsUuid

    UnregisterAgentVmRequestType:
      type: object
      description: |2
        The parameters of *Agency.UnregisterAgentVm*.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        agentVm:
          description: |2
            The managed object reference to the agent VM.
            
            Refers instance of *VirtualMachine*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - agentVm

    UnregisterExtensionRequestType:
      type: object
      description: |2
        The parameters of *ExtensionManager.UnregisterExtension*.
      properties:
        extensionKey:
          description: |2
            Unique name of extension to unregister.
          type: string
      required:
        - extensionKey

    UnregisterHealthUpdateProviderRequestType:
      type: object
      description: |2
        The parameters of *HealthUpdateManager.UnregisterHealthUpdateProvider*.
      properties:
        providerId:
          description: |2
            The provider id.
          type: string
      required:
        - providerId

    UnregisterKmsClusterRequestType:
      type: object
      description: |2
        The parameters of *CryptoManagerKmip.UnregisterKmsCluster*.
      properties:
        clusterId:
          description: |2
            \[in\] KMS cluster ID to unregister.
          $ref: '#/components/schemas/KeyProviderId'
      required:
        - clusterId

    UnregisterProviderRequestType:
      type: object
      description: |2
        The parameters of *SmsStorageManager.UnregisterProvider_Task*.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        providerId:
          description: |2
            *SmsProviderInfo.uid* for
            the provider
          type: string
      required:
        - providerId

    UpdateAnswerFileRequestType:
      type: object
      description: |2
        The parameters of *HostProfileManager.UpdateAnswerFile_Task*.
      properties:
        host:
          description: |2
            Host with which the answer file is associated.
            
            Refers instance of *HostSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
        configSpec:
          description: |2
            Host-specific configuration data. If the configuration
            specification does not contain any host-specific user input
            (<code>configSpec</code>.*AnswerFileOptionsCreateSpec.userInput*),
            the method does not perform any operation on the answer file.
          $ref: '#/components/schemas/AnswerFileCreateSpec'
      required:
        - host
        - configSpec

    UpdateAssignableHardwareConfigRequestType:
      type: object
      description: |2
        The parameters of *HostAssignableHardwareManager.UpdateAssignableHardwareConfig*.
      properties:
        config:
          $ref: '#/components/schemas/HostAssignableHardwareConfig'
      required:
        - config

    UpdateAssignedLicenseRequestType:
      type: object
      description: |2
        The parameters of *LicenseAssignmentManager.UpdateAssignedLicense*.
      properties:
        entity:
          description: |2
            ID of the entity. E.g. HostSystem.
          type: string
        licenseKey:
          description: |2
            A license.
          type: string
        entityDisplayName:
          description: |2
            Display name for the entity
          type: string
      required:
        - entity
        - licenseKey

    UpdateAuthorizationRoleRequestType:
      type: object
      description: |2
        The parameters of *AuthorizationManager.UpdateAuthorizationRole*.
      properties:
        roleId:
          description: |2
            The ID of the role that is updated.
          type: integer
          format: int32
        newName:
          description: |2
            The new name for the role.
          type: string
        privIds:
          description: |2
            The new set of privileges to assign to the role.
          type: array
          items:
            type: string
      required:
        - roleId
        - newName

    UpdateBootDeviceRequestType:
      type: object
      description: |2
        The parameters of *HostBootDeviceSystem.UpdateBootDevice*.
      properties:
        key:
          description: |2
            The *HostBootDevice.key* of the
            *HostBootDevice* from which the host will boot.
          type: string
      required:
        - key

    UpdateChildResourceConfigurationRequestType:
      type: object
      description: |2
        The parameters of *ResourcePool.UpdateChildResourceConfiguration*.
      properties:
        spec:
          type: array
          items:
            $ref: '#/components/schemas/ResourceConfigSpec'
      required:
        - spec

    UpdateClusterProfileRequestType:
      type: object
      description: |2
        The parameters of *ClusterProfile.UpdateClusterProfile*.
      properties:
        config:
          description: |2
            Specification which describes the changes.
          $ref: '#/components/schemas/ClusterProfileConfigSpec'
      required:
        - config

    UpdateConfigRequestType:
      type: object
      description: |2
        The parameters of *ResourcePool.UpdateConfig*.
      properties:
        name:
          description: |2
            If set, then the new name of the resource pool.
          type: string
        config:
          description: |2
            If set, then the new resource allocation for this
            resource pool.
          $ref: '#/components/schemas/ResourceConfigSpec'

    UpdateConsoleIpRouteConfigRequestType:
      type: object
      description: |2
        The parameters of *HostNetworkSystem.UpdateConsoleIpRouteConfig*.
      properties:
        config:
          $ref: '#/components/schemas/HostIpRouteConfig'
      required:
        - config

    UpdateCounterLevelMappingRequestType:
      type: object
      description: |2
        The parameters of *PerformanceManager.UpdateCounterLevelMapping*.
      properties:
        counterLevelMap:
          description: |2
            An array of *PerformanceManagerCounterLevelMapping* objects. The
            levels for the counters passed in are changed to the passed in values. If
            the optional aggregateLevel field is left unset then only the
            perDeviceLevel is configured. If the optional perDeviceLevel is left
            unset then only the aggregateLevel is configured. If there are multiple
            entries in the passed in array for the same counterId being updated then
            the last entry containing the counterId takes effect.
          type: array
          items:
            $ref: '#/components/schemas/PerformanceManagerCounterLevelMapping'
      required:
        - counterLevelMap

    UpdateDVSHealthCheckConfigRequestType:
      type: object
      description: |2
        The parameters of *DistributedVirtualSwitch.UpdateDVSHealthCheckConfig_Task*.
      properties:
        healthCheckConfig:
          description: |2
            The health check configuration.
          type: array
          items:
            $ref: '#/components/schemas/DVSHealthCheckConfig'
      required:
        - healthCheckConfig

    UpdateDVSLacpGroupConfigRequestType:
      type: object
      description: |2
        The parameters of *VmwareDistributedVirtualSwitch.UpdateDVSLacpGroupConfig_Task*.
      properties:
        lacpGroupSpec:
          description: |2
            The Link Aggregation Control Protocol groups to be configured.
          type: array
          items:
            $ref: '#/components/schemas/VMwareDvsLacpGroupSpec'
      required:
        - lacpGroupSpec

    UpdateDateTimeConfigRequestType:
      type: object
      description: |2
        The parameters of *HostDateTimeSystem.UpdateDateTimeConfig*.
      properties:
        config:
          description: |2
            The new DateTime configuration information.
          $ref: '#/components/schemas/HostDateTimeConfig'
      required:
        - config

    UpdateDateTimeRequestType:
      type: object
      description: |2
        The parameters of *HostDateTimeSystem.UpdateDateTime*.
      properties:
        dateTime:
          description: |2
            DateTime to update the host to.
          type: string
          format: date-time
      required:
        - dateTime

    UpdateDefaultPolicyRequestType:
      type: object
      description: |2
        The parameters of *HostFirewallSystem.UpdateDefaultPolicy*.
      properties:
        defaultPolicy:
          $ref: '#/components/schemas/HostFirewallDefaultPolicy'
      required:
        - defaultPolicy

    UpdateDiskPartitionsRequestType:
      type: object
      description: |2
        The parameters of *HostStorageSystem.UpdateDiskPartitions*.
      properties:
        devicePath:
          description: |2
            The name of the device path for the specific disk.
          type: string
        spec:
          description: |2
            A data object that describes the disk partition table
            specification used to configure the partitions on a disk.
          $ref: '#/components/schemas/HostDiskPartitionSpec'
      required:
        - devicePath
        - spec

    UpdateDnsConfigRequestType:
      type: object
      description: |2
        The parameters of *HostNetworkSystem.UpdateDnsConfig*.
      properties:
        config:
          $ref: '#/components/schemas/HostDnsConfig'
      required:
        - config

    UpdateDvsCapabilityRequestType:
      type: object
      description: |2
        The parameters of *DistributedVirtualSwitch.UpdateDvsCapability*.
      properties:
        capability:
          description: |2
            The capability of the switch.
          $ref: '#/components/schemas/DVSCapability'
      required:
        - capability

    UpdateExtensionRequestType:
      type: object
      description: |2
        The parameters of *ExtensionManager.UpdateExtension*.
      properties:
        extension:
          description: |2
            Updated extension description.
          $ref: '#/components/schemas/Extension'
      required:
        - extension

    UpdateFlagsRequestType:
      type: object
      description: |2
        The parameters of *HostSystem.UpdateFlags*.
      properties:
        flagInfo:
          $ref: '#/components/schemas/HostFlagInfo'
      required:
        - flagInfo

    UpdateGraphicsConfigRequestType:
      type: object
      description: |2
        The parameters of *HostGraphicsManager.UpdateGraphicsConfig*.
      properties:
        config:
          $ref: '#/components/schemas/HostGraphicsConfig'
      required:
        - config

    UpdateHostImageAcceptanceLevelRequestType:
      type: object
      description: |2
        The parameters of *HostImageConfigManager.UpdateHostImageAcceptanceLevel*.
      properties:
        newAcceptanceLevel:
          description: |2
            the new AcceptanceLevel to set.
          type: string
      required:
        - newAcceptanceLevel

    UpdateHostProfileRequestType:
      type: object
      description: |2
        The parameters of *HostProfile.UpdateHostProfile*.
      properties:
        config:
          description: |2
            Specification containing the new data.
          $ref: '#/components/schemas/HostProfileConfigSpec'
      required:
        - config

    UpdateHostSpecificationRequestType:
      type: object
      description: |2
        The parameters of *HostSpecificationManager.UpdateHostSpecification*.
      properties:
        host:
          description: |2
            The host whose specification will be updated.
            
            Refers instance of *HostSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
        hostSpec:
          description: |2
            The new host specification to be updated with.
          $ref: '#/components/schemas/HostSpecification'
      required:
        - host
        - hostSpec

    UpdateHostSubSpecificationRequestType:
      type: object
      description: |2
        The parameters of *HostSpecificationManager.UpdateHostSubSpecification*.
      properties:
        host:
          description: |2
            The host whose specification will be updated.
            
            Refers instance of *HostSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
        hostSubSpec:
          description: |2
            The data object for the new host sub specification.
          $ref: '#/components/schemas/HostSubSpecification'
      required:
        - host
        - hostSubSpec

    UpdateHppMultipathLunPolicyRequestType:
      type: object
      description: |2
        The parameters of *HostStorageSystem.UpdateHppMultipathLunPolicy*.
      properties:
        lunId:
          description: |2
            The logical unit ID
          type: string
        policy:
          description: |2
            A data object that describes a path selection policy and
            its configuration for the logical unit.
          $ref: '#/components/schemas/HostMultipathInfoHppLogicalUnitPolicy'
      required:
        - lunId
        - policy

    UpdateInternetScsiAdvancedOptionsRequestType:
      type: object
      description: |2
        The parameters of *HostStorageSystem.UpdateInternetScsiAdvancedOptions*.
      properties:
        iScsiHbaDevice:
          description: |2
            The device of the Internet SCSI HBA adapter.
          type: string
        targetSet:
          description: |2
            The set the targets to configure. If not provided,
            the settings will be applied to the host bus adapter itself.
          $ref: '#/components/schemas/HostInternetScsiHbaTargetSet'
        options:
          description: |2
            The list of options to set.
          type: array
          items:
            $ref: '#/components/schemas/HostInternetScsiHbaParamValue'
      required:
        - iScsiHbaDevice
        - options

    UpdateInternetScsiAliasRequestType:
      type: object
      description: |2
        The parameters of *HostStorageSystem.UpdateInternetScsiAlias*.
      properties:
        iScsiHbaDevice:
          description: |2
            The device of the Internet SCSI HBA adapter.
          type: string
        iScsiAlias:
          description: |2
            The new value for the alias of the adapter.
          type: string
      required:
        - iScsiHbaDevice
        - iScsiAlias

    UpdateInternetScsiAuthenticationPropertiesRequestType:
      type: object
      description: |2
        The parameters of *HostStorageSystem.UpdateInternetScsiAuthenticationProperties*.
      properties:
        iScsiHbaDevice:
          description: |2
            The device of the Internet SCSI HBA adapter.
            associated with the target.
          type: string
        authenticationProperties:
          description: |2
            The data object that represents
            the authentication settings to set.
          $ref: '#/components/schemas/HostInternetScsiHbaAuthenticationProperties'
        targetSet:
          description: |2
            The set the targets to configure. Optional,
            when obmitted will configura the authentication properties
            for the adapter instead.
          $ref: '#/components/schemas/HostInternetScsiHbaTargetSet'
      required:
        - iScsiHbaDevice
        - authenticationProperties

    UpdateInternetScsiDigestPropertiesRequestType:
      type: object
      description: |2
        The parameters of *HostStorageSystem.UpdateInternetScsiDigestProperties*.
      properties:
        iScsiHbaDevice:
          description: |2
            The device of the Internet SCSI HBA adapter.
          type: string
        targetSet:
          description: |2
            The set the targets to configure. If not provided,
            the settings will be applied to the host bus adapter itself.
          $ref: '#/components/schemas/HostInternetScsiHbaTargetSet'
        digestProperties:
          description: |2
            The data object that represents the digest
            settings to set.
          $ref: '#/components/schemas/HostInternetScsiHbaDigestProperties'
      required:
        - iScsiHbaDevice
        - digestProperties

    UpdateInternetScsiDiscoveryPropertiesRequestType:
      type: object
      description: |2
        The parameters of *HostStorageSystem.UpdateInternetScsiDiscoveryProperties*.
      properties:
        iScsiHbaDevice:
          description: |2
            The device of the Internet SCSI HBA adapter.
          type: string
        discoveryProperties:
          description: |2
            The discovery settings for this host bus adapter.
          $ref: '#/components/schemas/HostInternetScsiHbaDiscoveryProperties'
      required:
        - iScsiHbaDevice
        - discoveryProperties

    UpdateInternetScsiIPPropertiesRequestType:
      type: object
      description: |2
        The parameters of *HostStorageSystem.UpdateInternetScsiIPProperties*.
      properties:
        iScsiHbaDevice:
          description: |2
            The device of the Internet SCSI HBA adapter.
          type: string
        ipProperties:
          description: |2
            A data object representing the IP properties
            for the host bus adapter
          $ref: '#/components/schemas/HostInternetScsiHbaIPProperties'
      required:
        - iScsiHbaDevice
        - ipProperties

    UpdateInternetScsiNameRequestType:
      type: object
      description: |2
        The parameters of *HostStorageSystem.UpdateInternetScsiName*.
      properties:
        iScsiHbaDevice:
          description: |2
            The current name of the Internet SCSI HBA adapter.
          type: string
        iScsiName:
          description: |2
            The new name for the Internet SCSI HBA adapter
          type: string
      required:
        - iScsiHbaDevice
        - iScsiName

    UpdateIpConfigRequestType:
      type: object
      description: |2
        The parameters of *HostVMotionSystem.UpdateIpConfig*.
      properties:
        ipConfig:
          $ref: '#/components/schemas/HostIpConfig'
      required:
        - ipConfig

    UpdateIpPoolRequestType:
      type: object
      description: |2
        The parameters of *IpPoolManager.UpdateIpPool*.
      properties:
        dc:
          description: |2
            The datacenter on which to look up the pool.
            
            ***Required privileges:*** Datacenter.IpPoolConfig
            
            Refers instance of *Datacenter*.
          $ref: '#/components/schemas/ManagedObjectReference'
        pool:
          description: |2
            The IP pool to update on the server
          $ref: '#/components/schemas/IpPool'
      required:
        - dc
        - pool

    UpdateIpRouteConfigRequestType:
      type: object
      description: |2
        The parameters of *HostNetworkSystem.UpdateIpRouteConfig*.
      properties:
        config:
          $ref: '#/components/schemas/HostIpRouteConfig'
      required:
        - config

    UpdateIpRouteTableConfigRequestType:
      type: object
      description: |2
        The parameters of *HostNetworkSystem.UpdateIpRouteTableConfig*.
      properties:
        config:
          $ref: '#/components/schemas/HostIpRouteTableConfig'
      required:
        - config

    UpdateIpmiRequestType:
      type: object
      description: |2
        The parameters of *HostSystem.UpdateIpmi*.
      properties:
        ipmiInfo:
          $ref: '#/components/schemas/HostIpmiInfo'
      required:
        - ipmiInfo

    UpdateKmipServerRequestType:
      type: object
      description: |2
        The parameters of *CryptoManagerKmip.UpdateKmipServer*.
      properties:
        server:
          description: |2
            \[in\] KMIP server connection information.
          $ref: '#/components/schemas/KmipServerSpec'
      required:
        - server

    UpdateKmsSignedCsrClientCertRequestType:
      type: object
      description: |2
        The parameters of *CryptoManagerKmip.UpdateKmsSignedCsrClientCert*.
      properties:
        cluster:
          description: |2
            \[in\] KMIP cluster.
          $ref: '#/components/schemas/KeyProviderId'
        certificate:
          description: |2
            \[in\] Client certificate.
          type: string
      required:
        - cluster
        - certificate

    UpdateLicenseLabelRequestType:
      type: object
      description: |2
        The parameters of *LicenseManager.UpdateLicenseLabel*.
      properties:
        licenseKey:
          description: |2
            A license.
          type: string
        labelKey:
          description: |2
            A label key.
          type: string
        labelValue:
          description: |2
            Value for the label.
          type: string
      required:
        - licenseKey
        - labelKey
        - labelValue

    UpdateLicenseRequestType:
      type: object
      description: |2
        The parameters of *LicenseManager.UpdateLicense*.
      properties:
        licenseKey:
          description: |2
            A license. E.g. a serial license.
          type: string
        labels:
          description: |2
            array of key-value labels.
          type: array
          items:
            $ref: '#/components/schemas/KeyValue'
      required:
        - licenseKey

    UpdateLinkedChildrenRequestType:
      type: object
      description: |2
        The parameters of *VirtualApp.UpdateLinkedChildren*.
      properties:
        addChangeSet:
          description: |2
            a set of LinkInfo objects that either add a new link
            or modify an exisiting link.
          type: array
          items:
            $ref: '#/components/schemas/VirtualAppLinkInfo'
        removeSet:
          description: |2
            a set of entities that should no longer link to this vApp.
            
            Refers instances of *ManagedEntity*.
          type: array
          items:
            $ref: '#/components/schemas/ManagedObjectReference'

    UpdateLocalSwapDatastoreRequestType:
      type: object
      description: |2
        The parameters of *HostDatastoreSystem.UpdateLocalSwapDatastore*.
      properties:
        datastore:
          description: |2
            The selected datastore. If this argument is unset, then
            the *localSwapDatastore*
            property becomes unset. Otherwise, the host must have read/write
            access to the indicated datastore.
            
            Refers instance of *Datastore*.
          $ref: '#/components/schemas/ManagedObjectReference'

    UpdateLockdownExceptionsRequestType:
      type: object
      description: |2
        The parameters of *HostAccessManager.UpdateLockdownExceptions*.
      properties:
        users:
          description: |2
            the new list of lockdown mode exceptions.
          type: array
          items:
            type: string

    UpdateModuleOptionStringRequestType:
      type: object
      description: |2
        The parameters of *HostKernelModuleSystem.UpdateModuleOptionString*.
      properties:
        name:
          description: |2
            Module name.
          type: string
        options:
          description: |2
            Option string to be passed to the kernel module at
            load time.
          type: string
      required:
        - name
        - options

    UpdateNetworkConfigRequestType:
      type: object
      description: |2
        The parameters of *HostNetworkSystem.UpdateNetworkConfig*.
      properties:
        config:
          $ref: '#/components/schemas/HostNetworkConfig'
        changeMode:
          type: string
      required:
        - config
        - changeMode

    UpdateNetworkResourcePoolRequestType:
      type: object
      description: |2
        The parameters of *DistributedVirtualSwitch.UpdateNetworkResourcePool*.
      properties:
        configSpec:
          description: |2
            The network resource pool configuration specification.
          type: array
          items:
            $ref: '#/components/schemas/DVSNetworkResourcePoolConfigSpec'
      required:
        - configSpec

    UpdateOptionsRequestType:
      type: object
      description: |2
        The parameters of *OptionManager.UpdateOptions*.
      properties:
        changedValue:
          type: array
          items:
            $ref: '#/components/schemas/OptionValue'
      required:
        - changedValue

    UpdatePassthruConfigRequestType:
      type: object
      description: |2
        The parameters of *HostPciPassthruSystem.UpdatePassthruConfig*.
      properties:
        config:
          description: |2
            The new PciPassthru configuration information.
          type: array
          items:
            $ref: '#/components/schemas/HostPciPassthruConfig'
      required:
        - config

    UpdatePerfIntervalRequestType:
      type: object
      description: |2
        The parameters of *PerformanceManager.UpdatePerfInterval*.
      properties:
        interval:
          description: |2
            The *historical interval* being modified, a
            complete data object comprising values for *PerfInterval.enabled*, *interval ID*,
            *PerfInterval.length* of time to maintain statistics for this
            interval in the database, *PerfInterval.level*, *PerfInterval.name*, and *PerfInterval.samplingPeriod*
            properties.
          $ref: '#/components/schemas/PerfInterval'
      required:
        - interval

    UpdatePhysicalNicLinkSpeedRequestType:
      type: object
      description: |2
        The parameters of *HostNetworkSystem.UpdatePhysicalNicLinkSpeed*.
      properties:
        device:
          type: string
        linkSpeed:
          $ref: '#/components/schemas/PhysicalNicLinkInfo'
      required:
        - device

    UpdatePortGroupRequestType:
      type: object
      description: |2
        The parameters of *HostNetworkSystem.UpdatePortGroup*.
      properties:
        pgName:
          type: string
        portgrp:
          $ref: '#/components/schemas/HostPortGroupSpec'
      required:
        - pgName
        - portgrp

    UpdateProductLockerLocationRequestType:
      type: object
      description: |2
        The parameters of *HostSystem.UpdateProductLockerLocation_Task*.
      properties:
        path:
          description: |2
            The absolute path for the VMware Tools repository
            on the host. It should have "/vmfs/volumes/" prefix and
            it should be a valid existing path, or it could be
            empty to restore to default value.
          type: string
      required:
        - path

    UpdateProgressRequestType:
      type: object
      description: |2
        The parameters of *Task.UpdateProgress*.
      properties:
        percentDone:
          description: |2
            Percentage to set for this task
          type: integer
          format: int32
      required:
        - percentDone

    UpdateReferenceHostRequestType:
      type: object
      description: |2
        The parameters of *HostProfile.UpdateReferenceHost*.
      properties:
        host:
          description: |2
            Reference host to use. If unset, the *HostProfile.referenceHost*
            property is cleared.
            
            Refers instance of *HostSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'

    UpdateRequestType:
      type: object
      description: |2
        The parameters of *Agency.Update*.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        config:
          description: |2
            The new configuration for this <code>Agency</code>
          $ref: '#/components/schemas/AgencyConfigInfo'
      required:
        - config

    UpdateRulesetRequestType:
      type: object
      description: |2
        The parameters of *HostFirewallSystem.UpdateRuleset*.
      properties:
        id:
          type: string
        spec:
          $ref: '#/components/schemas/HostFirewallRulesetRulesetSpec'
      required:
        - id
        - spec

    UpdateScsiLunDisplayNameRequestType:
      type: object
      description: |2
        The parameters of *HostStorageSystem.UpdateScsiLunDisplayName*.
      properties:
        lunUuid:
          description: |2
            The uuid of the ScsiLun to update.
          type: string
        displayName:
          description: |2
            The new name to assign to the ScsiLun object.
          type: string
      required:
        - lunUuid
        - displayName

    UpdateSelfSignedClientCertRequestType:
      type: object
      description: |2
        The parameters of *CryptoManagerKmip.UpdateSelfSignedClientCert*.
      properties:
        cluster:
          description: |2
            \[in\] KMIP cluster.
          $ref: '#/components/schemas/KeyProviderId'
        certificate:
          description: |2
            \[in\] Client certificate.
          type: string
      required:
        - cluster
        - certificate

    UpdateServiceConsoleVirtualNicRequestType:
      type: object
      description: |2
        The parameters of *HostNetworkSystem.UpdateServiceConsoleVirtualNic*.
      properties:
        device:
          type: string
        nic:
          $ref: '#/components/schemas/HostVirtualNicSpec'
      required:
        - device
        - nic

    UpdateServiceMessageRequestType:
      type: object
      description: |2
        The parameters of *SessionManager.UpdateServiceMessage*.
      properties:
        message:
          description: |2
            The message to send. Newline characters may be included.
          type: string
      required:
        - message

    UpdateServicePolicyRequestType:
      type: object
      description: |2
        The parameters of *HostServiceSystem.UpdateServicePolicy*.
      properties:
        id:
          description: |2
            Service identifier
            (*HostServiceSystem.serviceInfo*.*HostServiceInfo.service*.*HostService.key*).
          type: string
        policy:
          description: |2
            Specifies the condition for service activation.
            Use one of the *HostServicePolicy_enum* values.
          type: string
      required:
        - id
        - policy

    UpdateSoftwareInternetScsiEnabledRequestType:
      type: object
      description: |2
        The parameters of *HostStorageSystem.UpdateSoftwareInternetScsiEnabled*.
      properties:
        enabled:
          description: |2
            True to enable the iSCSI; false to disable it
          type: boolean
      required:
        - enabled

    UpdateSystemResourcesRequestType:
      type: object
      description: |2
        The parameters of *HostSystem.UpdateSystemResources*.
      properties:
        resourceInfo:
          $ref: '#/components/schemas/HostSystemResourceInfo'
      required:
        - resourceInfo

    UpdateSystemSwapConfigurationRequestType:
      type: object
      description: |2
        The parameters of *HostSystem.UpdateSystemSwapConfiguration*.
      properties:
        sysSwapConfig:
          description: |2
            Contains a list of system swap options that
            configure the system swap functionality.
          $ref: '#/components/schemas/HostSystemSwapConfiguration'
      required:
        - sysSwapConfig

    UpdateSystemUsersRequestType:
      type: object
      description: |2
        The parameters of *HostAccessManager.UpdateSystemUsers*.
      properties:
        users:
          description: |2
            the new list of local system users.
          type: array
          items:
            type: string

    UpdateUserRequestType:
      type: object
      description: |2
        The parameters of *HostLocalAccountManager.UpdateUser*.
      properties:
        user:
          description: |2
            Specification of user being updated.
          $ref: '#/components/schemas/HostAccountSpec'
      required:
        - user

    UpdateVAppConfigRequestType:
      type: object
      description: |2
        The parameters of *VirtualApp.UpdateVAppConfig*.
      properties:
        spec:
          description: |2
            contains the updates to the current configuration. Any set element,
            is changed. All values in the spec that is left unset, will not be
            modified.
          $ref: '#/components/schemas/VAppConfigSpec'
      required:
        - spec

    UpdateVStorageInfrastructureObjectPolicyRequestType:
      type: object
      description: |2
        The parameters of *VcenterVStorageObjectManager.UpdateVStorageInfrastructureObjectPolicy_Task*.
      properties:
        spec:
          description: |2
            specification to assign a SPBM policy to virtual storage
            infrastructure object.
          $ref: '#/components/schemas/vslmInfrastructureObjectPolicySpec'
      required:
        - spec

    UpdateVStorageObjectCryptoRequestType:
      type: object
      description: |2
        The parameters of *VcenterVStorageObjectManager.UpdateVStorageObjectCrypto_Task*.
      properties:
        id:
          description: |2
            The ID of the virtual storage object.
          $ref: '#/components/schemas/ID'
        datastore:
          description: |2
            The datastore where the virtual storage object is
            located.
            
            Refers instance of *Datastore*.
          $ref: '#/components/schemas/ManagedObjectReference'
        profile:
          description: |2
            New profile requirement on the virtual storage object.
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineProfileSpec'
        disksCrypto:
          description: |2
            The crypto information of each disk on the chain.
          $ref: '#/components/schemas/DiskCryptoSpec'
      required:
        - id
        - datastore

    UpdateVStorageObjectPolicyRequestType:
      type: object
      description: |2
        The parameters of *VcenterVStorageObjectManager.UpdateVStorageObjectPolicy_Task*.
      properties:
        id:
          description: |2
            The ID of the virtual storage object.
          $ref: '#/components/schemas/ID'
        datastore:
          description: |2
            The datastore where the virtual storage object is
            located.
            
            Refers instance of *Datastore*.
          $ref: '#/components/schemas/ManagedObjectReference'
        profile:
          description: |2
            New profile requirement on the virtual storage object.
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineProfileSpec'
      required:
        - id
        - datastore

    UpdateVVolVirtualMachineFilesRequestType:
      type: object
      description: |2
        The parameters of *Datastore.UpdateVVolVirtualMachineFiles_Task*.
      properties:
        failoverPair:
          description: |2
            Mapping of source to target storage container
            as well as source to target VVol IDs.
          type: array
          items:
            $ref: '#/components/schemas/DatastoreVVolContainerFailoverPair'

    UpdateVirtualMachineFilesRequestType:
      type: object
      description: |2
        The parameters of *Datastore.UpdateVirtualMachineFiles_Task*.
      properties:
        mountPathDatastoreMapping:
          description: |2
            Old mount path to datastore mapping.
          type: array
          items:
            $ref: '#/components/schemas/DatastoreMountPathDatastorePair'
      required:
        - mountPathDatastoreMapping

    UpdateVirtualNicRequestType:
      type: object
      description: |2
        The parameters of *HostNetworkSystem.UpdateVirtualNic*.
      properties:
        device:
          type: string
        nic:
          $ref: '#/components/schemas/HostVirtualNicSpec'
      required:
        - device
        - nic

    UpdateVirtualSwitchRequestType:
      type: object
      description: |2
        The parameters of *HostNetworkSystem.UpdateVirtualSwitch*.
      properties:
        vswitchName:
          type: string
        spec:
          $ref: '#/components/schemas/HostVirtualSwitchSpec'
      required:
        - vswitchName
        - spec

    UpdateVmfsUnmapBandwidthRequestType:
      type: object
      description: |2
        The parameters of *HostStorageSystem.UpdateVmfsUnmapBandwidth*.
      properties:
        vmfsUuid:
          description: |2
            The VMFS UUID.
          type: string
        unmapBandwidthSpec:
          description: |2
            Unmap bandwidth specification. See
            *VmfsUnmapBandwidthSpec*
          $ref: '#/components/schemas/VmfsUnmapBandwidthSpec'
      required:
        - vmfsUuid
        - unmapBandwidthSpec

    UpdateVmfsUnmapPriorityRequestType:
      type: object
      description: |2
        The parameters of *HostStorageSystem.UpdateVmfsUnmapPriority*.
      properties:
        vmfsUuid:
          description: |2
            The VMFS UUID.
          type: string
        unmapPriority:
          description: |2
            Unmap priority. The supported values are defined in
            *HostVmfsVolumeUnmapPriority_enum*.
          type: string
      required:
        - vmfsUuid
        - unmapPriority

    UpdateVsanRequestType:
      type: object
      description: |2
        The parameters of *HostVsanSystem.UpdateVsan_Task*.
      properties:
        config:
          description: |2
            host configuration settings to use for the VSAN service.
          $ref: '#/components/schemas/VsanHostConfigInfo'
      required:
        - config

    UpgradeIoFilterRequestType:
      type: object
      description: |2
        The parameters of *IoFilterManager.UpgradeIoFilter_Task*.
      properties:
        filterId:
          description: |2
            The filter to be upgraded.
          type: string
        compRes:
          description: |2
            The compute resource that the filter is installed on.
            "compRes" must be a cluster.
            
            Refers instance of *ComputeResource*.
          $ref: '#/components/schemas/ManagedObjectReference'
        vibUrl:
          description: |2
            The URL that points to the new IO Filter VIB package.
          type: string
        vibSslTrust:
          description: |2
            This specifies SSL trust policy *IoFilterManagerSslTrust*
            for the given VIB URL. If unset, the server certificate is
            validated against the trusted root certificates.
            
            ***Since:*** vSphere API Release 8.0.3.0
          $ref: '#/components/schemas/IoFilterManagerSslTrust'
      required:
        - filterId
        - compRes
        - vibUrl

    UpgradeToolsRequestType:
      type: object
      description: |2
        The parameters of *VirtualMachine.UpgradeTools_Task*.
      properties:
        installerOptions:
          description: |2
            Command line options passed to the installer to modify
            the installation procedure for tools.
          type: string

    UpgradeVMRequestType:
      type: object
      description: |2
        The parameters of *VirtualMachine.UpgradeVM_Task*.
      properties:
        version:
          description: |2
            If specified, upgrade to that specified version. If not specified,
            upgrade to the most current virtual hardware supported on the host.
          type: string

    UpgradeVmfsRequestType:
      type: object
      description: |2
        The parameters of *HostStorageSystem.UpgradeVmfs*.
      properties:
        vmfsPath:
          description: |2
            The path of the VMFS.
          type: string
      required:
        - vmfsPath

    UpgradeVsanObjectsRequestType:
      type: object
      description: |2
        The parameters of *HostVsanInternalSystem.UpgradeVsanObjects*.
      properties:
        uuids:
          description: |2
            The array of objects' UUID which will be upgraded.
          type: array
          items:
            type: string
        newVersion:
          description: |2
            The new version will be applied to objects.
          type: integer
          format: int32
      required:
        - uuids
        - newVersion

    UploadClientCertRequestType:
      type: object
      description: |2
        The parameters of *CryptoManagerKmip.UploadClientCert*.
      properties:
        cluster:
          description: |2
            \[in\] KMIP cluster.
          $ref: '#/components/schemas/KeyProviderId'
        certificate:
          description: |2
            \[in\] Client certificate.
          type: string
        privateKey:
          description: |2
            \[in\] Private key.
          type: string
          format: password
      required:
        - cluster
        - certificate
        - privateKey

    UploadKmipServerCertRequestType:
      type: object
      description: |2
        The parameters of *CryptoManagerKmip.UploadKmipServerCert*.
      properties:
        cluster:
          description: |2
            \[in\] KMIP cluster.
          $ref: '#/components/schemas/KeyProviderId'
        certificate:
          description: |2
            \[in\] Server certificate in PEM encoding.
          type: string
      required:
        - cluster
        - certificate

    VCenterUpdateVStorageObjectMetadataExRequestType:
      type: object
      description: |2
        The parameters of *VcenterVStorageObjectManager.VCenterUpdateVStorageObjectMetadataEx_Task*.
        
        ***Since:*** vSphere API Release 7.0.2.0
      properties:
        id:
          description: |2
            The ID of the virtual storage object.
          $ref: '#/components/schemas/ID'
        datastore:
          description: |2
            The datastore to query for the virtual storage objects.
            
            Refers instance of *Datastore*.
          $ref: '#/components/schemas/ManagedObjectReference'
        metadata:
          description: |2
            array of key/value strings. (keys must be unique
            within the list)
          type: array
          items:
            $ref: '#/components/schemas/KeyValue'
        deleteKeys:
          description: |2
            array of keys need to be deleted
          type: array
          items:
            type: string
      required:
        - id
        - datastore

    VStorageObjectCreateSnapshotExRequestType:
      type: object
      description: |2
        The parameters of *VStorageObjectManagerBase.VStorageObjectCreateSnapshotEx_Task*.
        
        ***Since:*** vSphere API Release 8.0.2.0
      properties:
        id:
          description: |2
            The ID of the virtual storage object.
          $ref: '#/components/schemas/ID'
        datastore:
          description: |2
            The datastore where the source virtual storage object
            is located.
            
            Refers instance of *Datastore*.
          $ref: '#/components/schemas/ManagedObjectReference'
        description:
          description: |2
            A short description to be associated with the snapshot.
          type: string
      required:
        - id
        - datastore
        - description

    VStorageObjectCreateSnapshotRequestType:
      type: object
      description: |2
        The parameters of *VcenterVStorageObjectManager.VStorageObjectCreateSnapshot_Task*.
      properties:
        id:
          description: |2
            The ID of the virtual storage object.
          $ref: '#/components/schemas/ID'
        datastore:
          description: |2
            The datastore where the source virtual storage object
            is located.
            
            Refers instance of *Datastore*.
          $ref: '#/components/schemas/ManagedObjectReference'
        description:
          description: |2
            A short description to be associated with the snapshot.
          type: string
      required:
        - id
        - datastore
        - description

    VStorageObjectDeleteSnapshotExRequestType:
      type: object
      description: |2
        The parameters of *VStorageObjectManagerBase.VStorageObjectDeleteSnapshotEx_Task*.
        
        ***Since:*** vSphere API Release 8.0.2.0
      properties:
        id:
          description: |2
            The ID of the virtual storage object.
          $ref: '#/components/schemas/ID'
        datastore:
          description: |2
            The datastore where the source virtual storage object
            is located.
            
            Refers instance of *Datastore*.
          $ref: '#/components/schemas/ManagedObjectReference'
        snapshotId:
          description: |2
            The ID of the snapshot of a virtual storage object.
          $ref: '#/components/schemas/ID'
      required:
        - id
        - datastore
        - snapshotId

    VStorageObjectExtendDiskExRequestType:
      type: object
      description: |2
        The parameters of *VStorageObjectManagerBase.VStorageObjectExtendDiskEx_Task*.
        
        ***Since:*** vSphere API Release 8.0.2.0
      properties:
        id:
          description: |2
            The ID of the virtual disk to be extended.
          $ref: '#/components/schemas/ID'
        datastore:
          description: |2
            The datastore where the virtual disk is located.
            
            Refers instance of *Datastore*.
          $ref: '#/components/schemas/ManagedObjectReference'
        newCapacityInMB:
          description: |2
            The new capacity of the virtual disk in MB.
          type: integer
          format: int64
      required:
        - id
        - datastore
        - newCapacityInMB

    ValidateCredentialsInGuestRequestType:
      type: object
      description: |2
        The parameters of *GuestAuthManager.ValidateCredentialsInGuest*.
      properties:
        vm:
          description: |2
            MoRef of the VM to perform the operation on.
            
            ***Required privileges:*** VirtualMachine.GuestOperations.Query
            
            Refers instance of *VirtualMachine*.
          $ref: '#/components/schemas/ManagedObjectReference'
        auth:
          description: |2
            The guest authentication data. See
            *GuestAuthentication*.
          $ref: '#/components/schemas/GuestAuthentication'
      required:
        - vm
        - auth

    ValidateHCIConfigurationRequestType:
      type: object
      description: |2
        The parameters of *ClusterComputeResource.ValidateHCIConfiguration*.
      properties:
        hciConfigSpec:
          description: |2
            The *ClusterComputeResourceHCIConfigSpec*
            to be used for validating the hosts. If not specified, the
            existing *ClusterComputeResourceHCIConfigInfo* of the
            cluster will be used.  
            Note:- This param must be omitted for post-configure validation.
          $ref: '#/components/schemas/ClusterComputeResourceHCIConfigSpec'
        hosts:
          description: |2
            The set of hosts to be validated. If not specified, the set
            of existing hosts in the cluster will be used.  
            Note:- This param must be omitted for post-configure validation.
            
            Refers instances of *HostSystem*.
          type: array
          items:
            $ref: '#/components/schemas/ManagedObjectReference'

    ValidateHostProfileCompositionRequestType:
      type: object
      description: |2
        The parameters of *HostProfileManager.ValidateHostProfileComposition_Task*.
      properties:
        source:
          description: |2
            The source host profile of the configurations for
            composition.
            
            Refers instance of *Profile*.
          $ref: '#/components/schemas/ManagedObjectReference'
        targets:
          description: |2
            The array of target host profiles that the configurations
            composite into.
            
            Refers instances of *Profile*.
          type: array
          items:
            $ref: '#/components/schemas/ManagedObjectReference'
        toBeMerged:
          description: |2
            A *HostApplyProfile* object
            contains the sub profiles that will be merged from the source to
            the target host profiles, and all the ancestors of these sub
            profiles. For singleton sub profile, it will be added into a
            target host profile if it doesn't exist in the target; otherwise,
            it replaces the one in the target.
            The member variable
            *ApplyProfile.toBeMerged* of these sub profiles
            should have a value of <code>true</code>. The member variables
            *ApplyProfile.toBeMerged*
            *ApplyProfile.toReplaceWith*,
            *ApplyProfile.toBeDeleted*
            of the ancestors should have a value of <code>false</code>.
          $ref: '#/components/schemas/HostApplyProfile'
        toReplaceWith:
          description: |2
            A *HostApplyProfile* object
            contains the sub profiles that will be used to replace the array
            in the target host profiles, and all the ancestors of these sub
            profiles.
            Similar to above except that the member variable
            *ApplyProfile.toReplaceWith*
            is turned on.
          $ref: '#/components/schemas/HostApplyProfile'
        toBeDeleted:
          description: |2
            A *HostApplyProfile* object
            contains the sub profiles that will be deleted from the source
            **and** the target host profiles, and all the ancestors of
            these sub profiles.
            Similar to above except that the member variable
            *ApplyProfile.toBeDeleted*
            is turned on.
          $ref: '#/components/schemas/HostApplyProfile'
        enableStatusToBeCopied:
          description: |2
            A *HostApplyProfile*
            object contains the sub profiles that the member variable
            *ApplyProfile.enabled* will be copied from the
            source host profile to all the target host profiles, and all the
            ancestors of these sub profiles.
            The member variable
            *ApplyProfile.copyEnableStatus*
            of these sub profiles is turned on. The member variable
            *ApplyProfile.copyEnableStatus* of the
            *ApplyProfile.copyEnableStatus* of the
            ancestors should have a value of <code>false</code>.
          $ref: '#/components/schemas/HostApplyProfile'
        errorOnly:
          description: |2
            Indicates that the validation result for each target
            don't contain the source-target difference.
          type: boolean
      required:
        - source

    ValidateHostRequestType:
      type: object
      description: |2
        The parameters of *OvfManager.ValidateHost*.
      properties:
        ovfDescriptor:
          description: |2
            The OVF descriptor to examine.
          type: string
        host:
          description: |2
            The host to validate against.
            
            Refers instance of *HostSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
        vhp:
          description: |2
            Additional parameters for validateHost, wrapped in a ValidateHostParams
            instance.
          $ref: '#/components/schemas/OvfValidateHostParams'
      required:
        - ovfDescriptor
        - host
        - vhp

    ValidateMigrationRequestType:
      type: object
      description: |2
        The parameters of *ServiceInstance.ValidateMigration*.
      properties:
        vm:
          description: |2
            The set of virtual machines intended for migration.
            
            Refers instances of *VirtualMachine*.
          type: array
          items:
            $ref: '#/components/schemas/ManagedObjectReference'
        state:
          description: |2
            The power state that the virtual machines must have. If
            this argument is not set, each virtual machine is evaluated
            according to its current power state.
          $ref: '#/components/schemas/VirtualMachinePowerState_enum'
        testType:
          description: |2
            The set of tests to run. If this argument is not set, all
            tests will be run.
          type: array
          items:
            type: string
        pool:
          description: |2
            The target resource pool for the virtual machines. If the
            pool parameter is left unset, the target pool for each particular
            virtual machine's migration will be that virtual machine's current
            pool. If the virtual machine is a template then either this
            parameter or the host parameter must be set; additionally if
            resource tests are requested then this parameter is required.
            
            Refers instance of *ResourcePool*.
          $ref: '#/components/schemas/ManagedObjectReference'
        host:
          description: |2
            The target host on which the virtual machines will run. The host
            parameter may be left unset if the compute resource associated with
            the target pool represents a stand-alone host or a DRS-enabled
            cluster. In the former case the stand-alone host is used as the
            target host. In the latter case, each connected host in the cluster
            that is not in maintenance mode is tested as a target host.
            If the virtual machine is a template then either this
            parameter or the pool parameter must be set.
            
            Refers instance of *HostSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - vm

    ValidateStoragePodConfigRequestType:
      type: object
      description: |2
        The parameters of *StorageResourceManager.ValidateStoragePodConfig*.
      properties:
        pod:
          description: |2
            The storage pod.
            
            Refers instance of *StoragePod*.
          $ref: '#/components/schemas/ManagedObjectReference'
        spec:
          description: |2
            A set of storage Drs configuration changes to apply to
            the storage pod.
          $ref: '#/components/schemas/StorageDrsConfigSpec'
      required:
        - pod
        - spec

    VasaProviderSyncRequestType:
      type: object
      description: |2
        The parameters of *VasaProvider.VasaProviderSync_Task*.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        arrayId:
          type: string

    VslmAttachDiskRequestType:
      type: object
      description: |2
        The parameters of *VslmVStorageObjectManager.VslmAttachDisk_Task*.
        
        This structure may be used only with operations rendered under `/vslm`.
      properties:
        id:
          description: |2
            The ID of the virtual disk to be operated. See
            *ID*
          $ref: '#/components/schemas/ID'
        vm:
          description: |2
            The virtual machine where the virtual disk is to be attached.
            
            Refers instance of *VirtualMachine*.
          $ref: '#/components/schemas/ManagedObjectReference'
        controllerKey:
          description: |2
            Key of the controller the disk will connect to.
            It can be unset if there is only one controller
            (SCSI or SATA) with the available slot in the
            virtual machine. If there are multiple SCSI or
            SATA controllers available, user must specify
            the controller; if there is no available
            controllers, a *MissingController*
            fault will be thrown.
          type: integer
          format: int32
        unitNumber:
          description: |2
            The unit number of the attached disk on its controller.
            If unset, the next available slot on the specified
            controller or the only available controller will be
            assigned to the attached disk.
          type: integer
          format: int32
      required:
        - id
        - vm

    VslmAttachTagToVStorageObjectRequestType:
      type: object
      description: |2
        The parameters of *VslmVStorageObjectManager.VslmAttachTagToVStorageObject*.
        
        This structure may be used only with operations rendered under `/vslm`.
      properties:
        id:
          description: |2
            The identifier(ID) of the virtual storage object.
          $ref: '#/components/schemas/ID'
        category:
          description: |2
            The category to which the tag belongs.
          type: string
        tag:
          description: |2
            The tag which has to be associated with the virtual storage
            object.
          type: string
      required:
        - id
        - category
        - tag

    VslmClearVStorageObjectControlFlagsRequestType:
      type: object
      description: |2
        The parameters of *VslmVStorageObjectManager.VslmClearVStorageObjectControlFlags*.
        
        This structure may be used only with operations rendered under `/vslm`.
      properties:
        id:
          description: |2
            The ID of the virtual storage object.
          $ref: '#/components/schemas/ID'
        controlFlags:
          description: |2
            control flags enum array to be cleared on the
            VStorageObject. All control flags not included
            in the array remain intact.
          type: array
          items:
            type: string
      required:
        - id

    VslmCloneVStorageObjectRequestType:
      type: object
      description: |2
        The parameters of *VslmVStorageObjectManager.VslmCloneVStorageObject_Task*.
        
        This structure may be used only with operations rendered under `/vslm`.
      properties:
        id:
          description: |2
            The ID of the virtual storage object.
          $ref: '#/components/schemas/ID'
        spec:
          description: |2
            The specification for cloning the virtual storage
            object.
          $ref: '#/components/schemas/VslmCloneSpec'
      required:
        - id
        - spec

    VslmCreateDiskFromSnapshotRequestType:
      type: object
      description: |2
        The parameters of *VslmVStorageObjectManager.VslmCreateDiskFromSnapshot_Task*.
        
        This structure may be used only with operations rendered under `/vslm`.
      properties:
        id:
          description: |2
            The ID of the virtual storage object.
          $ref: '#/components/schemas/ID'
        snapshotId:
          description: |2
            The ID of the snapshot of the virtual storage object.
          $ref: '#/components/schemas/ID'
        name:
          description: |2
            A user friendly name to be associated with the new disk.
          type: string
        profile:
          description: |2
            SPBM Profile requirement on the new virtual storage object.
            If not specified datastore default policy would be
            assigned.
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineProfileSpec'
        crypto:
          description: |2
            Crypto information of the new disk.
          $ref: '#/components/schemas/CryptoSpec'
        path:
          description: |2
            Relative location in the specified datastore where disk needs
            to be created. If not specified disk gets created at the
            defualt VStorageObject location on the specified datastore.
          type: string
      required:
        - id
        - snapshotId
        - name

    VslmCreateDiskRequestType:
      type: object
      description: |2
        The parameters of *VslmVStorageObjectManager.VslmCreateDisk_Task*.
        
        This structure may be used only with operations rendered under `/vslm`.
      properties:
        spec:
          description: |2
            The specification of the virtual storage object
            to be created.
          $ref: '#/components/schemas/VslmCreateSpec'
      required:
        - spec

    VslmCreateSnapshotRequestType:
      type: object
      description: |2
        The parameters of *VslmVStorageObjectManager.VslmCreateSnapshot_Task*.
        
        This structure may be used only with operations rendered under `/vslm`.
      properties:
        id:
          description: |2
            The ID of the virtual storage object.
          $ref: '#/components/schemas/ID'
        description:
          description: |2
            A short description to be associated with the snapshot.
          type: string
      required:
        - id
        - description

    VslmDeleteSnapshotRequestType:
      type: object
      description: |2
        The parameters of *VslmVStorageObjectManager.VslmDeleteSnapshot_Task*.
        
        This structure may be used only with operations rendered under `/vslm`.
      properties:
        id:
          description: |2
            The ID of the virtual storage object.
          $ref: '#/components/schemas/ID'
        snapshotId:
          description: |2
            The ID of the snapshot of a virtual storage object.
          $ref: '#/components/schemas/ID'
      required:
        - id
        - snapshotId

    VslmDeleteVStorageObjectRequestType:
      type: object
      description: |2
        The parameters of *VslmVStorageObjectManager.VslmDeleteVStorageObject_Task*.
        
        This structure may be used only with operations rendered under `/vslm`.
      properties:
        id:
          description: |2
            The ID of the virtual storage object to be deleted.
          $ref: '#/components/schemas/ID'
      required:
        - id

    VslmDetachTagFromVStorageObjectRequestType:
      type: object
      description: |2
        The parameters of *VslmVStorageObjectManager.VslmDetachTagFromVStorageObject*.
        
        This structure may be used only with operations rendered under `/vslm`.
      properties:
        id:
          description: |2
            The identifier(ID) of the virtual storage object.
          $ref: '#/components/schemas/ID'
        category:
          description: |2
            The category to which the tag belongs.
          type: string
        tag:
          description: |2
            The tag which has to be disassociated with the virtual storage
            object.
          type: string
      required:
        - id
        - category
        - tag

    VslmExtendDiskRequestType:
      type: object
      description: |2
        The parameters of *VslmVStorageObjectManager.VslmExtendDisk_Task*.
        
        This structure may be used only with operations rendered under `/vslm`.
      properties:
        id:
          description: |2
            The ID of the virtual disk to be extended.
          $ref: '#/components/schemas/ID'
        newCapacityInMB:
          description: |2
            The new capacity of the virtual disk in MB.
          type: integer
          format: int64
      required:
        - id
        - newCapacityInMB

    VslmInflateDiskRequestType:
      type: object
      description: |2
        The parameters of *VslmVStorageObjectManager.VslmInflateDisk_Task*.
        
        This structure may be used only with operations rendered under `/vslm`.
      properties:
        id:
          description: |2
            The ID of the virtual disk to be inflated.
          $ref: '#/components/schemas/ID'
      required:
        - id

    VslmListTagsAttachedToVStorageObjectRequestType:
      type: object
      description: |2
        The parameters of *VslmVStorageObjectManager.VslmListTagsAttachedToVStorageObject*.
        
        This structure may be used only with operations rendered under `/vslm`.
      properties:
        id:
          description: |2
            The ID of the virtual storage object.
          $ref: '#/components/schemas/ID'
      required:
        - id

    VslmListVStorageObjectForSpecRequestType:
      type: object
      description: |2
        The parameters of *VslmVStorageObjectManager.VslmListVStorageObjectForSpec*.
        
        This structure may be used only with operations rendered under `/vslm`.
      properties:
        query:
          description: |2
            Query defined using array of
            *VslmVsoVStorageObjectQuerySpec* objects.
          type: array
          items:
            $ref: '#/components/schemas/VslmVsoVStorageObjectQuerySpec'
        maxResult:
          description: |2
            Maximum number of virtual storage object IDs to return.
          type: integer
          format: int32
      required:
        - maxResult

    VslmListVStorageObjectsAttachedToTagRequestType:
      type: object
      description: |2
        The parameters of *VslmVStorageObjectManager.VslmListVStorageObjectsAttachedToTag*.
        
        This structure may be used only with operations rendered under `/vslm`.
      properties:
        category:
          description: |2
            The category to which the tag belongs.
          type: string
        tag:
          description: |2
            The tag to be queried.
          type: string
      required:
        - category
        - tag

    VslmLoginByTokenRequestType:
      type: object
      description: |2
        The parameters of *VslmSessionManager.VslmLoginByToken*.
        
        This structure may be used only with operations rendered under `/vslm`.
      properties:
        delegatedTokenXml:
          description: |2
            The delegated token will be retrieved by the
            client and delegated to VSLM. VSLM will use this token, on user's
            behalf, to login to VC for authorization purposes. It is necessary
            to convert the token to XML because the SAML token itself is
            not a VMODL Data Object and cannot be used as a parameter.
          type: string
      required:
        - delegatedTokenXml

    VslmQueryChangedDiskAreasRequestType:
      type: object
      description: |2
        The parameters of *VslmVStorageObjectManager.VslmQueryChangedDiskAreas*.
        
        This structure may be used only with operations rendered under `/vslm`.
      properties:
        id:
          description: |2
            The ID of the virtual storage object.
          $ref: '#/components/schemas/ID'
        snapshotId:
          description: |2
            The ID of the snapshot of a virtual storage object for
            which changes that have been made since "changeId"
            should be computed.
          $ref: '#/components/schemas/ID'
        startOffset:
          description: |2
            Start Offset in bytes at which to start computing
            changes. Typically, callers will make multiple calls
            to this function, starting with startOffset 0 and then
            examine the "length" property in the returned
            DiskChangeInfo structure, repeatedly calling
            queryChangedDiskAreas until a map for the entire
            virtual disk has been obtained.
          type: integer
          format: int64
        changeId:
          description: |2
            Identifier referring to a point in the past that should
            be used as the point in time at which to begin including
            changes to the disk in the result. A typical use case
            would be a backup application obtaining a changeId from
            a virtual disk's backing info when performing a backup.
            When a subsequent incremental backup is to be performed,
            this change Id can be used to obtain a list of changed
            areas on disk.
          type: string
      required:
        - id
        - snapshotId
        - startOffset
        - changeId

    VslmQueryDatastoreInfoRequestType:
      type: object
      description: |2
        The parameters of *VslmStorageLifecycleManager.VslmQueryDatastoreInfo*.
        
        This structure may be used only with operations rendered under `/vslm`.
      properties:
        datastoreUrl:
          description: |2
            The datastore URL as specified in
            *DatastoreInfo.url*
          type: string
      required:
        - datastoreUrl

    VslmQueryGlobalCatalogSyncStatusForDatastoreRequestType:
      type: object
      description: |2
        The parameters of *VslmVStorageObjectManager.VslmQueryGlobalCatalogSyncStatusForDatastore*.
        
        This structure may be used only with operations rendered under `/vslm`.
      properties:
        datastoreURL:
          description: |2
            URL of the datastore to check synchronization status for
          type: string
      required:
        - datastoreURL

    VslmReconcileDatastoreInventoryRequestType:
      type: object
      description: |2
        The parameters of *VslmVStorageObjectManager.VslmReconcileDatastoreInventory_Task*.
        
        This structure may be used only with operations rendered under `/vslm`.
      properties:
        datastore:
          description: |2
            The datastore that needs to be reconciled.
            
            Refers instance of *Datastore*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - datastore

    VslmRegisterDiskRequestType:
      type: object
      description: |2
        The parameters of *VslmVStorageObjectManager.VslmRegisterDisk*.
        
        This structure may be used only with operations rendered under `/vslm`.
      properties:
        path:
          description: |2
            URL path to the virtual disk.
          type: string
        name:
          description: |2
            The descriptive name of the disk object. If
            unset the name will be automatically determined
            from the path. @see vim.vslm.BaseConfigInfo.name
          type: string
      required:
        - path

    VslmRelocateVStorageObjectRequestType:
      type: object
      description: |2
        The parameters of *VslmVStorageObjectManager.VslmRelocateVStorageObject_Task*.
        
        This structure may be used only with operations rendered under `/vslm`.
      properties:
        id:
          description: |2
            The ID of the virtual storage object.
          $ref: '#/components/schemas/ID'
        spec:
          description: |2
            The specification for relocation of the virtual
            storage object.
          $ref: '#/components/schemas/VslmRelocateSpec'
      required:
        - id
        - spec

    VslmRenameVStorageObjectRequestType:
      type: object
      description: |2
        The parameters of *VslmVStorageObjectManager.VslmRenameVStorageObject*.
        
        This structure may be used only with operations rendered under `/vslm`.
      properties:
        id:
          description: |2
            The ID of the virtual storage object to be renamed.
          $ref: '#/components/schemas/ID'
        name:
          description: |2
            The new name for the virtual storage object.
          type: string
      required:
        - id
        - name

    VslmRetrieveSnapshotDetailsRequestType:
      type: object
      description: |2
        The parameters of *VslmVStorageObjectManager.VslmRetrieveSnapshotDetails*.
        
        This structure may be used only with operations rendered under `/vslm`.
      properties:
        id:
          description: |2
            The ID of the virtual storage object.
          $ref: '#/components/schemas/ID'
        snapshotId:
          description: |2
            The ID of the snapshot of a virtual storage object.
          $ref: '#/components/schemas/ID'
      required:
        - id
        - snapshotId

    VslmRetrieveSnapshotInfoRequestType:
      type: object
      description: |2
        The parameters of *VslmVStorageObjectManager.VslmRetrieveSnapshotInfo*.
        
        This structure may be used only with operations rendered under `/vslm`.
      properties:
        id:
          description: |2
            The ID of the virtual storage object.
          $ref: '#/components/schemas/ID'
      required:
        - id

    VslmRetrieveVStorageInfrastructureObjectPolicyRequestType:
      type: object
      description: |2
        The parameters of *VslmVStorageObjectManager.VslmRetrieveVStorageInfrastructureObjectPolicy*.
        
        This structure may be used only with operations rendered under `/vslm`.
      properties:
        datastore:
          description: |2
            Datastore on which policy needs to be retrieved.
            
            Refers instance of *Datastore*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - datastore

    VslmRetrieveVStorageObjectAssociationsRequestType:
      type: object
      description: |2
        The parameters of *VslmVStorageObjectManager.VslmRetrieveVStorageObjectAssociations*.
        
        This structure may be used only with operations rendered under `/vslm`.
      properties:
        ids:
          description: |2
            The IDs of the virtual storage objects of the query.
          type: array
          items:
            $ref: '#/components/schemas/ID'

    VslmRetrieveVStorageObjectMetadataRequestType:
      type: object
      description: |2
        The parameters of *VslmVStorageObjectManager.VslmRetrieveVStorageObjectMetadata*.
        
        This structure may be used only with operations rendered under `/vslm`.
      properties:
        id:
          description: |2
            The ID of the virtual storage object.
          $ref: '#/components/schemas/ID'
        snapshotId:
          description: |2
            The ID of the snapshot of virtual storage object.
          $ref: '#/components/schemas/ID'
        prefix:
          description: |2
            The prefix of the metadata key that needs to be retrieved
          type: string
      required:
        - id

    VslmRetrieveVStorageObjectMetadataValueRequestType:
      type: object
      description: |2
        The parameters of *VslmVStorageObjectManager.VslmRetrieveVStorageObjectMetadataValue*.
        
        This structure may be used only with operations rendered under `/vslm`.
      properties:
        id:
          description: |2
            The ID of the virtual storage object.
          $ref: '#/components/schemas/ID'
        snapshotId:
          description: |2
            The ID of the snapshot of virtual storage object.
          $ref: '#/components/schemas/ID'
        key:
          description: |2
            The key for the the virtual storage object
          type: string
      required:
        - id
        - key

    VslmRetrieveVStorageObjectRequestType:
      type: object
      description: |2
        The parameters of *VslmVStorageObjectManager.VslmRetrieveVStorageObject*.
        
        This structure may be used only with operations rendered under `/vslm`.
      properties:
        id:
          description: |2
            The ID of the virtual storage object to be retrieved.
          $ref: '#/components/schemas/ID'
      required:
        - id

    VslmRetrieveVStorageObjectStateRequestType:
      type: object
      description: |2
        The parameters of *VslmVStorageObjectManager.VslmRetrieveVStorageObjectState*.
        
        This structure may be used only with operations rendered under `/vslm`.
      properties:
        id:
          description: |2
            The ID of the virtual storage object the state to be retrieved.
          $ref: '#/components/schemas/ID'
      required:
        - id

    VslmRetrieveVStorageObjectsRequestType:
      type: object
      description: |2
        The parameters of *VslmVStorageObjectManager.VslmRetrieveVStorageObjects*.
        
        This structure may be used only with operations rendered under `/vslm`.
      properties:
        ids:
          description: |2
            The array of IDs of the virtual storage object to be
            retrieved.
          type: array
          items:
            $ref: '#/components/schemas/ID'

    VslmRevertVStorageObjectRequestType:
      type: object
      description: |2
        The parameters of *VslmVStorageObjectManager.VslmRevertVStorageObject_Task*.
        
        This structure may be used only with operations rendered under `/vslm`.
      properties:
        id:
          description: |2
            The ID of the virtual storage object.
          $ref: '#/components/schemas/ID'
        snapshotId:
          description: |2
            The ID of the snapshot of a virtual storage object.
          $ref: '#/components/schemas/ID'
      required:
        - id
        - snapshotId

    VslmScheduleReconcileDatastoreInventoryRequestType:
      type: object
      description: |2
        The parameters of *VslmVStorageObjectManager.VslmScheduleReconcileDatastoreInventory*.
        
        This structure may be used only with operations rendered under `/vslm`.
      properties:
        datastore:
          description: |2
            The datastore that needs to be reconciled.
            
            Refers instance of *Datastore*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - datastore

    VslmSetVStorageObjectControlFlagsRequestType:
      type: object
      description: |2
        The parameters of *VslmVStorageObjectManager.VslmSetVStorageObjectControlFlags*.
        
        This structure may be used only with operations rendered under `/vslm`.
      properties:
        id:
          description: |2
            The ID of the virtual storage object.
          $ref: '#/components/schemas/ID'
        controlFlags:
          description: |2
            control flags enum array to be set on the
            VStorageObject. All control flags not included
            in the array remain intact.
          type: array
          items:
            type: string
      required:
        - id

    VslmSyncDatastoreRequestType:
      type: object
      description: |2
        The parameters of *VslmStorageLifecycleManager.VslmSyncDatastore*.
        
        This structure may be used only with operations rendered under `/vslm`.
      properties:
        datastoreUrl:
          description: |2
            The datastore URL as specified in
            *DatastoreInfo.url*
          type: string
        fullSync:
          description: |2
            If this is set to true, all information for this datastore
            will be discarded from the catalog and reloaded from the
            datastore's catalog
          type: boolean
        fcdId:
          description: |2
            If set, this call blocks until fcdId is persisited into db
            if this fcdId is not found in queue, assume persisted and return
          $ref: '#/components/schemas/ID'
      required:
        - datastoreUrl
        - fullSync

    VslmUpdateVStorageInfrastructureObjectPolicyRequestType:
      type: object
      description: |2
        The parameters of *VslmVStorageObjectManager.VslmUpdateVStorageInfrastructureObjectPolicy_Task*.
        
        This structure may be used only with operations rendered under `/vslm`.
      properties:
        spec:
          description: |2
            specification to assign a SPBM policy to FCD infrastructure
            object.
          $ref: '#/components/schemas/vslmInfrastructureObjectPolicySpec'
      required:
        - spec

    VslmUpdateVStorageObjectMetadataRequestType:
      type: object
      description: |2
        The parameters of *VslmVStorageObjectManager.VslmUpdateVStorageObjectMetadata_Task*.
        
        This structure may be used only with operations rendered under `/vslm`.
      properties:
        id:
          description: |2
            The ID of the virtual storage object.
          $ref: '#/components/schemas/ID'
        metadata:
          description: |2
            array of key/value strings. (keys must be unique
            within the list)
          type: array
          items:
            $ref: '#/components/schemas/KeyValue'
        deleteKeys:
          description: |2
            array of keys need to be deleted
          type: array
          items:
            type: string
      required:
        - id

    VslmUpdateVstorageObjectCryptoRequestType:
      type: object
      description: |2
        The parameters of *VslmVStorageObjectManager.VslmUpdateVstorageObjectCrypto_Task*.
        
        This structure may be used only with operations rendered under `/vslm`.
      properties:
        id:
          description: |2
            The ID of the virtual storage object.
          $ref: '#/components/schemas/ID'
        profile:
          description: |2
            New profile requirement on the virtual storage object.
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineProfileSpec'
        disksCrypto:
          description: |2
            The crypto information of each disk on the chain.
          $ref: '#/components/schemas/DiskCryptoSpec'
      required:
        - id

    VslmUpdateVstorageObjectPolicyRequestType:
      type: object
      description: |2
        The parameters of *VslmVStorageObjectManager.VslmUpdateVstorageObjectPolicy_Task*.
        
        This structure may be used only with operations rendered under `/vslm`.
      properties:
        id:
          description: |2
            The ID of the virtual storage object.
          $ref: '#/components/schemas/ID'
        profile:
          description: |2
            New profile requirement on the virtual storage object.
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineProfileSpec'
      required:
        - id

    VstorageObjectVCenterQueryChangedDiskAreasRequestType:
      type: object
      description: |2
        The parameters of *VcenterVStorageObjectManager.VstorageObjectVCenterQueryChangedDiskAreas*.
      properties:
        id:
          description: |2
            The ID of the virtual storage object.
          $ref: '#/components/schemas/ID'
        datastore:
          description: |2
            The datastore where the source virtual storage object
            is located.
            
            Refers instance of *Datastore*.
          $ref: '#/components/schemas/ManagedObjectReference'
        snapshotId:
          description: |2
            The ID of the snapshot of a virtual storage object for
            which changes that have been made since "changeId"
            should be computed.
          $ref: '#/components/schemas/ID'
        startOffset:
          description: |2
            Start Offset in bytes at which to start computing
            changes. Typically, callers will make multiple calls
            to this function, starting with startOffset 0 and then
            examine the "length" property in the returned
            DiskChangeInfo structure, repeatedly calling
            queryChangedDiskAreas until a map for the entire
            virtual disk has been obtained.
          type: integer
          format: int64
        changeId:
          description: |2
            Identifier referring to a point in the past that should
            be used as the point in time at which to begin including
            changes to the disk in the result. A typical use case
            would be a backup application obtaining a changeId from
            a virtual disk's backing info when performing a backup.
            When a subsequent incremental backup is to be performed,
            this change Id can be used to obtain a list of changed
            areas on disk.
          type: string
      required:
        - id
        - datastore
        - snapshotId
        - startOffset
        - changeId

    WaitForUpdatesExRequestType:
      type: object
      description: |2
        The parameters of *PropertyCollector.WaitForUpdatesEx*.
      properties:
        version:
          description: |2
            The data version currently known to the client. The value must be
            either
            - the special initial data version (an empty string),
            - a data version returned from *PropertyCollector.CheckForUpdates* or *PropertyCollector.WaitForUpdates*
            - a non-truncated data version returned from *PropertyCollector.WaitForUpdatesEx*
            - a truncated data version returned from the last call to *PropertyCollector.WaitForUpdatesEx* with no intervening calls to *PropertyCollector.WaitForUpdates* or *PropertyCollector.CheckForUpdates*.
          type: string
        options:
          description: |2
            Additional options controlling the change calculation. If omitted,
            equivalent to an options argument with no fields set.
          $ref: '#/components/schemas/WaitOptions'

    WaitForUpdatesRequestType:
      type: object
      description: |2
        The parameters of *PropertyCollector.WaitForUpdates*.
      properties:
        version:
          description: |2
            The data version currently known to the client. The value
            must be either
            - the special initial version (an empty string)
            - a data version returned from *PropertyCollector.CheckForUpdates* or *PropertyCollector.WaitForUpdates* by the same *PropertyCollector* on the same session
            - a non-truncated data version returned from *PropertyCollector.WaitForUpdatesEx* by the same *PropertyCollector* on the same
              session.
          type: string

    XmlToCustomizationSpecItemRequestType:
      type: object
      description: |2
        The parameters of *CustomizationSpecManager.XmlToCustomizationSpecItem*.
      properties:
        specItemXml:
          type: string
      required:
        - specItemXml

    ZeroFillVirtualDiskRequestType:
      type: object
      description: |2
        The parameters of *VirtualDiskManager.ZeroFillVirtualDisk_Task*.
      properties:
        name:
          description: |2
            The name of the disk, either a datastore path or a URL
            referring to the virtual disk whose blocks should be overwritten
            with zeroes.
          type: string
        datacenter:
          description: |2
            If <code>name</code> is a datastore path, the datacenter for
            that datastore path. Not needed when invoked directly on ESX.
            If not specified on a call to VirtualCenter,
            <code>name</code> must be a URL.
            
            Refers instance of *Datacenter*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - name

    configureVchaRequestType:
      type: object
      description: |2
        The parameters of *FailoverClusterConfigurator.configureVcha_Task*.
      properties:
        configSpec:
          description: |2
            contains the configuration for the cluster
          $ref: '#/components/schemas/VchaClusterConfigSpec'
      required:
        - configSpec

    createPassiveNodeRequestType:
      type: object
      description: |2
        The parameters of *FailoverClusterConfigurator.createPassiveNode_Task*.
      properties:
        passiveDeploymentSpec:
          description: |2
            contains deployment specification for the
            passive node
          $ref: '#/components/schemas/PassiveNodeDeploymentSpec'
        sourceVcSpec:
          description: |2
            contains specification for the source vCenter
            server that is used to create Passive node
          $ref: '#/components/schemas/SourceNodeSpec'
      required:
        - passiveDeploymentSpec
        - sourceVcSpec

    createWitnessNodeRequestType:
      type: object
      description: |2
        The parameters of *FailoverClusterConfigurator.createWitnessNode_Task*.
      properties:
        witnessDeploymentSpec:
          description: |2
            contains deployment specification for the
            witness node
          $ref: '#/components/schemas/NodeDeploymentSpec'
        sourceVcSpec:
          description: |2
            contains specification for the source vCenter
            server that is used to create Witness node
          $ref: '#/components/schemas/SourceNodeSpec'
      required:
        - witnessDeploymentSpec
        - sourceVcSpec

    deployVchaRequestType:
      type: object
      description: |2
        The parameters of *FailoverClusterConfigurator.deployVcha_Task*.
      properties:
        deploymentSpec:
          description: |2
            contains the information needed to deploy and
            configure a VCHA Cluster
          $ref: '#/components/schemas/VchaClusterDeploymentSpec'
      required:
        - deploymentSpec

    initiateFailoverRequestType:
      type: object
      description: |2
        The parameters of *FailoverClusterManager.initiateFailover_Task*.
      properties:
        planned:
          description: |2
            \- if false, a failover is initiated immediate and may
            result in data loss.
            if true, a failover is initated after the Active node
            flushes its state to Passive and there is no data loss.
          type: boolean
      required:
        - planned

    prepareVchaRequestType:
      type: object
      description: |2
        The parameters of *FailoverClusterConfigurator.prepareVcha_Task*.
      properties:
        networkSpec:
          description: |2
            contains the information needed to prepare
            a VCHA Cluster and configure networking.
          $ref: '#/components/schemas/VchaClusterNetworkSpec'
      required:
        - networkSpec

    reloadVirtualMachineFromPathRequestType:
      type: object
      description: |2
        The parameters of *VirtualMachine.reloadVirtualMachineFromPath_Task*.
      properties:
        configurationPath:
          type: string
      required:
        - configurationPath

    setClusterModeRequestType:
      type: object
      description: |2
        The parameters of *FailoverClusterManager.setClusterMode_Task*.
      properties:
        mode:
          type: string
      required:
        - mode

    setCustomValueRequestType:
      type: object
      description: |2
        The parameters of *ExtensibleManagedObject.setCustomValue*.
      properties:
        key:
          description: |2
            The name of the field whose value is to be updated.
          type: string
        value:
          description: |2
            Value to be assigned to the custom field.
          type: string
      required:
        - key
        - value

    startDpuFailoverRequestType:
      type: object
      description: |2
        The parameters of *HostNetworkSystem.startDpuFailover*.
        
        ***Since:*** vSphere API Release 8.0.3.0
      properties:
        dvsName:
          description: |2
            The name of the distributed virtual switch.
          type: string
        targetDpuAlias:
          description: |2
            The alias of the DPU to failover to.
            If not set, it will be determined by the system.
            At least one vmnic backed by the DPU needs to be associated to the
            standby uplink of the distributed virtual switch.
          type: string
      required:
        - dvsName

    AgencyComputeResourceScope:
      type: object
      description: |2
        Scope specifies on which compute resources to deploy a solution's agents.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        computeResource:
          description: |2
            Compute resources on which to deploy the agents.
            
            If *AgencyConfigInfoEx.vmPlacementPolicy* is set, the array needs to
            contain exactly one cluster compute resource.
            
            Refers instances of *ComputeResource*.
          type: array
          items:
            $ref: '#/components/schemas/ManagedObjectReference'
      allOf:
        - $ref: '#/components/schemas/AgencyScope'

    ArrayOfAgencyComputeResourceScope:
      type: object
      description: |2
        A boxed array of *AgencyComputeResourceScope*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/AgencyComputeResourceScope'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    AgencyConfigInfo:
      type: object
      description: |2
        This is the configuration of an <code>Agency</code>.
        
        It determines on
        which compute resources to deploy the agents, which VIB to install, which
        OVF package to install, and how to configure these items by setting the
        OVF environment properties.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        agentConfig:
          description: |2
            A list of *AgentConfigInfo*s for hosts covered by this
            <code>Agency</code>.
            
            When provisioning a new agent to a host, vSphere
            ESX Agent Manager tries to find, from left to right in the array, a
            match for an *AgentConfigInfo* and stops searching at the first
            one that it finds.
            If *AgencyConfigInfoEx.vmPlacementPolicy* is set, the array needs to contain only a
            single agent config. In that case the agent config is not bound to a
            specific host, but to the whole cluster.
          type: array
          items:
            $ref: '#/components/schemas/AgentConfigInfo'
        scope:
          description: |2
            The scope of the <code>Agency</code>.
          $ref: '#/components/schemas/AgencyScope'
        manuallyMarkAgentVmAvailableAfterProvisioning:
          description: |2
            If set to <code>true</code>, the client of this agency must manually
            mark the agent as ready after the agent virtual machine has been
            provisioned.
            
            This is useful if the client of this solution performs
            some extra reconfiguration of the agent virtual machine before it is
            powered on.
            
            See also *Agent.MarkAsAvailable*.
          type: boolean
        manuallyMarkAgentVmAvailableAfterPowerOn:
          description: |2
            If set to <code>true</code>, the client of this agency must manually
            mark the agent as ready after the agent virtual machine has been
            powered on.
            
            In this case, DRS will not regard the agent virtual machine
            as ready until the client has marked the agent as ready.
            
            See also *Agent.MarkAsAvailable*.
          type: boolean
        optimizedDeploymentEnabled:
          description: |2
            If set to <code>true</code>, ESX Agent Manager will use vSphere Linked
            Clones to speed up the deployment of agent virtual machines.
            
            Using
            linked clones implies that the agent virtual machines cannot use
            Storage vMotion to move to another vSphere datastore.
            If set to <code>false</code>, ESX Agent Manager will use Full VM
            Cloning.
            If unset default is <code>true<code>.
          type: boolean
        agentName:
          description: |2
            An optional name to use when naming agent virtual machines.
            
            For
            example, if set to "example-agent", each agent virtual machine will be
            named "example-agent (1)", "example-agent (2)", and so on. The maximum
            length of <code>agentName</code> is 70 characters.
          type: string
        agencyName:
          description: |2
            Name of the agency.
            
            Must be set when creating the agency.
          type: string
        useUuidVmName:
          description: |2
            Property <code>agentName</code> is required if this property is set to
            <code>true</code>.
            
            If set to <code>true</code>, ESX Agent Manager will name virtual
            machines with UUID suffix. For example, "example-agent-UUID".
            In this case, the maximum length of <code>agentName</code> is 43
            characters.
            
            If not set or is set to <code>false</code>, virtual
            machines will not contain UUID in their name.
          type: boolean
        manuallyProvisioned:
          deprecated: true
          description: |2
            Deprecated use automatically provisioned VMs and register hooks to
            have control post provisioning and power on.
            
            Set to true if agent VMs are manually provisioned.
            
            If unset, defaults
            to false.
          type: boolean
        manuallyMonitored:
          deprecated: true
          description: |2
            Deprecated use automatically provisioned VMs and register hooks to
            have control post provisioning and power on.
            
            Set to true if agent VMs are manually monitored.
            
            If unset, defaults to
            false. This can only be set to true if
            *AgencyConfigInfo.manuallyProvisioned* is set to true.
          type: boolean
        bypassVumEnabled:
          deprecated: true
          description: |2
            Deprecated vUM is no more consulted so this property has no sense
            anymore.
            
            Set to true will install VIBs directly on the hosts even if VMware
            Update Manager is installed.
            
            If unset, defaults to false.
          type: boolean
        agentVmNetwork:
          description: |2
            Specifies the networks which to be configured on the agent VMs.
            
            This property is only applicable for pinned to host VMs - i.e.
            (*AgencyConfigInfoEx.vmPlacementPolicy*) is not set.
            
            If not set or *AgencyConfigInfo.preferHostConfiguration* is set to true, the
            default host agent VM network (configured through
            vim.host.EsxAgentHostManager) is used, otherwise the first network from
            the array that is present on the host is used.
            
            At most one of *AgencyConfigInfo.agentVmNetwork* and *AgencyConfigInfoEx.vmNetworkMapping*
            needs to be set.
            
            Refers instances of *Network*.
          type: array
          items:
            $ref: '#/components/schemas/ManagedObjectReference'
        agentVmDatastore:
          description: |2
            The datastores used to configure the storage on the agent VMs.
            
            This property is required if *AgencyConfigInfoEx.vmPlacementPolicy* is set and
            *AgencyConfigInfoEx.datastoreSelectionPolicy* is not set. In that case the first
            element from the list is used.
            
            If not set or *AgencyConfigInfo.preferHostConfiguration* is set to true and
            *AgencyConfigInfoEx.vmPlacementPolicy* is not set, the default host agent VM
            datastore (configured through vim.host.EsxAgentHostManager) is used,
            otherwise the first datastore from the array that is present on the
            host is used.
            
            If *AgencyConfigInfoEx.vmPlacementPolicy* is set at most one of
            *AgencyConfigInfo.agentVmDatastore* and *AgencyConfigInfoEx.datastoreSelectionPolicy* needs
            to be set. If *AgencyConfigInfoEx.vmPlacementPolicy* is not set
            *AgencyConfigInfoEx.datastoreSelectionPolicy* takes precedence over
            *AgencyConfigInfo.agentVmDatastore* .
            
            Refers instances of *Datastore*.
          type: array
          items:
            $ref: '#/components/schemas/ManagedObjectReference'
        preferHostConfiguration:
          description: |2
            If set to true the default agent VM datastore and network will take
            precedence over *AgencyConfigInfo.agentVmNetwork* and
            *AgencyConfigInfo.agentVmDatastore* when configuring the agent
            VMs.
            
            This property is not used if *AgencyConfigInfoEx.vmPlacementPolicy* is set.
          type: boolean
        ipPool:
          deprecated: true
          description: |2
            Deprecated that is a custom configuration that should be setup by the
            agency owner. One way is to use
            *AgencyConfigInfo.manuallyMarkAgentVmAvailableAfterPowerOn* or
            *AgencyConfigInfo.manuallyMarkAgentVmAvailableAfterProvisioning*
            hooks.
            
            If set, a property with id "ip" and value an IP from the pool is added
            to the vApp configuration of the deployed VMs.
          $ref: '#/components/schemas/IpPool'
        resourcePools:
          description: |2
            Defines the resource pools where VMs to be deployed.
            
            If specified, the VMs for every compute resouce in the scope will be
            deployed to its corresponding resource pool.
            If not specified, the agent VMs for each compute resource will be
            deployed under top level nested resource pool created for the agent
            VMs. If unable to create a nested resource pool, the root resource pool
            of the compute resource will be used.
          type: array
          items:
            $ref: '#/components/schemas/AgencyVMResourcePool'
        folders:
          description: |2
            Defines the folders where VMs to be deployed.
            
            If specified, the VMs for every compute resouce in the scope will be
            deployed to its corresponding folder. The link is made between the
            compute resource parent and the datacenter the folder belongs to
            *AgencyVMFolder.datacenterId*.
            If not specified, the agent VMs for each compute resource will be
            deployed in top level folder created in each datacenter for the agent
            VMs.
          type: array
          items:
            $ref: '#/components/schemas/AgencyVMFolder'
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfAgencyConfigInfo:
      type: object
      description: |2
        A boxed array of *AgencyConfigInfo*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/AgencyConfigInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    AgencyScope:
      type: object
      description: |2
        Scope specifies which where to deploy agents.
        
        This structure may be used only with operations rendered under `/eam`.
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfAgencyScope:
      type: object
      description: |2
        A boxed array of *AgencyScope*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/AgencyScope'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    AgencyVMFolder:
      type: object
      description: |2
        Represents the mapping of a VM folder to a datacenter.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        folderId:
          description: |2
            Folder identifier.
            
            The folder must be present in the corresponding
            datacenter.
            
            Refers instance of *Folder*.
          $ref: '#/components/schemas/ManagedObjectReference'
        datacenterId:
          description: |2
            Datacenter identifier.
            
            Refers instance of *Datacenter*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - folderId
        - datacenterId
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfAgencyVMFolder:
      type: object
      description: |2
        A boxed array of *AgencyVMFolder*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/AgencyVMFolder'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    AgencyVMResourcePool:
      type: object
      description: |2
        Represents the mapping of a VM resource pool to a compute resource.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        resourcePoolId:
          description: |2
            Resource pool identifier.
            
            The resource pool must be present in the
            corresponding compute resource.
            
            Refers instance of *ResourcePool*.
          $ref: '#/components/schemas/ManagedObjectReference'
        computeResourceId:
          description: |2
            Compute resource identifier.
            
            Refers instance of *ComputeResource*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - resourcePoolId
        - computeResourceId
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfAgencyVMResourcePool:
      type: object
      description: |2
        A boxed array of *AgencyVMResourcePool*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/AgencyVMResourcePool'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    AgentAnyCertificate:
      type: object
      description: |2
        Specifies an SSL policy that trusts any SSL certificate.
        
        This structure may be used only with operations rendered under `/eam`.
        
        ***Since:*** vEAM API 8.2
      allOf:
        - $ref: '#/components/schemas/AgentSslTrust'

    ArrayOfAgentAnyCertificate:
      type: object
      description: |2
        A boxed array of *AgentAnyCertificate*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
        
        ***Since:*** vEAM API 8.2
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/AgentAnyCertificate'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    AgentConfigInfo:
      type: object
      description: |2
        A description of what should be put on a host.
        
        By setting the
        <code>productLineId</code> and <code>hostVersion</code>, you can specify
        the types of hosts for which to use the <code>ConfigInfo</code>.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        productLineId:
          description: |2
            The product line ID of the host.
            
            Examples of values are "esx" or
            "embeddedEsx". If omitted, the host's product line ID is not considered
            when matching an <code>AgentPackage</code> against a host.
          type: string
        hostVersion:
          description: |2
            A dot-separated string of the host version.
            
            Examples of values are
            "4.1.0" "3.5", "4.\*" where \* is a wildcard meaning any version minor
            version of the major version 4. If omitted, the host version will not
            be considered when matching an <code>AgentPackage</code> against a
            host.
            This property is not used if
            *AgencyConfigInfoEx.vmPlacementPolicy* is set. It is client's
            responsibility to trigger an agency upgrade with a new
            *AgentConfigInfo.ovfPackageUrl*.
          type: string
        ovfPackageUrl:
          description: |2
            The URL of the solution's agent OVF package.
            
            If not set, no agent
            virtual machines are installed on the hosts covered by the scope.
            If *AgencyConfigInfoEx.vmPlacementPolicy* is set, the VM needs to
            be agnostic to the different host versions inside the cluster.
          type: string
        ovfSslTrust:
          description: |2
            Specifies an SSL trust policy to be use for verification of the
            server that hosts the *AgentConfigInfo.ovfPackageUrl*.
            
            If not set, the server
            certificate is validated against the trusted root certificates of the
            OS (Photon) and VECS (TRUSTED\_ROOTS).
            
            ***Since:*** vEAM API 8.2
          $ref: '#/components/schemas/AgentSslTrust'
        ovfEnvironment:
          description: |2
            The part of the OVF environment that can be set by the solution.
            
            This
            is where Properties that the agent virtual machine's OVF descriptor
            specifies are set here. All properties that are specified as
            user-configurable must be set.
          $ref: '#/components/schemas/AgentOvfEnvironmentInfo'
        vibUrl:
          description: |2
            An optional URL to an offline bundle.
            
            If not set, no VIB is installed
            on the hosts in the scope. Offline bundles are only supported on 4.0
            hosts and later.
            
            VIB downgrade is not permitted - in case a VIB with the same name, but
            lower version is installed on a host in the scope the VIB installation
            on that host will not succeed.
            
            If two or more agents have the same VIB with different versions on the
            same host, the install/uninstall behaviour is undefined (the VIB may
            remain installed, etc.).
            
            The property is not used if *AgencyConfigInfoEx.vmPlacementPolicy*
            is set.
          type: string
        vibSslTrust:
          description: |2
            Specifies an SSL trust policy to be use for verification of the
            server that hosts the *AgentConfigInfo.vibUrl*.
            
            If not set, the server
            certificate is validated against the trusted root certificates of the
            OS (Photon) and VECS (TRUSTED\_ROOTS).
            
            ***Since:*** vEAM API 8.2
          $ref: '#/components/schemas/AgentSslTrust'
        vibMatchingRules:
          deprecated: true
          description: |2
            Deprecated vIB matching rules are no longer supported by EAM. Same
            overlaps with VIB dependency requirements which reside in
            each VIB's metadata.
            
            Optional Vib matching rules.
            
            If set, the Vib, specified by vibUrl, will
            be installed either
            - if there is installed Vib on the host which name and version match
              the regular expressions in the corresponding rule
            - or there isn't any installed Vib on the host with name which
              matches the Vib name regular expression in the corresponding rule. Vib
              matching rules are usually used for controlling VIB upgrades, in which
              case the name regular expression matches any previous versions of the
              agency Vib and version regular expression determines whether the
              existing Vib should be upgraded.
              
            For every Vib in the Vib package, only one Vib matching rule can be
            defined. If specified more than one, it is not determined which one
            will be used. The Vib name regular expression in the Vib matching rule
            will be matched against the name of the Vib which will be installed.
            Only rules for Vibs which are defined in the Vib package metadata will
            be taken in account.
          type: array
          items:
            $ref: '#/components/schemas/AgentVibMatchingRule'
        vibName:
          deprecated: true
          description: |2
            Deprecated use VIB metadata to add such dependency.
            
            An optional name of a VIB.
            
            If set, no VIB is installed on the host. The
            host is checked if a VIB with vibName is already installed on it. Also
            the vibUrl must not be set together with the vibUrl.
          type: string
        dvFilterEnabled:
          deprecated: true
          description: |2
            Deprecated that is a custom setup specific for a particular agency.
            The agency owner should do it using other means, e.g.
            *AgencyConfigInfo.manuallyMarkAgentVmAvailableAfterPowerOn* or
            *AgencyConfigInfo.manuallyMarkAgentVmAvailableAfterProvisioning*
            hooks. Support for this has been removed. Seting this to
            <code>true</code> will no longer have any effect.
            
            If set to <code>true</code>, the hosts in the scope must be configured
            for DvFilter before VIBs and agent virtual machines are deployed on
            them.
            
            If not set or set to <code>false</code>, no DvFilter
            configuration is done on the hosts.
          type: boolean
        rebootHostAfterVibUninstall:
          deprecated: true
          description: |2
            Deprecated express that requirement in the VIB descriptor with
            'live-remove-allowed=false'.
            
            An optional boolean flag to specify whether the agent's host is
            rebooted after the VIB is uninstalled.
            
            If not set, the default value is
            <code>false</code>. If set to <code>true</code>, the agent gets a
            *VibRequiresHostReboot* issue after a successful
            uninstallation.
          type: boolean
        vmciService:
          description: |2
            If set the virtual machine will be configured with the services and
            allow VMCI access from the virtual machine to the installed VIB.
          type: array
          items:
            type: string
        ovfDiskProvisioning:
          description: |2
            AgentVM disk provisioning type.
            
            Defaults to *none* if not specified.
          type: string
        vmStoragePolicies:
          description: |2
            Defines the storage policies configured on Agent VMs.
            
            Storage policies
            are configured on all VM related objects including disks.
            NOTE: The property needs to be configured on each update, otherwise
            vSphere ESX Agent Manager will unset this configuration for all future
            agent VMs.
          type: array
          items:
            $ref: '#/components/schemas/AgentStoragePolicy'
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfAgentConfigInfo:
      type: object
      description: |2
        A boxed array of *AgentConfigInfo*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/AgentConfigInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    AgentOvfEnvironmentInfo:
      type: object
      description: |2
        The <code>OvfEnvironment</code> is used to assign OVF environment
        properties in the *AgentConfigInfo*.
        
        It specifies the values that
        map to properties in the agent virtual machine's OVF descriptor.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        ovfProperty:
          description: |2
            The OVF properties that are assigned to the agent virtual machine's OVF
            environment when it is powered on.
          type: array
          items:
            $ref: '#/components/schemas/AgentOvfEnvironmentInfoOvfProperty'
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfAgentOvfEnvironmentInfo:
      type: object
      description: |2
        A boxed array of *AgentOvfEnvironmentInfo*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/AgentOvfEnvironmentInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    AgentOvfEnvironmentInfoOvfProperty:
      type: object
      description: |2
        One OVF property.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        key:
          description: |2
            The name of the property in the OVF descriptor.
          type: string
        value:
          description: |2
            The value of the property.
          type: string
      required:
        - key
        - value
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfAgentOvfEnvironmentInfoOvfProperty:
      type: object
      description: |2
        A boxed array of *AgentOvfEnvironmentInfoOvfProperty*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/AgentOvfEnvironmentInfoOvfProperty'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    AgentPinnedPemCertificate:
      type: object
      description: |2
        Specifies an SSL policy that trusts one specific pinned PEM encoded
        SSL certificate.
        
        This structure may be used only with operations rendered under `/eam`.
        
        ***Since:*** vEAM API 8.2
      properties:
        sslCertificate:
          description: |2
            PEM encoded pinned SSL certificate of the server that needs to be
            trusted.
          type: string
      required:
        - sslCertificate
      allOf:
        - $ref: '#/components/schemas/AgentSslTrust'

    ArrayOfAgentPinnedPemCertificate:
      type: object
      description: |2
        A boxed array of *AgentPinnedPemCertificate*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
        
        ***Since:*** vEAM API 8.2
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/AgentPinnedPemCertificate'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    AgentRuntimeInfo:
      type: object
      description: |2
        Extends <code>RuntimeInfo</code> with information regarding the deployment
        of an agent on a specific host.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        vmPowerState:
          deprecated: true
          description: |2
            Deprecated get that info calling the virtual machine VIM API.
            
            The power state of an agent virtual machine.
          $ref: '#/components/schemas/VirtualMachinePowerState_enum'
        receivingHeartBeat:
          deprecated: true
          description: |2
            Deprecated get that info calling the virtual machine VIM API.
            
            True if the vSphere ESX Agent Manager is receiving heartbeats from the
            agent virtual machine.
          type: boolean
        host:
          description: |2
            The agent host.
            
            Refers instance of *HostSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
        vm:
          description: |2
            The agent virtual machine.
            
            Refers instance of *VirtualMachine*.
          $ref: '#/components/schemas/ManagedObjectReference'
        vmIp:
          deprecated: true
          description: |2
            Deprecated get that info calling the virtual machine VIM API.
            
            The IP address of the agent virtual machine
          type: string
        vmName:
          deprecated: true
          description: |2
            Deprecated get that info calling the virtual machine VIM API.
            
            The name of the agent virtual machine.
          type: string
        esxAgentResourcePool:
          deprecated: true
          description: |2
            Deprecated in order to retrieve agent resource pool use VIM API.
            
            The ESX agent resource pool in which the agent virtual machine resides.
            
            Refers instance of *ResourcePool*.
          $ref: '#/components/schemas/ManagedObjectReference'
        esxAgentFolder:
          deprecated: true
          description: |2
            Deprecated in order to retrieve agent VM folder use VIM API.
            
            The ESX agent folder in which the agent virtual machine resides.
            
            Refers instance of *Folder*.
          $ref: '#/components/schemas/ManagedObjectReference'
        installedBulletin:
          deprecated: true
          description: |2
            Deprecated use *AgentRuntimeInfo.installedVibs* instead.
            
            An optional array of IDs of installed bulletins for this agent.
          type: array
          items:
            type: string
        installedVibs:
          description: |2
            Information about the installed vibs on the host.
          type: array
          items:
            $ref: '#/components/schemas/VibVibInfo'
        agency:
          description: |2
            The agency this agent belongs to.
            
            Refers instance of *Agency*.
          $ref: '#/components/schemas/ManagedObjectReference'
        vmHook:
          description: |2
            Active VM hook.
            
            If present agent is actively waiting for *Agent.MarkAsAvailable*.
            See *AgentVmHook*.
          $ref: '#/components/schemas/AgentVmHook'
      required:
        - vmPowerState
        - receivingHeartBeat
        - vmName
      allOf:
        - $ref: '#/components/schemas/EamObjectRuntimeInfo'

    ArrayOfAgentRuntimeInfo:
      type: object
      description: |2
        A boxed array of *AgentRuntimeInfo*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/AgentRuntimeInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    AgentSslTrust:
      type: object
      description: |2
        Specifies an SSL trust policy.
        
        This structure may be used only with operations rendered under `/eam`.
        
        ***Since:*** vEAM API 8.2
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfAgentSslTrust:
      type: object
      description: |2
        A boxed array of *AgentSslTrust*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
        
        ***Since:*** vEAM API 8.2
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/AgentSslTrust'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    AgentStoragePolicy:
      type: object
      description: |2
        Specifies the storage policies configured on Agent VMs.
        
        This structure may be used only with operations rendered under `/eam`.
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfAgentStoragePolicy:
      type: object
      description: |2
        A boxed array of *AgentStoragePolicy*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/AgentStoragePolicy'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    AgentVibMatchingRule:
      type: object
      deprecated: true
      description: |2
        Deprecated vIB matching rules are no longer supported by EAM. Same
        overlaps with VIB dependency requirements which reside in each
        VIB's metadata.
        
        Specifies regular expressions for Vib name and version.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        vibNameRegex:
          description: |2
            Vib name regular expression.
          type: string
        vibVersionRegex:
          description: |2
            Vib version regular expression.
          type: string
      required:
        - vibNameRegex
        - vibVersionRegex
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfAgentVibMatchingRule:
      type: object
      description: |2
        A boxed array of *AgentVibMatchingRule*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/AgentVibMatchingRule'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    AgentVmHook:
      type: object
      description: |2
        Represents an active hook of the VM lifecycle which EAM is waiting on to
        be processed by the client.
        
        The supported hooks are defined by
        *AgencyConfigInfo.manuallyMarkAgentVmAvailableAfterProvisioning*
        and
        *AgencyConfigInfo.manuallyMarkAgentVmAvailableAfterProvisioning*.
        See *Agent.MarkAsAvailable*
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        vm:
          description: |2
            The VM for which lifecycle is this hook.
            
            This VM may differ from *AgentRuntimeInfo.vm* while an upgrade
            of the agent VM is in progress.
            
            Refers instance of *VirtualMachine*.
          $ref: '#/components/schemas/ManagedObjectReference'
        vmState:
          description: |2
            The current VM lifecycle state.
          type: string
      required:
        - vm
        - vmState
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfAgentVmHook:
      type: object
      description: |2
        A boxed array of *AgentVmHook*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/AgentVmHook'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    AgentVsanStoragePolicy:
      type: object
      description: |2
        Specifies vSAN specific storage policy configured on Agent VMs.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        profileId:
          description: |2
            ID of a storage policy profile created by the user.
            
            The type of the
            profile must be *VirtualMachineDefinedProfileSpec*. The ID must be valid
            *VirtualMachineDefinedProfileSpec.profileId*.
          type: string
      required:
        - profileId
      allOf:
        - $ref: '#/components/schemas/AgentStoragePolicy'

    ArrayOfAgentVsanStoragePolicy:
      type: object
      description: |2
        A boxed array of *AgentVsanStoragePolicy*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/AgentVsanStoragePolicy'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    EamObjectRuntimeInfo:
      type: object
      description: |2
        The <code>RuntimeInfo</code> represents the runtime information of the vSphere ESX Agent
        Manager managed
        objects *Agency* and *Agent*.
        
        The runtime information provides
        two kinds of information, namely, the
        desired goal state of the entity and the status with regards to conforming
        to that goal state.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        status:
          description: |2
            The health of the managed entity.
            
            This denotes how well the entity conforms to the
            goal state.
            
            See also *EamObjectRuntimeInfoStatus_enum*.
          type: string
        issue:
          description: |2
            Current issues that have been detected for this entity.
            
            Each issue can be remediated
            by invoking *EamObject.Resolve* or *EamObject.ResolveAll*.
          type: array
          items:
            $ref: '#/components/schemas/Issue'
        goalState:
          description: |2
            The desired state of the entity.
            
            See also *EamObjectRuntimeInfoGoalState_enum*.
          type: string
        entity:
          description: |2
            The *Agent* or *Agency* with which this <code>RuntimeInfo</code> object is associated.
            
            Refers instance of *EamObject*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - status
        - goalState
        - entity
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfEamObjectRuntimeInfo:
      type: object
      description: |2
        A boxed array of *EamObjectRuntimeInfo*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/EamObjectRuntimeInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    CertificateNotTrustedFault:
      type: object
      description: |2
        An CertificateNotTrusted fault is thrown when an Agency's configuration
        contains OVF package URL or VIB URL for that vSphere ESX Agent Manager is not
        able to make successful SSL trust verification of the server's certificate.
        
        Reasons for this might be that the certificate provided via the API
        *AgentConfigInfo.ovfSslTrust* and *AgentConfigInfo.vibSslTrust*
        or via the script /usr/lib/vmware-eam/bin/eam-utility.py
        - is invalid.
        - does not match the server's certificate.
          
        If there is no provided certificate, the fault is thrown when the server's
        certificate is not trusted by the system or is invalid - @see
        *AgentConfigInfo.ovfSslTrust* and
        *AgentConfigInfo.vibSslTrust*.
        To enable Agency creation 1) provide a valid certificate used by the
        server hosting the *AgentConfigInfo.ovfPackageUrl* or
        *AgentConfigInfo.vibUrl* or 2) ensure the server's certificate is
        signed by a CA trusted by the system. Then retry the operation, vSphere
        ESX Agent Manager will retry the SSL trust verification and proceed with
        reaching the desired state.
        
        This structure may be used only with operations rendered under `/eam`.
        
        ***Since:*** vEAM API 8.2
      properties:
        url:
          description: |2
            The URL that failed the SSL trust verification.
          type: string
      allOf:
        - $ref: '#/components/schemas/EamAppFault'

    ArrayOfCertificateNotTrustedFault:
      type: object
      description: |2
        A boxed array of *CertificateNotTrustedFault*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
        
        ***Since:*** vEAM API 8.2
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/CertificateNotTrustedFault'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DisabledClusterFault:
      type: object
      description: |2
        Thrown when trying to modify state over disabled clusters.
        
        This structure may be used only with operations rendered under `/eam`.
        
        ***Since:*** vEAM API 7.6
      properties:
        disabledComputeResource:
          description: |2
            The MoRefs of the disabled compute resources.
            
            Refers instances of *ComputeResource*.
          type: array
          items:
            $ref: '#/components/schemas/ManagedObjectReference'
      allOf:
        - $ref: '#/components/schemas/EamAppFault'

    ArrayOfDisabledClusterFault:
      type: object
      description: |2
        A boxed array of *DisabledClusterFault*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
        
        ***Since:*** vEAM API 7.6
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DisabledClusterFault'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    EamAppFault:
      type: object
      description: |2
        Application related error
        As opposed to system errors, application ones are always function of the
        input and the current state.
        
        They occur always upon same conditions. In most
        of the cases they are recoverable, i.e. the client can determine what is
        wrong and know how to recover.
        NOTE: Since there is not yet need to distinguish among specific error
        sub-types then we define a common type. Tomorrow, if necessary, we can add an
        additional level of detailed exception types and make this one abstract.
        
        This structure may be used only with operations rendered under `/eam`.
      allOf:
        - $ref: '#/components/schemas/EamRuntimeFault'

    ArrayOfEamAppFault:
      type: object
      description: |2
        A boxed array of *EamAppFault*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/EamAppFault'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    EamFault:
      type: object
      description: |2
        The common base type for all vSphere ESX Agent Manager exceptions.
        
        TODO migrate to EamRuntimeFault
        
        This structure may be used only with operations rendered under `/eam`.
      allOf:
        - $ref: '#/components/schemas/MethodFault'

    ArrayOfEamFault:
      type: object
      description: |2
        A boxed array of *EamFault*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/EamFault'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    EamIOFault:
      type: object
      description: |2
        IO error
        NOTE: Since this type is a first of system-type errors we do not introduce a
        common base type for them.
        
        Once add a second system type exception though, it
        should be introduced.
        
        This structure may be used only with operations rendered under `/eam`.
      allOf:
        - $ref: '#/components/schemas/EamRuntimeFault'

    ArrayOfEamIOFault:
      type: object
      description: |2
        A boxed array of *EamIOFault*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/EamIOFault'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    EamRuntimeFault:
      type: object
      description: |2
        The common base type for all vSphere ESX Agent Manager runtime exceptions.
        
        This structure may be used only with operations rendered under `/eam`.
      allOf:
        - $ref: '#/components/schemas/RuntimeFault'

    ArrayOfEamRuntimeFault:
      type: object
      description: |2
        A boxed array of *EamRuntimeFault*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/EamRuntimeFault'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    EamServiceNotInitialized:
      type: object
      description: |2
        Thrown when calling vSphere ESX Agent Manager when it is not fully
        initialized.
        
        This structure may be used only with operations rendered under `/eam`.
      allOf:
        - $ref: '#/components/schemas/EamRuntimeFault'

    ArrayOfEamServiceNotInitialized:
      type: object
      description: |2
        A boxed array of *EamServiceNotInitialized*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/EamServiceNotInitialized'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    EamSystemFault:
      type: object
      description: |2
        System fault.
        
        This structure may be used only with operations rendered under `/eam`.
      allOf:
        - $ref: '#/components/schemas/EamRuntimeFault'

    ArrayOfEamSystemFault:
      type: object
      description: |2
        A boxed array of *EamSystemFault*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/EamSystemFault'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    InvalidAgencyScope:
      type: object
      description: |2
        An <code>InvalidAgencyScope</code> fault is thrown when the scope in an
        *AgencyConfigInfo* is invalid.
        
        See also *AgencyConfigInfo*.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        unknownComputeResource:
          description: |2
            The MoRefs of the unknown compute resources.
            
            Refers instances of *ComputeResource*.
          type: array
          items:
            $ref: '#/components/schemas/ManagedObjectReference'
      allOf:
        - $ref: '#/components/schemas/EamFault'

    ArrayOfInvalidAgencyScope:
      type: object
      description: |2
        A boxed array of *InvalidAgencyScope*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/InvalidAgencyScope'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    InvalidAgentConfiguration:
      type: object
      description: |2
        An <code>InvalidAgentConfiguration</code> fault is thrown when the agent
        configuration of an agency configuration is empty or invalid.
        
        See also *AgencyConfigInfo*.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        invalidAgentConfiguration:
          description: |2
            An optional invalid agent configuration.
          $ref: '#/components/schemas/AgentConfigInfo'
        invalidField:
          description: |2
            The invalid field.
          type: string
      allOf:
        - $ref: '#/components/schemas/EamFault'

    ArrayOfInvalidAgentConfiguration:
      type: object
      description: |2
        A boxed array of *InvalidAgentConfiguration*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/InvalidAgentConfiguration'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    EamInvalidLogin:
      type: object
      description: |2
        Thrown when a user cannot be authenticated.
        
        This structure may be used only with operations rendered under `/eam`.
      allOf:
        - $ref: '#/components/schemas/EamRuntimeFault'

    ArrayOfEamInvalidLogin:
      type: object
      description: |2
        A boxed array of *EamInvalidLogin*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/EamInvalidLogin'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    EamInvalidState:
      type: object
      description: |2
        Thrown when a user is not allowed to execute an operation.
        
        This structure may be used only with operations rendered under `/eam`.
      allOf:
        - $ref: '#/components/schemas/EamAppFault'

    ArrayOfEamInvalidState:
      type: object
      description: |2
        A boxed array of *EamInvalidState*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/EamInvalidState'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    EamInvalidUrl:
      type: object
      description: |2
        An <code>InvalidUrl</code> fault is thrown when an *Agency*'s configuration scope
        is updated and the OVF package URL or VIB URL cannot be downloaded.
        
        See also *AgencyConfigInfo*.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        url:
          description: |2
            The invalid URL.
          type: string
        malformedUrl:
          description: |2
            True if the URL has an invalid format; otherwise, false.
          type: boolean
        unknownHost:
          description: |2
            True if the host cannot be reached; otherwise, false.
          type: boolean
        connectionRefused:
          description: |2
            True if the connection to the host was refused; otherwise, false.
          type: boolean
        responseCode:
          description: |2
            The HTTP response code returned by the server.
            
            Only set if <code>malformedUrl</code> is false.
          type: integer
          format: int32
      required:
        - url
        - malformedUrl
        - unknownHost
        - connectionRefused
      allOf:
        - $ref: '#/components/schemas/EamFault'

    ArrayOfEamInvalidUrl:
      type: object
      description: |2
        A boxed array of *EamInvalidUrl*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/EamInvalidUrl'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    EamInvalidVibPackage:
      type: object
      description: |2
        Indicates for an invalid or unknown Vib package structure and/or format.
        
        This structure may be used only with operations rendered under `/eam`.
      allOf:
        - $ref: '#/components/schemas/EamRuntimeFault'

    ArrayOfEamInvalidVibPackage:
      type: object
      description: |2
        A boxed array of *EamInvalidVibPackage*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/EamInvalidVibPackage'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    NoConnectionToVCenter:
      type: object
      description: |2
        Thrown when calling vSphere ESX Agent Manager when it is not connected to the vCenter server.
        
        This structure may be used only with operations rendered under `/eam`.
      allOf:
        - $ref: '#/components/schemas/EamRuntimeFault'

    ArrayOfNoConnectionToVCenter:
      type: object
      description: |2
        A boxed array of *NoConnectionToVCenter*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/NoConnectionToVCenter'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    NotAuthorized:
      type: object
      description: |2
        Thrown when an a user cannot be authorized.
        
        This structure may be used only with operations rendered under `/eam`.
      allOf:
        - $ref: '#/components/schemas/EamRuntimeFault'

    ArrayOfNotAuthorized:
      type: object
      description: |2
        A boxed array of *NotAuthorized*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/NotAuthorized'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    AgencyDisabled:
      type: object
      description: |2
        Agency is disabled - one or more ClusterComputeResources from it's scope are
        disabled.
        
        This is not a remediable issue. To remediate, re-enable the cluster.
        
        This structure may be used only with operations rendered under `/eam`.
        
        ***Since:*** vEAM API 7.6
      allOf:
        - $ref: '#/components/schemas/AgencyIssue'

    ArrayOfAgencyDisabled:
      type: object
      description: |2
        A boxed array of *AgencyDisabled*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
        
        ***Since:*** vEAM API 7.6
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/AgencyDisabled'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    AgencyIssue:
      type: object
      description: |2
        Base class for all agency issues.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        agency:
          description: |2
            The agency to which this issue belongs.
            
            Refers instance of *Agency*.
          $ref: '#/components/schemas/ManagedObjectReference'
        agencyName:
          description: |2
            The name of the agency.
          type: string
        solutionId:
          description: |2
            The ID of the solution to which this issue belongs.
          type: string
        solutionName:
          description: |2
            The name of the solution to which this issue belongs.
          type: string
      required:
        - agency
        - agencyName
        - solutionId
        - solutionName
      allOf:
        - $ref: '#/components/schemas/Issue'

    ArrayOfAgencyIssue:
      type: object
      description: |2
        A boxed array of *AgencyIssue*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/AgencyIssue'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    AgentIssue:
      type: object
      description: |2
        Base class for all agent issues.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        agent:
          description: |2
            The agent that has this issue.
            
            Refers instance of *Agent*.
          $ref: '#/components/schemas/ManagedObjectReference'
        agentName:
          description: |2
            The name of the agent.
          type: string
        host:
          description: |2
            The managed object reference to the host on which this agent is located.
            
            Refers instance of *HostSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
        hostName:
          description: |2
            The name of the host on which this agent is located.
          type: string
      required:
        - agent
        - agentName
        - host
        - hostName
      allOf:
        - $ref: '#/components/schemas/AgencyIssue'

    ArrayOfAgentIssue:
      type: object
      description: |2
        A boxed array of *AgentIssue*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/AgentIssue'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    CannotAccessAgentOVF:
      type: object
      description: |2
        An agent virtual machine is expected to be deployed on a host, but the agent virtual machine
        cannot be deployed because the vSphere ESX Agent Manager is unable to access the OVF
        package for the agent.
        
        This typically happens because the Web server providing the
        OVF package is down. The Web server is often internal to the solution
        that created the Agency.
        
        This is an active remediable issue. To remediate, vSphere ESX Agent Manager redeploys the agent.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        downloadUrl:
          description: |2
            The URL from which the OVF could not be downloaded.
          type: string
      required:
        - downloadUrl
      allOf:
        - $ref: '#/components/schemas/VmNotDeployed'

    ArrayOfCannotAccessAgentOVF:
      type: object
      description: |2
        A boxed array of *CannotAccessAgentOVF*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/CannotAccessAgentOVF'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    CannotAccessAgentVib:
      type: object
      description: |2
        An agent VIB module is expected to be deployed on a host, but the VIM module
        cannot be deployed because the vSphere ESX Agent Manager is unable to access the VIB
        package for the agent.
        
        This typically happens because the Web server providing the
        VIB package is down. The Web server is often internal to the solution
        that created the Agency.
        
        This is an active remediable issue. To remediate, vSphere ESX Agent Manager reinstalls the VIB module.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        downloadUrl:
          description: |2
            The URL from which the VIB package could not be downloaded.
          type: string
      required:
        - downloadUrl
      allOf:
        - $ref: '#/components/schemas/VibNotInstalled'

    ArrayOfCannotAccessAgentVib:
      type: object
      description: |2
        A boxed array of *CannotAccessAgentVib*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/CannotAccessAgentVib'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    EamCertificateNotTrusted:
      type: object
      description: |2
        The agent Virtual Machine deployment or agent VIB module installation cannot
        be done, because vSphere ESX Agent Manager is not able to make successful SSL
        trust verification of the server's certificate, when establishing connection
        to the provided *AgentConfigInfo.ovfPackageUrl* or
        *AgentConfigInfo.vibUrl*.
        
        Reasons for this might be that the
        certificate provided via the API *AgentConfigInfo.ovfSslTrust* and
        *AgentConfigInfo.vibSslTrust* or via the script
        /usr/lib/vmware-eam/bin/eam-utility.py
        - is invalid.
        - does not match the server's certificate.
          
        If there is no provided certificate, the issue is raised when the server's
        certificate is not trusted by the system or is invalid - @see
        *AgentConfigInfo.ovfSslTrust* and
        *AgentConfigInfo.vibSslTrust*.
        To remediate the agent Virtual Machine deployment or agent VIB module
        installation 1) provide a valid certificate used by the server hosting the
        *AgentConfigInfo.ovfPackageUrl* or *AgentConfigInfo.vibUrl* or
        2\) ensure the server's certificate is signed by a CA trusted by the system.
        Then resolve this issue, vSphere ESX Agent Manager will retry the SSL trust
        verification and proceed with reaching the desired state.
        
        This structure may be used only with operations rendered under `/eam`.
        
        ***Since:*** vEAM API 8.2
      properties:
        url:
          description: |2
            The URL that failed the SSL trust verification.
          type: string
      required:
        - url
      allOf:
        - $ref: '#/components/schemas/AgentIssue'

    ArrayOfEamCertificateNotTrusted:
      type: object
      description: |2
        A boxed array of *EamCertificateNotTrusted*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
        
        ***Since:*** vEAM API 8.2
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/EamCertificateNotTrusted'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ExtensibleIssue:
      type: object
      description: |2
        Extensible issue class used by solutions to add custom issues to agents.
        
        When resolved, the issue is removed from the agent and an event is generated.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        typeId:
          description: |2
            Unique string for this type of issue.
            
            The type must match an event registered
            by the solution as part of its extension.
          type: string
        argument:
          description: |2
            Arguments associated with the typeId.
          type: array
          items:
            $ref: '#/components/schemas/KeyAnyValue'
        target:
          description: |2
            A managed object reference to the object this issue is related to.
            
            Refers instance of *ManagedEntity*.
          $ref: '#/components/schemas/ManagedObjectReference'
        agent:
          description: |2
            An optional agent this issue pertains
            
            Refers instance of *Agent*.
          $ref: '#/components/schemas/ManagedObjectReference'
        agency:
          description: |2
            An optional agency this issue pertains
            
            Refers instance of *Agency*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - typeId
      allOf:
        - $ref: '#/components/schemas/Issue'

    ArrayOfExtensibleIssue:
      type: object
      description: |2
        A boxed array of *ExtensibleIssue*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ExtensibleIssue'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostInMaintenanceMode:
      type: object
      description: |2
        An agent virtual machine operation is expected to be initiated on host, but
        the agent virtual machine operation has not been initiated.
        
        The reason is
        that the host is in maintenance mode.
        
        This is an active remediable issue. To remediate, vSphere ESX Agent Manager
        takes the host out of maintenance mode and initiates the agent virtual
        machine operation.
        
        Resolving this issue in vSphere Lifecyle Manager environemnt will be no-op.
        In those cases user must take the host out of Maintenance Mode manually or
        wait vSphere Lifecycle Maanger cluster remediation to complete (if any).
        
        This structure may be used only with operations rendered under `/eam`.
      allOf:
        - $ref: '#/components/schemas/VmDeployed'

    ArrayOfHostInMaintenanceMode:
      type: object
      description: |2
        A boxed array of *HostInMaintenanceMode*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostInMaintenanceMode'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostInStandbyMode:
      type: object
      description: |2
        An agent virtual machine is expected to be removed from a host, but the agent virtual machine has not
        been removed.
        
        The reason is that the host is in standby mode.
        
        This is an active remediable issue. To remediate, vSphere ESX Agent Manager puts the host in standby mode
        and removes the agent virtual machine.
        
        This structure may be used only with operations rendered under `/eam`.
      allOf:
        - $ref: '#/components/schemas/VmDeployed'

    ArrayOfHostInStandbyMode:
      type: object
      description: |2
        A boxed array of *HostInStandbyMode*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostInStandbyMode'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostIssue:
      type: object
      deprecated: true
      description: |2
        Deprecated all host issues were removed.
        
        Base class for all host issues.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        host:
          description: |2
            The host to which the issue is related.
            
            Refers instance of *HostSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - host
      allOf:
        - $ref: '#/components/schemas/Issue'

    ArrayOfHostIssue:
      type: object
      description: |2
        A boxed array of *HostIssue*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostIssue'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ManagedHostNotReachable:
      type: object
      description: |2
        Managed ESXi Server is unreachable from vCenter Server or vSphere ESX Agent
        Manager.
        
        Currently all operations on the affected host are imposible. Reasons
        for this might be :
        - ESXi Server is not connected from vCenter Server
        - ESXi Server powered off
          
        This is not a remediable issue. To remediate, connect, power on or reboot the
        host.
        
        This structure may be used only with operations rendered under `/eam`.
      allOf:
        - $ref: '#/components/schemas/AgentIssue'

    ArrayOfManagedHostNotReachable:
      type: object
      description: |2
        A boxed array of *ManagedHostNotReachable*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ManagedHostNotReachable'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostPoweredOff:
      type: object
      deprecated: true
      description: |2
        Deprecated hostPoweredOff will no longer be used, instead
        *ManagedHostNotReachable* will be raised.
        
        An agent virtual machine is expected to be removed from a host, but the agent
        virtual machine has not been removed.
        
        The reason is that the host is powered
        off.
        
        This is not a remediable issue. To remediate, power on the host.
        
        This structure may be used only with operations rendered under `/eam`.
      allOf:
        - $ref: '#/components/schemas/VmDeployed'

    ArrayOfHostPoweredOff:
      type: object
      description: |2
        A boxed array of *HostPoweredOff*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostPoweredOff'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ImmediateHostRebootRequired:
      type: object
      description: |2
        Live VIB operation failed.
        
        An immediate reboot is required to clear live VIB
        operation failure.
        
        This is an active remediable issue. To remediate, vSphere ESX Agent Manager
        puts the host into maintenance mode and reboots it.
        
        This structure may be used only with operations rendered under `/eam`.
      allOf:
        - $ref: '#/components/schemas/VibIssue'

    ArrayOfImmediateHostRebootRequired:
      type: object
      description: |2
        A boxed array of *ImmediateHostRebootRequired*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ImmediateHostRebootRequired'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    IncompatibleHostVersion:
      type: object
      description: |2
        An agent virtual machine is expected to be deployed on a host, but the agent could not be
        deployed because it was incompatible with the host.
        
        This is an active remediable issue. To remediate, vSphere ESX Agent Manager redeployes the agent. However,
        the problem is likely to persist until either the host or the solution has been
        upgraded, so that the agent will become compatible with the host.
        
        This structure may be used only with operations rendered under `/eam`.
      allOf:
        - $ref: '#/components/schemas/VmNotDeployed'

    ArrayOfIncompatibleHostVersion:
      type: object
      description: |2
        A boxed array of *IncompatibleHostVersion*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/IncompatibleHostVersion'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    InsufficientIpAddresses:
      type: object
      deprecated: true
      description: |2
        Deprecated this issue is no longer raised by EAM. It is replaced by
        *InvalidConfig*.
        
        An agent virtual machine is expected to be powered on, but there are no free IP addresses in the
        agent's pool of virtual machine IP addresses.
        
        To remediate, free some IP addresses or add some more to the IP pool and invoke
        <code>resolve</code>.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        network:
          description: |2
            The agent virtual machine network.
            
            Refers instance of *Network*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - network
      allOf:
        - $ref: '#/components/schemas/VmPoweredOff'

    ArrayOfInsufficientIpAddresses:
      type: object
      description: |2
        A boxed array of *InsufficientIpAddresses*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/InsufficientIpAddresses'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    InsufficientResources:
      type: object
      description: |2
        An agent virtual machine is expected to be deployed on a host, but the agent virtual machine could not be
        deployed because the host does not have enough free CPU or memory resources.
        
        This is an active remediable issue. To remediate, vSphere ESX Agent Manager redeploys the agent virtual machine. However,
        the problem is likely to persist until enough CPU and memory resources are made available.
        
        This structure may be used only with operations rendered under `/eam`.
      allOf:
        - $ref: '#/components/schemas/VmNotDeployed'

    ArrayOfInsufficientResources:
      type: object
      description: |2
        A boxed array of *InsufficientResources*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/InsufficientResources'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    InsufficientSpace:
      type: object
      description: |2
        An agent virtual machine is expected to be deployed on a host, but the agent virtual machine could not be
        deployed because the host's agent datastore did not have enough free space.
        
        This is an active remediable issue. To remediate, vSphere ESX Agent Manager redeploys the agent virtual machine. However,
        the problem is likely to persist until either space is freed up on the host's agent
        virtual machine datastore or a new agent virtual machine datastore with enough free space is configured.
        
        This structure may be used only with operations rendered under `/eam`.
      allOf:
        - $ref: '#/components/schemas/VmNotDeployed'

    ArrayOfInsufficientSpace:
      type: object
      description: |2
        A boxed array of *InsufficientSpace*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/InsufficientSpace'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    InvalidConfig:
      type: object
      description: |2
        Invalid configuration is preventing a virtual machine operation.
        
        Typically
        the attached error indicates the particular reason why vSphere ESX Agent
        Manager is unable to power on or reconfigure the agent virtual machine.
        
        This is a passive remediable issue. To remediate update the virtual machine
        configuration.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        error:
          description: |2
            The error, that caused this issue.
            
            It must be either MethodFault or
            RuntimeFault.
          $ref: '#/components/schemas/Any'
      required:
        - error
      allOf:
        - $ref: '#/components/schemas/VmIssue'

    ArrayOfInvalidConfig:
      type: object
      description: |2
        A boxed array of *InvalidConfig*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/InvalidConfig'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    Issue:
      type: object
      description: |2
        An issue represents a problem encountered while deploying and configurating agents
        in a vCenter installation.
        
        An issue conveys the type of problem and the
        entitity on which the problem has been encountered. Most issues are related to agents,
        but they can also relate to an agency or a host.
        
        The set of issues provided by the vSphere ESX Agent Manager describes the discrepency between
        the _desired_ agent deployment state, as defined by the agency configurations,
        and the _actual_ deployment. The (@link EamObject.RuntimeInfo.Status.status)
        of an agency or agent is green if it has reached its goal state. It is
        marked as yellow if the vSphere ESX Agent Manager is actively working to bring the object
        to its goal state. It is red if there is a discrepency between the current state and
        the desired state. In the red state, a set of issues are filed on the object that
        describe the reason for the discrepency between the desired and actual states.
        
        Issues are characterized as either active or passive remediable issues. For an active
        remediable issue, the vSphere ESX Agent Manager can actively try to solve the issue. For
        example, by deploying a new agent, removing an agent, changing its power state, and so
        on. For a passive remediable issue, the vSphere ESX Agent Manager is not able to solve the
        problem directly, and can only report the problem. For example, this could be
        caused by an incomplete host configuration.
        
        When <code>resolve</code> is called for an active remediable issue, the vSphere ESX Agent Manager
        starts performing the appropiate remediation steps for the particular issue. For a passive
        remediable issue, the EAM manager simply checks if the condition
        still exists, and if not it removes the issue.
        
        The vSphere ESX Agent Manager actively monitors most conditions relating to both
        active and passive issues. Thus, it often automatically discovers when an
        issue has been remediated and removes the issue without needing to explicitly
        call <code>resolve</code> on an issue.
        
        The complete Issue hierarchy is shown below:
        - *Issue*
          - *AgencyIssue*
            - *AgentIssue*
            - *ManagedHostNotReachable*
              - *VmNotDeployed*
                - *CannotAccessAgentOVF*
                - *IncompatibleHostVersion*
                - *InsufficientResources*
                - *InsufficientSpace*
                - *OvfInvalidFormat*
                - *NoAgentVmDatastore*
                - *NoAgentVmNetwork*
              - *VmIssue*
                - *OvfInvalidProperty*
                - *VmDeployed*
                  - *HostInMaintenanceMode*
                  - *HostInStandbyMode*
                - *VmCorrupted*
                - *VmOrphaned*
                - *VmPoweredOff*
                  - *InsufficientIpAddresses*
                  - *MissingAgentIpPool*
                - *VmPoweredOn*
                - *VmSuspended*
              - *VibIssue*
                - *VibCannotPutHostInMaintenanceMode*
                - *VibNotInstalled*
                  - *CannotAccessAgentVib*
                  - *VibDependenciesNotMetByHost*
                  - *VibInvalidFormat*
                  - *VibRequirementsNotMetByHost*
                - *VibRequiresHostInMaintenanceMode*
                - *VibRequiresHostReboot*
                - *VibRequiresManualInstallation*
                - *VibRequiresManualUninstallation*
                - *ImmediateHostRebootRequired*
            - *OrphanedAgency*
            - *IntegrityAgencyVUMIssue*
              - *IntegrityAgencyVUMUnavailable*
              - *IntegrityAgencyCannotStageSoftware*
              - *IntegrityAgencyCannotDeleteSoftware*
            - *ClusterAgentAgentIssue*
              - *ClusterAgentVmIssue*
                - *ClusterAgentVmNotRemoved*
                - *ClusterAgentVmPoweredOff*
                  - *ClusterAgentInsufficientClusterResources*
              - *ClusterAgentVmNotDeployed*
                - *ClusterAgentInsufficientClusterSpace*
                - *ClusterAgentMissingClusterVmDatastore*
                - *ClusterAgentMissingClusterVmNetwork*
                  
        See also *EamObject.Resolve*, *EamObject.ResolveAll*.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        key:
          description: |2
            A unique identifier per <code>Issue</code> instance.
          type: integer
          format: int32
        description:
          description: |2
            A localized message describing the issue.
          type: string
        time:
          description: |2
            The point in time when this issue was generated.
            
            Note that issues can be
            regenerated periodically, so this time does not neccessarily reflect the
            first time the issue was detected.
          type: string
          format: date-time
      required:
        - key
        - description
        - time
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfIssue:
      type: object
      description: |2
        A boxed array of *Issue*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/Issue'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    MissingAgentIpPool:
      type: object
      deprecated: true
      description: |2
        Deprecated this issue is no longer raised by EAM. It is replaced by
        *InvalidConfig*.
        
        An agent virtual machine is expected to be powered on, but the agent virtual machine is powered off because
        there there are no IP addresses defined on the agent's virtual machine network.
        
        To remediate, create an IP pool on the agent's virtual machine network and invoke <code>resolve</code>.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        network:
          description: |2
            The agent virtual machine network.
            
            Refers instance of *Network*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - network
      allOf:
        - $ref: '#/components/schemas/VmPoweredOff'

    ArrayOfMissingAgentIpPool:
      type: object
      description: |2
        A boxed array of *MissingAgentIpPool*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/MissingAgentIpPool'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    MissingDvFilterSwitch:
      type: object
      deprecated: true
      description: |2
        Deprecated dvFilters are no longer supported by EAM.
        
        The agent is using the dvFilter API on the ESX host, but no dvFilter switch
        has been configured on the host.
        
        This can happen due to host communication
        failures or if the dvSwitch was (presumably accidentally) deleted from the
        host configuration.
        
        This is an active remediable issue. To remediate, vSphere ESX Agent Manager
        recreates the dvFilter switch.
        
        This structure may be used only with operations rendered under `/eam`.
      allOf:
        - $ref: '#/components/schemas/AgentIssue'

    ArrayOfMissingDvFilterSwitch:
      type: object
      description: |2
        A boxed array of *MissingDvFilterSwitch*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/MissingDvFilterSwitch'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    NoAgentVmDatastore:
      type: object
      description: |2
        An agent virtual machine is expected to be deployed on a host, but the agent cannot be
        deployed because the agent datastore has not been configured on the host.
        
        This is a passive remediable issue. The administrator must configure
        the agent virtual machine datastore on the host.
        
        This structure may be used only with operations rendered under `/eam`.
      allOf:
        - $ref: '#/components/schemas/VmNotDeployed'

    ArrayOfNoAgentVmDatastore:
      type: object
      description: |2
        A boxed array of *NoAgentVmDatastore*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/NoAgentVmDatastore'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    NoAgentVmNetwork:
      type: object
      description: |2
        An agent virtual machine is expected to be deployed on a host, but the agent cannot be
        deployed because the agent network has not been configured on the host.
        
        This is a passive remediable issue. The administrator must configure
        the agent virtual machine network on the host.
        
        This structure may be used only with operations rendered under `/eam`.
      allOf:
        - $ref: '#/components/schemas/VmNotDeployed'

    ArrayOfNoAgentVmNetwork:
      type: object
      description: |2
        A boxed array of *NoAgentVmNetwork*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/NoAgentVmNetwork'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    NoCustomAgentVmDatastore:
      type: object
      description: |2
        An agent virtual machine is expected to be deployed on a host, but the agent cannot be
        deployed because the agent datastore has not been configured on the host.
        
        The host
        needs to be added to one of the datastores listed in customAgentVmDatastore.
        
        This is a passive remediable issue. The administrator must add one of the datastores
        customAgentVmDatastore to the host.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        customAgentVmDatastore:
          description: |2
            A non-empty array of agent VM datastores that is required on the host.
            
            Refers instances of *Datastore*.
          type: array
          items:
            $ref: '#/components/schemas/ManagedObjectReference'
        customAgentVmDatastoreName:
          description: |2
            The names of the agent VM datastores.
          type: array
          items:
            type: string
      required:
        - customAgentVmDatastore
        - customAgentVmDatastoreName
      allOf:
        - $ref: '#/components/schemas/NoAgentVmDatastore'

    ArrayOfNoCustomAgentVmDatastore:
      type: object
      description: |2
        A boxed array of *NoCustomAgentVmDatastore*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/NoCustomAgentVmDatastore'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    NoCustomAgentVmNetwork:
      type: object
      description: |2
        An agent virtual machine is expected to be deployed on a host, but the agent cannot be
        deployed because the agent network has not been configured on the host.
        
        The host
        needs to be added to one of the networks listed in customAgentVmNetwork.
        
        This is a passive remediable issue. The administrator must add one of the networks
        customAgentVmNetwork to the host.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        customAgentVmNetwork:
          description: |2
            A non-empty array of agent VM networks that is required on the host.
            
            Refers instances of *Network*.
          type: array
          items:
            $ref: '#/components/schemas/ManagedObjectReference'
        customAgentVmNetworkName:
          description: |2
            The names of the agent VM networks.
          type: array
          items:
            type: string
      required:
        - customAgentVmNetwork
        - customAgentVmNetworkName
      allOf:
        - $ref: '#/components/schemas/NoAgentVmNetwork'

    ArrayOfNoCustomAgentVmNetwork:
      type: object
      description: |2
        A boxed array of *NoCustomAgentVmNetwork*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/NoCustomAgentVmNetwork'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    NoDiscoverableAgentVmDatastore:
      type: object
      description: |2
        An agent virtual machine is expected to be deployed on a host, but the
        agent cannot be deployed because the agent VM datastore could not be
        discovered, as per defined selection policy, on the host.
        
        This issue can be remediated passively if the administrator configures
        new datastores on the host.
        
        This structure may be used only with operations rendered under `/eam`.
      allOf:
        - $ref: '#/components/schemas/VmNotDeployed'

    ArrayOfNoDiscoverableAgentVmDatastore:
      type: object
      description: |2
        A boxed array of *NoDiscoverableAgentVmDatastore*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/NoDiscoverableAgentVmDatastore'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    NoDiscoverableAgentVmNetwork:
      type: object
      description: |2
        An agent virtual machine is expected to be deployed on a host, but the
        agent cannot be deployed because the agent VM network could not be
        discovered, as per defined selection policy, on the host.
        
        This issue can be remediated passively if the administrator configures
        new networks on the host.
        
        This structure may be used only with operations rendered under `/eam`.
      allOf:
        - $ref: '#/components/schemas/VmNotDeployed'

    ArrayOfNoDiscoverableAgentVmNetwork:
      type: object
      description: |2
        A boxed array of *NoDiscoverableAgentVmNetwork*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/NoDiscoverableAgentVmNetwork'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    OrphanedAgency:
      type: object
      deprecated: true
      description: |2
        Deprecated eAM no longer raises this issue. If agecny is getting orphaned
        EAM simply destroys it.
        
        The solution that created the agency is no longer registered with the vCenter
        server.
        
        This is an active remediable issue. To remediate, vSphere ESX Agent Manager
        undeploys and removes the agency.
        
        This structure may be used only with operations rendered under `/eam`.
      allOf:
        - $ref: '#/components/schemas/AgencyIssue'

    ArrayOfOrphanedAgency:
      type: object
      description: |2
        A boxed array of *OrphanedAgency*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/OrphanedAgency'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    OrphanedDvFilterSwitch:
      type: object
      deprecated: true
      description: |2
        Deprecated dvFilters are no longer supported by EAM.
        
        A dvFilter switch exists on a host but no agents on the host depend on
        dvFilter.
        
        This typically happens if a host is disconnected when an agency
        configuration changed.
        
        This is an active remediable issue. To remediate, vSphere ESX Agent Manager
        removes the dvFilterSwitch.
        
        This structure may be used only with operations rendered under `/eam`.
      allOf:
        - $ref: '#/components/schemas/HostIssue'

    ArrayOfOrphanedDvFilterSwitch:
      type: object
      description: |2
        A boxed array of *OrphanedDvFilterSwitch*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/OrphanedDvFilterSwitch'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    OvfInvalidFormat:
      type: object
      description: |2
        An Agent virtual machine is expected to be provisioned on a host, but it failed to do so
        because the provisioning of the OVF package failed.
        
        The provisioning is unlikely to
        succeed until the solution that provides the OVF package has been upgraded or
        patched to provide a valid OVF package for the agent virtual machine.
        
        This is an active remediable issue. To remediate, vSphere ESX Agent Manager attempts the OVF provisioning again.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        error:
          description: |2
            An optional list of errors that caused this issue.
            
            These errors are generated by the
            vCenter server.
          type: array
          items:
            $ref: '#/components/schemas/MethodFault'
      allOf:
        - $ref: '#/components/schemas/VmNotDeployed'

    ArrayOfOvfInvalidFormat:
      type: object
      description: |2
        A boxed array of *OvfInvalidFormat*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/OvfInvalidFormat'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    OvfInvalidProperty:
      type: object
      description: |2
        An agent virtual machine needs to be provisioned or reconfigured, but an OVF
        property is either missing or has an invalid value.
        
        This is a passive remediable issue. To remediate, update the OVF environment
        in the agent configuration used to provision the agent virtual machine.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        error:
          description: |2
            An optional list of errors that caused this issue.
            
            These errors are
            generated by the vCenter server.
          type: array
          items:
            $ref: '#/components/schemas/MethodFault'
      allOf:
        - $ref: '#/components/schemas/AgentIssue'

    ArrayOfOvfInvalidProperty:
      type: object
      description: |2
        A boxed array of *OvfInvalidProperty*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/OvfInvalidProperty'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    UnknownAgentVm:
      type: object
      deprecated: true
      description: |2
        Deprecated presence of unknown VMs is no more acceptable.
        
        An agent virtual machine has been found in the vCenter inventory that does
        not belong to any agency in this vSphere ESX Agent Manager server instance.
        
        This is an active remediable issue. To remediate, vSphere ESX Agent Manager
        powers off (if powered on) and deletes the agent virtual machine.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        vm:
          description: |2
            The unknown agent virtual machine.
            
            Refers instance of *VirtualMachine*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - vm
      allOf:
        - $ref: '#/components/schemas/HostIssue'

    ArrayOfUnknownAgentVm:
      type: object
      description: |2
        A boxed array of *UnknownAgentVm*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/UnknownAgentVm'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VibCannotPutHostInMaintenanceMode:
      type: object
      description: |2
        A VIB module requires the host to be in maintenance mode, but the vSphere ESX Agent Manager
        is unable toput the host in maintenance mode.
        
        This can happen if there are virtual machines running on the host that cannot
        be moved and must be stopped before the host can enter maintenance mode.
        
        This is an active remediable issue. To remediate, the vSphere ESX Agent Manager will try again
        to put the host into maintenance mode. However, the vSphere ESX Agent Manager will not power
        off or move any virtual machines to put the host into maintenance mode. This must be
        done by the client.
        
        This structure may be used only with operations rendered under `/eam`.
      allOf:
        - $ref: '#/components/schemas/VibIssue'

    ArrayOfVibCannotPutHostInMaintenanceMode:
      type: object
      description: |2
        A boxed array of *VibCannotPutHostInMaintenanceMode*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VibCannotPutHostInMaintenanceMode'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VibCannotPutHostOutOfMaintenanceMode:
      type: object
      description: |2
        ESXi host is in Maintenance Mode.
        
        This prevents powering on and
        re-configuring Agent Virtual Machines. Also if the host's entering in
        Maintenance Mode was initiated by vSphere Esx Agent Manager, the same is
        responsible to initiate exit Maintenance Mode.
        
        This is an active remediable issue. To remediate, vSphere ESX Agent Manager
        puts the host out of Maintenance Mode.
        
        This structure may be used only with operations rendered under `/eam`.
      allOf:
        - $ref: '#/components/schemas/VibIssue'

    ArrayOfVibCannotPutHostOutOfMaintenanceMode:
      type: object
      description: |2
        A boxed array of *VibCannotPutHostOutOfMaintenanceMode*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VibCannotPutHostOutOfMaintenanceMode'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VibDependenciesNotMetByHost:
      type: object
      description: |2
        A VIB module is expected to be installed on a host, but the dependencies,
        describred within the module, were not satisfied by the host.
        
        This is an active remediable issue. To remediate, vSphere ESX Agent Manager
        attempts the VIB installation again.
        
        This structure may be used only with operations rendered under `/eam`.
      allOf:
        - $ref: '#/components/schemas/VibNotInstalled'

    ArrayOfVibDependenciesNotMetByHost:
      type: object
      description: |2
        A boxed array of *VibDependenciesNotMetByHost*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VibDependenciesNotMetByHost'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VibInvalidFormat:
      type: object
      description: |2
        A VIB module is expected to be installed on a host, but it failed to install
        since the VIB package is in an invalid format.
        
        The installation is unlikely to
        succeed until the solution provding the bundle has been upgraded or patched to
        provide a valid VIB package.
        
        This is an active remediable issue. To remediate, vSphere ESX Agent Manager attempts the VIB installation again.
        
        This structure may be used only with operations rendered under `/eam`.
      allOf:
        - $ref: '#/components/schemas/VibNotInstalled'

    ArrayOfVibInvalidFormat:
      type: object
      description: |2
        A boxed array of *VibInvalidFormat*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VibInvalidFormat'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VibIssue:
      type: object
      description: |2
        Base class for all issues related to the VIB modules that belong to an agent.
        
        This structure may be used only with operations rendered under `/eam`.
      allOf:
        - $ref: '#/components/schemas/AgentIssue'

    ArrayOfVibIssue:
      type: object
      description: |2
        A boxed array of *VibIssue*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VibIssue'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VibNotInstalled:
      type: object
      description: |2
        A VIB module is expected to be installed/removed on a host, but it has not
        been installed/removed.
        
        Typically, a more specific issue (a subclass of this
        issue) indicates the particular reason why the VIB module operation failed.
        
        This is an active remediable issue. To remediate, vSphere ESX Agent Manager
        attempts the VIB operation again.
        In case of unreachable host vSphere ESX Agent Manager will remediate the
        issue automatically when the host becomes reachable.
        
        This structure may be used only with operations rendered under `/eam`.
      allOf:
        - $ref: '#/components/schemas/VibIssue'

    ArrayOfVibNotInstalled:
      type: object
      description: |2
        A boxed array of *VibNotInstalled*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VibNotInstalled'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VibRequirementsNotMetByHost:
      type: object
      description: |2
        A VIB module is expected to be installed on a host, but the system
        requirements, describred within the module, were not satisfied by the host.
        
        This is an active remediable issue. To remediate, vSphere ESX Agent Manager
        attempts the VIB installation again.
        
        This structure may be used only with operations rendered under `/eam`.
      allOf:
        - $ref: '#/components/schemas/VibNotInstalled'

    ArrayOfVibRequirementsNotMetByHost:
      type: object
      description: |2
        A boxed array of *VibRequirementsNotMetByHost*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VibRequirementsNotMetByHost'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VibRequiresHostInMaintenanceMode:
      type: object
      description: |2
        A VIB module has been uploaded to the host, but will not be fully installed
        until the host has been put in maintenance mode.
        
        This is an active remediable issue. To remediate, vSphere ESX Agent Manager puts the host into maintenance
        mode.
        
        This structure may be used only with operations rendered under `/eam`.
      allOf:
        - $ref: '#/components/schemas/VibIssue'

    ArrayOfVibRequiresHostInMaintenanceMode:
      type: object
      description: |2
        A boxed array of *VibRequiresHostInMaintenanceMode*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VibRequiresHostInMaintenanceMode'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VibRequiresHostReboot:
      type: object
      description: |2
        A VIB module has been uploaded to the host, but will not be activated
        until the host is rebooted.
        
        This is an active remediable issue. To remediate, vSphere ESX Agent Manager puts the host into maintenance
        mode and reboots it.
        
        This structure may be used only with operations rendered under `/eam`.
      allOf:
        - $ref: '#/components/schemas/VibIssue'

    ArrayOfVibRequiresHostReboot:
      type: object
      description: |2
        A boxed array of *VibRequiresHostReboot*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VibRequiresHostReboot'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VibRequiresManualInstallation:
      type: object
      description: |2
        A VIB module failed to install, but failed to do so because automatic installation
        by vSphere ESX Agent Manager is not allowed on the host.
        
        This is a passive remediable issue. To remediate, go to VMware Update Manager
        and install the required bulletins on the host or add the bulletins to the
        host's image profile.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        bulletin:
          description: |2
            A non-empty array of bulletins required to be installed on the host.
          type: array
          items:
            type: string
      required:
        - bulletin
      allOf:
        - $ref: '#/components/schemas/VibIssue'

    ArrayOfVibRequiresManualInstallation:
      type: object
      description: |2
        A boxed array of *VibRequiresManualInstallation*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VibRequiresManualInstallation'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VibRequiresManualUninstallation:
      type: object
      description: |2
        A VIB module failed to uninstall, but failed to do so because automatic uninstallation
        by vSphere ESX Agent Manager is not allowed on the host.
        
        This is a passive remediable issue. To remediate, go to VMware Update Manager
        and uninstall the required bulletins on the host or remove the bulletins from the
        host's image profile.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        bulletin:
          description: |2
            A non-empty array of bulletins required to be uninstalled on the host.
          type: array
          items:
            type: string
      required:
        - bulletin
      allOf:
        - $ref: '#/components/schemas/VibIssue'

    ArrayOfVibRequiresManualUninstallation:
      type: object
      description: |2
        A boxed array of *VibRequiresManualUninstallation*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VibRequiresManualUninstallation'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmCorrupted:
      type: object
      description: |2
        An agent virtual machine is corrupted.
        
        This is an active remediable issue. To remediate, vSphere ESX Agent Manager deletes and
        reprovisions the agent virtual machine. To remediate manually, fix the missing file issue and power on the
        agent virtual machine.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        missingFile:
          description: |2
            An optional path for a missing file.
          type: string
      allOf:
        - $ref: '#/components/schemas/VmIssue'

    ArrayOfVmCorrupted:
      type: object
      description: |2
        A boxed array of *VmCorrupted*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmCorrupted'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmDeployed:
      type: object
      description: |2
        An agent virtual machine is expected to be removed from a host, but the agent virtual machine has not
        been removed.
        
        Typically, a more specific issue (a subclass of this issue)
        indicates the particular reason why vSphere ESX Agent Manager was unable to remove the
        agent virtual machine, such as the host is in maintenance mode, powered off or in standby
        mode.
        
        This is an active remediable issue. To remediate, vSphere ESX Agent Manager redeploys the agent.
        
        This structure may be used only with operations rendered under `/eam`.
      allOf:
        - $ref: '#/components/schemas/VmIssue'

    ArrayOfVmDeployed:
      type: object
      description: |2
        A boxed array of *VmDeployed*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmDeployed'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmIssue:
      type: object
      description: |2
        Base class for all issues related to the deployed virtual machine for a
        particular agent.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        vm:
          description: |2
            The virtual machine to which this issue is related.
            
            Refers instance of *VirtualMachine*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - vm
      allOf:
        - $ref: '#/components/schemas/AgentIssue'

    ArrayOfVmIssue:
      type: object
      description: |2
        A boxed array of *VmIssue*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmIssue'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmMarkedAsTemplate:
      type: object
      deprecated: true
      description: |2
        Deprecated template agent VMs are not used anymore by VM deployment and
        monitoring.
        
        An agent virtual machine is a virtual machine template.
        
        This is an active remediable issue. To remediate, vSphere ESX Agent Manager
        converts the agent virtual machine template to a virtual machine.
        
        This structure may be used only with operations rendered under `/eam`.
      allOf:
        - $ref: '#/components/schemas/VmIssue'

    ArrayOfVmMarkedAsTemplate:
      type: object
      description: |2
        A boxed array of *VmMarkedAsTemplate*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmMarkedAsTemplate'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmNotDeployed:
      type: object
      description: |2
        An agent virtual machine is expected to be deployed on a host, but the agent virtual machine has not
        been deployed.
        
        Typically, a more specific issue (a subclass of this issue)
        indicates the particular reason why vSphere ESX Agent Manager was unable to deploy the
        agent, such as being unable to access the OVF package for the agent or a missing host
        configuration. This issue can also happen if the agent virtual machine is explicitly deleted
        from the host.
        
        This is an active remediable issue. To remediate, vSphere ESX Agent Manager redeploys the agent virtual machine.
        
        This structure may be used only with operations rendered under `/eam`.
      allOf:
        - $ref: '#/components/schemas/AgentIssue'

    ArrayOfVmNotDeployed:
      type: object
      description: |2
        A boxed array of *VmNotDeployed*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmNotDeployed'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmOrphaned:
      type: object
      description: |2
        An agent virtual machine exists on a host, but the host is no longer part of scope for the
        agency.
        
        This typically happens if a host is disconnected when the agency
        configuration is changed.
        
        This is an active remediable issue. To remediate, vSphere ESX Agent Manager deletes the agent virtual machine.
        
        This structure may be used only with operations rendered under `/eam`.
      allOf:
        - $ref: '#/components/schemas/VmIssue'

    ArrayOfVmOrphaned:
      type: object
      description: |2
        A boxed array of *VmOrphaned*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmOrphaned'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmPoweredOff:
      type: object
      description: |2
        An agent virtual machine is expected to be powered on, but the agent virtual machine is powered off.
        
        This is an active remediable issue. To remediate, vSphere ESX Agent Manager
        powers on the agent virtual machine.
        
        This structure may be used only with operations rendered under `/eam`.
      allOf:
        - $ref: '#/components/schemas/VmIssue'

    ArrayOfVmPoweredOff:
      type: object
      description: |2
        A boxed array of *VmPoweredOff*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmPoweredOff'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmPoweredOn:
      type: object
      description: |2
        An agent virtual machine is expected to be powered off, but the agent virtual machine is powered on.
        
        This is an active remediable issue. To remediate, vSphere ESX Agent Manager
        powers off the agent virtual machine.
        
        This structure may be used only with operations rendered under `/eam`.
      allOf:
        - $ref: '#/components/schemas/VmIssue'

    ArrayOfVmPoweredOn:
      type: object
      description: |2
        A boxed array of *VmPoweredOn*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmPoweredOn'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmRequiresHostOutOfMaintenanceMode:
      type: object
      description: |2
        An agent virtual machine is expected to be deployed on a host, but the agent
        virtual machine cannot be deployed because the host is in Maintenance Mode.
        
        This is an active remediable issue. To remediate, vSphere ESX Agent Manager
        takes the host out of Maintenance Mode and deploys the agent virtual machine.
        
        Resolving this issue in vSphere Lifecyle Manager environemnt will be no-op.
        In those cases user must take the host out of Maintenance Mode manually or
        wait vSphere Lifecycle Maanger cluster remediation to complete (if any).
        
        This structure may be used only with operations rendered under `/eam`.
        
        ***Since:*** vEAM API 7.2
      allOf:
        - $ref: '#/components/schemas/VmNotDeployed'

    ArrayOfVmRequiresHostOutOfMaintenanceMode:
      type: object
      description: |2
        A boxed array of *VmRequiresHostOutOfMaintenanceMode*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
        
        ***Since:*** vEAM API 7.2
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmRequiresHostOutOfMaintenanceMode'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmSuspended:
      type: object
      description: |2
        An agent virtual machine is expected to be powered on, but the agent virtual machine is suspended.
        
        This is an active remediable issue. To remediate, vSphere ESX Agent Manager powers on the agent virtual machine.
        
        This structure may be used only with operations rendered under `/eam`.
      allOf:
        - $ref: '#/components/schemas/VmIssue'

    ArrayOfVmSuspended:
      type: object
      description: |2
        A boxed array of *VmSuspended*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmSuspended'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmWrongFolder:
      type: object
      deprecated: true
      description: |2
        Deprecated eAM does not try to override any action powerfull user has taken.
        
        An agent virtual machine is expected to be located in a designated agent
        virtual machine folder, but is found in a different folder.
        
        This is an active remediable issue. To remediate, vSphere ESX Agent Manager
        moves the agent virtual machine back into the designated agent folder.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        currentFolder:
          description: |2
            The folder in which the virtual machine currently resides.
            
            Refers instance of *Folder*.
          $ref: '#/components/schemas/ManagedObjectReference'
        requiredFolder:
          description: |2
            The ESX agent folder in which the virtual machine should reside.
            
            Refers instance of *Folder*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - currentFolder
        - requiredFolder
      allOf:
        - $ref: '#/components/schemas/VmIssue'

    ArrayOfVmWrongFolder:
      type: object
      description: |2
        A boxed array of *VmWrongFolder*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmWrongFolder'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmWrongResourcePool:
      type: object
      deprecated: true
      description: |2
        Deprecated eAM does not try to override any action powerfull user has taken.
        
        An agent virtual machine is expected to be located in a designated agent
        virtual machine resource pool, but is found in a different resource pool.
        
        This is an active remediable issue. To remediate, vSphere ESX Agent Manager
        moves the agent virtual machine back into the designated agent resource pool.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        currentResourcePool:
          description: |2
            The resource pool in which the VM currently resides.
            
            Refers instance of *ResourcePool*.
          $ref: '#/components/schemas/ManagedObjectReference'
        requiredResourcePool:
          description: |2
            The ESX agent resource pool in which the VM should reside.
            
            Refers instance of *ResourcePool*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - currentResourcePool
        - requiredResourcePool
      allOf:
        - $ref: '#/components/schemas/VmIssue'

    ArrayOfVmWrongResourcePool:
      type: object
      description: |2
        A boxed array of *VmWrongResourcePool*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmWrongResourcePool'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ClusterAgentAgentIssue:
      type: object
      description: |2
        Base class for all cluster bound agents.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        agent:
          description: |2
            The agent that has this issue.
            
            Refers instance of *Agent*.
          $ref: '#/components/schemas/ManagedObjectReference'
        cluster:
          description: |2
            The cluster for which this issue is raised.
            
            Migth be null if the cluster
            is missing in vCenter Server inventory.
            
            Refers instance of *ComputeResource*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - agent
      allOf:
        - $ref: '#/components/schemas/AgencyIssue'

    ArrayOfClusterAgentAgentIssue:
      type: object
      description: |2
        A boxed array of *ClusterAgentAgentIssue*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ClusterAgentAgentIssue'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ClusterAgentCertificateNotTrusted:
      type: object
      description: |2
        The cluster agent Virtual Machine cannot be deployed, because vSphere ESX
        Agent Manager is not able to make successful SSL trust verification of the
        server's certificate, when establishing connection to the provided
        *AgentConfigInfo.ovfPackageUrl*.
        
        Reasons for this might be that the
        certificate provided via the API *AgentConfigInfo.ovfSslTrust* or via
        the script /usr/lib/vmware-eam/bin/eam-utility.py
        - is invalid.
        - does not match the server's certificate.
          
        If there is no provided certificate, the issue is raised when the server's
        certificate is not trusted by the system or invalid - @see
        *AgentConfigInfo.ovfSslTrust*.
        To remediate the cluster agent Virtual Machine deployment 1) provide a valid
        certificate used by the server hosting the
        *AgentConfigInfo.ovfPackageUrl* or 2) ensure the server's certificate
        is signed by a CA trusted by the system. Then resolve this issue, vSphere ESX
        Agent Manager will retry the SSL trust verification and proceed with reaching
        the desired state.
        
        This structure may be used only with operations rendered under `/eam`.
        
        ***Since:*** vEAM API 8.2
      properties:
        url:
          description: |2
            The URL that failed the SSL trust verification.
          type: string
      required:
        - url
      allOf:
        - $ref: '#/components/schemas/ClusterAgentVmNotDeployed'

    ArrayOfClusterAgentCertificateNotTrusted:
      type: object
      description: |2
        A boxed array of *ClusterAgentCertificateNotTrusted*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
        
        ***Since:*** vEAM API 8.2
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ClusterAgentCertificateNotTrusted'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ClusterAgentInsufficientClusterResources:
      type: object
      description: |2
        The cluster agent Virtual Machine could not be powered-on, because the
        cluster does not have enough CPU or memory resources.
        
        This is an active remediable issue. To remediate, vSphere ESX Agent Manager
        powers on the agent Virtual Machine. However, the problem is likely to
        persist until enough CPU and memory resources are made available.
        
        This structure may be used only with operations rendered under `/eam`.
      allOf:
        - $ref: '#/components/schemas/ClusterAgentVmPoweredOff'

    ArrayOfClusterAgentInsufficientClusterResources:
      type: object
      description: |2
        A boxed array of *ClusterAgentInsufficientClusterResources*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ClusterAgentInsufficientClusterResources'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ClusterAgentInsufficientClusterSpace:
      type: object
      description: |2
        The cluster agent Virtual Machine cannot be deployed, because any of the
        configured datastores does not have enough disk space.
        
        This is an active remediable issue. To remediate, vSphere ESX Agent Manager
        redeploys the agent Virtual Machine. However, the problem is likely to
        persist until enough disk space is freed up on the cluster datastore.
        
        This structure may be used only with operations rendered under `/eam`.
      allOf:
        - $ref: '#/components/schemas/ClusterAgentVmNotDeployed'

    ArrayOfClusterAgentInsufficientClusterSpace:
      type: object
      description: |2
        A boxed array of *ClusterAgentInsufficientClusterSpace*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ClusterAgentInsufficientClusterSpace'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ClusterAgentInvalidConfig:
      type: object
      description: |2
        Invalid configuration is preventing a cluster agent virtual machine
        operation.
        
        Typically the attached error indicates the particular reason why
        vSphere ESX Agent Manager is unable to power on or reconfigure the agent
        virtual machine.
        
        This is a passive remediable issue. To remediate update the virtual machine
        configuration.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        error:
          description: |2
            The error, that caused this issue.
            
            It must be either MethodFault or
            RuntimeFault.
          $ref: '#/components/schemas/Any'
      required:
        - error
      allOf:
        - $ref: '#/components/schemas/ClusterAgentVmIssue'

    ArrayOfClusterAgentInvalidConfig:
      type: object
      description: |2
        A boxed array of *ClusterAgentInvalidConfig*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ClusterAgentInvalidConfig'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ClusterAgentMissingClusterVmDatastore:
      type: object
      description: |2
        The cluster agent Virtual Machine cannot be deployed, because any of the
        configured datastores does not exist on the cluster.
        
        This is an active remediable issue. To remediate, vSphere ESX Agent Manager
        redeploys the agent Virtual Machine. However, the problem is likely to
        persist until required Virtual Machine datastores are configured on the
        cluster.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        missingDatastores:
          description: |2
            A non-empty array of cluster agent VM datastores that are missing on the
            cluster.
            
            Refers instances of *Datastore*.
          type: array
          items:
            $ref: '#/components/schemas/ManagedObjectReference'
      allOf:
        - $ref: '#/components/schemas/ClusterAgentVmNotDeployed'

    ArrayOfClusterAgentMissingClusterVmDatastore:
      type: object
      description: |2
        A boxed array of *ClusterAgentMissingClusterVmDatastore*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ClusterAgentMissingClusterVmDatastore'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ClusterAgentMissingClusterVmNetwork:
      type: object
      description: |2
        The cluster agent Virtual Machine cannot be deployed, because the configured
        networks do not exist on the cluster.
        
        This is an active remediable issue. To remediate, vSphere ESX Agent Manager
        redeploys the agent Virtual Machine. However, the problem is likely to
        persist until required Virtual Machine networks are configured on the
        cluster.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        missingNetworks:
          description: |2
            A non-empty array of cluster agent VM networks that are required on the
            cluster.
            
            Refers instances of *Network*.
          type: array
          items:
            $ref: '#/components/schemas/ManagedObjectReference'
        networkNames:
          description: |2
            The names of the cluster agent VM networks.
          type: array
          items:
            type: string
      allOf:
        - $ref: '#/components/schemas/ClusterAgentVmNotDeployed'

    ArrayOfClusterAgentMissingClusterVmNetwork:
      type: object
      description: |2
        A boxed array of *ClusterAgentMissingClusterVmNetwork*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ClusterAgentMissingClusterVmNetwork'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ClusterAgentOvfInvalidProperty:
      type: object
      description: |2
        A cluster agent virtual machine needs to be provisioned, but an OVF property
        is either missing or has an invalid value.
        
        This is a passive remediable issue. To remediate, update the OVF environment
        in the agent configuration used to provision the agent virtual machine.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        error:
          description: |2
            An optional list of errors that caused this issue.
            
            These errors are
            generated by the vCenter server.
          type: array
          items:
            $ref: '#/components/schemas/MethodFault'
      allOf:
        - $ref: '#/components/schemas/ClusterAgentAgentIssue'

    ArrayOfClusterAgentOvfInvalidProperty:
      type: object
      description: |2
        A boxed array of *ClusterAgentOvfInvalidProperty*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ClusterAgentOvfInvalidProperty'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ClusterAgentVmIssue:
      type: object
      description: |2
        Base class for all cluster bound Virtual Machines.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        vm:
          description: |2
            The Virtual Machine to which this issue is related.
            
            Refers instance of *VirtualMachine*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - vm
      allOf:
        - $ref: '#/components/schemas/ClusterAgentAgentIssue'

    ArrayOfClusterAgentVmIssue:
      type: object
      description: |2
        A boxed array of *ClusterAgentVmIssue*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ClusterAgentVmIssue'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ClusterAgentVmNotDeployed:
      type: object
      description: |2
        A cluster agent Virtual Machine is expected to be deployed on a cluster, but
        the cluster agent Virtual Machine has not been deployed or has been exlicitly
        deleted from the cluster.
        
        Typically more specific issue (a subclass of this
        issue) indicates the particular reason why vSphere ESX Agent Manager was
        unable to deploy the cluster agent Virtual Machine.
        
        This is an active remediable issue. To remediate, vSphere ESX Agent Manager
        redeploys the cluster agent Virtual Machine.
        
        This structure may be used only with operations rendered under `/eam`.
      allOf:
        - $ref: '#/components/schemas/ClusterAgentAgentIssue'

    ArrayOfClusterAgentVmNotDeployed:
      type: object
      description: |2
        A boxed array of *ClusterAgentVmNotDeployed*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ClusterAgentVmNotDeployed'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ClusterAgentVmNotRemoved:
      type: object
      description: |2
        The cluster agent Virtual Machine can not be removed from a cluster.
        
        Typically the description indicates the particular reason why vSphere ESX
        Agent Manager was unable to remove the cluster agent Virtual Machine.
        
        This is an active remediable issue. To remediate, vSphere ESX Agent Manager
        removes the cluster agent Virtual Machine.
        
        This structure may be used only with operations rendered under `/eam`.
      allOf:
        - $ref: '#/components/schemas/ClusterAgentVmIssue'

    ArrayOfClusterAgentVmNotRemoved:
      type: object
      description: |2
        A boxed array of *ClusterAgentVmNotRemoved*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ClusterAgentVmNotRemoved'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ClusterAgentVmPoweredOff:
      type: object
      description: |2
        A cluster agent Virtual Machine is expected to be powered on, but the agent
        Virtual Machine is powered off.
        
        Typically more specific issue (a subclass of
        this issue) indicates the particular reason why vSphere ESX Agent Manager was
        unable to power on the cluster agent Virtual Machine.
        
        This is an active remediable issue. To remediate, vSphere ESX Agent Manager
        powers on the cluster agent Virtual Machine.
        
        This structure may be used only with operations rendered under `/eam`.
      allOf:
        - $ref: '#/components/schemas/ClusterAgentVmIssue'

    ArrayOfClusterAgentVmPoweredOff:
      type: object
      description: |2
        A boxed array of *ClusterAgentVmPoweredOff*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ClusterAgentVmPoweredOff'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ClusterAgentVmPoweredOn:
      type: object
      description: |2
        A cluster agent virtual machine is expected to be powered off, but the agent
        virtual machine is powered on.
        
        This is an active remediable issue. To remediate, vSphere ESX Agent Manager
        powers off the agent virtual machine.
        
        This structure may be used only with operations rendered under `/eam`.
      allOf:
        - $ref: '#/components/schemas/ClusterAgentVmIssue'

    ArrayOfClusterAgentVmPoweredOn:
      type: object
      description: |2
        A boxed array of *ClusterAgentVmPoweredOn*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ClusterAgentVmPoweredOn'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ClusterAgentVmSuspended:
      type: object
      description: |2
        A cluster agent Virtual Machine is expected to be powered on, but the agent
        Virtual Machine is suspended.
        
        This is an active remediable issue. To remediate, vSphere ESX Agent Manager
        powers on the cluster agent Virtual Machine.
        
        This structure may be used only with operations rendered under `/eam`.
      allOf:
        - $ref: '#/components/schemas/ClusterAgentVmIssue'

    ArrayOfClusterAgentVmSuspended:
      type: object
      description: |2
        A boxed array of *ClusterAgentVmSuspended*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ClusterAgentVmSuspended'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    IntegrityAgencyCannotDeleteSoftware:
      type: object
      description: |2
        Cannot remove the Baseline associated with an Agency from VUM.
        
        This is an active remediable issue. To remediate, vSphere ESX Agent Manager
        retries the delete operation.
        Note: In future this issue will denote also the removal of the Agency
        software (VIBs) from VUM software depot once VUM provides an API for that.
        
        This structure may be used only with operations rendered under `/eam`.
      allOf:
        - $ref: '#/components/schemas/IntegrityAgencyVUMIssue'

    ArrayOfIntegrityAgencyCannotDeleteSoftware:
      type: object
      description: |2
        A boxed array of *IntegrityAgencyCannotDeleteSoftware*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/IntegrityAgencyCannotDeleteSoftware'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    IntegrityAgencyCannotStageSoftware:
      type: object
      description: |2
        The software defined by an Agency cannot be staged in VUM.
        
        The staging
        operation consists of the following steps:
        - Upload the Agency software (VIBs) to the VUM depot.
        - Create or update a VUM Baseline with the Agency software and scope.
          
        This is an active remediable issue. To remediate, vSphere ESX Agent Manager
        retries the stage operation.
        
        This structure may be used only with operations rendered under `/eam`.
      allOf:
        - $ref: '#/components/schemas/IntegrityAgencyVUMIssue'

    ArrayOfIntegrityAgencyCannotStageSoftware:
      type: object
      description: |2
        A boxed array of *IntegrityAgencyCannotStageSoftware*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/IntegrityAgencyCannotStageSoftware'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    IntegrityAgencyVUMIssue:
      type: object
      description: |2
        Base class for all issues which occurred during EAM communication with
        vSphere Update Manager (VUM).
        
        This structure may be used only with operations rendered under `/eam`.
      allOf:
        - $ref: '#/components/schemas/AgencyIssue'

    ArrayOfIntegrityAgencyVUMIssue:
      type: object
      description: |2
        A boxed array of *IntegrityAgencyVUMIssue*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/IntegrityAgencyVUMIssue'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    IntegrityAgencyVUMUnavailable:
      type: object
      description: |2
        VUM service is not available - its registered SOAP endpoint cannot be
        accessed or it is malfunctioning.
        
        This is an active and passive remediable issue. To remediate, vSphere ESX
        Agent Manager retries to access VUM service.
        
        This structure may be used only with operations rendered under `/eam`.
      allOf:
        - $ref: '#/components/schemas/IntegrityAgencyVUMIssue'

    ArrayOfIntegrityAgencyVUMUnavailable:
      type: object
      description: |2
        A boxed array of *IntegrityAgencyVUMUnavailable*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/IntegrityAgencyVUMUnavailable'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PersonalityAgencyCannotConfigureSolutions:
      type: object
      description: |2
        EAM was unable to set its required compute resource configuration in PM.
        
        EAM configuration needs to be updated or PM needs to be repaired manually to
        allow the configuration.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        cr:
          description: |2
            Compute resource that couldn't be configured
            
            Refers instance of *ComputeResource*.
          $ref: '#/components/schemas/ManagedObjectReference'
        solutionsToModify:
          description: |2
            Names of the solutions attempted to be modified
          type: array
          items:
            type: string
        solutionsToRemove:
          description: |2
            Names of the solutions attempted to be removed
          type: array
          items:
            type: string
      required:
        - cr
      allOf:
        - $ref: '#/components/schemas/PersonalityAgencyPMIssue'

    ArrayOfPersonalityAgencyCannotConfigureSolutions:
      type: object
      description: |2
        A boxed array of *PersonalityAgencyCannotConfigureSolutions*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PersonalityAgencyCannotConfigureSolutions'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PersonalityAgencyCannotUploadDepot:
      type: object
      description: |2
        The offline depot could not be uploaded in Personality Manager.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        localDepotUrl:
          description: |2
            URL EAM hosted the offline bundle as in vCenter.
          type: string
      required:
        - localDepotUrl
      allOf:
        - $ref: '#/components/schemas/PersonalityAgencyDepotIssue'

    ArrayOfPersonalityAgencyCannotUploadDepot:
      type: object
      description: |2
        A boxed array of *PersonalityAgencyCannotUploadDepot*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PersonalityAgencyCannotUploadDepot'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PersonalityAgencyDepotIssue:
      type: object
      description: |2
        Base class for all offline depot (VIB) issues while communicating with
        Personality Manager.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        remoteDepotUrl:
          description: |2
            URL the offline bundle is configured in EAM.
          type: string
      required:
        - remoteDepotUrl
      allOf:
        - $ref: '#/components/schemas/PersonalityAgencyPMIssue'

    ArrayOfPersonalityAgencyDepotIssue:
      type: object
      description: |2
        A boxed array of *PersonalityAgencyDepotIssue*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PersonalityAgencyDepotIssue'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PersonalityAgencyInaccessibleDepot:
      type: object
      description: |2
        The offline depot was not available for download during communicating with
        Personality Manager.
        
        This structure may be used only with operations rendered under `/eam`.
      allOf:
        - $ref: '#/components/schemas/PersonalityAgencyDepotIssue'

    ArrayOfPersonalityAgencyInaccessibleDepot:
      type: object
      description: |2
        A boxed array of *PersonalityAgencyInaccessibleDepot*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PersonalityAgencyInaccessibleDepot'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PersonalityAgencyInvalidDepot:
      type: object
      description: |2
        The offline depot has missing or invalid metadata to be usable by
        Personality Manager.
        
        This structure may be used only with operations rendered under `/eam`.
      allOf:
        - $ref: '#/components/schemas/PersonalityAgencyDepotIssue'

    ArrayOfPersonalityAgencyInvalidDepot:
      type: object
      description: |2
        A boxed array of *PersonalityAgencyInvalidDepot*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PersonalityAgencyInvalidDepot'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PersonalityAgencyPMIssue:
      type: object
      description: |2
        Base class for all issues which occurred during EAM communication with
        Personality Manager.
        
        This structure may be used only with operations rendered under `/eam`.
      allOf:
        - $ref: '#/components/schemas/AgencyIssue'

    ArrayOfPersonalityAgencyPMIssue:
      type: object
      description: |2
        A boxed array of *PersonalityAgencyPMIssue*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PersonalityAgencyPMIssue'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PersonalityAgencyPMUnavailable:
      type: object
      description: |2
        PM service is not available - its endpoint cannot be accessed or it is
        malfunctioning.
        
        This is an active and passive remediable issue. To remediate, vSphere ESX
        Agent Manager retries to access PM service.
        
        This structure may be used only with operations rendered under `/eam`.
      allOf:
        - $ref: '#/components/schemas/PersonalityAgencyPMIssue'

    ArrayOfPersonalityAgencyPMUnavailable:
      type: object
      description: |2
        A boxed array of *PersonalityAgencyPMUnavailable*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PersonalityAgencyPMUnavailable'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PersonalityAgentAwaitingPMRemediation:
      type: object
      description: |2
        The agent workflow is blocked until its' required solutions are re-mediated
        externally in Personality Manager.
        
        This issue is only passively remediable. The desired state has to be applied
        in PM by an user.
        
        This structure may be used only with operations rendered under `/eam`.
      allOf:
        - $ref: '#/components/schemas/PersonalityAgentPMIssue'

    ArrayOfPersonalityAgentAwaitingPMRemediation:
      type: object
      description: |2
        A boxed array of *PersonalityAgentAwaitingPMRemediation*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PersonalityAgentAwaitingPMRemediation'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PersonalityAgentBlockedByAgencyOperation:
      type: object
      description: |2
        The agent workflow is blocked by a failed agency operation with
        Personality Manager.
        
        This issue is only passively remediable. The agency's PM related issue has to
        be resolved.
        
        This structure may be used only with operations rendered under `/eam`.
      allOf:
        - $ref: '#/components/schemas/PersonalityAgentPMIssue'

    ArrayOfPersonalityAgentBlockedByAgencyOperation:
      type: object
      description: |2
        A boxed array of *PersonalityAgentBlockedByAgencyOperation*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PersonalityAgentBlockedByAgencyOperation'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PersonalityAgentPMIssue:
      type: object
      description: |2
        Base class for all issues which occurred during EAM communication with
        Personality Manager.
        
        This structure may be used only with operations rendered under `/eam`.
      allOf:
        - $ref: '#/components/schemas/AgentIssue'

    ArrayOfPersonalityAgentPMIssue:
      type: object
      description: |2
        A boxed array of *PersonalityAgentPMIssue*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PersonalityAgentPMIssue'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HooksHookInfo:
      type: object
      description: |2
        Contains information for a raised hook.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        vm:
          description: |2
            Virtual Machine, the hook was raised for.
            
            Refers instance of *VirtualMachine*.
          $ref: '#/components/schemas/ManagedObjectReference'
        solution:
          description: |2
            Solution the Virtual Machine belongs to.
          type: string
        hookType:
          description: |2
            Type of the hook *HooksHookType_enum*.
          type: string
        raisedAt:
          description: |2
            Time the hook was raised.
          type: string
          format: date-time
      required:
        - vm
        - solution
        - hookType
        - raisedAt
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHooksHookInfo:
      type: object
      description: |2
        A boxed array of *HooksHookInfo*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HooksHookInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HooksHookListSpec:
      type: object
      description: |2
        Limits the hooks reported to the user.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        solutions:
          description: |2
            If specified - will report hooks only for agents from the specified
            solutions, otherwise - will report hooks for agents from all solutions.
          type: array
          items:
            type: string
        hosts:
          description: |2
            If specified - will report hooks only for agents on the specified
            hosts, otherwise - will report hooks for agents on all hosts.
            
            Refers instances of *HostSystem*.
          type: array
          items:
            $ref: '#/components/schemas/ManagedObjectReference'
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHooksHookListSpec:
      type: object
      description: |2
        A boxed array of *HooksHookListSpec*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HooksHookListSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HooksMarkAsProcessedSpec:
      type: object
      description: |2
        Specification for marking a raised hook on an agent Virtual Machine as
        processed.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        vm:
          description: |2
            Virtual Machine to mark a hook as processed.
            
            Refers instance of *VirtualMachine*.
          $ref: '#/components/schemas/ManagedObjectReference'
        hookType:
          description: |2
            Type of hook to be marked as processed *HooksHookType_enum*.
          type: string
        success:
          description: |2
            `True` - if the hook was processed successfully, `False` -
            if the hook could not be processed.
          type: boolean
      required:
        - vm
        - hookType
        - success
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHooksMarkAsProcessedSpec:
      type: object
      description: |2
        A boxed array of *HooksMarkAsProcessedSpec*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HooksMarkAsProcessedSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    SolutionsApplySpec:
      type: object
      description: |2
        Specification describing a desired state to be applied.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        desiredState:
          description: |2
            Complete desired state to be applied on the target entity.
            
            the **solutions** member limits which parts of this desired state to
            be applied
              If the **solutions** member is omitted.
            - Any solution described in this structure will be applied on the
              target entity
            - Any solution already existing on the target entity, but missing
              from this structure, will be deleted from the target entity
          type: array
          items:
            $ref: '#/components/schemas/SolutionsSolutionConfig'
        solutions:
          description: |2
            If provided, limits the parts of the **desiredState** structure to
            be applied on the target entity.
            - solutions that are also present in the **desiredState**
              structure will be applied on the target entity.
            - solutions that are missing from the **desiredState** structure
              will be deleted from the target entity.
          type: array
          items:
            type: string
        hosts:
          description: |2
            Specifies exact hosts to apply the desired state to, instead of every
            host in the cluster.
            
            Applicable only to solutions with
            *SolutionsHostBoundSolutionConfig*.
            
            Refers instances of *HostSystem*.
          type: array
          items:
            $ref: '#/components/schemas/ManagedObjectReference'
        deploymentUnits:
          description: |2
            Deployment units on which solutions that are specified by the this
            structure need to be applied.
            
            Applicable only to solutions with
            *SolutionsClusterBoundSolutionConfig*.
            
            The deployment unit represents a single VM instance deployment. It is
            returned by the *Solutions.Compliance* operation.
            
            If omitted - the configured solutions by *SolutionsApplySpec.solutions* are applied
            on all of the deployment units in the cluster.
          type: array
          items:
            type: string
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfSolutionsApplySpec:
      type: object
      description: |2
        A boxed array of *SolutionsApplySpec*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/SolutionsApplySpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    SolutionsClusterBoundSolutionConfig:
      type: object
      description: |2
        Specifies cluster-bound solution configuration.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        vmCount:
          description: |2
            The number of instances of the specified VM to be deployed across the
            cluster.
          type: integer
          format: int32
        vmPlacementPolicies:
          description: |2
            VM placement policies to be configured on the VMs
            *SolutionsVmPlacementPolicy_enum* If omitted - no VM placement
            policies are configured.
          type: array
          items:
            type: string
        vmNetworks:
          description: |2
            Networks to be configured on the VMs.
            
            If omitted - no VM networks are
            configured.
          type: array
          items:
            $ref: '#/components/schemas/SolutionsVMNetworkMapping'
        datastores:
          description: |2
            Datastores to be configured as a storage of the VMs.
            
            The first
            available datastore in the cluster is used. The collection cannot
            contain duplicate elements.
            
            Refers instances of *Datastore*.
          type: array
          items:
            $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - vmCount
        - datastores
      allOf:
        - $ref: '#/components/schemas/SolutionsTypeSpecificSolutionConfig'

    ArrayOfSolutionsClusterBoundSolutionConfig:
      type: object
      description: |2
        A boxed array of *SolutionsClusterBoundSolutionConfig*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/SolutionsClusterBoundSolutionConfig'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    SolutionsClusterSolutionComplianceResult:
      type: object
      description: |2
        Result of a compliance check of a desired state for a solution with
        *SolutionsClusterBoundSolutionConfig*.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        solution:
          description: |2
            The solution being checked for compliance.
          type: string
        compliant:
          description: |2
            `True` if the solution is compliant with the described desired
            state, `False` - otherwise.
          type: boolean
        deploymentUnits:
          description: |2
            Detailed per deployment-unit compliance result.
          type: array
          items:
            $ref: '#/components/schemas/SolutionsDeploymentUnitComplianceResult'
      required:
        - solution
        - compliant
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfSolutionsClusterSolutionComplianceResult:
      type: object
      description: |2
        A boxed array of *SolutionsClusterSolutionComplianceResult*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/SolutionsClusterSolutionComplianceResult'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    SolutionsComplianceResult:
      type: object
      description: |2
        Result of a compliance check of a desired state on a compute resource.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        compliant:
          description: |2
            `True` if the compute resource is compliant with the described
            desired state, `False` - otherwise.
          type: boolean
        hosts:
          description: |2
            Detailed per-host compliance result of the compute resource for
            solutions with *SolutionsHostBoundSolutionConfig*.
          type: array
          items:
            $ref: '#/components/schemas/SolutionsHostComplianceResult'
        clusterSolutionsCompliance:
          description: |2
            Detailed per-solution unit compliance result of the compute resource
            for solutions with *SolutionsClusterBoundSolutionConfig*.
          type: array
          items:
            $ref: '#/components/schemas/SolutionsClusterSolutionComplianceResult'
      required:
        - compliant
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfSolutionsComplianceResult:
      type: object
      description: |2
        A boxed array of *SolutionsComplianceResult*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/SolutionsComplianceResult'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    SolutionsComplianceSpec:
      type: object
      description: |2
        Specification describing how to calculate compliance of a compute resource
        against a desired state.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        desiredState:
          description: |2
            Desired state to be checked for compliance.
            
            May be incomplete if exact
            solutions to be checked are provided. Empty desired state means all
            present solutions must be removed.
          type: array
          items:
            $ref: '#/components/schemas/SolutionsSolutionConfig'
        solutions:
          description: |2
            Specifies exact solutions to be checked for compliance instead of the
            complete desired state.
          type: array
          items:
            type: string
        hosts:
          description: |2
            Specifies exact hosts to be checked for compliance of all solutions
            with *SolutionsHostBoundSolutionConfig*.
            
            If omitted - the compliance is checked for all hosts in the cluster.
            
            Refers instances of *HostSystem*.
          type: array
          items:
            $ref: '#/components/schemas/ManagedObjectReference'
        deploymentUnits:
          description: |2
            Identifiers of the deployment units that to be checked for compliance
            of all solutions with *SolutionsClusterBoundSolutionConfig*.
            
            The deployment unit represents a single VM instance deployment.
            
            If omitted - the compliance is checked for all deployment units in the
            cluster.
          type: array
          items:
            type: string
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfSolutionsComplianceSpec:
      type: object
      description: |2
        A boxed array of *SolutionsComplianceSpec*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/SolutionsComplianceSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    SolutionsDeploymentUnitComplianceResult:
      type: object
      description: |2
        Result of a compliance check of a deployment unit.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        deploymentUnit:
          description: |2
            The deployment unit being checked for compliance.
          type: string
        compliant:
          description: |2
            `True` if the deployment unit is compliant with the described
            desired state, `False` - otherwise.
          type: boolean
        compliance:
          description: |2
            Detailed compliance result of the deployment unit.
          $ref: '#/components/schemas/SolutionsSolutionComplianceResult'
      required:
        - deploymentUnit
        - compliant
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfSolutionsDeploymentUnitComplianceResult:
      type: object
      description: |2
        A boxed array of *SolutionsDeploymentUnitComplianceResult*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/SolutionsDeploymentUnitComplianceResult'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    SolutionsHookAcknowledgeConfig:
      type: object
      description: |2
        Specifies the acknowledgement type of a configured System Virtual
        Machine's lifecycle hook.
        
        This structure may be used only with operations rendered under `/eam`.
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfSolutionsHookAcknowledgeConfig:
      type: object
      description: |2
        A boxed array of *SolutionsHookAcknowledgeConfig*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/SolutionsHookAcknowledgeConfig'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    SolutionsHookConfig:
      type: object
      description: |2
        Configuration for System Virtual Machine's lifecycle hooks.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        type:
          description: |2
            Type of the configured hook, possible values - *HooksHookType_enum*.
          type: string
        acknowledgement:
          description: |2
            Type of acknoledgement of the configured hook.
          $ref: '#/components/schemas/SolutionsHookAcknowledgeConfig'
      required:
        - type
        - acknowledgement
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfSolutionsHookConfig:
      type: object
      description: |2
        A boxed array of *SolutionsHookConfig*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/SolutionsHookConfig'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    SolutionsHostBoundSolutionConfig:
      type: object
      description: |2
        Specifies host-bound solution configuration.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        preferHostConfiguration:
          description: |2
            If set to true - default network and datastore configured on host will
            take precedence over
            *SolutionsHostBoundSolutionConfig.datastores* and
            *SolutionsHostBoundSolutionConfig.networks*.
          type: boolean
        networks:
          description: |2
            networks to satisfy system Virtual Machine network adapter
            requirements.
            
            If omitted - default configured network on the host will
            be used.
            
            Refers instances of *Network*.
          type: array
          items:
            $ref: '#/components/schemas/ManagedObjectReference'
        datastores:
          description: |2
            Datastores to be configured as a storage of the VMs.
            
            The first
            available datastore on the host is used. The collection cannot contain
            duplicate elements. If omitted - default configured datastore on the
            host will be used.
            
            Refers instances of *Datastore*.
          type: array
          items:
            $ref: '#/components/schemas/ManagedObjectReference'
        vmci:
          description: |2
            VMCI to be allowed access from the system Virtual Machine.
          type: array
          items:
            type: string
      allOf:
        - $ref: '#/components/schemas/SolutionsTypeSpecificSolutionConfig'

    ArrayOfSolutionsHostBoundSolutionConfig:
      type: object
      description: |2
        A boxed array of *SolutionsHostBoundSolutionConfig*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/SolutionsHostBoundSolutionConfig'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    SolutionsHostComplianceResult:
      type: object
      description: |2
        Result of a compliance check of a desired state on a host.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        host:
          description: |2
            The host being checked for compliance.
            
            Refers instance of *HostSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
        compliant:
          description: |2
            `True` if the compute host is compliant with the described
            desired state, `False` - otherwise.
          type: boolean
        solutions:
          description: |2
            Detailed per-solution compliance result of the host.
          type: array
          items:
            $ref: '#/components/schemas/SolutionsSolutionComplianceResult'
      required:
        - host
        - compliant
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfSolutionsHostComplianceResult:
      type: object
      description: |2
        A boxed array of *SolutionsHostComplianceResult*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/SolutionsHostComplianceResult'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    SolutionsInteractiveHookAcknowledgeConfig:
      type: object
      description: |2
        The user will have to (manually) invoke an API
        (*Hooks.MarkAsProcessed*) to acknowledge, the user operations for
        this lifecycle hook have been completed.
        
        This structure may be used only with operations rendered under `/eam`.
      allOf:
        - $ref: '#/components/schemas/SolutionsHookAcknowledgeConfig'

    ArrayOfSolutionsInteractiveHookAcknowledgeConfig:
      type: object
      description: |2
        A boxed array of *SolutionsInteractiveHookAcknowledgeConfig*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/SolutionsInteractiveHookAcknowledgeConfig'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    SolutionsOvfProperty:
      type: object
      description: |2
        One OVF Property.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        key:
          description: |2
            The name of the property in the OVF descriptor.
          type: string
        value:
          description: |2
            The value of the property.
          type: string
      required:
        - key
        - value
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfSolutionsOvfProperty:
      type: object
      description: |2
        A boxed array of *SolutionsOvfProperty*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/SolutionsOvfProperty'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    SolutionsProfileIdStoragePolicy:
      type: object
      description: |2
        Specifies a user defined profile ID to be applied during Virtual Machine
        creation.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        profileId:
          description: |2
            ID of a storage policy profile created by the user.
            
            The type of the
            profile must be *VirtualMachineDefinedProfileSpec*. The ID must be valid
            *VirtualMachineDefinedProfileSpec.profileId*.
          type: string
      required:
        - profileId
      allOf:
        - $ref: '#/components/schemas/SolutionsStoragePolicy'

    ArrayOfSolutionsProfileIdStoragePolicy:
      type: object
      description: |2
        A boxed array of *SolutionsProfileIdStoragePolicy*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/SolutionsProfileIdStoragePolicy'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    SolutionsSolutionComplianceResult:
      type: object
      description: |2
        Result of a compliance check of a desired state dor a solution(on a host).
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        solution:
          description: |2
            Solution checked for compliance.
          type: string
        compliant:
          description: |2
            `True` if the compute solution is compliant with the described
            desired state, `False` - otherwise.
          type: boolean
        nonComplianceReason:
          description: |2
            Reason the solution is non-compliant
            *SolutionsNonComplianceReason_enum*.
          type: string
        vm:
          description: |2
            system Virtual Machine created for the solution.
            
            Refers instance of *VirtualMachine*.
          $ref: '#/components/schemas/ManagedObjectReference'
        upgradingVm:
          description: |2
            system Virtual Machine created for upgrading the obsoleted system
            Virtual Machine.
            
            Refers instance of *VirtualMachine*.
          $ref: '#/components/schemas/ManagedObjectReference'
        hook:
          description: |2
            Hook, ESX Agent Manager is awaiting to be processed for this solution.
          $ref: '#/components/schemas/HooksHookInfo'
        issues:
          description: |2
            Issues, ESX Agent Manager has encountered while attempting to acheive
            the solution's requested desired state.
          type: array
          items:
            $ref: '#/components/schemas/Issue'
        solutionConfig:
          description: |2
            Last desired state for the solution, requested from ESX Agent Manager,
            for application.
          $ref: '#/components/schemas/SolutionsSolutionConfig'
      required:
        - solution
        - compliant
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfSolutionsSolutionComplianceResult:
      type: object
      description: |2
        A boxed array of *SolutionsSolutionComplianceResult*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/SolutionsSolutionComplianceResult'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    SolutionsSolutionConfig:
      type: object
      description: |2
        Configuration for a solution's required system Virtual Machine.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        solution:
          description: |2
            Solution, this configuration belongs to.
          type: string
        name:
          description: |2
            Name of the solution.
            
            Will be utilized as a prefix for the system
            Virtual Machines' names created for the solution.
          type: string
        version:
          description: |2
            Version of the solution.
          type: string
        vmSource:
          description: |2
            Source of the system Virtual Machine files.
          $ref: '#/components/schemas/SolutionsVMSource'
        uuidVmName:
          description: |2
            If set to `True` - will insert an UUID in the system Virtual
            Machines' names created for the solution, otherwise - no additional
            UUID will be inserted in the system Virtual Machines' names.
          type: boolean
        resourcePool:
          description: |2
            Resource pool to place the system Virtual Machine in.
            
            If omitted a
            default resource pool will be used.
            
            Refers instance of *ResourcePool*.
          $ref: '#/components/schemas/ManagedObjectReference'
        folder:
          description: |2
            Folder to place the system Virtual Machine in.
            
            If omitted a default
            folder will be used.
            
            Refers instance of *Folder*.
          $ref: '#/components/schemas/ManagedObjectReference'
        ovfProperties:
          description: |2
            User configurable OVF properties to be assigned during system Virtual
            Machine creation.
          type: array
          items:
            $ref: '#/components/schemas/SolutionsOvfProperty'
        storagePolicies:
          description: |2
            Storage policies to be applied during system Virtual Machine creation.
          type: array
          items:
            $ref: '#/components/schemas/SolutionsStoragePolicy'
        vmDiskProvisioning:
          description: |2
            Provisioning type for the system Virtual Machines
            *SolutionsVMDiskProvisioning_enum*.
            
            Default provisioning will be used
            if not specified.
          type: string
        vmDeploymentOptimization:
          description: |2
            Optimization strategy for deploying Virtual Machines
            *SolutionsVMDeploymentOptimization_enum*.
            
            Default optimization will
            be selected if not specified.
          type: string
        typeSpecificConfig:
          description: |2
            Solution type-specific configuration.
          $ref: '#/components/schemas/SolutionsTypeSpecificSolutionConfig'
        hooks:
          description: |2
            Lifecycle hooks for the solution's virtual machines.
          type: array
          items:
            $ref: '#/components/schemas/SolutionsHookConfig'
        vmResourceSpec:
          description: |2
            VMs resource configuration.
            
            If omitted - the default resource
            configuration specified in the OVF descriptor is used.
          $ref: '#/components/schemas/SolutionsVmResourceSpec'
      required:
        - solution
        - name
        - version
        - vmSource
        - uuidVmName
        - typeSpecificConfig
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfSolutionsSolutionConfig:
      type: object
      description: |2
        A boxed array of *SolutionsSolutionConfig*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/SolutionsSolutionConfig'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    SolutionsSolutionValidationResult:
      type: object
      description: |2
        Result of validation, of a solution, for application.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        solution:
          description: |2
            Validated solution.
          type: string
        valid:
          description: |2
            `True` - if the solution is valid for application, `False`
            \- otherwise.
          type: boolean
        invalidReason:
          description: |2
            Populated with the reason the solution is not valid for application
            *SolutionsInvalidReason_enum*.
          type: string
      required:
        - solution
        - valid
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfSolutionsSolutionValidationResult:
      type: object
      description: |2
        A boxed array of *SolutionsSolutionValidationResult*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/SolutionsSolutionValidationResult'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    SolutionsStoragePolicy:
      type: object
      description: |2
        Storage policy to be applied during system Virtual Machine creation.
        
        This structure may be used only with operations rendered under `/eam`.
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfSolutionsStoragePolicy:
      type: object
      description: |2
        A boxed array of *SolutionsStoragePolicy*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/SolutionsStoragePolicy'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    SolutionsTransitionSpec:
      type: object
      description: |2
        Specification necessary to transition a solution from an existing legacy
        agency.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        solution:
          description: |2
            Solution to transition from an old legacy agency.
          type: string
        agencyId:
          description: |2
            Old legacy agency ID to transition from.
          type: string
      required:
        - solution
        - agencyId
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfSolutionsTransitionSpec:
      type: object
      description: |2
        A boxed array of *SolutionsTransitionSpec*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/SolutionsTransitionSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    SolutionsTypeSpecificSolutionConfig:
      type: object
      description: |2
        Specifies the specific solution configuration based on its type.
        
        This structure may be used only with operations rendered under `/eam`.
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfSolutionsTypeSpecificSolutionConfig:
      type: object
      description: |2
        A boxed array of *SolutionsTypeSpecificSolutionConfig*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/SolutionsTypeSpecificSolutionConfig'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    SolutionsUrlVMSource:
      type: object
      description: |2
        Specified the system Virtual Machine sources are to be obtained from an
        URL.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        ovfUrl:
          description: |2
            URL to the solution's system Virtual Machine OVF.
          type: string
        certificateValidation:
          description: |2
            Overrides the OVF URL certificate validation.
            
            If `True` or
            `<unset>` - the certificate will be subject to standard trust
            validation, if `False` - any certificate will be considered
            trusted.
          type: boolean
        certificatePEM:
          description: |2
            PEM encoded certificate to use to trust the URL.
            
            If omitted - URL will
            be trusted using well known methods.
          type: string
      required:
        - ovfUrl
      allOf:
        - $ref: '#/components/schemas/SolutionsVMSource'

    ArrayOfSolutionsUrlVMSource:
      type: object
      description: |2
        A boxed array of *SolutionsUrlVMSource*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/SolutionsUrlVMSource'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    SolutionsVMNetworkMapping:
      type: object
      description: |2
        Represents the mapping of the logical network defined in the OVF
        descriptor to the Virtual Infrastructure (VI) network.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        name:
          description: |2
            Logical network name defined in the OVF descriptor.
          type: string
        id:
          description: |2
            VM network identifier.
            
            Refers instance of *Network*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - name
        - id
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfSolutionsVMNetworkMapping:
      type: object
      description: |2
        A boxed array of *SolutionsVMNetworkMapping*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/SolutionsVMNetworkMapping'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    SolutionsVMSource:
      type: object
      description: |2
        Specifies how to find the files of the system Virtual Machine to be
        created.
        
        This structure may be used only with operations rendered under `/eam`.
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfSolutionsVMSource:
      type: object
      description: |2
        A boxed array of *SolutionsVMSource*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/SolutionsVMSource'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    SolutionsValidateSpec:
      type: object
      description: |2
        Specification describing a desired state to be validated for application.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        desiredState:
          description: |2
            Desired state to be validated.
          type: array
          items:
            $ref: '#/components/schemas/SolutionsSolutionConfig'
      required:
        - desiredState
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfSolutionsValidateSpec:
      type: object
      description: |2
        A boxed array of *SolutionsValidateSpec*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/SolutionsValidateSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    SolutionsValidationResult:
      type: object
      description: |2
        Result of validation, of a desired state, for application.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        valid:
          description: |2
            `True` - if the desired state is valid for application,
            `False` - otherwise.
          type: boolean
        solutionResult:
          description: |2
            Detailed per-solution result of the validation.
          type: array
          items:
            $ref: '#/components/schemas/SolutionsSolutionValidationResult'
      required:
        - valid
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfSolutionsValidationResult:
      type: object
      description: |2
        A boxed array of *SolutionsValidationResult*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/SolutionsValidationResult'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    SolutionsVmResourceSpec:
      type: object
      description: |2
        Specifies the VM resource configurations.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        ovfDeploymentOption:
          description: |2
            The VM deployment option that corresponds to the Configuration element
            of the DeploymentOptionSection in the OVF descriptor (e.g.
            
            "small",
            "medium", "large").
            If omitted - the default deployment option as specified in the OVF
            descriptor is used.
          type: string
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfSolutionsVmResourceSpec:
      type: object
      description: |2
        A boxed array of *SolutionsVmResourceSpec*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/SolutionsVmResourceSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VibVibInfo:
      type: object
      description: |2
        A data entity providing information about a VIB.
        
        This abstraction contains only those of the VIB attributes which convey
        important information for the client to identify, preview and select VIBs.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        id:
          type: string
        name:
          type: string
        version:
          type: string
        vendor:
          type: string
        summary:
          type: string
        softwareTags:
          $ref: '#/components/schemas/VibVibInfoSoftwareTags'
        releaseDate:
          type: string
          format: date-time
      required:
        - id
        - name
        - version
        - vendor
        - summary
        - releaseDate
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVibVibInfo:
      type: object
      description: |2
        A boxed array of *VibVibInfo*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VibVibInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VibVibInfoSoftwareTags:
      type: object
      description: |2
        A data entity providing information about software tags of a VIB
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        tags:
          type: array
          items:
            type: string
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVibVibInfoSoftwareTags:
      type: object
      description: |2
        A boxed array of *VibVibInfoSoftwareTags*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VibVibInfoSoftwareTags'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VibVibServicesAnyCertificate:
      type: object
      description: |2
        Specifies an SSL policy that trusts any SSL certificate.
        
        This structure may be used only with operations rendered under `/eam`.
        
        ***Since:*** vEAM API 8.2
      allOf:
        - $ref: '#/components/schemas/VibVibServicesSslTrust'

    ArrayOfVibVibServicesAnyCertificate:
      type: object
      description: |2
        A boxed array of *VibVibServicesAnyCertificate*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
        
        ***Since:*** vEAM API 8.2
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VibVibServicesAnyCertificate'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VibVibServicesPinnedPemCertificate:
      type: object
      description: |2
        Specifies an SSL policy that trusts one specific pinned PEM encoded SSL
        certificate.
        
        This structure may be used only with operations rendered under `/eam`.
        
        ***Since:*** vEAM API 8.2
      properties:
        sslCertificate:
          description: |2
            PEM encoded pinned SSL certificate of the server that needs to be
            trusted.
          type: string
      required:
        - sslCertificate
      allOf:
        - $ref: '#/components/schemas/VibVibServicesSslTrust'

    ArrayOfVibVibServicesPinnedPemCertificate:
      type: object
      description: |2
        A boxed array of *VibVibServicesPinnedPemCertificate*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
        
        ***Since:*** vEAM API 8.2
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VibVibServicesPinnedPemCertificate'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VibVibServicesSslTrust:
      type: object
      description: |2
        This structure may be used only with operations rendered under `/eam`.
        
        ***Since:*** vEAM API 8.2
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVibVibServicesSslTrust:
      type: object
      description: |2
        A boxed array of *VibVibServicesSslTrust*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/eam`.
        
        ***Since:*** vEAM API 8.2
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VibVibServicesSslTrust'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PbmAboutInfo:
      type: object
      description: |2
        The *PbmAboutInfo* data object stores identifying data
        about the Storage Policy Server.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        name:
          description: |2
            Name of the server.
          type: string
        version:
          description: |2
            Version number.
          type: string
        instanceUuid:
          description: |2
            Globally unique identifier associated with this server instance.
          type: string
      required:
        - name
        - version
        - instanceUuid
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfPbmAboutInfo:
      type: object
      description: |2
        A boxed array of *PbmAboutInfo*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PbmAboutInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PbmExtendedElementDescription:
      type: object
      description: |2
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        label:
          description: |2
            Display label.
          type: string
        summary:
          description: |2
            Summary description.
          type: string
        key:
          description: |2
            Enumeration or literal ID being described.
          type: string
        messageCatalogKeyPrefix:
          description: |2
            Key to the localized message string in the catalog.
            
            If the localized string contains parameters, values to the
            parameters will be provided in #messageArg.
            E.g: If the message in the catalog is
            "IP address is {address}", value for "address"
            will be provided by #messageArg.
            Both summary and label in ElementDescription will have a corresponding
            entry in the message catalog with the keys
            &lt;messageCatalogKeyPrefix&gt;.summary and &lt;messageCatalogKeyPrefix&gt;.label
            respectively.
            ElementDescription.summary and ElementDescription.label will contain
            the strings in server locale.
          type: string
        messageArg:
          description: |2
            Provides named arguments that can be used to localize the
            message in the catalog.
          type: array
          items:
            $ref: '#/components/schemas/KeyAnyValue'
      required:
        - label
        - summary
        - key
        - messageCatalogKeyPrefix
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfPbmExtendedElementDescription:
      type: object
      description: |2
        A boxed array of *PbmExtendedElementDescription*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PbmExtendedElementDescription'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PbmLoggingConfiguration:
      type: object
      description: |2
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        component:
          type: string
        logLevel:
          type: string
      required:
        - component
        - logLevel
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfPbmLoggingConfiguration:
      type: object
      description: |2
        A boxed array of *PbmLoggingConfiguration*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PbmLoggingConfiguration'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PbmServerObjectRef:
      type: object
      description: |2
        The *PbmServerObjectRef* data object identifies
        a virtual machine,
        virtual disk attached to a virtual machine,
        a first class storage object
        or a datastore.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        objectType:
          description: |2
            Type of vSphere Server object.
            
            The value of the <code>objectType</code> string
            corresponds to one of the *PbmObjectType_enum*
            enumerated type values.
          type: string
        key:
          description: |2
            Unique identifier for the object.
            
            The value of <code>key</code> depends
            on the <code>objectType</code>.
              
              
            <table border="1"cellpadding="5">
            <tr><td>**PbmObjectType**</td><td>**key value**</td></tr>
            <tr><td>virtualMachine</td><td>_virtual-machine-MOR_</td></tr>
            <tr><td>virtualDiskId</td>
            <td>_virtual-disk-MOR_:_VirtualDisk.key_</td></tr>
            <tr><td>datastore</td><td>_datastore-MOR_</td></tr>
            <tr><td colspan="2"align="right">MOR = ManagedObjectReference</td></tr>
            </table>
          type: string
        serverUuid:
          description: |2
            vCenter Server UUID; the <code>ServiceContent.about.instanceUuid</code>
            property in the vSphere API.
          type: string
      required:
        - objectType
        - key
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfPbmServerObjectRef:
      type: object
      description: |2
        A boxed array of *PbmServerObjectRef*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PbmServerObjectRef'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PbmServiceInstanceContent:
      type: object
      description: |2
        The *PbmServiceInstanceContent* data object defines properties for the
        *PbmServiceInstance* managed object.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        aboutInfo:
          description: |2
            Contains information that identifies the Storage Policy service.
          $ref: '#/components/schemas/PbmAboutInfo'
        sessionManager:
          description: |2
            For internal use.
            
            Refers instance of *PbmSessionManager*.
          $ref: '#/components/schemas/ManagedObjectReference'
        capabilityMetadataManager:
          description: |2
            For internal use.
            
            Refers instance of *PbmCapabilityMetadataManager*.
          $ref: '#/components/schemas/ManagedObjectReference'
        profileManager:
          description: |2
            Provides access to the Storage Policy ProfileManager.
            
            Refers instance of *PbmProfileProfileManager*.
          $ref: '#/components/schemas/ManagedObjectReference'
        complianceManager:
          description: |2
            Provides access to the Storage Policy ComplianceManager.
            
            Refers instance of *PbmComplianceManager*.
          $ref: '#/components/schemas/ManagedObjectReference'
        placementSolver:
          description: |2
            Provides access to the Storage Policy PlacementSolver.
            
            Refers instance of *PbmPlacementSolver*.
          $ref: '#/components/schemas/ManagedObjectReference'
        replicationManager:
          description: |2
            Provides access to the Storage Policy ReplicationManager.
            
            Refers instance of *PbmReplicationManager*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - aboutInfo
        - sessionManager
        - capabilityMetadataManager
        - profileManager
        - complianceManager
        - placementSolver
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfPbmServiceInstanceContent:
      type: object
      description: |2
        A boxed array of *PbmServiceInstanceContent*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PbmServiceInstanceContent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PbmCapabilityInstance:
      type: object
      description: |2
        The *PbmCapabilityInstance* data object defines a storage capability instance.
        
        Metadata for the capability is described in *PbmCapabilityMetadata*.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        id:
          description: |2
            Identifier for the capability.
            
            The identifier value corresponds to
            *PbmCapabilityMetadata*.*PbmCapabilityMetadata.id*.
          $ref: '#/components/schemas/PbmCapabilityMetadataUniqueId'
        constraint:
          description: |2
            Constraints on the properties that comprise this capability.
            
            Each entry represents a constraint on one or more of the properties that
            constitute this capability. A datum must meet one of the
            constraints to be compliant.
          type: array
          items:
            $ref: '#/components/schemas/PbmCapabilityConstraintInstance'
      required:
        - id
        - constraint
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfPbmCapabilityInstance:
      type: object
      description: |2
        A boxed array of *PbmCapabilityInstance*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PbmCapabilityInstance'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PbmCapabilityMetadata:
      type: object
      description: |2
        Metadata for a single unique setting defined by a provider.
        
        A simple setting is a setting with one property.
        A complex setting contains more than one property.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        id:
          description: |2
            Unique identifier for the capability.
          $ref: '#/components/schemas/PbmCapabilityMetadataUniqueId'
        summary:
          description: |2
            Capability name and description
          $ref: '#/components/schemas/PbmExtendedElementDescription'
        mandatory:
          description: |2
            Indicates whether incorporating given capability is mandatory during creation of
            profile.
          type: boolean
        hint:
          description: |2
            The flag hint dictates the interpretation of constraints specified for this capability
            in a storage policy profile.
            
            If hint is false, then constraints will affect placement.
            If hint is true, constraints will not affect placement,
            but will still be passed to provisioning operations if the provider understands the
            relevant namespace. Optional property, false if not set.
          type: boolean
        keyId:
          description: |2
            Property Id of the key property, if this capability represents a key
            value pair.
            
            Value is empty string if not set.
          type: string
        allowMultipleConstraints:
          description: |2
            Flag to indicate if multiple constraints are allowed in the capability
            instance.
            
            False if not set.
          type: boolean
        propertyMetadata:
          description: |2
            Metadata for the properties that comprise this capability.
          type: array
          items:
            $ref: '#/components/schemas/PbmCapabilityPropertyMetadata'
      required:
        - id
        - summary
        - propertyMetadata
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfPbmCapabilityMetadata:
      type: object
      description: |2
        A boxed array of *PbmCapabilityMetadata*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PbmCapabilityMetadata'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PbmCapabilityMetadataUniqueId:
      type: object
      description: |2
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        namespace:
          description: |2
            Namespace to which this capability belongs.
            
            Must be the same as
            { @link CapabilityObjectSchema#namespace } defined for this
            capability
          type: string
        id:
          description: |2
            unique identifier for this capability within given namespace
          type: string
      required:
        - namespace
        - id
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfPbmCapabilityMetadataUniqueId:
      type: object
      description: |2
        A boxed array of *PbmCapabilityMetadataUniqueId*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PbmCapabilityMetadataUniqueId'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PbmCapabilityConstraintInstance:
      type: object
      description: |2
        Constraints on the properties for a single occurrence of a capability.
        
        All properties must satisfy their respective constraints to be compliant.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        propertyInstance:
          description: |2
            Property instance array for this constraint
          type: array
          items:
            $ref: '#/components/schemas/PbmCapabilityPropertyInstance'
      required:
        - propertyInstance
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfPbmCapabilityConstraintInstance:
      type: object
      description: |2
        A boxed array of *PbmCapabilityConstraintInstance*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PbmCapabilityConstraintInstance'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PbmCapabilityGenericTypeInfo:
      type: object
      description: |2
        Generic type definition for capabilities.
        
        Indicates how a collection of values of a specific datatype
        (*PbmCapabilityTypeInfo.typeName*)
        will be interpreted.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        genericTypeName:
          description: |2
            Name of the generic type.
            
            Must correspond to one of the values defined in
            *PbmBuiltinGenericType_enum*.
          type: string
      required:
        - genericTypeName
      allOf:
        - $ref: '#/components/schemas/PbmCapabilityTypeInfo'

    ArrayOfPbmCapabilityGenericTypeInfo:
      type: object
      description: |2
        A boxed array of *PbmCapabilityGenericTypeInfo*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PbmCapabilityGenericTypeInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PbmCapabilityPropertyInstance:
      type: object
      description: |2
        The *PbmCapabilityPropertyInstance* data object describes a virtual machine
        storage requirement.
        
        A storage requirement is based on the storage capability
        described in the *PbmCapabilityPropertyMetadata* and in the
        datastore profile property instance.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        id:
          description: |2
            Requirement property identifier.
            
            This identifier corresponds to the
            storage capability metadata identifier
            (*PbmCapabilityPropertyMetadata*.*PbmCapabilityPropertyMetadata.id*).
          type: string
        operator:
          description: |2
            Operator for the values.
            
            Currently only support NOT operator for
            tag namespace
            See operator definition in (*PbmCapabilityOperator_enum*).
          type: string
        value:
          description: |2
            Property value.
            
            You must specify the value.
            A property value is one value or a collection of values.
            - A single property value is expressed as a scalar value.
            - A collection of values is expressed as a *PbmCapabilityDiscreteSet*
              or a *PbmCapabilityRange* of values.
              
            The datatype of each value must be one of the
            *PbmBuiltinType_enum* datatypes.
            If the property consists of a collection of values,
            the interpretation of those values is determined by the
            *PbmCapabilityGenericTypeInfo*.
            
            Type information for a property instance is described in the property metadata
            (*PbmCapabilityPropertyMetadata*.*PbmCapabilityPropertyMetadata.type*).
          $ref: '#/components/schemas/Any'
      required:
        - id
        - value
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfPbmCapabilityPropertyInstance:
      type: object
      description: |2
        A boxed array of *PbmCapabilityPropertyInstance*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PbmCapabilityPropertyInstance'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PbmCapabilityPropertyMetadata:
      type: object
      description: |2
        The *PbmCapabilityPropertyMetadata* data object describes storage capability.
        
        An instance of property metadata may apply to many property instances
        (*PbmCapabilityPropertyInstance*).
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        id:
          description: |2
            Property identifier.
            
            Should be unique within the definition of the
            capability. Property instances refer to this identifier
            (*PbmCapabilityPropertyInstance*.*PbmCapabilityPropertyInstance.id*).
          type: string
        summary:
          description: |2
            Property name and description.
            - The <code>summary.label</code> property
              (*PbmExtendedElementDescription.label*)
              contains property 'name' in server locale.
            - The <code>summary.summary</code> property
              (*PbmExtendedElementDescription.summary*)
              contains property 'description' in server locale.
            - The <code>summary.messageCatalogKeyPrefix</code> property
              (*PbmExtendedElementDescription.messageCatalogKeyPrefix*)
              contains unique prefix for this property within given message catalog.
              Prefix format: &lt;capability\_unique\_identifier&gt;.&lt;property\_id&gt;
              capability\_unique\_identifier -- string representation of
              *PbmCapabilityMetadataUniqueId* which globally identifies given
              capability metadata definition uniquely.
              property\_id -- 'id' of this property *PbmCapabilityPropertyMetadata.id*
              Eg www.emc.com.storage.Recovery.Recovery\_site
              www.emc.com.storage.Recovery.RPO
              www.emc.com.storage.Recovery.RTO
          $ref: '#/components/schemas/PbmExtendedElementDescription'
        mandatory:
          description: |2
            Indicates whether incorporating given capability is mandatory during creation of
            profile.
          type: boolean
        type:
          description: |2
            Type information for the capability.
            
            The type of a property value
            (*PbmCapabilityPropertyInstance*.*PbmCapabilityPropertyInstance.value*)
            is specified as a builtin datatype and may also specify the interpretation of a
            collection of values of that datatype.
            - *PbmCapabilityPropertyMetadata.type*.*PbmCapabilityTypeInfo.typeName*
              specifies the *PbmBuiltinType_enum*.
            - *PbmCapabilityPropertyMetadata.type*.*PbmCapabilityGenericTypeInfo.genericTypeName*
              indicates how a collection of values of the specified datatype will be interpreted
              (*PbmBuiltinGenericType_enum*).
          $ref: '#/components/schemas/PbmCapabilityTypeInfo'
        defaultValue:
          description: |2
            Default value, if any, that the property will assume when not
            constrained by requirements.
            
            This object must be of the
            *PbmCapabilityPropertyMetadata.type*
            defined for the property.
          $ref: '#/components/schemas/Any'
        allowedValue:
          description: |2
            All legal values that the property may take on, across all
            implementations of the property.
            
            This definition of legal values is not
            determined by any particular resource configuration; rather it is
            inherent to the definition of the property. If undefined, then any value
            of the correct type is legal. This object must be a generic container for
            the *PbmCapabilityPropertyMetadata.type*
            defined for the property;
            see *PbmBuiltinGenericType_enum*
            for the supported generic container types.
          $ref: '#/components/schemas/Any'
        requirementsTypeHint:
          description: |2
            A hint for data-driven systems that assist in authoring requirements
            constraints.
            
            Acceptable values defined by
            *PbmBuiltinGenericType_enum*.
            A property will typically only have constraints of a given type in
            requirement profiles, even if it is likely to use constraints of
            different types across capability profiles. This value, if specified,
            specifies the expected kind of constraint used in requirement profiles.
            Considerations for using this information:
            - This is only a hint; any properly formed constraint
              (see *PbmCapabilityPropertyInstance.value*)
              is still valid for a requirement profile.
            - If VMW\_SET is hinted, then a single value matching the property metadata type is
              also an expected form of constraint, as the latter is an allowed convenience
              for expressing a single-member set.
            - If this hint is not specified, then the authoring system may default to a form of
              constraint determined by its own criteria.
          type: string
      required:
        - id
        - summary
        - mandatory
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfPbmCapabilityPropertyMetadata:
      type: object
      description: |2
        A boxed array of *PbmCapabilityPropertyMetadata*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PbmCapabilityPropertyMetadata'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PbmCapabilityTypeInfo:
      type: object
      description: |2
        The *PbmCapabilityTypeInfo* data object defines the datatype for a requirement
        or capability property.
        
        See *PbmCapabilityPropertyMetadata*.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        typeName:
          description: |2
            Datatype for a property.
            
            Must be one of the types defined
            in *PbmBuiltinType_enum*.
            
            A property value might consist of a collection of values of the specified
            datatype. The interpretation of the collection is determined by the
            generic type (*PbmCapabilityGenericTypeInfo.genericTypeName*).
            The generic type indicates how a collection of values
            of the specified datatype will be interpreted. See the descriptions of the
            *PbmBuiltinType_enum* definitions.
          type: string
      required:
        - typeName
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfPbmCapabilityTypeInfo:
      type: object
      description: |2
        A boxed array of *PbmCapabilityTypeInfo*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PbmCapabilityTypeInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PbmCapabilityMetadataPerCategory:
      type: object
      description: |2
        The *PbmCapabilityMetadataPerCategory*
        data object defines capability metadata for a profile subcategory.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        subCategory:
          description: |2
            Profile subcategory to which the capability metadata belongs.
            
            The subcategory is specified by the storage provider.
          type: string
        capabilityMetadata:
          description: |2
            Capability metadata for this category
          type: array
          items:
            $ref: '#/components/schemas/PbmCapabilityMetadata'
      required:
        - subCategory
        - capabilityMetadata
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfPbmCapabilityMetadataPerCategory:
      type: object
      description: |2
        A boxed array of *PbmCapabilityMetadataPerCategory*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PbmCapabilityMetadataPerCategory'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PbmCapabilitySchema:
      type: object
      description: |2
        Capability Schema information
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        vendorInfo:
          $ref: '#/components/schemas/PbmCapabilitySchemaVendorInfo'
        namespaceInfo:
          $ref: '#/components/schemas/PbmCapabilityNamespaceInfo'
        lineOfService:
          description: |2
            Service type for the schema.
            
            Do not use Category as each service needs to have its own schema version.
            
            If omitted, this schema specifies persistence capabilities.
          $ref: '#/components/schemas/PbmLineOfServiceInfo'
        capabilityMetadataPerCategory:
          description: |2
            Capability metadata organized by category
          type: array
          items:
            $ref: '#/components/schemas/PbmCapabilityMetadataPerCategory'
      required:
        - vendorInfo
        - namespaceInfo
        - capabilityMetadataPerCategory
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfPbmCapabilitySchema:
      type: object
      description: |2
        A boxed array of *PbmCapabilitySchema*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PbmCapabilitySchema'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PbmCapabilityNamespaceInfo:
      type: object
      description: |2
        Name space information for the capability metadata schema.
        
        NOTE: Name spaces are required to be globally unique across resource types.
        A same vendor can register multiple name spaces for same resource type or
        for different resource type, but the schema namespace URL must be unique
        for each of these cases.
        A CapabilityMetadata object is uniquely identified based on the namespace
        it belongs to and it's unique identifier within that namespace.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        version:
          description: |2
            Schema version
          type: string
        namespace:
          description: |2
            Schema namespace.
          type: string
        info:
          $ref: '#/components/schemas/PbmExtendedElementDescription'
      required:
        - version
        - namespace
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfPbmCapabilityNamespaceInfo:
      type: object
      description: |2
        A boxed array of *PbmCapabilityNamespaceInfo*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PbmCapabilityNamespaceInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PbmCapabilitySchemaVendorInfo:
      type: object
      description: |2
        Information about vendor/owner of the capability metadata schema
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        vendorUuid:
          description: |2
            Unique identifier for the vendor who owns the given capability
            schema definition
          type: string
        info:
          description: |2
            Captures name and description information about the vendor/owner of
            the schema.
            - The <code>summary.label</code> property
              (*PbmExtendedElementDescription.label*)
              contains vendor name information in server locale.
            - The <code>summary.summary</code> property
              (*PbmExtendedElementDescription.summary*)
              contains vendor description string in server locale.
            - The <code>summary.messageCatalogKeyPrefix</code> property
              (*PbmExtendedElementDescription.messageCatalogKeyPrefix*)
              contains unique prefix for the vendor information within given message
              catalog.
          $ref: '#/components/schemas/PbmExtendedElementDescription'
      required:
        - vendorUuid
        - info
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfPbmCapabilitySchemaVendorInfo:
      type: object
      description: |2
        A boxed array of *PbmCapabilitySchemaVendorInfo*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PbmCapabilitySchemaVendorInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PbmCapabilityVendorNamespaceInfo:
      type: object
      description: |2
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        vendorInfo:
          $ref: '#/components/schemas/PbmCapabilitySchemaVendorInfo'
        namespaceInfo:
          $ref: '#/components/schemas/PbmCapabilityNamespaceInfo'
      required:
        - vendorInfo
        - namespaceInfo
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfPbmCapabilityVendorNamespaceInfo:
      type: object
      description: |2
        A boxed array of *PbmCapabilityVendorNamespaceInfo*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PbmCapabilityVendorNamespaceInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PbmCapabilityVendorResourceTypeInfo:
      type: object
      description: |2
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        resourceType:
          description: |2
            Resource type for which given vendor has registered given namespace
            along with capability metadata that belongs to the namespace.
            
            Must match one of the values for enum *PbmProfileResourceTypeEnum_enum*
          type: string
        vendorNamespaceInfo:
          description: |2
            List of all vendorInfo &lt;--&gt; namespaceInfo tuples that are registered for
            given resource type
          type: array
          items:
            $ref: '#/components/schemas/PbmCapabilityVendorNamespaceInfo'
      required:
        - resourceType
        - vendorNamespaceInfo
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfPbmCapabilityVendorResourceTypeInfo:
      type: object
      description: |2
        A boxed array of *PbmCapabilityVendorResourceTypeInfo*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PbmCapabilityVendorResourceTypeInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PbmLineOfServiceInfo:
      type: object
      description: |2
        Describes Line of Service of a capability provider.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        lineOfService:
          description: |2
            *PbmLineOfServiceInfoLineOfServiceEnum_enum* - must be one of the values
            for enum *PbmLineOfServiceInfoLineOfServiceEnum_enum*.
          type: string
        name:
          description: |2
            Name of the service - for informational
            purposes only.
          $ref: '#/components/schemas/PbmExtendedElementDescription'
        description:
          description: |2
            Description of the service - for informational
            purposes only.
          $ref: '#/components/schemas/PbmExtendedElementDescription'
      required:
        - lineOfService
        - name
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfPbmLineOfServiceInfo:
      type: object
      description: |2
        A boxed array of *PbmLineOfServiceInfo*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PbmLineOfServiceInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PbmPersistenceBasedDataServiceInfo:
      type: object
      description: |2
        Describes the data services provided by the storage arrays.
        
        In addition to storing bits, some VASA providers may also want to separate
        their capabilities into lines of service to let vSphere manage finer grain
        policies. For example an array may support replication natively, and may
        want vSphere policies to be defined for the replication aspect separately
        and compose them with persistence related policies.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        compatiblePersistenceSchemaNamespace:
          description: |2
            This property should be set with compatible schema namespaces exposed by
            the vendor provider.
            
            If not specified, vSphere assumes all Data Service
            provider schemas are compatible with all persistence provider namespaces
            advertised by the VASA provider.
          type: array
          items:
            type: string
      allOf:
        - $ref: '#/components/schemas/PbmLineOfServiceInfo'

    ArrayOfPbmPersistenceBasedDataServiceInfo:
      type: object
      description: |2
        A boxed array of *PbmPersistenceBasedDataServiceInfo*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PbmPersistenceBasedDataServiceInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PbmVaioDataServiceInfo:
      type: object
      description: |2
        Information about a supported data service provided using
        vSphere APIs for IO Filtering (VAIO) data service provider.
        
        This structure may be used only with operations rendered under `/pbm`.
      allOf:
        - $ref: '#/components/schemas/PbmLineOfServiceInfo'

    ArrayOfPbmVaioDataServiceInfo:
      type: object
      description: |2
        A boxed array of *PbmVaioDataServiceInfo*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PbmVaioDataServiceInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PbmCapabilityDescription:
      type: object
      description: |2
        A property value with description.
        
        It can be repeated under DiscreteSet.
        E.g., set of tags, each with description and tag name.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        description:
          description: |2
            Description of the property value
          $ref: '#/components/schemas/PbmExtendedElementDescription'
        value:
          description: |2
            Values for the set.
            
            must be one of the supported datatypes as
            defined in *PbmBuiltinType_enum*
            Must only contain unique values to comply with the Set semantics
          $ref: '#/components/schemas/Any'
      required:
        - description
        - value
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfPbmCapabilityDescription:
      type: object
      description: |2
        A boxed array of *PbmCapabilityDescription*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PbmCapabilityDescription'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PbmCapabilityDiscreteSet:
      type: object
      description: |2
        The *PbmCapabilityDiscreteSet* data object defines a set of values
        for storage profile property instances (*PbmCapabilityPropertyInstance*).
        
        Use the discrete set type to define a set of values of a supported builtin type
        (*PbmBuiltinType_enum*), for example a set of integers
        (XSD\_INT) or a set of unsigned long values (XSD\_LONG).
        See *PbmBuiltinGenericType_enum*.*VMW_SET*.
        
        A discrete set of values is declared as an array of <code>xsd:anyType</code> values.
        - When you define a property instance for a storage profile requirement
          and pass an array of values to the Server, you must set the array elements
          to values of the appropriate datatype.
        - When you read a discrete set from a property instance for a storage profile
          capability, you must cast the <code>xsd:anyType</code> array element values
          to the appropriate datatype.
          
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        values:
          description: |2
            Array of values for the set.
            
            The values must be one of the supported datatypes
            as defined in *PbmBuiltinType_enum* or *PbmBuiltinGenericType_enum*.
          type: array
          items:
            $ref: '#/components/schemas/Any'
      required:
        - values
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfPbmCapabilityDiscreteSet:
      type: object
      description: |2
        A boxed array of *PbmCapabilityDiscreteSet*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PbmCapabilityDiscreteSet'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PbmCapabilityRange:
      type: object
      description: |2
        The *PbmCapabilityRange* data object defines a range of values for storage property
        instances (*PbmCapabilityPropertyInstance*).
        
        Use the range type to define a range of values of a supported builtin type,
        for example range&lt;int&gt;, range&lt;long&gt;, or range&lt;timespan&gt;.
        You can specify a partial range by omitting one of the properties, min or max.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        min:
          description: |2
            Minimum value of range.
            
            Must be one of the supported
            datatypes as defined in *PbmBuiltinType_enum*.
            Must be the same datatype as min.
          $ref: '#/components/schemas/Any'
        max:
          description: |2
            Maximum value of range.
            
            Must be one of the supported
            datatypes as defined in *PbmBuiltinType_enum*.
            Must be the same datatype as max.
          $ref: '#/components/schemas/Any'
      required:
        - min
        - max
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfPbmCapabilityRange:
      type: object
      description: |2
        A boxed array of *PbmCapabilityRange*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PbmCapabilityRange'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PbmCapabilityTimeSpan:
      type: object
      description: |2
        The *PbmCapabilityTimeSpan* data object defines a time value and time unit,
        for example 10 hours or 5 minutes.
        
        See
        *PbmBuiltinType_enum*.*VMW_TIMESPAN*.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        value:
          description: |2
            Time value.
            
            Must be a positive integer.
          type: integer
          format: int32
        unit:
          description: |2
            Unit value for time.
            
            The string value must correspond
            to one of the *PbmCapabilityTimeUnitType_enum* values.
          type: string
      required:
        - value
        - unit
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfPbmCapabilityTimeSpan:
      type: object
      description: |2
        A boxed array of *PbmCapabilityTimeSpan*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PbmCapabilityTimeSpan'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PbmComplianceResult:
      type: object
      description: |2
        The *PbmComplianceResult* data object describes the results of profile compliance
        checking for a virtual machine or virtual disk.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        checkTime:
          description: |2
            Time when the compliance was checked.
          type: string
          format: date-time
        entity:
          description: |2
            Virtual machine or virtual disk for which compliance was checked.
          $ref: '#/components/schemas/PbmServerObjectRef'
        profile:
          description: |2
            Requirement profile with which the compliance was checked.
          $ref: '#/components/schemas/PbmProfileId'
        complianceTaskStatus:
          description: |2
            Status of the current running compliance operation.
            
            If there is no
            compliance check operation triggered, this indicates the last compliance
            task status. <code>complianceTaskStatus</code> is a string value that
            corresponds to one of the
            *PbmComplianceResultComplianceTaskStatus_enum* values.
          type: string
        complianceStatus:
          description: |2
            Status of the compliance operation.
            
            <code>complianceStatus</code> is a
            string value that corresponds to one of the
            *PbmComplianceStatus_enum* values.
            
            When you perform compliance checking on an entity whose associated profile
            contains more than one subprofile (
            *PbmCapabilityProfile* .
            *PbmCapabilityProfile.constraints*), a compliant
            result for any one of the subprofiles will produce a compliant result
            for the operation.
          type: string
        mismatch:
          deprecated: true
          description: |2
            Deprecated as of vSphere 2016, use
            *PbmComplianceStatus_enum* to
            know if a mismatch has occurred. If
            *PbmComplianceResult.complianceStatus* value
            is outOfDate, mismatch has occurred.
            
            Set to true if there is a profile version mismatch between the Storage
            Profile Server and the storage provider.
            
            If you receive a result that
            indicates a mismatch, you must use the vSphere API to update the profile
            associated with the virtual machine or virtual disk.
          type: boolean
        violatedPolicies:
          description: |2
            Values for capabilities that are known to be non-compliant with the specified constraints.
          type: array
          items:
            $ref: '#/components/schemas/PbmCompliancePolicyStatus'
        errorCause:
          description: |2
            This property is set if the compliance task fails with errors.
            
            There can be
            more than one error since a policy containing multiple blobs can return
            multiple failures, one for each blob.
          type: array
          items:
            $ref: '#/components/schemas/MethodFault'
        operationalStatus:
          description: |2
            Additional information on the effects of backend resources and
            operations on the storage object.
          $ref: '#/components/schemas/PbmComplianceOperationalStatus'
        info:
          description: |2
            Informational localized messages provided by the VASA provider in
            addition to the <code>violatedPolicy</code>.
          $ref: '#/components/schemas/PbmExtendedElementDescription'
      required:
        - checkTime
        - entity
        - complianceStatus
        - mismatch
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfPbmComplianceResult:
      type: object
      description: |2
        A boxed array of *PbmComplianceResult*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PbmComplianceResult'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PbmFetchEntityHealthStatusSpec:
      type: object
      description: |2
        The *PbmFetchEntityHealthStatusSpec* data object contains
        the arguments required for
        *PbmComplianceManager.PbmFetchEntityHealthStatusExt*.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        objectRef:
          description: |2
            *PbmServerObjectRef* for which the healthStatus is required
          $ref: '#/components/schemas/PbmServerObjectRef'
        backingId:
          description: |2
            BackingId for the ServerObjectRef
            BackingId is mandatory for FCD on vSAN
          type: string
      required:
        - objectRef
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfPbmFetchEntityHealthStatusSpec:
      type: object
      description: |2
        A boxed array of *PbmFetchEntityHealthStatusSpec*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PbmFetchEntityHealthStatusSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PbmComplianceOperationalStatus:
      type: object
      description: |2
        Additional information on the effects of backend resources and
        operations on the storage object.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        healthy:
          description: |2
            Whether the object is currently affected by the failure of backend
            storage resources.
            
            Optional property.
          type: boolean
        operationETA:
          description: |2
            Estimated completion time of a backend operation affecting the object.
            
            If set, then "transitional" will be true.
            Optional property.
          type: string
          format: date-time
        operationProgress:
          description: |2
            Percent progress of a backend operation affecting the object.
            
            If set, then "transitional" will be true.
            Optional property.
          type: integer
          format: int64
        transitional:
          description: |2
            Whether an object is undergoing a backend operation that may affect
            its performance.
            
            This may be a rebalancing the resources of a healthy
            object or recovery tasks for an unhealthy object.
            Optional property.
          type: boolean
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfPbmComplianceOperationalStatus:
      type: object
      description: |2
        A boxed array of *PbmComplianceOperationalStatus*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PbmComplianceOperationalStatus'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PbmCompliancePolicyStatus:
      type: object
      description: |2
        The *PbmCompliancePolicyStatus* data object provides information
        when compliance checking produces non-compliant results.
        
        See
        *PbmComplianceResult*.*PbmComplianceResult.violatedPolicies*.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        expectedValue:
          description: |2
            Expected storage capability values of profile policies defined
            by a storage provider.
          $ref: '#/components/schemas/PbmCapabilityInstance'
        currentValue:
          description: |2
            Current storage requirement values of the profile policies
            specified for the virtual machine or virtual disk.
          $ref: '#/components/schemas/PbmCapabilityInstance'
      required:
        - expectedValue
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfPbmCompliancePolicyStatus:
      type: object
      description: |2
        A boxed array of *PbmCompliancePolicyStatus*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PbmCompliancePolicyStatus'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PbmRollupComplianceResult:
      type: object
      description: |2
        The *PbmRollupComplianceResult* data object identifies the virtual machine
        for which rollup compliance was checked, and it contains the overall status
        and a list of compliance result objects.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        oldestCheckTime:
          description: |2
            Indicates the earliest time that compliance was checked for any
            of the entities in the rollup compliance check.
            
            The compliance
            check time for a single entity is represented in the
            *PbmComplianceResult*.*PbmComplianceResult.checkTime*
            property. If the *PbmComplianceResult.checkTime*
            property is unset for any of the objects in the <code>results</code>
            array, the <code>oldestCheckTime</code> property will be unset.
          type: string
          format: date-time
        entity:
          description: |2
            Virtual machine for which the rollup compliance was checked.
          $ref: '#/components/schemas/PbmServerObjectRef'
        overallComplianceStatus:
          description: |2
            Overall compliance status of the virtual machine and its virtual disks.
            
            <code>overallComplianceStatus</code> is a string value that
            corresponds to one of the
            *PbmComplianceResult*.*PbmComplianceResult.complianceStatus*
            values.
            
            The overall compliance status is determined by the following rules, applied in the order
            listed:
            - If all the entities are <code>compliant</code>, the overall status is
              <code>compliant</code>.
            - Else if any entity's status is <code>outOfDate</code>, the overall status is
              <code>outOfDate</code>.
            - Else if any entity's status is <code>nonCompliant</code>, the overall status is
              <code>nonCompliant</code>.
            - Else if any entity's status is <code>unknown</code>, the overall status is
              <code>unknown</code>.
            - Else if any entity's status is <code>notApplicable</code>, the overall status is
              <code>notApplicable</code>.
          type: string
        overallComplianceTaskStatus:
          description: |2
            Overall compliance task status of the virtual machine and its virtual
            disks.
            
            <code>overallComplianceTaskStatus</code> is a string value that
            corresponds to one of the *PbmComplianceResult*.
            *PbmComplianceResult.complianceTaskStatus* values.
          type: string
        result:
          description: |2
            Individual compliance results that make up the rollup.
          type: array
          items:
            $ref: '#/components/schemas/PbmComplianceResult'
        errorCause:
          description: |2
            This property is set if the overall compliance task fails with some error.
            
            This
            property indicates the causes of error. If there are multiple failures, it stores
            these failure in this array.
          type: array
          items:
            $ref: '#/components/schemas/MethodFault'
        profileMismatch:
          deprecated: true
          description: |2
            Deprecated as of vSphere 2016, use
            *PbmRollupComplianceResult.overallComplianceStatus*
            to know if profile mismatch has occurred. If
            overallComplianceStatus value is outOfDate, it means
            profileMismatch has occurred.
            
            True if and only if *PbmComplianceResult*.
            
            *PbmComplianceResult.mismatch* is true for at least one
            entity in the rollup compliance check.
          type: boolean
      required:
        - oldestCheckTime
        - entity
        - overallComplianceStatus
        - profileMismatch
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfPbmRollupComplianceResult:
      type: object
      description: |2
        A boxed array of *PbmRollupComplianceResult*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PbmRollupComplianceResult'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PbmAlreadyExists:
      type: object
      description: |2
        An AlreadyExists fault is thrown when an attempt is made to add an element to
        a collection, if the element's key, name, or identifier already exists in
        that collection.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        name:
          type: string
      allOf:
        - $ref: '#/components/schemas/PbmFault'

    ArrayOfPbmAlreadyExists:
      type: object
      description: |2
        A boxed array of *PbmAlreadyExists*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PbmAlreadyExists'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PbmCapabilityProfilePropertyMismatchFault:
      type: object
      description: |2
        Fault used when a datastore doesnt match the capability profile property instance in requirements profile.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        resourcePropertyInstance:
          description: |2
            The property instance in the resource profile that does not match.
          $ref: '#/components/schemas/PbmCapabilityPropertyInstance'
      required:
        - resourcePropertyInstance
      allOf:
        - $ref: '#/components/schemas/PbmPropertyMismatchFault'

    ArrayOfPbmCapabilityProfilePropertyMismatchFault:
      type: object
      description: |2
        A boxed array of *PbmCapabilityProfilePropertyMismatchFault*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PbmCapabilityProfilePropertyMismatchFault'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PbmCompatibilityCheckFault:
      type: object
      description: |2
        Super class for all compatibility check faults.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        hub:
          description: |2
            Placement Hub
          $ref: '#/components/schemas/PbmPlacementHub'
      required:
        - hub
      allOf:
        - $ref: '#/components/schemas/PbmFault'

    ArrayOfPbmCompatibilityCheckFault:
      type: object
      description: |2
        A boxed array of *PbmCompatibilityCheckFault*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PbmCompatibilityCheckFault'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PbmDefaultProfileAppliesFault:
      type: object
      description: |2
        Warning fault used to indicate that the vendor specific datastore matches the tag in the
        requirements profile that does not have a vendor specific rule set.
        
        In such case,
        an empty blob is sent to the vendor specific datastore and the default profile would apply.
        
        This structure may be used only with operations rendered under `/pbm`.
      allOf:
        - $ref: '#/components/schemas/PbmCompatibilityCheckFault'

    ArrayOfPbmDefaultProfileAppliesFault:
      type: object
      description: |2
        A boxed array of *PbmDefaultProfileAppliesFault*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PbmDefaultProfileAppliesFault'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PbmDuplicateName:
      type: object
      description: |2
        A DuplicateName exception is thrown because a name already exists
        in the same name space.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        name:
          description: |2
            The name that is already bound in the name space.
          type: string
      required:
        - name
      allOf:
        - $ref: '#/components/schemas/PbmFault'

    ArrayOfPbmDuplicateName:
      type: object
      description: |2
        A boxed array of *PbmDuplicateName*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PbmDuplicateName'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PbmIncompatibleVendorSpecificRuleSet:
      type: object
      description: |2
        Warning fault used to indicate that the vendor specific datastore matches the tag in the
        requirements profile but doesnt match the vendor specific rule set in the requirements profile.
        
        This structure may be used only with operations rendered under `/pbm`.
      allOf:
        - $ref: '#/components/schemas/PbmCapabilityProfilePropertyMismatchFault'

    ArrayOfPbmIncompatibleVendorSpecificRuleSet:
      type: object
      description: |2
        A boxed array of *PbmIncompatibleVendorSpecificRuleSet*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PbmIncompatibleVendorSpecificRuleSet'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PbmFaultInvalidLogin:
      type: object
      description: |2
        Thrown when login fails due to token not provided or token could not be
        validated.
        
        This structure may be used only with operations rendered under `/pbm`.
      allOf:
        - $ref: '#/components/schemas/PbmFault'

    ArrayOfPbmFaultInvalidLogin:
      type: object
      description: |2
        A boxed array of *PbmFaultInvalidLogin*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PbmFaultInvalidLogin'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PbmLegacyHubsNotSupported:
      type: object
      description: |2
        LegacyHubsNotSupported fault is thrown to indicate the legacy hubs that are not supported.
        
        For storage, legacy hubs or datastores are VMFS and NFS datastores.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        hubs:
          description: |2
            Legacy hubs that are not supported.
            
            Only datastores will be populated in this fault. Datastore clusters
            are not allowed.
          type: array
          items:
            $ref: '#/components/schemas/PbmPlacementHub'
      required:
        - hubs
      allOf:
        - $ref: '#/components/schemas/PbmFault'

    ArrayOfPbmLegacyHubsNotSupported:
      type: object
      description: |2
        A boxed array of *PbmLegacyHubsNotSupported*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PbmLegacyHubsNotSupported'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PbmFaultNoPermission:
      type: object
      description: |2
        Thrown when an operation is denied because of a privilege
        not held on a storage profile.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        missingPrivileges:
          description: |2
            List of profile ids and missing privileges for each profile
          type: array
          items:
            $ref: '#/components/schemas/PbmFaultNoPermissionEntityPrivileges'
      allOf:
        - $ref: '#/components/schemas/SecurityError'

    ArrayOfPbmFaultNoPermission:
      type: object
      description: |2
        A boxed array of *PbmFaultNoPermission*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PbmFaultNoPermission'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PbmFaultNoPermissionEntityPrivileges:
      type: object
      description: |2
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        profileId:
          $ref: '#/components/schemas/PbmProfileId'
        privilegeIds:
          type: array
          items:
            type: string
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfPbmFaultNoPermissionEntityPrivileges:
      type: object
      description: |2
        A boxed array of *PbmFaultNoPermissionEntityPrivileges*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PbmFaultNoPermissionEntityPrivileges'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PbmNonExistentHubs:
      type: object
      description: |2
        NonExistentHubs is thrown to indicate that some non existent datastores are used.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        hubs:
          description: |2
            Legacy hubs that do not exist.
          type: array
          items:
            $ref: '#/components/schemas/PbmPlacementHub'
      required:
        - hubs
      allOf:
        - $ref: '#/components/schemas/PbmFault'

    ArrayOfPbmNonExistentHubs:
      type: object
      description: |2
        A boxed array of *PbmNonExistentHubs*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PbmNonExistentHubs'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PbmFaultNotFound:
      type: object
      description: |2
        A NotFound error occurs when a referenced component of a managed
        object cannot be found.
        
        The referenced component can be a data
        object type (such as a role or permission) or a primitive
        (such as a string).
        
        For example, if the missing referenced component is a data object, such as
        VirtualSwitch, the NotFound error is
        thrown. The NotFound error is also thrown if the data object is found, but the referenced name
        (for example, "vswitch0") is not.
        
        This structure may be used only with operations rendered under `/pbm`.
      allOf:
        - $ref: '#/components/schemas/PbmFault'

    ArrayOfPbmFaultNotFound:
      type: object
      description: |2
        A boxed array of *PbmFaultNotFound*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PbmFaultNotFound'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PbmFault:
      type: object
      description: |2
        The super class for all pbm faults.
        
        This structure may be used only with operations rendered under `/pbm`.
      allOf:
        - $ref: '#/components/schemas/MethodFault'

    ArrayOfPbmFault:
      type: object
      description: |2
        A boxed array of *PbmFault*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PbmFault'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PbmFaultProfileStorageFault:
      type: object
      description: |2
        This structure may be used only with operations rendered under `/pbm`.
      allOf:
        - $ref: '#/components/schemas/PbmFault'

    ArrayOfPbmFaultProfileStorageFault:
      type: object
      description: |2
        A boxed array of *PbmFaultProfileStorageFault*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PbmFaultProfileStorageFault'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PbmPropertyMismatchFault:
      type: object
      description: |2
        Fault used to indicate which property instance in requirements profile that does not
        match.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        capabilityInstanceId:
          description: |2
            Id of the CapabilityInstance in requirements profile that
            does not match.
          $ref: '#/components/schemas/PbmCapabilityMetadataUniqueId'
        requirementPropertyInstance:
          description: |2
            The property instance in requirement profile that does not match.
          $ref: '#/components/schemas/PbmCapabilityPropertyInstance'
      required:
        - capabilityInstanceId
        - requirementPropertyInstance
      allOf:
        - $ref: '#/components/schemas/PbmCompatibilityCheckFault'

    ArrayOfPbmPropertyMismatchFault:
      type: object
      description: |2
        A boxed array of *PbmPropertyMismatchFault*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PbmPropertyMismatchFault'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PbmResourceInUse:
      type: object
      description: |2
        A ResourceInUse fault indicating that some error has occurred because a
        resource was in use.
        
        Information about the resource that is in use may
        be supplied.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        type:
          description: |2
            Type of resource that is in use.
          type: string
        name:
          description: |2
            Name of the instance of the resource that is in use.
          type: string
      allOf:
        - $ref: '#/components/schemas/PbmFault'

    ArrayOfPbmResourceInUse:
      type: object
      description: |2
        A boxed array of *PbmResourceInUse*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PbmResourceInUse'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PbmPlacementCapabilityConstraintsRequirement:
      type: object
      description: |2
        Requirement type containing capability constraints
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        constraints:
          description: |2
            Capability constraints
          $ref: '#/components/schemas/PbmCapabilityConstraints'
      required:
        - constraints
      allOf:
        - $ref: '#/components/schemas/PbmPlacementRequirement'

    ArrayOfPbmPlacementCapabilityConstraintsRequirement:
      type: object
      description: |2
        A boxed array of *PbmPlacementCapabilityConstraintsRequirement*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PbmPlacementCapabilityConstraintsRequirement'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PbmPlacementCapabilityProfileRequirement:
      type: object
      description: |2
        A Requirement for a particular *PbmCapabilityProfile*.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        profileId:
          description: |2
            Reference to the capability profile being used as a requirement
          $ref: '#/components/schemas/PbmProfileId'
      required:
        - profileId
      allOf:
        - $ref: '#/components/schemas/PbmPlacementRequirement'

    ArrayOfPbmPlacementCapabilityProfileRequirement:
      type: object
      description: |2
        A boxed array of *PbmPlacementCapabilityProfileRequirement*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PbmPlacementCapabilityProfileRequirement'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PbmPlacementCompatibilityResult:
      type: object
      description: |2
        The *PbmPlacementCompatibilityResult* data object
        contains the compatibility result of a placement request.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        hub:
          description: |2
            The <code>Datastore</code> or <code>StoragePod</code> under consideration
            as a location for virtual machine files.
          $ref: '#/components/schemas/PbmPlacementHub'
        matchingResources:
          description: |2
            Resources that match the policy.
            
            If populated, signifies that there are
            specific resources that match the policy for *PbmPlacementCompatibilityResult.hub*. If null,
            signifies that all resources (for example, hosts connected to the
            datastore or storage pod) are compatible.
          type: array
          items:
            $ref: '#/components/schemas/PbmPlacementMatchingResources'
        howMany:
          description: |2
            How many objects of the kind requested can be provisioned on this
            *PbmPlacementCompatibilityResult.hub*.
          type: integer
          format: int64
        utilization:
          description: |2
            This field is not populated if there is no size in the query, i.e.
            
            if the request carries only policy and no size requirements, this
            will not be populated.
          type: array
          items:
            $ref: '#/components/schemas/PbmPlacementResourceUtilization'
        warning:
          description: |2
            Array of faults that describe issues that may affect profile compatibility.
            
            Users should consider these issues before using this <code>Datastore</code>
            or <code>StoragePod</code> and a connected <code>Host</code>s.
          type: array
          items:
            $ref: '#/components/schemas/MethodFault'
        error:
          description: |2
            Array of faults that prevent this datastore or storage pod from being compatible with the
            specified profile, including if no host connected to this *PbmPlacementCompatibilityResult.hub* is compatible.
          type: array
          items:
            $ref: '#/components/schemas/MethodFault'
      required:
        - hub
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfPbmPlacementCompatibilityResult:
      type: object
      description: |2
        A boxed array of *PbmPlacementCompatibilityResult*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PbmPlacementCompatibilityResult'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PbmPlacementMatchingReplicationResources:
      type: object
      description: |2
        Describes the collection of replication related resources that satisfy a
        policy, for a specific datastore.
        
        This class is returned only when the policy contains replication capabilities.
        For a storage pod, only those replication groups that are common across
        all datastores in the storage pod are considered compatible.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        replicationGroup:
          description: |2
            Replication groups that match the policy.
          type: array
          items:
            $ref: '#/components/schemas/ReplicationGroupId'
      allOf:
        - $ref: '#/components/schemas/PbmPlacementMatchingResources'

    ArrayOfPbmPlacementMatchingReplicationResources:
      type: object
      description: |2
        A boxed array of *PbmPlacementMatchingReplicationResources*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PbmPlacementMatchingReplicationResources'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PbmPlacementMatchingResources:
      type: object
      description: |2
        Describes the collection of resources (for example, hosts) that satisfy a
        policy, for a specific datastore.
        
        This structure may be used only with operations rendered under `/pbm`.
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfPbmPlacementMatchingResources:
      type: object
      description: |2
        A boxed array of *PbmPlacementMatchingResources*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PbmPlacementMatchingResources'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PbmPlacementHub:
      type: object
      description: |2
        A *PbmPlacementHub* data object identifies a storage location
        where virtual machine files can be placed.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        hubType:
          description: |2
            Type of the hub.
            
            Currently ManagedObject is the only supported type.
          type: string
        hubId:
          description: |2
            Hub identifier; a ManagedObjectReference to a datastore or a storage pod.
          type: string
      required:
        - hubType
        - hubId
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfPbmPlacementHub:
      type: object
      description: |2
        A boxed array of *PbmPlacementHub*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PbmPlacementHub'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PbmPlacementRequirement:
      type: object
      description: |2
        Defines a constraint for placing objects onto *PbmPlacementHub*s.
        
        This structure may be used only with operations rendered under `/pbm`.
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfPbmPlacementRequirement:
      type: object
      description: |2
        A boxed array of *PbmPlacementRequirement*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PbmPlacementRequirement'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PbmPlacementResourceUtilization:
      type: object
      description: |2
        Describes the resource utilization metrics of a datastore.
        
        These results are not to be treated as a guaranteed availability,
        they are useful to estimate the effects of a change of policy
        or the effects of a provisioning action.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        name:
          description: |2
            Name of the resource.
          $ref: '#/components/schemas/PbmExtendedElementDescription'
        description:
          description: |2
            Description of the resource.
          $ref: '#/components/schemas/PbmExtendedElementDescription'
        availableBefore:
          description: |2
            Currently available (i.e.
            
            before the provisioning step).
          type: integer
          format: int64
        availableAfter:
          description: |2
            Available after the provisioning step.
          type: integer
          format: int64
        total:
          description: |2
            Total resource availability
          type: integer
          format: int64
      required:
        - name
        - description
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfPbmPlacementResourceUtilization:
      type: object
      description: |2
        A boxed array of *PbmPlacementResourceUtilization*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PbmPlacementResourceUtilization'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PbmCapabilityProfile:
      type: object
      description: |2
        The *PbmCapabilityProfile* data object defines
        capability-based profiles.
        
        A capability-based profile is derived
        from tag-based storage capabilities or from vSAN storage capabilities.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        profileCategory:
          description: |2
            Indicates whether the profile is requirement
            profile, a resource profile or a data service profile.
            
            The <code>profileCategory</code>
            is a string value that corresponds to one of the
            *PbmProfileCategoryEnum_enum* values.
            - REQUIREMENT profile - Defines the storage constraints applied
              to virtual machine placement. Requirements are defined by
              the user and can be associated with virtual machines and virtual
              disks. During provisioning, you can use a requirements profile
              for compliance and placement checking to support
              selection and configuration of resources.
            - RESOURCE profile - Specifies system-defined storage capabilities.
              You cannot modify a resource profile. You cannot associate a resource
              profile with vSphere entities, use it during provisioning, or target
              entities for resource selection or configuration.
              This type of profile gives the user visibility into the capabilities
              supported by the storage provider.
            - DATA\_SERVICE\_POLICY - Indicates a data service policy that can
              be embedded into another storage policy. Policies of this type can't
              be assigned to Virtual Machines or Virtual Disks. This policy cannot
              be used for compliance checking.
          type: string
        resourceType:
          description: |2
            Type of the target resource to which the capability information applies.
            
            A fixed enum that defines resource types for which capabilities can be defined
            see *PbmProfileResourceType*, *PbmProfileResourceTypeEnum_enum*
          $ref: '#/components/schemas/PbmProfileResourceType'
        constraints:
          description: |2
            Subprofiles that describe storage requirements or storage provider capabilities,
            depending on the profile category (REQUIREMENT or RESOURCE).
          $ref: '#/components/schemas/PbmCapabilityConstraints'
        generationId:
          description: |2
            Generation ID is used to communicate the current version of the profile to VASA
            providers.
            
            It is only applicable to REQUIREMENT profile types. Every time a
            requirement profile is edited, the Server will increment the generationId. You
            do not need to set the generationID. When an object is created (or
            reconfigured), the Server will send the requirement profile content, profile ID and
            the generationID to VASA provider.
          type: integer
          format: int64
        isDefault:
          deprecated: true
          description: |2
            Deprecated since it is not supported.
            
            Not supported in this release.
          type: boolean
        systemCreatedProfileType:
          description: |2
            Indicates the type of system pre-created default profile.
            
            This will be set only for system pre-created default profiles. And
            this is not set for RESOURCE profiles.
          type: string
        lineOfService:
          description: |2
            This property is set only for data service policy.
            
            Indicates the line of service
            *PbmLineOfServiceInfoLineOfServiceEnum_enum* of the data service policy.
          type: string
      required:
        - profileCategory
        - resourceType
        - constraints
        - isDefault
      allOf:
        - $ref: '#/components/schemas/PbmProfile'

    ArrayOfPbmCapabilityProfile:
      type: object
      description: |2
        A boxed array of *PbmCapabilityProfile*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PbmCapabilityProfile'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PbmCapabilityProfileCreateSpec:
      type: object
      description: |2
        The *PbmCapabilityProfileCreateSpec* describes storage requirements.
        
        Use this data object to create a *PbmCapabilityProfile*.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        name:
          description: |2
            Name of the capability based profile to be created.
            
            The maximum length of the name is 80 characters.
          type: string
        description:
          description: |2
            Text description associated with the profile.
          type: string
        category:
          description: |2
            Category specifies the type of policy to be created.
            
            This can be REQUIREMENT from
            *PbmProfileCategoryEnum_enum*
            or null when creating a storage policy. And it can be DATA\_SERVICE\_POLICY from
            *PbmProfileCategoryEnum_enum*
            when creating a data service policy. RESOURCE from *PbmProfileCategoryEnum_enum*
            is not allowed as resource profile is created by the system.
          type: string
        resourceType:
          deprecated: true
          description: |2
            Deprecated as of vSphere API 6.5.
            
            Specifies the type of resource to which the profile applies.
            
            The only legal value is STORAGE - deprecated.
          $ref: '#/components/schemas/PbmProfileResourceType'
        constraints:
          description: |2
            Set of subprofiles that define the storage requirements.
            
            A subprofile corresponds to a rule set in the vSphere Web Client.
          $ref: '#/components/schemas/PbmCapabilityConstraints'
      required:
        - name
        - resourceType
        - constraints
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfPbmCapabilityProfileCreateSpec:
      type: object
      description: |2
        A boxed array of *PbmCapabilityProfileCreateSpec*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PbmCapabilityProfileCreateSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PbmCapabilityProfileUpdateSpec:
      type: object
      description: |2
        The *PbmCapabilityProfileUpdateSpec* data object
        contains data that you use to update a storage profile.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        name:
          description: |2
            Specifies a new profile name.
          type: string
        description:
          description: |2
            Specifies a new profile description.
          type: string
        constraints:
          description: |2
            Specifies one or more subprofiles.
            
            A subprofile defines one or more
            storage requirements.
          $ref: '#/components/schemas/PbmCapabilityConstraints'
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfPbmCapabilityProfileUpdateSpec:
      type: object
      description: |2
        A boxed array of *PbmCapabilityProfileUpdateSpec*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PbmCapabilityProfileUpdateSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PbmCapabilityConstraints:
      type: object
      description: |2
        The *PbmCapabilityConstraints* data object is the base
        object for capability subprofile constraints.
        
        This structure may be used only with operations rendered under `/pbm`.
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfPbmCapabilityConstraints:
      type: object
      description: |2
        A boxed array of *PbmCapabilityConstraints*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PbmCapabilityConstraints'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PbmDataServiceToPoliciesMap:
      type: object
      description: |2
        DataServiceToProfilesMap maps the data service policy to the parent storage policies
        if referred.
        
        This is returned from the API call
        `ProfileManager#queryParentStoragePolicies(ProfileId[])`
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        dataServicePolicy:
          description: |2
            Denotes a Data Service Policy Id.
          $ref: '#/components/schemas/PbmProfileId'
        parentStoragePolicies:
          description: |2
            Storage Policies that refer to the Data Service Policy given by
            *PbmDataServiceToPoliciesMap.dataServicePolicy*.
          type: array
          items:
            $ref: '#/components/schemas/PbmProfileId'
        fault:
          description: |2
            The fault is set in case of error conditions and this property will
            have the reason.
          $ref: '#/components/schemas/MethodFault'
      required:
        - dataServicePolicy
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfPbmDataServiceToPoliciesMap:
      type: object
      description: |2
        A boxed array of *PbmDataServiceToPoliciesMap*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PbmDataServiceToPoliciesMap'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PbmDefaultCapabilityProfile:
      type: object
      description: |2
        Not supported in this release.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        vvolType:
          description: |2
            Not supported in this release.
          type: array
          items:
            type: string
        containerId:
          description: |2
            Not supported in this release.
          type: string
      required:
        - vvolType
        - containerId
      allOf:
        - $ref: '#/components/schemas/PbmCapabilityProfile'

    ArrayOfPbmDefaultCapabilityProfile:
      type: object
      description: |2
        A boxed array of *PbmDefaultCapabilityProfile*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PbmDefaultCapabilityProfile'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PbmDefaultProfileInfo:
      type: object
      description: |2
        Data structure that stores the default profile for datastores.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        datastores:
          description: |2
            Datastores
          type: array
          items:
            $ref: '#/components/schemas/PbmPlacementHub'
        defaultProfile:
          description: |2
            Default requirements profile.
            
            It is set to null if the datastores are not associated with any default profile.
          $ref: '#/components/schemas/PbmProfile'
        methodFault:
          description: |2
            NoPermission fault if default profile is not permitted.
          $ref: '#/components/schemas/MethodFault'
      required:
        - datastores
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfPbmDefaultProfileInfo:
      type: object
      description: |2
        A boxed array of *PbmDefaultProfileInfo*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PbmDefaultProfileInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PbmProfile:
      type: object
      description: |2
        The *PbmProfile* data object is the base object
        for storage capability profiles.
        
        This object defines metadata
        for the profile. The derived capability profile represents the
        user's intent for selection and configuration of storage resources
        and/or services that support deployment of virtual machines
        and virtual disks.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        profileId:
          description: |2
            Unique identifier for the profile.
          $ref: '#/components/schemas/PbmProfileId'
        name:
          type: string
        description:
          description: |2
            Profile description.
          type: string
        creationTime:
          description: |2
            Time stamp of profile creation.
          type: string
          format: date-time
        createdBy:
          description: |2
            User name of the profile creator.
            
            Set during creation time.
          type: string
        lastUpdatedTime:
          description: |2
            Time stamp of latest modification to the profile.
          type: string
          format: date-time
        lastUpdatedBy:
          description: |2
            Name of the user performing the latest modification of the profile.
          type: string
      required:
        - profileId
        - name
        - creationTime
        - createdBy
        - lastUpdatedTime
        - lastUpdatedBy
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfPbmProfile:
      type: object
      description: |2
        A boxed array of *PbmProfile*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PbmProfile'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PbmProfileId:
      type: object
      description: |2
        Profile unique identifier.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        uniqueId:
          description: |2
            Unique identifier of the profile.
          type: string
      required:
        - uniqueId
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfPbmProfileId:
      type: object
      description: |2
        A boxed array of *PbmProfileId*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PbmProfileId'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PbmProfileOperationOutcome:
      type: object
      description: |2
        The *PbmProfileOperationOutcome* data object describes the result
        of a *PbmProfileProfileManager* operation.
        
        If there was an
        error during the operation, the object identifies the fault.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        profileId:
          description: |2
            Identifies the profile specified for the operation.
          $ref: '#/components/schemas/PbmProfileId'
        fault:
          description: |2
            One of the *PbmFault* objects.
          $ref: '#/components/schemas/MethodFault'
      required:
        - profileId
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfPbmProfileOperationOutcome:
      type: object
      description: |2
        A boxed array of *PbmProfileOperationOutcome*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PbmProfileOperationOutcome'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PbmProfileType:
      type: object
      description: |2
        The *PbmProfileType* identifier is defined by storage providers
        to distinguish between different types of profiles plugged into the system.
        
        An example of a system supported profile type is "CapabilityBasedProfileType"
        which will be the type used for all capability-based profiles created by
        the system using capability metadata information published to the system.
        
        For internal use only.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        uniqueId:
          description: |2
            Unique type identifier for this profile type.
            
            eg "CapabilityBased", or other.
          type: string
      required:
        - uniqueId
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfPbmProfileType:
      type: object
      description: |2
        A boxed array of *PbmProfileType*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PbmProfileType'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PbmQueryProfileResult:
      type: object
      description: |2
        The *PbmQueryProfileResult* data object
        identifies a virtual machine, virtual disk, or datastore
        and it lists the identifier(s) for the associated profile(s).
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        object:
          description: |2
            Reference to the virtual machine, virtual disk, or
            datastore on which the query was performed.
          $ref: '#/components/schemas/PbmServerObjectRef'
        profileId:
          description: |2
            Array of identifiers for profiles which are associated with <code>object</code>.
          type: array
          items:
            $ref: '#/components/schemas/PbmProfileId'
        fault:
          description: |2
            Fault associated with the query, if there is one.
          $ref: '#/components/schemas/MethodFault'
      required:
        - object
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfPbmQueryProfileResult:
      type: object
      description: |2
        A boxed array of *PbmQueryProfileResult*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PbmQueryProfileResult'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PbmProfileResourceType:
      type: object
      description: |2
        The *PbmProfileResourceType* data object defines the vSphere resource type
        that is supported for profile management.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        resourceType:
          description: |2
            Type of resource to which capability information applies.
            
            <code>resourceType</code> is a string value that corresponds to
            a *PbmProfileResourceTypeEnum_enum* enumeration value.
            Only the STORAGE resource type is supported.
          type: string
      required:
        - resourceType
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfPbmProfileResourceType:
      type: object
      description: |2
        A boxed array of *PbmProfileResourceType*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PbmProfileResourceType'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PbmCapabilitySubProfileConstraints:
      type: object
      description: |2
        The *PbmCapabilitySubProfileConstraints* data object defines a group
        of storage subprofiles.
        
        Subprofile usage depends on the type of profile
        (*PbmCapabilityProfile*.*PbmCapabilityProfile.profileCategory*).
        - For a REQUIREMENTS profile, each subprofile defines storage requirements.
          A Storage Policy API requirements subprofile corresponds to a vSphere Web Client
          rule set.
        - For a RESOURCE profile, each subprofile defines storage capabilities.
          Storage capabilities are read-only.
          
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        subProfiles:
          description: |2
            Aggregation of one or more subprofiles.
            
            The relationship among all subprofiles is "OR". When you perform
            compliance checking on a profile that contains more than one subprofile,
            a non-compliant result for any one of the subprofiles will produce a
            non-compliant result for the operation.
          type: array
          items:
            $ref: '#/components/schemas/PbmCapabilitySubProfile'
      required:
        - subProfiles
      allOf:
        - $ref: '#/components/schemas/PbmCapabilityConstraints'

    ArrayOfPbmCapabilitySubProfileConstraints:
      type: object
      description: |2
        A boxed array of *PbmCapabilitySubProfileConstraints*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PbmCapabilitySubProfileConstraints'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PbmCapabilitySubProfile:
      type: object
      description: |2
        A *PbmCapabilitySubProfile*
        is a section within a profile that aggregates one or more capability
        instances.
        
        Capability instances define storage constraints.
        
        All constraints within a subprofile are ANDed by default.
        When you perform compliance checking on a virtual machine or virtual
        disk, all of the constraints must be satisfied by the storage capabilities.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        name:
          description: |2
            Subprofile name.
          type: string
        capability:
          description: |2
            List of capability instances.
          type: array
          items:
            $ref: '#/components/schemas/PbmCapabilityInstance'
        forceProvision:
          description: |2
            Indicates whether the source policy profile allows creating a virtual machine
            or virtual disk that may be non-compliant.
          type: boolean
      required:
        - name
        - capability
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfPbmCapabilitySubProfile:
      type: object
      description: |2
        A boxed array of *PbmCapabilitySubProfile*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PbmCapabilitySubProfile'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PbmDatastoreSpaceStatistics:
      type: object
      description: |2
        Space stats for datastore
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        profileId:
          description: |2
            Capability profile id.
            
            It is null when the statistics are for the entire
            datastore.
          type: string
        physicalTotalInMB:
          description: |2
            Total physical space in MB.
          type: integer
          format: int64
        physicalFreeInMB:
          description: |2
            Total physical free space in MB.
          type: integer
          format: int64
        physicalUsedInMB:
          description: |2
            Used physical storage space in MB.
          type: integer
          format: int64
        logicalLimitInMB:
          description: |2
            Logical space limit set by the storage admin in MB.
            
            Omitted if there is no Logical space limit.
          type: integer
          format: int64
        logicalFreeInMB:
          description: |2
            Free logical storage space in MB.
          type: integer
          format: int64
        logicalUsedInMB:
          description: |2
            Used logical storage space in MB.
          type: integer
          format: int64
      required:
        - physicalTotalInMB
        - physicalFreeInMB
        - physicalUsedInMB
        - logicalFreeInMB
        - logicalUsedInMB
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfPbmDatastoreSpaceStatistics:
      type: object
      description: |2
        A boxed array of *PbmDatastoreSpaceStatistics*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PbmDatastoreSpaceStatistics'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PbmQueryReplicationGroupResult:
      type: object
      description: |2
        The *PbmQueryReplicationGroupResult* data object
        identifies a virtual machine, or a virtual disk and lists the identifier(s) for the associated
        replication group.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        object:
          description: |2
            Reference to the virtual machine or virtual disk on which the query was performed.
            
            If the
            query was performed for a virtual machine and all it's disks, this will reference each disk
            and the virtual machine config individually.
          $ref: '#/components/schemas/PbmServerObjectRef'
        replicationGroupId:
          description: |2
            Replication group identifier which is associated with <code>object</code>.
          $ref: '#/components/schemas/ReplicationGroupId'
        fault:
          description: |2
            Fault associated with the query, if there is one.
          $ref: '#/components/schemas/MethodFault'
      required:
        - object
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfPbmQueryReplicationGroupResult:
      type: object
      description: |2
        A boxed array of *PbmQueryReplicationGroupResult*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/pbm`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PbmQueryReplicationGroupResult'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    SmsAboutInfo:
      type: object
      description: |2
        This data object type describes system information.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        name:
          type: string
        fullName:
          type: string
        vendor:
          type: string
        apiVersion:
          type: string
        instanceUuid:
          type: string
        vasaApiVersion:
          type: string
      required:
        - name
        - fullName
        - vendor
        - apiVersion
        - instanceUuid
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfSmsAboutInfo:
      type: object
      description: |2
        A boxed array of *SmsAboutInfo*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/SmsAboutInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    EntityReference:
      type: object
      deprecated: true
      description: |2
        Deprecated as of SMS API 4.0.
        
        Unique identifier of a given entity with the storage
        management service.
        
        It is similar to the VirtualCenter
        ManagedObjectReference but also identifies certain
        non-managed objects.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        id:
          description: |2
            Unique identifier for the entity of a given type in the
            system.
            
            A VirtualCenter managed object ID can be supplied
            here, in which case the type may be unset. Otherwise, the
            type must be set.
          type: string
        type:
          description: |2
            Type of the entity.
          $ref: '#/components/schemas/EntityReferenceEntityType_enum'
      required:
        - id
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfEntityReference:
      type: object
      description: |2
        A boxed array of *EntityReference*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/EntityReference'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    FaultDomainFilter:
      type: object
      description: |2
        This spec contains information needed for *SmsStorageManager.QueryFaultDomain*
        API to filter the result.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        providerId:
          description: |2
            If specified, query for this specific provider only; else query for all
            providers.
          type: string
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfFaultDomainFilter:
      type: object
      description: |2
        A boxed array of *FaultDomainFilter*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/FaultDomainFilter'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ReplicationGroupFilter:
      type: object
      description: |2
        This spec contains information needed for *SmsStorageManager.QueryReplicationGroupInfo*
        API to filter the result.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        groupId:
          description: |2
            Query for the given replication groups from their associated providers.
            
            The groupId cannot be null or empty.
          type: array
          items:
            $ref: '#/components/schemas/ReplicationGroupId'
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfReplicationGroupFilter:
      type: object
      description: |2
        A boxed array of *ReplicationGroupFilter*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ReplicationGroupFilter'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    SmsTaskInfo:
      type: object
      description: |2
        This data object type contains all information about a task.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        key:
          description: |2
            The unique key for the task.
          type: string
        task:
          description: |2
            The managed object that represents this task.
            
            Refers instance of *SmsTask*.
          $ref: '#/components/schemas/ManagedObjectReference'
        object:
          description: |2
            Managed Object to which the operation applies.
          $ref: '#/components/schemas/ManagedObjectReference'
        error:
          description: |2
            If the task state is "error", then this property contains the fault code.
          $ref: '#/components/schemas/MethodFault'
        result:
          description: |2
            If the task state is "success", then this property may be used
            to hold a return value.
          $ref: '#/components/schemas/Any'
        startTime:
          description: |2
            Time stamp when the task started running.
          type: string
          format: date-time
        completionTime:
          description: |2
            Time stamp when the task was completed (whether success or failure).
          type: string
          format: date-time
        state:
          description: |2
            Runtime status of the task.
            
            Possible values are *SmsTaskState_enum*
          type: string
        progress:
          description: |2
            If the task state is "running", then this property contains a
            progress measurement, expressed as percentage completed, from 0 to 100.
            
            If this property is not set, then the command does not report progress.
          type: integer
          format: int32
      required:
        - key
        - task
        - state
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfSmsTaskInfo:
      type: object
      description: |2
        A boxed array of *SmsTaskInfo*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/SmsTaskInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    AuthConnectionFailed:
      type: object
      description: |2
        This exception is thrown when an error occurs while
        connecting to the vpxd service to validate the user
        credentials
        
        This structure may be used only with operations rendered under `/sms`.
      allOf:
        - $ref: '#/components/schemas/NoPermission'

    ArrayOfAuthConnectionFailed:
      type: object
      description: |2
        A boxed array of *AuthConnectionFailed*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/AuthConnectionFailed'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    CertificateAuthorityFault:
      type: object
      description: |2
        This exception is thrown if there is a problem with calls to the
        CertificateAuthority.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        faultCode:
          description: |2
            Fault code returned by certificate authority.
          type: integer
          format: int32
      required:
        - faultCode
      allOf:
        - $ref: '#/components/schemas/ProviderRegistrationFault'

    ArrayOfCertificateAuthorityFault:
      type: object
      description: |2
        A boxed array of *CertificateAuthorityFault*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/CertificateAuthorityFault'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    CertificateNotImported:
      type: object
      description: |2
        This exception is thrown if *VasaProviderInfo.retainVasaProviderCertificate*
        is true and the provider uses a certificate issued by a Certificate Authority,
        but the root certificate of the Certificate Authority is not imported to VECS truststore
        before attempting the provider registration.
        
        This structure may be used only with operations rendered under `/sms`.
      allOf:
        - $ref: '#/components/schemas/ProviderRegistrationFault'

    ArrayOfCertificateNotImported:
      type: object
      description: |2
        A boxed array of *CertificateNotImported*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/CertificateNotImported'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    CertificateNotTrusted:
      type: object
      description: |2
        This exception is thrown if the certificate provided by the
        provider is not trusted.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        certificate:
          description: |2
            Certificate
          type: string
      required:
        - certificate
      allOf:
        - $ref: '#/components/schemas/ProviderRegistrationFault'

    ArrayOfCertificateNotTrusted:
      type: object
      description: |2
        A boxed array of *CertificateNotTrusted*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/CertificateNotTrusted'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    CertificateRefreshFailed:
      type: object
      description: |2
        This exception is thrown if SMS failed to
        refresh a CA signed certificate for the provider (or)
        push the latest CA root certificates and CRLs to the provider.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        providerId:
          type: array
          items:
            type: string
      allOf:
        - $ref: '#/components/schemas/MethodFault'

    ArrayOfCertificateRefreshFailed:
      type: object
      description: |2
        A boxed array of *CertificateRefreshFailed*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/CertificateRefreshFailed'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    CertificateRevocationFailed:
      type: object
      description: |2
        This exception is thrown if SMS failed to revoke CA signed certificate of the provider.
        
        This structure may be used only with operations rendered under `/sms`.
      allOf:
        - $ref: '#/components/schemas/MethodFault'

    ArrayOfCertificateRevocationFailed:
      type: object
      description: |2
        A boxed array of *CertificateRevocationFailed*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/CertificateRevocationFailed'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DuplicateEntry:
      type: object
      description: |2
        This exception indicates there are duplicate entries in the input argument.
        
        This structure may be used only with operations rendered under `/sms`.
      allOf:
        - $ref: '#/components/schemas/MethodFault'

    ArrayOfDuplicateEntry:
      type: object
      description: |2
        A boxed array of *DuplicateEntry*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DuplicateEntry'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    InactiveProvider:
      type: object
      description: |2
        Thrown if the VASA Provider on which the call is made is currently not
        active.
        
        If the client maintains a cache of the topology of fault domains
        and replication groups, it's expected to update the cache based on the
        mapping information set in this fault.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        mapping:
          description: |2
            Mapping between VASA provider and the fault domains
          type: array
          items:
            $ref: '#/components/schemas/FaultDomainProviderMapping'
      allOf:
        - $ref: '#/components/schemas/MethodFault'

    ArrayOfInactiveProvider:
      type: object
      description: |2
        A boxed array of *InactiveProvider*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/InactiveProvider'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    IncorrectUsernamePassword:
      type: object
      description: |2
        This fault is thrown if failed to register provider due to incorrect credentials.
        
        This structure may be used only with operations rendered under `/sms`.
      allOf:
        - $ref: '#/components/schemas/ProviderRegistrationFault'

    ArrayOfIncorrectUsernamePassword:
      type: object
      description: |2
        A boxed array of *IncorrectUsernamePassword*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/IncorrectUsernamePassword'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    InvalidCertificate:
      type: object
      description: |2
        This exception is thrown if the provider certificate is empty, malformed,
        expired, not yet valid, revoked or fails host name verification.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        certificate:
          description: |2
            Provider certificate
          type: string
      required:
        - certificate
      allOf:
        - $ref: '#/components/schemas/ProviderRegistrationFault'

    ArrayOfInvalidCertificate:
      type: object
      description: |2
        A boxed array of *InvalidCertificate*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/InvalidCertificate'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    SmsInvalidLogin:
      type: object
      description: |2
        Thrown when login fails due to token not provided or token could not be
        validated.
        
        This structure may be used only with operations rendered under `/sms`.
      allOf:
        - $ref: '#/components/schemas/MethodFault'

    ArrayOfSmsInvalidLogin:
      type: object
      description: |2
        A boxed array of *SmsInvalidLogin*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/SmsInvalidLogin'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    InvalidProfile:
      type: object
      description: |2
        This exception is thrown if the specified storage profile is invalid.
        
        This structure may be used only with operations rendered under `/sms`.
      allOf:
        - $ref: '#/components/schemas/MethodFault'

    ArrayOfInvalidProfile:
      type: object
      description: |2
        A boxed array of *InvalidProfile*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/InvalidProfile'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    InvalidSession:
      type: object
      description: |2
        This exception is thrown if a specified session is invalid.
        
        This can occur if the VirtualCenter session referred to by
        the cookie has timed out or has been closed.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        sessionCookie:
          description: |2
            VirtualCenter session cookie that is invalid.
          type: string
      required:
        - sessionCookie
      allOf:
        - $ref: '#/components/schemas/NoPermission'

    ArrayOfInvalidSession:
      type: object
      description: |2
        A boxed array of *InvalidSession*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/InvalidSession'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    InvalidUrl:
      type: object
      description: |2
        This exception is thrown if *VasaProviderSpec.url* is malformed.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        url:
          description: |2
            Provider *VasaProviderSpec.url*
          type: string
      required:
        - url
      allOf:
        - $ref: '#/components/schemas/ProviderRegistrationFault'

    ArrayOfInvalidUrl:
      type: object
      description: |2
        A boxed array of *InvalidUrl*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/InvalidUrl'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    MultipleSortSpecsNotSupported:
      type: object
      description: |2
        This exception is thrown if more than one sort spec is
        specified in a list query.
        
        This structure may be used only with operations rendered under `/sms`.
      allOf:
        - $ref: '#/components/schemas/InvalidArgument'

    ArrayOfMultipleSortSpecsNotSupported:
      type: object
      description: |2
        A boxed array of *MultipleSortSpecsNotSupported*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/MultipleSortSpecsNotSupported'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    NoCommonProviderForAllBackings:
      type: object
      description: |2
        This fault is thrown when backings (@link
        sms.storage.StorageLun/ @link sms.storage.StorageFileSystem)
        of the specified datastores refer to different
        VASA providers.
        
        This structure may be used only with operations rendered under `/sms`.
      allOf:
        - $ref: '#/components/schemas/QueryExecutionFault'

    ArrayOfNoCommonProviderForAllBackings:
      type: object
      description: |2
        A boxed array of *NoCommonProviderForAllBackings*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/NoCommonProviderForAllBackings'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    NotSupportedByProvider:
      type: object
      description: |2
        This exception is thrown if the VASA Provider on which the call is made
        does not support this operation.
        
        This structure may be used only with operations rendered under `/sms`.
      allOf:
        - $ref: '#/components/schemas/MethodFault'

    ArrayOfNotSupportedByProvider:
      type: object
      description: |2
        A boxed array of *NotSupportedByProvider*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/NotSupportedByProvider'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ProviderBusy:
      type: object
      description: |2
        This exception is thrown if the VASA Provider on which the call is made
        is currently busy.
        
        This structure may be used only with operations rendered under `/sms`.
      allOf:
        - $ref: '#/components/schemas/MethodFault'

    ArrayOfProviderBusy:
      type: object
      description: |2
        A boxed array of *ProviderBusy*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ProviderBusy'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ProviderConnectionFailed:
      type: object
      description: |2
        This fault is thrown if the Storage Monitoring Service failed to connect to the VASA provider.
        
        This structure may be used only with operations rendered under `/sms`.
      allOf:
        - $ref: '#/components/schemas/RuntimeFault'

    ArrayOfProviderConnectionFailed:
      type: object
      description: |2
        A boxed array of *ProviderConnectionFailed*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ProviderConnectionFailed'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ProviderNotFound:
      type: object
      description: |2
        This fault is thrown when a VASA provider cannot be found for the specified
        entities.
        
        This structure may be used only with operations rendered under `/sms`.
      allOf:
        - $ref: '#/components/schemas/QueryExecutionFault'

    ArrayOfProviderNotFound:
      type: object
      description: |2
        A boxed array of *ProviderNotFound*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ProviderNotFound'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ProviderOutOfProvisioningResource:
      type: object
      description: |2
        This exception is thrown if the VASA Provider is out of resource to satisfy
        a provisioning request.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        provisioningResourceId:
          description: |2
            Identifier of the provisioning resource.
          type: string
        availableBefore:
          description: |2
            Currently available.
          type: integer
          format: int64
        availableAfter:
          description: |2
            Necessary for provisioning.
          type: integer
          format: int64
        total:
          description: |2
            Total amount (free + used).
          type: integer
          format: int64
        isTransient:
          description: |2
            This resource limitation is transient, i.e.
            
            the resource
            will be available after some time.
          type: boolean
      required:
        - provisioningResourceId
      allOf:
        - $ref: '#/components/schemas/MethodFault'

    ArrayOfProviderOutOfProvisioningResource:
      type: object
      description: |2
        A boxed array of *ProviderOutOfProvisioningResource*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ProviderOutOfProvisioningResource'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ProviderOutOfResource:
      type: object
      description: |2
        This exception is thrown if the VASA Provider on which the call is made
        is out of resource.
        
        This structure may be used only with operations rendered under `/sms`.
      allOf:
        - $ref: '#/components/schemas/MethodFault'

    ArrayOfProviderOutOfResource:
      type: object
      description: |2
        A boxed array of *ProviderOutOfResource*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ProviderOutOfResource'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ProviderRegistrationFault:
      type: object
      description: |2
        This fault is thrown if failed to register provider to storage
        management service.
        
        This structure may be used only with operations rendered under `/sms`.
      allOf:
        - $ref: '#/components/schemas/MethodFault'

    ArrayOfProviderRegistrationFault:
      type: object
      description: |2
        A boxed array of *ProviderRegistrationFault*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ProviderRegistrationFault'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ProviderSyncFailed:
      type: object
      description: |2
        Thrown if a failure occurs when synchronizing the service
        cache with provider information.
        
        This structure may be used only with operations rendered under `/sms`.
      allOf:
        - $ref: '#/components/schemas/MethodFault'

    ArrayOfProviderSyncFailed:
      type: object
      description: |2
        A boxed array of *ProviderSyncFailed*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ProviderSyncFailed'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ProviderUnavailable:
      type: object
      description: |2
        This exception is thrown if the VASA Provider on which the call is made is
        currently not available, e.g.
        
        VASA Provider is in offline state. This error
        usually means the provider is temporarily unavailable due to network outage, etc.
        The client is expected to wait for some time and retry the same call.
        
        This structure may be used only with operations rendered under `/sms`.
      allOf:
        - $ref: '#/components/schemas/MethodFault'

    ArrayOfProviderUnavailable:
      type: object
      description: |2
        A boxed array of *ProviderUnavailable*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ProviderUnavailable'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ProviderUnregistrationFault:
      type: object
      description: |2
        This fault is thrown if failed to unregister provider from storage
        management service.
        
        This structure may be used only with operations rendered under `/sms`.
      allOf:
        - $ref: '#/components/schemas/MethodFault'

    ArrayOfProviderUnregistrationFault:
      type: object
      description: |2
        A boxed array of *ProviderUnregistrationFault*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ProviderUnregistrationFault'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ProxyRegistrationFailed:
      type: object
      description: |2
        This exception is thrown if the storage management service
        fails to register with the VirtualCenter proxy during
        initialization.
        
        This structure may be used only with operations rendered under `/sms`.
      allOf:
        - $ref: '#/components/schemas/RuntimeFault'

    ArrayOfProxyRegistrationFailed:
      type: object
      description: |2
        A boxed array of *ProxyRegistrationFailed*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ProxyRegistrationFailed'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    QueryExecutionFault:
      type: object
      description: |2
        This exception is thrown if a failure occurs while
        processing a query request.
        
        This structure may be used only with operations rendered under `/sms`.
      allOf:
        - $ref: '#/components/schemas/MethodFault'

    ArrayOfQueryExecutionFault:
      type: object
      description: |2
        A boxed array of *QueryExecutionFault*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/QueryExecutionFault'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    QueryNotSupported:
      type: object
      description: |2
        This exception is thrown if the specified entity and related
        entity type combination for a list query is not supported.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        entityType:
          description: |2
            Entity type.
          $ref: '#/components/schemas/EntityReferenceEntityType_enum'
        relatedEntityType:
          description: |2
            Related entity type.
          $ref: '#/components/schemas/EntityReferenceEntityType_enum'
      required:
        - relatedEntityType
      allOf:
        - $ref: '#/components/schemas/InvalidArgument'

    ArrayOfQueryNotSupported:
      type: object
      description: |2
        A boxed array of *QueryNotSupported*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/QueryNotSupported'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    SmsResourceInUse:
      type: object
      description: |2
        A ResourceInUse fault indicating that some error has occurred because
        some resources are in use.
        
        Information about the devices that are in
        use may be supplied.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        deviceIds:
          description: |2
            The list of device Ids that are in use.
          type: array
          items:
            $ref: '#/components/schemas/DeviceId'
      allOf:
        - $ref: '#/components/schemas/ResourceInUse'

    ArrayOfSmsResourceInUse:
      type: object
      description: |2
        A boxed array of *SmsResourceInUse*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/SmsResourceInUse'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ServiceNotInitialized:
      type: object
      description: |2
        This exception is thrown if the storage management service
        has not yet been initialized successfully and therefore is
        not ready to process requests.
        
        This structure may be used only with operations rendered under `/sms`.
      allOf:
        - $ref: '#/components/schemas/RuntimeFault'

    ArrayOfServiceNotInitialized:
      type: object
      description: |2
        A boxed array of *ServiceNotInitialized*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ServiceNotInitialized'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    SyncInProgress:
      type: object
      description: |2
        This exception is thrown if a sync operation is invoked
        while another sync invocation is in progress.
        
        This structure may be used only with operations rendered under `/sms`.
      allOf:
        - $ref: '#/components/schemas/ProviderSyncFailed'

    ArrayOfSyncInProgress:
      type: object
      description: |2
        A boxed array of *SyncInProgress*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/SyncInProgress'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    TooMany:
      type: object
      description: |2
        This exception is thrown if the request exceeds the maximum number of
        elements in batch that the VASA Provider can support for the specific API.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        maxBatchSize:
          description: |2
            Maximum number of elements in batch that the VASA Provider can support
            for the specific API.
            
            If the value is not specified (zero) or invalid
            (negative), client will assume the default value is 1.
          type: integer
          format: int64
      allOf:
        - $ref: '#/components/schemas/MethodFault'

    ArrayOfTooMany:
      type: object
      description: |2
        A boxed array of *TooMany*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/TooMany'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    AlreadyDone:
      type: object
      description: |2
        Thrown if the object is already at the desired state.
        
        This is always a warning.
        
        This structure may be used only with operations rendered under `/sms`.
      allOf:
        - $ref: '#/components/schemas/SmsReplicationFault'

    ArrayOfAlreadyDone:
      type: object
      description: |2
        A boxed array of *AlreadyDone*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/AlreadyDone'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    InvalidFunctionTarget:
      type: object
      description: |2
        Thrown if the function is called at the wrong end of the replication (i.e.
        
        the failing function should be tried at the opposite end of replication).
        
        This structure may be used only with operations rendered under `/sms`.
      allOf:
        - $ref: '#/components/schemas/SmsReplicationFault'

    ArrayOfInvalidFunctionTarget:
      type: object
      description: |2
        A boxed array of *InvalidFunctionTarget*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/InvalidFunctionTarget'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    InvalidReplicationState:
      type: object
      description: |2
        Thrown if the replication group is not in the correct state.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        desiredState:
          description: |2
            States where the operation would have been successful.
          type: array
          items:
            type: string
        currentState:
          description: |2
            Current state.
          type: string
      required:
        - currentState
      allOf:
        - $ref: '#/components/schemas/SmsReplicationFault'

    ArrayOfInvalidReplicationState:
      type: object
      description: |2
        A boxed array of *InvalidReplicationState*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/InvalidReplicationState'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    NoReplicationTarget:
      type: object
      description: |2
        This exception is set if the replication target is not yet available.
        
        This structure may be used only with operations rendered under `/sms`.
      allOf:
        - $ref: '#/components/schemas/SmsReplicationFault'

    ArrayOfNoReplicationTarget:
      type: object
      description: |2
        A boxed array of *NoReplicationTarget*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/NoReplicationTarget'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    NoValidReplica:
      type: object
      description: |2
        This exception is thrown when there is no valid replica
        to be used in recovery.
        
        This may happen when a Virtual Volume
        is created on the source domain, but the replica is yet to
        be copied to the target.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        deviceId:
          description: |2
            Identifier of the device which does not have a valid
            replica.
            
            This is the identifier on the target site.
            This may not be set if the ReplicationGroup does not
            have even a single valid replica.
          $ref: '#/components/schemas/DeviceId'
      allOf:
        - $ref: '#/components/schemas/SmsReplicationFault'

    ArrayOfNoValidReplica:
      type: object
      description: |2
        A boxed array of *NoValidReplica*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/NoValidReplica'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PeerNotReachable:
      type: object
      description: |2
        This exception is set if the replication peer is not reachable.
        
        For prepareFailover, it is the target that is not reachable.
        For other functions, it is the source that is not reachable.
        
        This structure may be used only with operations rendered under `/sms`.
      allOf:
        - $ref: '#/components/schemas/SmsReplicationFault'

    ArrayOfPeerNotReachable:
      type: object
      description: |2
        A boxed array of *PeerNotReachable*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PeerNotReachable'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    SmsReplicationFault:
      type: object
      description: |2
        Base class for all Replication faults.
        
        This structure may be used only with operations rendered under `/sms`.
      allOf:
        - $ref: '#/components/schemas/MethodFault'

    ArrayOfSmsReplicationFault:
      type: object
      description: |2
        A boxed array of *SmsReplicationFault*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/SmsReplicationFault'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    SyncOngoing:
      type: object
      description: |2
        Throw if an synchronization is ongoing.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        task:
          description: |2
            Task identifier of the ongoing sync (@see sms.TaskInfo#key).
            
            Refers instance of *SmsTask*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - task
      allOf:
        - $ref: '#/components/schemas/SmsReplicationFault'

    ArrayOfSyncOngoing:
      type: object
      description: |2
        A boxed array of *SyncOngoing*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/SyncOngoing'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    AlarmFilter:
      type: object
      description: |2
        This spec contains information needed for queryActiveAlarm API to filter the result.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        alarmStatus:
          description: |2
            The status of the alarm to search for.
            
            Should be one of
            *SmsAlarmStatus_enum*. If not specified, all status values
            should be considered.
          type: string
        alarmType:
          description: |2
            The status of the alarm to search for.
            
            Should be one of
            *AlarmType_enum*. If not specified, all alarm types
            should be considered.
          type: string
        entityType:
          description: |2
            The entityType of interest, VASA provider should
            return all active alarms of this type when *AlarmFilter.entityId*
            is not set.
            
            See *SmsEntityType_enum*.
          type: string
        entityId:
          description: |2
            The identifiers of the entities of interest.
            
            If set, all entities must be
            of the same *SmsEntityType_enum* and it should be set in
            *AlarmFilter.entityType*. VASA provider can skip listing the missing entities.
          type: array
          items:
            $ref: '#/components/schemas/Any'
        pageMarker:
          description: |2
            The page marker used for query pagination.
            
            This is an opaque string that
            will be set based on the value returned by the VASA provider - see
            *AlarmResult.pageMarker*. For initial request this should be set to
            null, indicating request for the first page.
          type: string
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfAlarmFilter:
      type: object
      description: |2
        A boxed array of *AlarmFilter*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/AlarmFilter'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    AlarmResult:
      type: object
      description: |2
        Contains result for queryActiveAlarm API.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        storageAlarm:
          description: |2
            Resulting storage alarms.
          type: array
          items:
            $ref: '#/components/schemas/StorageAlarm'
        pageMarker:
          description: |2
            The page marker used for query pagination.
            
            This is an opaque string that
            will be set by the VASA provider. The client will set the same value in
            *AlarmFilter.pageMarker* to query the next page. VP should unset
            this value to indicate the end of page.
          type: string
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfAlarmResult:
      type: object
      description: |2
        A boxed array of *AlarmResult*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/AlarmResult'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    SmsProviderInfo:
      type: object
      description: |2
        Information about Storage Monitoring Service (SMS)
        providers.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        uid:
          description: |2
            Unique identifier
          type: string
        name:
          description: |2
            Name
          type: string
        description:
          description: |2
            Description of the provider
          type: string
        version:
          description: |2
            Version of the provider
          type: string
      required:
        - uid
        - name
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfSmsProviderInfo:
      type: object
      description: |2
        A boxed array of *SmsProviderInfo*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/SmsProviderInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    SmsProviderSpec:
      type: object
      description: |2
        Specification for Storage Monitoring Service (SMS)
        providers.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        name:
          description: |2
            Name
            The maximum length of the name is 275 characters.
          type: string
        description:
          description: |2
            Description of the provider
          type: string
      required:
        - name
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfSmsProviderSpec:
      type: object
      description: |2
        A boxed array of *SmsProviderSpec*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/SmsProviderSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VasaProviderInfo:
      type: object
      description: |2
        Information about VASA (vStorage APIs for Storage Awareness) providers.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        url:
          description: |2
            Provider URL
          type: string
        certificate:
          description: |2
            Provider certificate
          type: string
        status:
          description: |2
            The operational state of VASA Provider.
          type: string
        statusFault:
          description: |2
            A fault that describes the cause of the current operational status.
          $ref: '#/components/schemas/MethodFault'
        vasaVersion:
          description: |2
            Supported VASA(vStorage APIs for Storage Awareness) version
          type: string
        namespace:
          description: |2
            Namespace to categorize storage capabilities provided by
            arrays managed by the provider
          type: string
        lastSyncTime:
          description: |2
            Time stamp to indicate when last sync operation was completed
            successfully.
          type: string
        supportedVendorModelMapping:
          description: |2
            List containing mapping between the supported vendorID and
            corresponding modelID
          type: array
          items:
            $ref: '#/components/schemas/SupportedVendorModelMapping'
        supportedProfile:
          deprecated: true
          description: |2
            Deprecated as of SMS API 3.0, use *StorageArray.supportedProfile*.
            
            List of supported profiles
          type: array
          items:
            type: string
        supportedProviderProfile:
          description: |2
            List of supported profiles at provider level.
            
            Must be one of the string
            values from *ProviderProfile_enum*.
          type: array
          items:
            type: string
        relatedStorageArray:
          description: |2
            List containing mapping between storage arrays reported by the provider
            and information such as whether the provider is considered active for them.
          type: array
          items:
            $ref: '#/components/schemas/RelatedStorageArray'
        providerId:
          description: |2
            Provider identifier reported by the provider which is unique within
            the provider namespace.
          type: string
        certificateExpiryDate:
          description: |2
            Provider certificate expiry date.
          type: string
        certificateStatus:
          description: |2
            Provider certificate status
            This field holds values from *VasaProviderCertificateStatus_enum*
          type: string
        serviceLocation:
          description: |2
            Service location for the VASA endpoint that SMS is using
            to communicate with the provider.
          type: string
        needsExplicitActivation:
          description: |2
            Indicates the type of deployment supported by the provider.
            
            If true, it is an active/passive deployment and the provider needs to be
            activated explicitly using activateProviderEx() VASA API.
            If false, it is an active/active deployment and provider does not need any
            explicit activation to respond to VASA calls.
          type: boolean
        maxBatchSize:
          description: |2
            Maximum number of elements in batch APIs that the VASA Provider can support.
            
            This value is common to all batch APIs supported by the provider. However,
            for each specific API, the provider may still throw or return *TooMany*
            fault in which a different value of maxBatchSize can be specified.
            If the value is not specified (zero) or invalid (negative), client will
            assume there's no common limit for the number of elements that can be
            handled in all batch APIs.
          type: integer
          format: int64
        retainVasaProviderCertificate:
          description: |2
            Indicate whether the provider wants to retain its certificate after bootstrapping.
            
            If true, SMS will not provision a VMCA signed certificate for the provider
            and all certificate life cycle management workflows are disabled for this provider certificate.
            If false, SMS will provision a VMCA signed certificate for the provider and
            all certificate life cycle management workflows are enabled for this provider certificate.
          type: boolean
        arrayIndependentProvider:
          description: |2
            Indicates if this provider is independent of arrays.
            
            Default value for this flag is false, which means this provider supports
            arrays. Arrays will be queried for this provider during sync. If this flag
            is set to true, arrays will not be synced for this provider and array
            related API will not be invoked on this provider.
          type: boolean
        type:
          description: |2
            Type of this VASA provider.
            
            This field will be equal to one of the values of *VpType_enum*.
          type: string
        category:
          description: |2
            This field indicates the category of the provider and will be equal to one of the values of
            *VpCategory_enum*.
          type: string
        priority:
          description: |2
            Priority level of the provider within a VASA HA group.
            
            For a stand-alone
            provider which does not participate in VASA HA, this field will be ignored.
            
            The priority value is an integer with valid range from 0 to 255.
          type: integer
          format: int32
        failoverGroupId:
          description: |2
            Unique identifier of a VASA HA group.
            
            Providers should report this
            identifier to utilize HA feature supported by vSphere. Different providers
            reporting the same <code>failoverGroupId</code> will be treated as an HA
            group. Failover/failback will be done within one group.
          type: string
      required:
        - url
      allOf:
        - $ref: '#/components/schemas/SmsProviderInfo'

    ArrayOfVasaProviderInfo:
      type: object
      description: |2
        A boxed array of *VasaProviderInfo*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VasaProviderInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    RelatedStorageArray:
      type: object
      description: |2
        Indicates whether the provider has been marked as active for the given array
        for the session context.
        
        SMS uses *StorageArray.priority* value to mark a provider
        as active among the ones that are registered with SMS and manage this array.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        arrayId:
          description: |2
            *StorageArray.uuid* of StorageArray
          type: string
        active:
          description: |2
            This field indicates whether the provider is currently serving data for the StorageArray
          type: boolean
        manageable:
          description: |2
            Manageability status of StorageArray on VASA provider, if true it is manageable.
          type: boolean
        priority:
          deprecated: true
          description: |2
            Deprecated as of SMS API 6.0, replaced by *VasaProviderInfo.priority*.
            
            *StorageArray.priority* of StorageArray
            For VASA 1.0 providers, this field is set to -1.
          type: integer
          format: int32
      required:
        - arrayId
        - active
        - manageable
        - priority
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfRelatedStorageArray:
      type: object
      description: |2
        A boxed array of *RelatedStorageArray*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/RelatedStorageArray'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    SupportedVendorModelMapping:
      type: object
      description: |2
        Mapping between the supported vendorID and corresponding
        modelID
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        vendorId:
          description: |2
            SCSI Vendor ID
          type: string
        modelId:
          description: |2
            SCSI Model ID
          type: string
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfSupportedVendorModelMapping:
      type: object
      description: |2
        A boxed array of *SupportedVendorModelMapping*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/SupportedVendorModelMapping'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VasaProviderSpec:
      type: object
      description: |2
        VASA(vStorage APIs for Storage Awareness) provider
        specification
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        username:
          description: |2
            Username
            The maximum length of the username is 255 characters.
          type: string
        password:
          description: |2
            Password
            The maximum length of the password is 255 characters.
          type: string
          format: password
        url:
          description: |2
            URL
          type: string
        certificate:
          description: |2
            Certificate
          type: string
      required:
        - username
        - password
        - url
      allOf:
        - $ref: '#/components/schemas/SmsProviderSpec'

    ArrayOfVasaProviderSpec:
      type: object
      description: |2
        A boxed array of *VasaProviderSpec*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VasaProviderSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    BackingConfig:
      type: object
      description: |2
        This data object represents SDRS related data associated with block device or file system.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        thinProvisionBackingIdentifier:
          description: |2
            Identifier for the backing pool for thin provisioning
          type: string
        deduplicationBackingIdentifier:
          description: |2
            Identifier for the backing pool for deduplication
          type: string
        autoTieringEnabled:
          description: |2
            Flag to indicate whether auto-tiering optimizations are active
          type: boolean
        deduplicationEfficiency:
          description: |2
            Aggregate indication of space savings efficiency in the shared
            deduplication pool.
            
            The value is between 0 and 100, higher values
            indicating better efficiency.
          type: integer
          format: int64
        performanceOptimizationInterval:
          description: |2
            Frequency in seconds at which interval auto-tiering optimizations
            are applied.
            
            A value of 0 indicates continuous optimization.
          type: integer
          format: int64
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfBackingConfig:
      type: object
      description: |2
        A boxed array of *BackingConfig*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/BackingConfig'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    BackingStoragePool:
      type: object
      description: |2
        This data object represents the backing storage pool information of block device or file system.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        uuid:
          description: |2
            Unique identifier
          type: string
        type:
          type: string
        capacityInMB:
          description: |2
            Upper bound of the available capacity in the backing storage pool.
          type: integer
          format: int64
        usedSpaceInMB:
          description: |2
            Aggregate used space in the backing storage pool.
          type: integer
          format: int64
      required:
        - uuid
        - type
        - capacityInMB
        - usedSpaceInMB
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfBackingStoragePool:
      type: object
      description: |2
        A boxed array of *BackingStoragePool*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/BackingStoragePool'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DatastoreBackingPoolMapping:
      type: object
      description: |2
        This data object represents the result of queryDatastoreBackingPoolMapping API.
        
        More than one datastore can map to the same set of BackingStoragePool.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        datastore:
          description: |2
            Refers instances of *Datastore*.
          type: array
          items:
            $ref: '#/components/schemas/ManagedObjectReference'
        backingStoragePool:
          type: array
          items:
            $ref: '#/components/schemas/BackingStoragePool'
      required:
        - datastore
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfDatastoreBackingPoolMapping:
      type: object
      description: |2
        A boxed array of *DatastoreBackingPoolMapping*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DatastoreBackingPoolMapping'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DatastorePair:
      type: object
      deprecated: true
      description: |2
        Deprecated as of SMS API 5.0.
        
        Datastore pair that is returned as a result of queryDrsMigrationCapabilityForPerformanceEx API.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        datastore1:
          description: |2
            Refers instance of *Datastore*.
          $ref: '#/components/schemas/ManagedObjectReference'
        datastore2:
          description: |2
            Refers instance of *Datastore*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - datastore1
        - datastore2
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfDatastorePair:
      type: object
      description: |2
        A boxed array of *DatastorePair*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DatastorePair'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DrsMigrationCapabilityResult:
      type: object
      deprecated: true
      description: |2
        Deprecated as of SMS API 5.0.
        
        This data object represents the result of queryDrsMigrationCapabilityForPerformanceEx API.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        recommendedDatastorePair:
          type: array
          items:
            $ref: '#/components/schemas/DatastorePair'
        nonRecommendedDatastorePair:
          type: array
          items:
            $ref: '#/components/schemas/DatastorePair'
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfDrsMigrationCapabilityResult:
      type: object
      description: |2
        A boxed array of *DrsMigrationCapabilityResult*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DrsMigrationCapabilityResult'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    FaultDomainProviderMapping:
      type: object
      description: |2
        This mapping will be set in InactiveProvider fault to notify clients
        the current active provider for the specified fault domains.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        activeProvider:
          description: |2
            Active provider managing the fault domains
            
            Refers instance of *SmsProvider*.
          $ref: '#/components/schemas/ManagedObjectReference'
        faultDomainId:
          description: |2
            Fault domains being managed by the provider
          type: array
          items:
            $ref: '#/components/schemas/FaultDomainId'
      required:
        - activeProvider
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfFaultDomainProviderMapping:
      type: object
      description: |2
        A boxed array of *FaultDomainProviderMapping*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/FaultDomainProviderMapping'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    FcStoragePort:
      type: object
      description: |2
        This data object represents the FC storage port.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        portWwn:
          description: |2
            World Wide Name for the Port
          type: string
        nodeWwn:
          description: |2
            World Wide Name for the Node
          type: string
      required:
        - portWwn
        - nodeWwn
      allOf:
        - $ref: '#/components/schemas/StoragePort'

    ArrayOfFcStoragePort:
      type: object
      description: |2
        A boxed array of *FcStoragePort*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/FcStoragePort'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    FcoeStoragePort:
      type: object
      description: |2
        This data object represents the FCoE storage port.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        portWwn:
          description: |2
            World Wide Name for the Port
          type: string
        nodeWwn:
          description: |2
            World Wide Name for the Node
          type: string
      required:
        - portWwn
        - nodeWwn
      allOf:
        - $ref: '#/components/schemas/StoragePort'

    ArrayOfFcoeStoragePort:
      type: object
      description: |2
        A boxed array of *FcoeStoragePort*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/FcoeStoragePort'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    StorageFileSystemInfo:
      type: object
      description: |2
        This data object represents information about the storage
        file-system.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        fileServerName:
          description: |2
            Server Name
          type: string
        fileSystemPath:
          description: |2
            File Path
          type: string
        ipAddress:
          description: |2
            IP address
          type: string
      required:
        - fileServerName
        - fileSystemPath
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfStorageFileSystemInfo:
      type: object
      description: |2
        A boxed array of *StorageFileSystemInfo*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/StorageFileSystemInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    IscsiStoragePort:
      type: object
      description: |2
        This data object represents the iSCSI storage port.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        identifier:
          description: |2
            IQN or EQI identifier
          type: string
      required:
        - identifier
      allOf:
        - $ref: '#/components/schemas/StoragePort'

    ArrayOfIscsiStoragePort:
      type: object
      description: |2
        A boxed array of *IscsiStoragePort*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/IscsiStoragePort'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    LunHbaAssociation:
      type: object
      description: |2
        This data object represents the lun, HBA association
        for synchronous replication.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        canonicalName:
          type: string
        hba:
          type: array
          items:
            $ref: '#/components/schemas/HostHostBusAdapter'
      required:
        - canonicalName
        - hba
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfLunHbaAssociation:
      type: object
      description: |2
        A boxed array of *LunHbaAssociation*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/LunHbaAssociation'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    NameValuePair:
      type: object
      description: |2
        This data object represents a name value pair.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        parameterName:
          description: |2
            Name of the paramter
          type: string
        parameterValue:
          description: |2
            Value of the parameter
          type: string
      required:
        - parameterName
        - parameterValue
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfNameValuePair:
      type: object
      description: |2
        A boxed array of *NameValuePair*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/NameValuePair'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    StorageAlarm:
      type: object
      description: |2
        This data object represents the storage alarm.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        alarmId:
          description: |2
            Monotonically increasing sequence number which
            VP will maintain.
          type: integer
          format: int64
        alarmType:
          description: |2
            The type of Alarm.
            
            Must be one of the string values from
            *AlarmType_enum*
            Note that for VMODL VP implemenation this field must be populated with one
            of the values from `vasa.data.notification.AlarmType`
          type: string
        containerId:
          description: |2
            Container identifier
          type: string
        objectId:
          description: |2
            The unique identifier of the object impacted by the Alarm.
            
            From VASA version 3 onwards, a non-null *StorageAlarm.alarmObject*
            will override this member.
            This field is made optional from VASA3. Either this or
            *StorageAlarm.alarmObject* must be set.
          type: string
        objectType:
          description: |2
            The type of object impacted by the Alarm.
            
            Must be one of the string values
            from *SmsEntityType_enum*
            Note that for VMODL VP implemenation this field must be populated with one
            of the values from `vasa.data.notification.EntityType`
          type: string
        status:
          description: |2
            Current status of the object.
            
            Must be one of the string values from
            *SmsAlarmStatus_enum*
          type: string
        alarmTimeStamp:
          description: |2
            Time-stamp when the alarm occurred in VP context
          type: string
          format: date-time
        messageId:
          description: |2
            Pre-defined message for system-defined event
          type: string
        parameterList:
          description: |2
            List of parameters (name/value) to be passed as input for message
          type: array
          items:
            $ref: '#/components/schemas/NameValuePair'
        alarmObject:
          description: |2
            The ID of the object on which the alarm is raised; this is an object,
            since ID's may not always be strings.
            
            vSphere will first use
            *StorageAlarm.alarmObject* if set, and if not uses *StorageAlarm.objectId*.
          $ref: '#/components/schemas/Any'
      required:
        - alarmId
        - alarmType
        - objectType
        - status
        - alarmTimeStamp
        - messageId
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfStorageAlarm:
      type: object
      description: |2
        A boxed array of *StorageAlarm*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/StorageAlarm'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    StorageArray:
      type: object
      description: |2
        This data object represents the storage array.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        name:
          description: |2
            Name
          type: string
        uuid:
          description: |2
            Unique identifier
          type: string
        vendorId:
          description: |2
            Storage array Vendor Id
          type: string
        modelId:
          description: |2
            Model Id
          type: string
        firmware:
          description: |2
            Storage array firmware
          type: string
        alternateName:
          description: |2
            List of alternate storage array names
          type: array
          items:
            type: string
        supportedBlockInterface:
          description: |2
            Supported block-device interfaces
          type: array
          items:
            type: string
        supportedFileSystemInterface:
          description: |2
            Supported file-system interfaces
          type: array
          items:
            type: string
        supportedProfile:
          description: |2
            List of supported profiles
          type: array
          items:
            type: string
        priority:
          deprecated: true
          description: |2
            Deprecated as of SMS API 6.0, replaced by *VasaProviderInfo.priority*.
            
            Priority level of the provider for the given array within the session context.
            
            SMS will use this value to pick a provider among the ones that are registered
            with SMS and manage this array. Once the provider is chosen, SMS will communicate
            with it to get the data related to this array.
            Valid range: 0 to 255.
          type: integer
          format: int32
        discoverySvc:
          description: |2
            Required for NVMe-oF arrays and optional otherwise.
            
            Transport information to address the array's discovery service.
          type: array
          items:
            $ref: '#/components/schemas/VASAStorageArrayDiscoverySvcInfo'
      required:
        - name
        - uuid
        - vendorId
        - modelId
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfStorageArray:
      type: object
      description: |2
        A boxed array of *StorageArray*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/StorageArray'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    StorageCapability:
      type: object
      description: |2
        This data object represents the storage capability.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        uuid:
          type: string
        name:
          type: string
        description:
          type: string
      required:
        - uuid
        - name
        - description
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfStorageCapability:
      type: object
      description: |2
        A boxed array of *StorageCapability*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/StorageCapability'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    StorageContainer:
      type: object
      description: |2
        This data object represents the storage container.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        uuid:
          description: |2
            Unique identifier
          type: string
        name:
          description: |2
            Name of the container
          type: string
        maxVvolSizeInMB:
          description: |2
            Maximum allowed capacity of the Virtual Volume in MBs
          type: integer
          format: int64
        providerId:
          description: |2
            *SmsProviderInfo.uid* for providers that reports the storage container.
          type: array
          items:
            type: string
        arrayId:
          type: array
          items:
            type: string
        vvolContainerType:
          description: |2
            Represents type of VVOL container, the supported values are listed in
            *StorageContainerVvolContainerTypeEnum_enum*.
            
            If the storage array is not capable of supporting mixed PEs for a storage container,
            the VVOL VASA provider sets this property to the supported endpoint type
          type: string
        stretched:
          description: |2
            Indicates if this storage container is stretched
          type: boolean
      required:
        - uuid
        - name
        - maxVvolSizeInMB
        - providerId
        - arrayId
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfStorageContainer:
      type: object
      description: |2
        A boxed array of *StorageContainer*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/StorageContainer'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    StorageContainerResult:
      type: object
      description: |2
        This data object represents information about storage containers and related providers.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        storageContainer:
          description: |2
            *StorageContainer* objects
          type: array
          items:
            $ref: '#/components/schemas/StorageContainer'
        providerInfo:
          description: |2
            *SmsProviderInfo* corresponding to providers that
            report these storage containers
          type: array
          items:
            $ref: '#/components/schemas/SmsProviderInfo'
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfStorageContainerResult:
      type: object
      description: |2
        A boxed array of *StorageContainerResult*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/StorageContainerResult'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    StorageContainerSpec:
      type: object
      description: |2
        This data object represents the specification to query
        storage containers retrieved from VASA providers.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        containerId:
          type: array
          items:
            type: string
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfStorageContainerSpec:
      type: object
      description: |2
        A boxed array of *StorageContainerSpec*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/StorageContainerSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    StorageFileSystem:
      type: object
      description: |2
        This data object represents the storage file-system.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        uuid:
          description: |2
            Unique identifier
          type: string
        info:
          description: |2
            Information about the file system
          type: array
          items:
            $ref: '#/components/schemas/StorageFileSystemInfo'
        nativeSnapshotSupported:
          type: boolean
        thinProvisioningStatus:
          type: string
        type:
          type: string
        version:
          type: string
        backingConfig:
          description: |2
            Backing config information
          $ref: '#/components/schemas/BackingConfig'
      required:
        - uuid
        - info
        - nativeSnapshotSupported
        - thinProvisioningStatus
        - type
        - version
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfStorageFileSystem:
      type: object
      description: |2
        A boxed array of *StorageFileSystem*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/StorageFileSystem'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    StorageLun:
      type: object
      description: |2
        This data object represents the storage lun.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        uuid:
          description: |2
            Unique Indentfier
          type: string
        vSphereLunIdentifier:
          description: |2
            Identifer reported by vSphere(ESX) for this LUN
          type: string
        vendorDisplayName:
          description: |2
            Display Name which appears in storage array management
            console
          type: string
        capacityInMB:
          description: |2
            Capacity In MB
          type: integer
          format: int64
        usedSpaceInMB:
          description: |2
            Used space in MB for a thin provisioned LUN
          type: integer
          format: int64
        lunThinProvisioned:
          description: |2
            Indicates whether the LUN is thin provisioned
          type: boolean
        alternateIdentifier:
          description: |2
            Alternate identifiers associated with the LUN
          type: array
          items:
            type: string
        drsManagementPermitted:
          description: |2
            Indicates whether Storage DRS is permitted to manage
            performance between this LUN and other LUNs from the same
            array.
          type: boolean
        thinProvisioningStatus:
          type: string
        backingConfig:
          description: |2
            Backing config information
          $ref: '#/components/schemas/BackingConfig'
      required:
        - uuid
        - vSphereLunIdentifier
        - vendorDisplayName
        - capacityInMB
        - usedSpaceInMB
        - lunThinProvisioned
        - drsManagementPermitted
        - thinProvisioningStatus
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfStorageLun:
      type: object
      description: |2
        A boxed array of *StorageLun*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/StorageLun'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    StoragePort:
      type: object
      description: |2
        This data object represents the storage port.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        uuid:
          description: |2
            Unique identifier
          type: string
        type:
          description: |2
            Storage Port Type
          type: string
        alternateName:
          description: |2
            Other identifiers which can help identify storage port
          type: array
          items:
            type: string
      required:
        - uuid
        - type
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfStoragePort:
      type: object
      description: |2
        A boxed array of *StoragePort*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/StoragePort'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    StorageProcessor:
      type: object
      description: |2
        This data object represents the storage processor.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        uuid:
          description: |2
            Unique Identifier
          type: string
        alternateIdentifer:
          description: |2
            List of alternate identifiers
          type: array
          items:
            type: string
      required:
        - uuid
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfStorageProcessor:
      type: object
      description: |2
        A boxed array of *StorageProcessor*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/StorageProcessor'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DeviceId:
      type: object
      description: |2
        Base class that represents a replicated device.
        
        This structure may be used only with operations rendered under `/sms`.
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfDeviceId:
      type: object
      description: |2
        A boxed array of *DeviceId*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DeviceId'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    FailoverParam:
      type: object
      description: |2
        Input to the failover or testFailover methods.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        isPlanned:
          description: |2
            Whether the failover is a planned failover or not.
            
            Note that testFailover
            can also be executed in an unplanned mode. When this flag is
            set to false, the recovery VASA provider must not try to connect
            to the primary VASA provider during the failover.
          type: boolean
        checkOnly:
          description: |2
            Do not execute the (test) failover but check if the configuration
            is correct to execute the (test) failover.
            
            If set to <code>true</code>, the (test)failover result is an array where
            each element is either *GroupOperationResult* or *GroupErrorResult*.
            
            If set to <code>false</code>, the (test)failover result is an array where
            each element is either *FailoverSuccessResult* or *GroupErrorResult*.
          type: boolean
        replicationGroupsToFailover:
          description: |2
            The replication groups to failover.
            
            It is OK for the VASA
            provider to successfully failover only some groups. The
            groups that did not complete will be retried.
          type: array
          items:
            $ref: '#/components/schemas/ReplicationGroupData'
        policyAssociations:
          description: |2
            Storage policies for the devices after (test)failover.
            
            Failover should be done even if policies cannot be associated.
            Test failover, however, should fail if policies cannot be associated.
            
            If policies cannot be associated, VASA provider can notify the client by
            doing either or both of these:
            1\. Set the warning in the result for a replication group to indicate
            such a failure to set the policy.
            2\. Raise a compliance alarm after the failover is done.
            
            If not specified, the default policies are used. Callers may reassign
            policy later.
          type: array
          items:
            $ref: '#/components/schemas/PolicyAssociation'
      required:
        - isPlanned
        - checkOnly
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfFailoverParam:
      type: object
      description: |2
        A boxed array of *FailoverParam*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/FailoverParam'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PolicyAssociation:
      type: object
      description: |2
        Describes the policy association object.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        id:
          description: |2
            The source device id.
            
            The corresponding recovered device
            gets the specified <code>policyId</code>.
          $ref: '#/components/schemas/DeviceId'
        policyId:
          description: |2
            Policy id.
          type: string
        datastore:
          description: |2
            Datastore object.
            
            Refers instance of *Datastore*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - id
        - policyId
        - datastore
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfPolicyAssociation:
      type: object
      description: |2
        A boxed array of *PolicyAssociation*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PolicyAssociation'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ReplicationGroupData:
      type: object
      description: |2
        Describes one Replication Group's data.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        groupId:
          description: |2
            Replication group to failover.
          $ref: '#/components/schemas/ReplicationGroupId'
        pitId:
          description: |2
            The PIT that should be used for (test)Failover.
            
            Use the latest if not specified.
          $ref: '#/components/schemas/PointInTimeReplicaId'
      required:
        - groupId
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfReplicationGroupData:
      type: object
      description: |2
        A boxed array of *ReplicationGroupData*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ReplicationGroupData'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    FailoverSuccessResult:
      type: object
      description: |2
        Results of a successful failover operation.
        
        The target fault domain Id, and the device group id are inherited.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        newState:
          description: |2
            Some replicators may automatically reverse replication on failover.
            
            Such
            replicators must move the replication status to
            *SOURCE*
            In other cases, it can remain as *FAILEDOVER*.
          type: string
        pitId:
          description: |2
            Id of the Point in Time snapshot used during failover.
            
            If not present,
            latest PIT was used.
          $ref: '#/components/schemas/PointInTimeReplicaId'
        pitIdBeforeFailover:
          description: |2
            Optional id of the Point in Time snapshot that was automatically created before
            failing over.
            
            This is recommended so users can revert back to this
            snapshot to avoid data loss. This can be removed after the reverse
            replication call succeeds.
          $ref: '#/components/schemas/PointInTimeReplicaId'
        recoveredDeviceInfo:
          description: |2
            Recovered Devices.
            
            This is optional because in some corner cases the
            replication groups on the target site may not have any virtual volumes.
          type: array
          items:
            $ref: '#/components/schemas/RecoveredDevice'
        timeStamp:
          description: |2
            Time stamp of recovery.
          type: string
          format: date-time
      required:
        - newState
      allOf:
        - $ref: '#/components/schemas/GroupOperationResult'

    ArrayOfFailoverSuccessResult:
      type: object
      description: |2
        A boxed array of *FailoverSuccessResult*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/FailoverSuccessResult'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    RecoveredDevice:
      type: object
      description: |2
        Represents the device after the failover.
        
        Even though many of the fields in this structure are
        marked optional, it is important for VASA provider to
        make sure that the recovery of the entire ReplicationGroup succeeds
        atomically. The only valid scenario when there is a device specific
        recovery failure is when there is no valid replica for the Virtual Volume
        (e.g. Virtual Volume was just added to the ReplicationGroup).
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        targetDeviceId:
          description: |2
            Identifier of the device which was the target of replication before
            failover.
          $ref: '#/components/schemas/ReplicaId'
        recoveredDeviceId:
          description: |2
            Identifier of the target device after test or failover.
          $ref: '#/components/schemas/DeviceId'
        sourceDeviceId:
          description: |2
            Identifier of the source of the replication data before the failover
            stopped the replication.
          $ref: '#/components/schemas/DeviceId'
        info:
          description: |2
            Informational messages.
          type: array
          items:
            type: string
        datastore:
          description: |2
            Datastore for the newly surfaced device.
            
            Refers instance of *Datastore*.
          $ref: '#/components/schemas/ManagedObjectReference'
        recoveredDiskInfo:
          description: |2
            Only to be filled in if the *RecoveredDevice.recoveredDeviceId* is *VirtualMachineId*.
          type: array
          items:
            $ref: '#/components/schemas/RecoveredDiskInfo'
        error:
          description: |2
            Virtual Volume specific recovery error.
            
            This should be rare.
          $ref: '#/components/schemas/MethodFault'
        warnings:
          description: |2
            Warnings.
          type: array
          items:
            $ref: '#/components/schemas/MethodFault'
      required:
        - sourceDeviceId
        - datastore
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfRecoveredDevice:
      type: object
      description: |2
        A boxed array of *RecoveredDevice*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/RecoveredDevice'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    RecoveredDiskInfo:
      type: object
      description: |2
        Describes the recovered disks for a given virtual machine.
        
        Only applicable for VAIO based replicators. Upon recovery,
        all the replicated disks must be attached to the virtual machine,
        i.e. the VMX file must refer to the correct file paths. Device
        keys must be preserved and non-replicated disks can refer to
        non-existent file names.
        Array based replicators can ignore this class.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        deviceKey:
          description: |2
            Virtual disk key.
            
            Note that disk device
            keys must not change after recovery - in other words, the device
            key is the same on both the source and target sites.
            
            For example, if a VMDK d1 is being replicated to d1', and d1 is attached as device
            2001 to the source VM, the recovered VM should have d1' attached
            as 2001.
          type: integer
          format: int32
        dsUrl:
          description: |2
            URL of the datastore that disk was recovered to.
          type: string
        diskPath:
          description: |2
            Full pathname of the disk.
          type: string
      required:
        - deviceKey
        - dsUrl
        - diskPath
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfRecoveredDiskInfo:
      type: object
      description: |2
        A boxed array of *RecoveredDiskInfo*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/RecoveredDiskInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    FaultDomainInfo:
      type: object
      description: |2
        Information about a Fault Domain.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        name:
          description: |2
            Name of the fault domain, if not specified, the id will be used in place
            of the name.
            
            Name need not be unique.
          type: string
        description:
          description: |2
            Description - could be a localized string.
          type: string
        storageArrayId:
          description: |2
            Identifier of the Storage Array that this Fault Domain belongs to.
            
            A Fault
            Domain and all its children should report same *FaultDomainInfo.storageArrayId*. It
            can be left unspecified. If not specified, vSphere will not support High
            Availability feature for this Fault Domain. When specified, vSphere will
            treat the the currently active VASA provider for *StorageArray* as
            the active VASA provider for this Fault Domain and its children.
            Changing High Availability support choice for a Fault Domain
            intermittently, by sometimes specifying the storageArrayId and sometimes
            not, will cause unexpected result and might cause VP to be in 'syncError'
            state in vSphere.
          type: string
        children:
          description: |2
            List of children, the entries in the array should always be
            *FaultDomainId* and not *FaultDomainInfo*.
            
            The 2016 vSphere release will not support nested Fault Domains. The field
            FaultDomainInfo#children is ignored by vSphere 2016 release.
          type: array
          items:
            $ref: '#/components/schemas/FaultDomainId'
        provider:
          description: |2
            VASA provider that is actively managing this fault domain
            
            Refers instance of *SmsProvider*.
          $ref: '#/components/schemas/ManagedObjectReference'
      allOf:
        - $ref: '#/components/schemas/FaultDomainId'

    ArrayOfFaultDomainInfo:
      type: object
      description: |2
        A boxed array of *FaultDomainInfo*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/FaultDomainInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    GroupErrorResult:
      type: object
      description: |2
        Error result.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        error:
          description: |2
            Error array, must contain at least one entry.
          type: array
          items:
            $ref: '#/components/schemas/MethodFault'
      required:
        - error
      allOf:
        - $ref: '#/components/schemas/GroupOperationResult'

    ArrayOfGroupErrorResult:
      type: object
      description: |2
        A boxed array of *GroupErrorResult*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/GroupErrorResult'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    GroupInfo:
      type: object
      description: |2
        Replication group information.
        
        May be either a *SourceGroupInfo* or
        *TargetGroupInfo*.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        groupId:
          description: |2
            Identifier of the group + fault domain id.
          $ref: '#/components/schemas/ReplicationGroupId'
      required:
        - groupId
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfGroupInfo:
      type: object
      description: |2
        A boxed array of *GroupInfo*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/GroupInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    GroupOperationResult:
      type: object
      description: |2
        The base class for any operation on a replication group.
        
        Usually, there is an
        operation specific &lt;Operation&gt;SuccessResult
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        groupId:
          description: |2
            Replication group Id.
          $ref: '#/components/schemas/ReplicationGroupId'
        warning:
          type: array
          items:
            $ref: '#/components/schemas/MethodFault'
      required:
        - groupId
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfGroupOperationResult:
      type: object
      description: |2
        A boxed array of *GroupOperationResult*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/GroupOperationResult'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PointInTimeReplicaId:
      type: object
      description: |2
        Identity of the Point in Time Replica object.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        id:
          description: |2
            ID of the Point In Time replica.
          type: string
      required:
        - id
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfPointInTimeReplicaId:
      type: object
      description: |2
        A boxed array of *PointInTimeReplicaId*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PointInTimeReplicaId'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PromoteParam:
      type: object
      description: |2
        Input to the promoteReplicationGroup method.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        isPlanned:
          description: |2
            Specifies whether the promote operation is a planned one.
            
            When this flag is set to false, the recovery VASA provider must not
            try to connect to the primary VASA provider during promote.
          type: boolean
        replicationGroupsToPromote:
          description: |2
            The replication groups to promote.
            
            It is legal for the VASA
            provider to successfully promote only some groups. The
            groups that did not succeed will be retried.
            
            The identifiers of the Virtual Volumes do not change after the
            promote operation.
          type: array
          items:
            $ref: '#/components/schemas/ReplicationGroupId'
      required:
        - isPlanned
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfPromoteParam:
      type: object
      description: |2
        A boxed array of *PromoteParam*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PromoteParam'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    QueryPointInTimeReplicaParam:
      type: object
      description: |2
        Describes the search criteria for the PiT query.
        
        If none of the fields
        is set, or if the number of PiT replicas is too large, VASA provider can
        return *QueryPointInTimeReplicaSummaryResult*.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        replicaTimeQueryParam:
          description: |2
            Specifies the replica time span that vSphere is interested in.
          $ref: '#/components/schemas/ReplicaQueryIntervalParam'
        pitName:
          description: |2
            Only the replicas that match the given name are requested.
            
            A regexp according to http://www.w3.org/TR/xmlschema-2/#regexs.
          type: string
        tags:
          description: |2
            Only the replicas with tags that match the given tag(s) are requested.
            
            Each entry may be a regexp according to http://www.w3.org/TR/xmlschema-2/#regexs.
          type: array
          items:
            type: string
        preferDetails:
          description: |2
            This field is hint for the preferred type of return results.
            
            It can be either true for *QueryPointInTimeReplicaSuccessResult* or
            false for *QueryPointInTimeReplicaSummaryResult*.
            If not set, VP may choose the appropriate type, as described in
            <code>ReplicaQueryIntervalParam</code>.
          type: boolean
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfQueryPointInTimeReplicaParam:
      type: object
      description: |2
        A boxed array of *QueryPointInTimeReplicaParam*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/QueryPointInTimeReplicaParam'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ReplicaQueryIntervalParam:
      type: object
      description: |2
        Defines the parameters for a Point In Time replica (PiT) query.
        
        vSphere will not set all the three fields.
        
        In other words, the following combinations of fields are allowed:
        - All the three fields are omitted.
        - *ReplicaQueryIntervalParam.fromDate* and *ReplicaQueryIntervalParam.toDate* are set.
        - *ReplicaQueryIntervalParam.fromDate* and *ReplicaQueryIntervalParam.number* are set.
        - *ReplicaQueryIntervalParam.toDate* and *ReplicaQueryIntervalParam.number* are set.
          
        When all the fields are omitted, VASA provider should return
        *QueryPointInTimeReplicaSummaryResult*.
        But, returned result can be either *QueryPointInTimeReplicaSuccessResult*
        or *QueryPointInTimeReplicaSummaryResult* based on value i.e true or false
        respectively for field *QueryPointInTimeReplicaParam.preferDetails*.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        fromDate:
          description: |2
            Return all PiTs including and later than <code>fromDate</code>.
          type: string
          format: date-time
        toDate:
          description: |2
            Return all PiTs earlier than <code>toDate</code>.
          type: string
          format: date-time
        number:
          description: |2
            Return information for only <code>number</code> entries.
          type: integer
          format: int32
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfReplicaQueryIntervalParam:
      type: object
      description: |2
        A boxed array of *ReplicaQueryIntervalParam*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ReplicaQueryIntervalParam'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    QueryPointInTimeReplicaSuccessResult:
      type: object
      description: |2
        Return type for successful
        *VasaProvider.QueryPointInTimeReplica*
        operation.
        
        If the VASA provider decides that there are too many to return,
        it could set the result of some of the groups to *TooMany*
        fault or *QueryPointInTimeReplicaSummaryResult*.
        
        vSphere will then query for these groups separately.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        replicaInfo:
          description: |2
            Information about the available replicas.
          type: array
          items:
            $ref: '#/components/schemas/PointInTimeReplicaInfo'
      allOf:
        - $ref: '#/components/schemas/GroupOperationResult'

    ArrayOfQueryPointInTimeReplicaSuccessResult:
      type: object
      description: |2
        A boxed array of *QueryPointInTimeReplicaSuccessResult*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/QueryPointInTimeReplicaSuccessResult'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PointInTimeReplicaInfo:
      type: object
      description: |2
        This structure may be used only with operations rendered under `/sms`.
      properties:
        id:
          description: |2
            Id of the PIT replica.
            
            Note that this id is always used
            in combination with the *ReplicationGroupId*, hence must be
            unique to the *ReplicationGroupId*.
          $ref: '#/components/schemas/PointInTimeReplicaId'
        pitName:
          description: |2
            Name of the PIT replica.
            
            This may be a localized string
            in a language as chosen by the VASA provider.
          type: string
        timeStamp:
          description: |2
            Time when the snapshot was taken.
            
            Time stamps are maintained by
            the Replication provider, note that this carries time zone information
            as well.
          type: string
          format: date-time
        tags:
          description: |2
            VASA provider managed tags associated with the replica.
          type: array
          items:
            type: string
      required:
        - id
        - pitName
        - timeStamp
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfPointInTimeReplicaInfo:
      type: object
      description: |2
        A boxed array of *PointInTimeReplicaInfo*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PointInTimeReplicaInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    QueryPointInTimeReplicaSummaryResult:
      type: object
      description: |2
        Summary of the available replicas.
        
        Mostly useful for CDP type replicators.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        intervalResults:
          description: |2
            A series of query results.
            
            No special ordering is assumed by vSphere.
          type: array
          items:
            $ref: '#/components/schemas/ReplicaIntervalQueryResult'
      allOf:
        - $ref: '#/components/schemas/GroupOperationResult'

    ArrayOfQueryPointInTimeReplicaSummaryResult:
      type: object
      description: |2
        A boxed array of *QueryPointInTimeReplicaSummaryResult*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/QueryPointInTimeReplicaSummaryResult'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ReplicaIntervalQueryResult:
      type: object
      description: |2
        Summarizes the collection of replicas in one time interval.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        fromDate:
          description: |2
            Beginning of interval (inclusive).
          type: string
          format: date-time
        toDate:
          description: |2
            End of interval (exclusive).
          type: string
          format: date-time
        number:
          description: |2
            Number of Point in Time replicas available for recovery.
            
            TODO: Do we want to have also ask for number of 'special'
            PiTs e.g. those that are consistent?
          type: integer
          format: int32
      required:
        - fromDate
        - toDate
        - number
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfReplicaIntervalQueryResult:
      type: object
      description: |2
        A boxed array of *ReplicaIntervalQueryResult*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ReplicaIntervalQueryResult'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    QueryReplicationGroupSuccessResult:
      type: object
      description: |2
        Information about the replication groups.
        
        Information about both the source
        groups and the target groups is returned.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        rgInfo:
          description: |2
            Information about the replication group.
            
            May be either
            *SourceGroupInfo* or *TargetGroupInfo*.
          $ref: '#/components/schemas/GroupInfo'
      required:
        - rgInfo
      allOf:
        - $ref: '#/components/schemas/GroupOperationResult'

    ArrayOfQueryReplicationGroupSuccessResult:
      type: object
      description: |2
        A boxed array of *QueryReplicationGroupSuccessResult*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/QueryReplicationGroupSuccessResult'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    QueryReplicationPeerResult:
      type: object
      description: |2
        Information about the replication peers of a VASA provider.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        sourceDomain:
          description: |2
            Source fault domain id, must correspond to an id from the input.
          $ref: '#/components/schemas/FaultDomainId'
        targetDomain:
          description: |2
            Target fault domains for the given source, fault domain ID's are globally
            unique.
            
            There can be one or more target domains for a given source.
          type: array
          items:
            $ref: '#/components/schemas/FaultDomainId'
        error:
          description: |2
            Error must be set when targetDomain field is not set.
          type: array
          items:
            $ref: '#/components/schemas/MethodFault'
        warning:
          description: |2
            Optional warning messages.
          type: array
          items:
            $ref: '#/components/schemas/MethodFault'
      required:
        - sourceDomain
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfQueryReplicationPeerResult:
      type: object
      description: |2
        A boxed array of *QueryReplicationPeerResult*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/QueryReplicationPeerResult'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    RecoveredTargetGroupMemberInfo:
      type: object
      description: |2
        Information about member virtual volumes in a ReplicationGroup
        on the target after failover or testFailoverStart.
        
        This must include information about all the vSphere managed snapshots in
        the ReplicationGroup.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        recoveredDeviceId:
          description: |2
            Identifier of the target device after test or failover.
          $ref: '#/components/schemas/DeviceId'
      allOf:
        - $ref: '#/components/schemas/TargetGroupMemberInfo'

    ArrayOfRecoveredTargetGroupMemberInfo:
      type: object
      description: |2
        A boxed array of *RecoveredTargetGroupMemberInfo*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/RecoveredTargetGroupMemberInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ReplicaId:
      type: object
      description: |2
        Identifier of the replication target device.
        
        For Virtual Volumes, this could be the same as a Virtual Volume
        Id, for VMDK's this could be an FCD uuid, or some other ID
        made up by the replicator. This identifier is opaque to vSphere and
        hence does not have any distinguishing type. This can be used
        to identify the replica without the accompanying source device id
        (though there are no such uses in the current API).
        
        Since this an opaque type, the recovered device id at
        *RecoveredTargetGroupMemberInfo.recoveredDeviceId*
        should be filled in even if the values are the same.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        id:
          type: string
      required:
        - id
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfReplicaId:
      type: object
      description: |2
        A boxed array of *ReplicaId*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ReplicaId'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ReverseReplicationSuccessResult:
      type: object
      description: |2
        Represents the result of a successful reverse replication action.
        
        The newly
        established replication relation might have a different source group ID and
        different set of target group IDs. This means that the replication topology
        will need to be discovered again by the DR orchestration programs (SRM/CAM).
        However, we assume that after the reverse replication, the new source fault
        domain id remains the same as the old (i.e. before failover) fault domain id.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        newGroupId:
          description: |2
            The replication group ID of the newly created source group.
            
            FaultDomainId
            must remain the same.
          $ref: '#/components/schemas/DeviceGroupId'
      required:
        - newGroupId
      allOf:
        - $ref: '#/components/schemas/GroupOperationResult'

    ArrayOfReverseReplicationSuccessResult:
      type: object
      description: |2
        A boxed array of *ReverseReplicationSuccessResult*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ReverseReplicationSuccessResult'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    SourceGroupInfo:
      type: object
      description: |2
        Replication group details on the source.
        
        We do not assume the same
        Replication Group id on all the sites. This is returned as answer to
        queryReplicationGroup.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        name:
          description: |2
            Name of the replication group, may be edited after creating the
            Replication Group, not unique.
            
            May be a localized string. Some vendors may
            choose to use name as the group id, to support this, vSphere will not
            allow the name to be modified - even if vSphere creates/manages the
            Replication Group.
          type: string
        description:
          description: |2
            Description the Replication Group, may be edited after creating the
            Replication Group.
            
            May be a localized string.
          type: string
        state:
          description: |2
            State of the replication group on the source.
          type: string
        replica:
          description: |2
            Information about the target Replication Groups.
          type: array
          items:
            $ref: '#/components/schemas/ReplicationTargetInfo'
        memberInfo:
          description: |2
            Information about the member virtual volumes and their replicas.
          type: array
          items:
            $ref: '#/components/schemas/SourceGroupMemberInfo'
      required:
        - state
      allOf:
        - $ref: '#/components/schemas/GroupInfo'

    ArrayOfSourceGroupInfo:
      type: object
      description: |2
        A boxed array of *SourceGroupInfo*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/SourceGroupInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ReplicationTargetInfo:
      type: object
      description: |2
        Information about each replication target.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        targetGroupId:
          description: |2
            Id of the target replication group (including the fault domain ID).
          $ref: '#/components/schemas/ReplicationGroupId'
        replicationAgreementDescription:
          description: |2
            Description of the replication agreement.
            
            This could be used to describe the characteristics of the replication
            relationship between the source and the target (e.g. RPO, Replication
            Mode, and other such properties). It is expected that VASA provider
            will localize the string before sending to vSphere.
          type: string
      required:
        - targetGroupId
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfReplicationTargetInfo:
      type: object
      description: |2
        A boxed array of *ReplicationTargetInfo*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ReplicationTargetInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    SourceGroupMemberInfo:
      type: object
      description: |2
        Represents a member virtual volume of a replication group on the source end
        of the replication arrow.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        deviceId:
          description: |2
            Identifier of the source device.
            
            May be a Virtual Volume, a Virtual Disk or a Virtual Machine
          $ref: '#/components/schemas/DeviceId'
        targetId:
          description: |2
            Target devices, key'ed by the fault domain id.
            
            TODO: It is not clear if we
            really need this information, since the target side query can return the
            target -&gt; source relation information.
          type: array
          items:
            $ref: '#/components/schemas/TargetDeviceId'
      required:
        - deviceId
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfSourceGroupMemberInfo:
      type: object
      description: |2
        A boxed array of *SourceGroupMemberInfo*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/SourceGroupMemberInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    TargetDeviceId:
      type: object
      description: |2
        Represents a replication target device, since the replication group id can
        be the same in all the domains, this is keyed by the fault domain id.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        domainId:
          description: |2
            ID of the fault domain.
          $ref: '#/components/schemas/FaultDomainId'
        deviceId:
          description: |2
            ID of the target device.
          $ref: '#/components/schemas/ReplicaId'
      required:
        - domainId
        - deviceId
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfTargetDeviceId:
      type: object
      description: |2
        A boxed array of *TargetDeviceId*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/TargetDeviceId'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    SyncReplicationGroupSuccessResult:
      type: object
      description: |2
        Result object for a replication group that was successfully synchronized.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        timeStamp:
          description: |2
            Creation time of the PIT
          type: string
          format: date-time
        pitId:
          description: |2
            PIT id.
            
            If the VASA provider does not support PIT, this can be
            left unset.
            
            A PIT created as a result of the <code>syncReplicationGroup</code>
            may or may not have the same retention policy as other PITs. A VASA provider
            can choose to delete such a PIT after a successful <code>testFailoverStop</code>
          $ref: '#/components/schemas/PointInTimeReplicaId'
        pitName:
          type: string
      required:
        - timeStamp
      allOf:
        - $ref: '#/components/schemas/GroupOperationResult'

    ArrayOfSyncReplicationGroupSuccessResult:
      type: object
      description: |2
        A boxed array of *SyncReplicationGroupSuccessResult*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/SyncReplicationGroupSuccessResult'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    TargetGroupInfo:
      type: object
      description: |2
        Information about the replication target group.
        
        This is returned as answer
        to queryReplicationGroup before failover or testFailoverStart.
        
        This does not have to include the
        snapshot objects in the ReplicationGroup, however, see also
        *RecoveredTargetGroupMemberInfo*.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        sourceInfo:
          description: |2
            Replication source information.
          $ref: '#/components/schemas/TargetToSourceInfo'
        state:
          description: |2
            Replication state of the group on the replication target.
          type: string
        devices:
          description: |2
            Member device information.
            
            When the ReplicationGroup is either in *FAILEDOVER*
            or *INTEST*, this
            should be *RecoveredTargetGroupMemberInfo*.
            Otherwise, this should be *TargetGroupMemberInfo*
          type: array
          items:
            $ref: '#/components/schemas/TargetGroupMemberInfo'
        isPromoteCapable:
          description: |2
            Whether the VASA provider is capable of executing
            *VasaProvider.PromoteReplicationGroup_Task* for this
            ReplicationGroup.
            
            False if not set. Note that this setting is per
            ReplicationGroup per Target domain.
          type: boolean
        name:
          description: |2
            Name of Replication Group.
          type: string
      required:
        - sourceInfo
        - state
      allOf:
        - $ref: '#/components/schemas/GroupInfo'

    ArrayOfTargetGroupInfo:
      type: object
      description: |2
        A boxed array of *TargetGroupInfo*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/TargetGroupInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    TargetToSourceInfo:
      type: object
      description: |2
        Information about each replication target.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        sourceGroupId:
          description: |2
            Id of the source CG id (including the fault domain ID).
          $ref: '#/components/schemas/ReplicationGroupId'
        replicationAgreementDescription:
          description: |2
            Description of the replication agreement.
            
            This could be used to describe the characteristics of the replication
            relationship between the source and the target (e.g. RPO, Replication
            Mode, and other such properties). It is expected that VASA provider
            will localize the string before sending to vSphere.
          type: string
      required:
        - sourceGroupId
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfTargetToSourceInfo:
      type: object
      description: |2
        A boxed array of *TargetToSourceInfo*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/TargetToSourceInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    TargetGroupMemberInfo:
      type: object
      description: |2
        Information about member virtual volumes in a ReplicationGroup
        on the target when the state is *TARGET*.
        
        This need not include information about all the snapshots in
        the ReplicationGroup.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        replicaId:
          description: |2
            Identifier of the replica device.
          $ref: '#/components/schemas/ReplicaId'
        sourceId:
          description: |2
            Source device, since the device id can be the same in all the domains,
            this needs to supplemented with the domain id to identify the device.
          $ref: '#/components/schemas/DeviceId'
        targetDatastore:
          description: |2
            Datastore of the target device.
            
            This may be used by CAM/SRM
            to notify the administrators to setup access paths for the hosts
            to access the recovered devices.
            
            Refers instance of *Datastore*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - replicaId
        - sourceId
        - targetDatastore
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfTargetGroupMemberInfo:
      type: object
      description: |2
        A boxed array of *TargetGroupMemberInfo*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/TargetGroupMemberInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    TestFailoverParam:
      type: object
      description: |2
        Input to testFailover method.
        
        This structure may be used only with operations rendered under `/sms`.
      allOf:
        - $ref: '#/components/schemas/FailoverParam'

    ArrayOfTestFailoverParam:
      type: object
      description: |2
        A boxed array of *TestFailoverParam*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/TestFailoverParam'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VVolId:
      type: object
      description: |2
        Identity of a virtual volume for policy API purposes.
        
        For the sake of
        brevity, let us use VVolId. This works because the class is defined as a part
        of the policy package.
        
        WSDL names do not have this feature, but WSDL names are usually prefixed with
        the package name any way.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        id:
          type: string
      required:
        - id
      allOf:
        - $ref: '#/components/schemas/DeviceId'

    ArrayOfVVolId:
      type: object
      description: |2
        A boxed array of *VVolId*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VVolId'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VasaVirtualDiskId:
      type: object
      description: |2
        Represents a virtual disk with a UUID (aka FCD).
        
        Virtual Volume VASA providers can ignore this class.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        diskId:
          description: |2
            See VIM documentation for more details on first class storage - which is
            new in 2016.
          type: string
      required:
        - diskId
      allOf:
        - $ref: '#/components/schemas/DeviceId'

    ArrayOfVasaVirtualDiskId:
      type: object
      description: |2
        A boxed array of *VasaVirtualDiskId*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VasaVirtualDiskId'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualDiskKey:
      type: object
      description: |2
        Represents a virtual disk.
        
        Ideally a UUID, since we do not yet have an FCD,
        let us use VM's UUID + diskKey.
        Virtual Volume VASA providers can ignore this class.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        vmInstanceUUID:
          description: |2
            The vmInstanceUUID is unique to a VM.
            
            See
            http://pubs.vmware.com/vsphere-60/index.jsp?topic=%2Fcom.vmware.wssdk.apiref.doc%2Fvim.vm.ConfigInfo.html
          type: string
        deviceKey:
          type: integer
          format: int32
      required:
        - vmInstanceUUID
        - deviceKey
      allOf:
        - $ref: '#/components/schemas/DeviceId'

    ArrayOfVirtualDiskKey:
      type: object
      description: |2
        A boxed array of *VirtualDiskKey*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualDiskKey'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualDiskMoId:
      type: object
      description: |2
        Identifies a VirtualDisk uniquely using the disk key, vCenter managed object id of the VM it
        belongs to and the corresponding vCenter UUID.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        vcUuid:
          description: |2
            The vCenter UUID - this is informational only, and may not always be set.
          type: string
        vmMoid:
          description: |2
            The managed object id that corresponds to vCenter's ManagedObjectReference#key for this VM.
          type: string
        diskKey:
          description: |2
            The disk key that corresponds to the VirtualDevice#key in vCenter.
          type: string
      required:
        - vmMoid
        - diskKey
      allOf:
        - $ref: '#/components/schemas/DeviceId'

    ArrayOfVirtualDiskMoId:
      type: object
      description: |2
        A boxed array of *VirtualDiskMoId*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualDiskMoId'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualMachineFilePath:
      type: object
      description: |2
        Identifies a virtual machine by its VMX file path.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        vcUuid:
          description: |2
            The vCenter UUID - this is informational only,
            and may not always be set.
          type: string
        dsUrl:
          description: |2
            Datastore URL, which is globally unique (name is not).
          type: string
        vmxPath:
          description: |2
            Full path name from the URL onwards.
            
            When the vmxPath is returned after failover, the VMX file
            should be fixed up to contain correct target filenames for all replicated
            disks. For non-replicated disks, the target filenames can contain
            any arbitrary path. For better security, it is recommended to
            set these disks pointed to a random string (e.g. UUID).
          type: string
      required:
        - dsUrl
        - vmxPath
      allOf:
        - $ref: '#/components/schemas/VirtualMachineId'

    ArrayOfVirtualMachineFilePath:
      type: object
      description: |2
        A boxed array of *VirtualMachineFilePath*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineFilePath'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualMachineId:
      type: object
      description: |2
        Abstracts the identity of a virtual machine.
        
        This structure may be used only with operations rendered under `/sms`.
      allOf:
        - $ref: '#/components/schemas/DeviceId'

    ArrayOfVirtualMachineId:
      type: object
      description: |2
        A boxed array of *VirtualMachineId*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineId'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualMachineMoId:
      type: object
      description: |2
        Identifies a VirtualMachine uniquely using its vCenter managed object id and the corresponding
        vCenter UUID
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        vcUuid:
          description: |2
            The vCenter UUID - this is informational only, and may not always be set.
          type: string
        vmMoid:
          description: |2
            The managed object id that corresponds to vCenter's ManagedObjectReference#key for this VM.
          type: string
      required:
        - vmMoid
      allOf:
        - $ref: '#/components/schemas/VirtualMachineId'

    ArrayOfVirtualMachineMoId:
      type: object
      description: |2
        A boxed array of *VirtualMachineMoId*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineMoId'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualMachineUUID:
      type: object
      description: |2
        Identifies a virtual machine by its vmInstanceUUID
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        vmInstanceUUID:
          description: |2
            The vmInstanceUUID is unique to a VM.
            
            See
            http://pubs.vmware.com/vsphere-60/index.jsp?topic=%2Fcom.vmware.wssdk.apiref.doc%2Fvim.vm.ConfigInfo.html
          type: string
      required:
        - vmInstanceUUID
      allOf:
        - $ref: '#/components/schemas/VirtualMachineId'

    ArrayOfVirtualMachineUUID:
      type: object
      description: |2
        A boxed array of *VirtualMachineUUID*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineUUID'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    AboutInfo:
      type: object
      description: |2
        This data object type describes system information
        including the name, type, version, and build number.
      properties:
        name:
          description: |2
            Short form of the product name.
          type: string
        fullName:
          description: |2
            The complete product name, including the version information.
          type: string
        vendor:
          description: |2
            Name of the vendor of this product.
          type: string
        version:
          description: |2
            Dot-separated version string.
            
            For example, "1.2".
          type: string
        patchLevel:
          description: |2
            Patch level for the server.
            
            ***Since:*** vSphere API Release 7.0.2.0
          type: string
        build:
          description: |2
            Build string for the server on which this call is made.
            
            For example, x.y.z-num.
            This string does not apply to the API.
          type: string
        localeVersion:
          description: |2
            Version of the message catalog for the current session's locale.
          type: string
        localeBuild:
          description: |2
            Build number for the current session's locale.
            
            Typically, this is a small number reflecting a
            localization change from the normal product build.
          type: string
        osType:
          description: |2
            Operating system type and architecture.
            
            Examples of values are:
            - "win32-x86" - For x86-based Windows systems.
            - "linux-x86" - For x86-based Linux systems.
            - "vmnix-x86" - For the x86 ESX Server microkernel.
            - "vmnix-arm64" - For the arm64 ESX Server microkernel.
          type: string
        productLineId:
          description: |2
            The product ID is a unique identifier for a product line.
            
            Examples of values are:
            - "gsx" - For the VMware Server product.
            - "esx" - For the ESX product.
            - "embeddedEsx" - For the ESXi product.
            - "esxio" - For the ESXio product.
            - "vpx" - For the VirtualCenter product.
          type: string
        apiType:
          description: |2
            Indicates whether or not the service instance represents a
            standalone host.
            
            If the service instance represents a standalone host, then the physical
            inventory for that service instance is fixed to that single host.
            VirtualCenter server provides additional features over single hosts.
            For example, VirtualCenter offers multi-host management.
            
            Examples of values are:
            - "VirtualCenter" - For a VirtualCenter instance.
            - "HostAgent" - For host agent on an ESX Server or VMware Server host.
          type: string
        apiVersion:
          description: |2
            The version of the API as a dot-separated string.
            
            For example, "1.0.0".
          type: string
        instanceUuid:
          description: |2
            A globally unique identifier associated with this service instance.
          type: string
        licenseProductName:
          description: |2
            The license product name
          type: string
        licenseProductVersion:
          description: |2
            The license product version
          type: string
      required:
        - name
        - fullName
        - vendor
        - version
        - build
        - osType
        - productLineId
        - apiType
        - apiVersion
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfAboutInfo:
      type: object
      description: |2
        A boxed array of *AboutInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/AboutInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    AuthorizationDescription:
      type: object
      description: |2
        Static strings for authorization.
      properties:
        privilege:
          description: |2
            Description of the privilege.
          type: array
          items:
            $ref: '#/components/schemas/ElementDescription'
        privilegeGroup:
          description: |2
            Description of a category of similar privileges, grouped
            together for convenience.
          type: array
          items:
            $ref: '#/components/schemas/ElementDescription'
      required:
        - privilege
        - privilegeGroup
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfAuthorizationDescription:
      type: object
      description: |2
        A boxed array of *AuthorizationDescription*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/AuthorizationDescription'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    EntityPrivilege:
      type: object
      description: |2
        This class defines whether a set of privileges are granted for a managed entity.
      properties:
        entity:
          description: |2
            The entity on which the privileges are checked.
            
            Refers instance of *ManagedEntity*.
          $ref: '#/components/schemas/ManagedObjectReference'
        privAvailability:
          description: |2
            whether a set of privileges are granted for the managed entity.
          type: array
          items:
            $ref: '#/components/schemas/PrivilegeAvailability'
      required:
        - entity
        - privAvailability
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfEntityPrivilege:
      type: object
      description: |2
        A boxed array of *EntityPrivilege*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/EntityPrivilege'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    Permission:
      type: object
      description: |2
        This data object type provides assignment of some role access to
        a principal on a specific entity.
        
        A ManagedEntity is limited to
        one permission per principal.
      properties:
        entity:
          description: |2
            Managed entity the permission is defined on.
            
            Left unset
            when calling setPermissions or resetPermissions, but present
            for the results of permission queries.
            
            Refers instance of *ManagedEntity*.
          $ref: '#/components/schemas/ManagedObjectReference'
        principal:
          description: |2
            User or group receiving access in the form of
            "login" for local or "DOMAIN\\login" for users in a Windows domain.
          type: string
        group:
          description: |2
            Whether principal refers to a user or a group.
            
            True for
            a group and false for a user.
          type: boolean
        roleId:
          description: |2
            Reference to the role providing the access.
          type: integer
          format: int32
        propagate:
          description: |2
            Whether or not this permission propagates down the hierarchy
            to sub-entities.
          type: boolean
      required:
        - principal
        - group
        - roleId
        - propagate
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfPermission:
      type: object
      description: |2
        A boxed array of *Permission*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/Permission'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    AuthorizationPrivilege:
      type: object
      description: |2
        This data object type provides access to some aspect of the system.
        
        Privileges are generally independent. This means a user with a privilege
        usually can perform an associated set of actions without needing any
        additional supporting privileges.
        
        Within each product version, privileges do not change.
        See *AuthorizationDescription* for
        detailed information on the privileges defined by the system.
      properties:
        privId:
          description: |2
            Unique identifier.
          type: string
        onParent:
          description: |2
            Determines whether or not the privilege is applied on the parent entity.
          type: boolean
        name:
          description: |2
            Privilege name.
          type: string
        privGroupName:
          description: |2
            Group name.
          type: string
      required:
        - privId
        - onParent
        - name
        - privGroupName
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfAuthorizationPrivilege:
      type: object
      description: |2
        A boxed array of *AuthorizationPrivilege*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/AuthorizationPrivilege'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PrivilegeAvailability:
      type: object
      description: |2
        This class defines whether a specific privilege is granted.
      properties:
        privId:
          description: |2
            The privilege ID.
          type: string
        isGranted:
          description: |2
            True if the privilege is granted.
          type: boolean
      required:
        - privId
        - isGranted
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfPrivilegeAvailability:
      type: object
      description: |2
        A boxed array of *PrivilegeAvailability*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PrivilegeAvailability'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    AuthorizationRole:
      type: object
      description: |2
        This data object type specifies a collection of privileges used
        to grant access to users on managed entities.
      properties:
        roleId:
          description: |2
            Unique role identifier.
          type: integer
          format: int32
        system:
          description: |2
            Whether or not the role is system-defined.
            
            System-defined roles cannot be
            changed.
          type: boolean
        name:
          description: |2
            System-defined or user-defined role name.
          type: string
        info:
          description: |2
            Displayable role information.
          $ref: '#/components/schemas/Description'
        privilege:
          description: |2
            Privileges provided by this role, by privilege identifier.
          type: array
          items:
            type: string
      required:
        - roleId
        - system
        - name
        - info
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfAuthorizationRole:
      type: object
      description: |2
        A boxed array of *AuthorizationRole*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/AuthorizationRole'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    UserPrivilegeResult:
      type: object
      description: |2
        This class is used to provide the list of effective privileges
        set on a given managed entity for a user.
      properties:
        entity:
          description: |2
            The entity on which privileges are retrieved.
            
            Refers instance of *ManagedEntity*.
          $ref: '#/components/schemas/ManagedObjectReference'
        privileges:
          description: |2
            A list of privileges set on the entity.
          type: array
          items:
            type: string
      required:
        - entity
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfUserPrivilegeResult:
      type: object
      description: |2
        A boxed array of *UserPrivilegeResult*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/UserPrivilegeResult'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    BatchResult:
      type: object
      description: |2
        Results of Batch APIs.
      properties:
        result:
          description: |2
            Enum value for @link BatchResult.Result
          type: string
        hostKey:
          description: |2
            Host for which the result applies.
          type: string
        ds:
          description: |2
            The datastore that is created.
            
            Refers instance of *Datastore*.
          $ref: '#/components/schemas/ManagedObjectReference'
        fault:
          description: |2
            'fault' would be set if the operation was not successful
          $ref: '#/components/schemas/MethodFault'
      required:
        - result
        - hostKey
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfBatchResult:
      type: object
      description: |2
        A boxed array of *BatchResult*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/BatchResult'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    BoolPolicy:
      type: object
      description: |2
        The boolean type of setting or configuration that may get an
        inherited value.
      properties:
        value:
          description: |2
            The boolean value that is either set or inherited.
          type: boolean
      allOf:
        - $ref: '#/components/schemas/InheritablePolicy'

    ArrayOfBoolPolicy:
      type: object
      description: |2
        A boxed array of *BoolPolicy*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/BoolPolicy'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    Capability:
      type: object
      description: |2
        A particular product may or may not support certain features.
        
        This data object
        indicates whether or not a service instance implements these features. This data
        object type indicates the circumstances under which an operation throws a
        *NotSupported* fault.
        
        Support for some features is indicated by the presence or absence of
        the manager object from the service instance. For example, the AlarmManager manager
        object indicates collecting alarms is supported.
        Other features indicate whether or not a given operation on an
        object throws a *NotSupported* fault.
        
        Some capabilities depend on the host or virtual machine
        version. These are specified by using the vim.host.Capability and
        vim.vm.Capability objects.
      properties:
        provisioningSupported:
          description: |2
            Indicates whether or not the service instance supports provisioning.
            
            For example, the *CloneVM* operation.
          type: boolean
        multiHostSupported:
          description: |2
            Indicates whether or not the service instance supports multiple hosts.
          type: boolean
        userShellAccessSupported:
          description: |2
            Flag indicating whether host user accounts should have the option to
            be granted shell access
          type: boolean
        supportedEVCMode:
          description: |2
            All supported Enhanced VMotion Compatibility modes.
          type: array
          items:
            $ref: '#/components/schemas/EVCMode'
        supportedEVCGraphicsMode:
          description: |2
            All supported Enhanced VMotion Compatibility Graphics modes.
            
            ***Since:*** vSphere API Release 7.0.1.0
          type: array
          items:
            $ref: '#/components/schemas/FeatureEVCMode'
        networkBackupAndRestoreSupported:
          description: |2
            Indicates whether network backup and restore feature is supported.
          type: boolean
        ftDrsWithoutEvcSupported:
          description: |2
            Is DRS supported for Fault Tolerance VMs without enabling EVC.
          type: boolean
        hciWorkflowSupported:
          description: |2
            Specifies if the workflow for setting up a HCI cluster is supported.
          type: boolean
        computePolicyVersion:
          description: |2
            Specifies the supported compute policy version.
          type: integer
          format: int32
        clusterPlacementSupported:
          type: boolean
        lifecycleManagementSupported:
          description: |2
            Specifies if lifecycle management of a Cluster is supported.
          type: boolean
        hostSeedingSupported:
          description: |2
            Specifies if host seeding for a cluster is supported.
            
            ***Since:*** vSphere API Release 7.0.2.0
          type: boolean
        scalableSharesSupported:
          description: |2
            Specifies if scalable shares for resource pools is supported.
          type: boolean
        hadcsSupported:
          description: |2
            Specifies if highly available distributed clustering service is supported.
            
            ***Since:*** vSphere API Release 7.0.1.1
          type: boolean
        configMgmtSupported:
          description: |2
            Specifies if desired configuration management platform is supported
            on the cluster.
            
            ***Since:*** vSphere API Release 7.0.3.1
          type: boolean
      required:
        - provisioningSupported
        - multiHostSupported
        - userShellAccessSupported
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfCapability:
      type: object
      description: |2
        A boxed array of *Capability*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/Capability'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ClusterComputeResourceClusterConfigResult:
      type: object
      description: |2
        ClusterConfigResult is the result returned for the *ClusterComputeResource.ConfigureHCI_Task*
        method.
      properties:
        failedHosts:
          description: |2
            List of failed hosts.
          type: array
          items:
            $ref: '#/components/schemas/FolderFailedHostResult'
        configuredHosts:
          description: |2
            List of successfully configured hosts.
            
            Refers instances of *HostSystem*.
          type: array
          items:
            $ref: '#/components/schemas/ManagedObjectReference'
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfClusterComputeResourceClusterConfigResult:
      type: object
      description: |2
        A boxed array of *ClusterComputeResourceClusterConfigResult*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ClusterComputeResourceClusterConfigResult'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ClusterComputeResourceCryptoModePolicy:
      type: object
      description: |2
        The encryption mode policy for a cluster.
        
        ***Since:*** vSphere API Release 8.0.3.0
      properties:
        keyId:
          description: |2
            The host key identifier.
            
            When set, all hosts in the cluster will use this key when enabling
            the crypto safe mode. Only one of *ClusterComputeResourceCryptoModePolicy.keyId* and
            *ClusterComputeResourceCryptoModePolicy.providerId* may be set.
          $ref: '#/components/schemas/CryptoKeyId'
        providerId:
          description: |2
            The host key provider identifier.
            
            When set, all hosts in the cluster will use a key from the specified
            key provider when enabling the crypto safe mode. Only one of
            *ClusterComputeResourceCryptoModePolicy.keyId* and *ClusterComputeResourceCryptoModePolicy.providerId* may be set.
          $ref: '#/components/schemas/KeyProviderId'
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfClusterComputeResourceCryptoModePolicy:
      type: object
      description: |2
        A boxed array of *ClusterComputeResourceCryptoModePolicy*. To be used in *Any* placeholders.
        
        ***Since:*** vSphere API Release 8.0.3.0
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ClusterComputeResourceCryptoModePolicy'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ClusterComputeResourceDVSConfigurationValidation:
      type: object
      description: |2
        Describes the validations applicable to the network settings.
        
        These
        are based off the information recorded in
        *dvsSetting*.
      properties:
        isDvsValid:
          description: |2
            Check if the DVS is alive.
          type: boolean
        isDvpgValid:
          description: |2
            Check if the portgroups are valid.
          type: boolean
      required:
        - isDvsValid
        - isDvpgValid
      allOf:
        - $ref: '#/components/schemas/ClusterComputeResourceValidationResultBase'

    ArrayOfClusterComputeResourceDVSConfigurationValidation:
      type: object
      description: |2
        A boxed array of *ClusterComputeResourceDVSConfigurationValidation*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ClusterComputeResourceDVSConfigurationValidation'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ClusterComputeResourceDVSSetting:
      type: object
      description: |2
        Contains reference to the DVS, list of physical nics attached to it,
        and list of dvportgroups created on it while initially configuring a
        cluster by calling the *ClusterComputeResource.ConfigureHCI_Task* method.
      properties:
        dvSwitch:
          description: |2
            Managed object reference to the DVS.
            
            Refers instance of *DistributedVirtualSwitch*.
          $ref: '#/components/schemas/ManagedObjectReference'
        pnicDevices:
          description: |2
            List of physical nics attached to the DVS.
          type: array
          items:
            type: string
        dvPortgroupSetting:
          description: |2
            Describes dvportgroups on the DVS and services residing on each one.
          type: array
          items:
            $ref: '#/components/schemas/ClusterComputeResourceDVSSettingDVPortgroupToServiceMapping'
      required:
        - dvSwitch
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfClusterComputeResourceDVSSetting:
      type: object
      description: |2
        A boxed array of *ClusterComputeResourceDVSSetting*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ClusterComputeResourceDVSSetting'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ClusterComputeResourceDVSSettingDVPortgroupToServiceMapping:
      type: object
      properties:
        dvPortgroup:
          description: |2
            Managed object reference to the dvportgroup.
            
            Refers instance of *DistributedVirtualPortgroup*.
          $ref: '#/components/schemas/ManagedObjectReference'
        service:
          description: |2
            Service to be configured on the virtual nics attached to this
            dvportgroup.
            
            See *HostVirtualNicManagerNicType_enum* for
            supported values.
          type: string
      required:
        - dvPortgroup
        - service
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfClusterComputeResourceDVSSettingDVPortgroupToServiceMapping:
      type: object
      description: |2
        A boxed array of *ClusterComputeResourceDVSSettingDVPortgroupToServiceMapping*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ClusterComputeResourceDVSSettingDVPortgroupToServiceMapping'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ClusterComputeResourceDvsProfile:
      type: object
      description: |2
        Describes DVS related information to be configured by calling
        *ClusterComputeResource.ConfigureHCI_Task* method.
        
        Consists of name of the DVS, the physical adapters to be attached to it
        and the list of dvportgroups to be created on this DVS.
      properties:
        dvsName:
          description: |2
            Name of the new *DistributedVirtualSwitch*.
          type: string
        dvSwitch:
          description: |2
            Managed object reference to an existing *DistributedVirtualSwitch*.
            
            Refers instance of *DistributedVirtualSwitch*.
          $ref: '#/components/schemas/ManagedObjectReference'
        pnicDevices:
          description: |2
            List of physical Nics to be attached to the DVS.
          type: array
          items:
            type: string
        dvPortgroupMapping:
          type: array
          items:
            $ref: '#/components/schemas/ClusterComputeResourceDvsProfileDVPortgroupSpecToServiceMapping'
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfClusterComputeResourceDvsProfile:
      type: object
      description: |2
        A boxed array of *ClusterComputeResourceDvsProfile*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ClusterComputeResourceDvsProfile'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ClusterComputeResourceDvsProfileDVPortgroupSpecToServiceMapping:
      type: object
      properties:
        dvPortgroupSpec:
          description: |2
            Specification for a new *DistributedVirtualPortgroup*.
          $ref: '#/components/schemas/DVPortgroupConfigSpec'
        dvPortgroup:
          description: |2
            Managed object reference to an existing *DistributedVirtualPortgroup*.
            
            Refers instance of *DistributedVirtualPortgroup*.
          $ref: '#/components/schemas/ManagedObjectReference'
        service:
          description: |2
            Service to be configured on the virtual nics attached to this
            dvportgroup.
            
            See *HostVirtualNicManagerNicType_enum* for
            supported values.
          type: string
      required:
        - service
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfClusterComputeResourceDvsProfileDVPortgroupSpecToServiceMapping:
      type: object
      description: |2
        A boxed array of *ClusterComputeResourceDvsProfileDVPortgroupSpecToServiceMapping*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ClusterComputeResourceDvsProfileDVPortgroupSpecToServiceMapping'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ClusterComputeResourceHCIConfigInfo:
      type: object
      description: |2
        This data object captures a subset of initial configuration of the cluster,
        which was configured by calling the *ClusterComputeResource.ConfigureHCI_Task* method.
      properties:
        workflowState:
          description: |2
            Configuration pertinent to state of the HCI workflow.
            
            Valid
            values are enumerated by the *HCIWorkflowState*
            type.
          type: string
        dvsSetting:
          description: |2
            Contains DVS related information captured while configuring
            the cluster.
          type: array
          items:
            $ref: '#/components/schemas/ClusterComputeResourceDVSSetting'
        configuredHosts:
          description: |2
            Contains a list of hosts that are currently configured using
            *ClusterComputeResource.ConfigureHCI_Task* and *ClusterComputeResource.ExtendHCI_Task*
            method.
            
            A failed host will not be part of this list.
            
            Refers instances of *HostSystem*.
          type: array
          items:
            $ref: '#/components/schemas/ManagedObjectReference'
        hostConfigProfile:
          description: |2
            Configuration of host services and host settings.
          $ref: '#/components/schemas/ClusterComputeResourceHostConfigurationProfile'
      required:
        - workflowState
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfClusterComputeResourceHCIConfigInfo:
      type: object
      description: |2
        A boxed array of *ClusterComputeResourceHCIConfigInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ClusterComputeResourceHCIConfigInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ClusterComputeResourceHCIConfigSpec:
      type: object
      description: |2
        Specification to configure the cluster.
      properties:
        dvsProf:
          description: |2
            Information related to network configuration.
            
            For each DvsProfile
            object, specify either *ClusterComputeResourceDvsProfile.dvsName* or
            *ClusterComputeResourceDvsProfile.dvSwitch*. Across all DvsProfile objects, specify
            exactly one
            *ClusterComputeResourceDvsProfileDVPortgroupSpecToServiceMapping.dvPortgroup* or
            *ClusterComputeResourceDvsProfileDVPortgroupSpecToServiceMapping.dvPortgroupSpec* per
            *ClusterComputeResourceDvsProfileDVPortgroupSpecToServiceMapping.service*.
          type: array
          items:
            $ref: '#/components/schemas/ClusterComputeResourceDvsProfile'
        hostConfigProfile:
          description: |2
            Configuration of host services and host settings.
          $ref: '#/components/schemas/ClusterComputeResourceHostConfigurationProfile'
        vSanConfigSpec:
          description: |2
            vSan configuration specification.
            
            This is vim.vsan.ReconfigSpec object
            represented via the VIM object.
          $ref: '#/components/schemas/SDDCBase'
        vcProf:
          description: |2
            Describes cluster and EVC configuration.
          $ref: '#/components/schemas/ClusterComputeResourceVCProfile'
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfClusterComputeResourceHCIConfigSpec:
      type: object
      description: |2
        A boxed array of *ClusterComputeResourceHCIConfigSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ClusterComputeResourceHCIConfigSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ClusterComputeResourceHostConfigurationInput:
      type: object
      description: |2
        Host configuration input to configure hosts in a cluster.
      properties:
        host:
          description: |2
            Refers instance of *HostSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
        hostVmkNics:
          type: array
          items:
            $ref: '#/components/schemas/ClusterComputeResourceHostVmkNicInfo'
        allowedInNonMaintenanceMode:
          description: |2
            To apply configuration on the host, the host is expected to be in
            maintenance mode.
            
            This constraint can be relaxed by setting this
            flag to true.
          type: boolean
      required:
        - host
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfClusterComputeResourceHostConfigurationInput:
      type: object
      description: |2
        A boxed array of *ClusterComputeResourceHostConfigurationInput*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ClusterComputeResourceHostConfigurationInput'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ClusterComputeResourceHostConfigurationProfile:
      type: object
      description: |2
        HostConfigurationProfile describes the configuration of services
        and settings which gets applied on every host in the HCI cluster.
      properties:
        dateTimeConfig:
          description: |2
            Date and time settings
          $ref: '#/components/schemas/HostDateTimeConfig'
        lockdownMode:
          description: |2
            Desired lockdown mode
          $ref: '#/components/schemas/HostLockdownMode_enum'
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfClusterComputeResourceHostConfigurationProfile:
      type: object
      description: |2
        A boxed array of *ClusterComputeResourceHostConfigurationProfile*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ClusterComputeResourceHostConfigurationProfile'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ClusterComputeResourceHostConfigurationValidation:
      type: object
      description: |2
        Describes the validations applicable to the settings on the host.
      properties:
        host:
          description: |2
            Host being validated.
            
            Refers instance of *HostSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
        isDvsSettingValid:
          description: |2
            Check if the host is attached to the DVS on right adapters.
          type: boolean
        isVmknicSettingValid:
          description: |2
            Check if the adapters for services are present and on the right
            portgroups.
          type: boolean
        isNtpSettingValid:
          description: |2
            Check if NTP is configured per specification.
          type: boolean
        isLockdownModeValid:
          description: |2
            Check if lockdown mode is set per specification
          type: boolean
      required:
        - host
      allOf:
        - $ref: '#/components/schemas/ClusterComputeResourceValidationResultBase'

    ArrayOfClusterComputeResourceHostConfigurationValidation:
      type: object
      description: |2
        A boxed array of *ClusterComputeResourceHostConfigurationValidation*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ClusterComputeResourceHostConfigurationValidation'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ClusterComputeResourceHostEvacuationInfo:
      type: object
      description: |2
        This data object describes what evacuation actions should be made for a given host.
        
        ***Since:*** vSphere API Release 8.0.3.0
      properties:
        host:
          description: |2
            Candidate host to be put into maintenance mode.
            
            Refers instance of *HostSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
        action:
          description: |2
            Specifies the list of required actions.
            
            Depending on the specified option values passed, additional
            actions such as ones related to evacuation of specific objects,
            additional memory reservation or allowing/disallowing certain groups
            of operations may be taken when entering the desired flavor of
            maintenance mode. The list of supported options and values may vary
            based on the version of the ESXi host and Virtual Center.
            
            If unset, a default list of actions will be assumed based on the
            selected flavor of maintenance mode as specified by the
            *ClusterComputeResourceMaintenanceInfo.partialMMId* field. See *HostPartialMaintenanceModeId_enum*
            for further information about individual flavors.
          type: array
          items:
            $ref: '#/components/schemas/OptionValue'
      required:
        - host
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfClusterComputeResourceHostEvacuationInfo:
      type: object
      description: |2
        A boxed array of *ClusterComputeResourceHostEvacuationInfo*. To be used in *Any* placeholders.
        
        ***Since:*** vSphere API Release 8.0.3.0
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ClusterComputeResourceHostEvacuationInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ClusterComputeResourceHostVmkNicInfo:
      type: object
      description: |2
        This data object describes how a vmknic on a host must be configured.
      properties:
        nicSpec:
          description: |2
            NIC specification
          $ref: '#/components/schemas/HostVirtualNicSpec'
        service:
          description: |2
            Service type for this adapter.
            
            See
            *HostVirtualNicManagerNicType_enum* for supported values.
          type: string
      required:
        - nicSpec
        - service
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfClusterComputeResourceHostVmkNicInfo:
      type: object
      description: |2
        A boxed array of *ClusterComputeResourceHostVmkNicInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ClusterComputeResourceHostVmkNicInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ClusterComputeResourceMaintenanceInfo:
      type: object
      description: |2
        This data object describes how a given array of hosts will be put into maintenance mode.
        
        ***Since:*** vSphere API Release 8.0.3.0
      properties:
        partialMMId:
          description: |2
            Indicates the flavor of maintenance mode requested.
            
            If set, specifies the desired flavor of partial
            maintenance mode. Otherwise, full maintenance mode is assumed.
            See *HostPartialMaintenanceModeId_enum* for supported values.
          type: string
        hostEvacInfo:
          description: |2
            Evaucation information for each host
          type: array
          items:
            $ref: '#/components/schemas/ClusterComputeResourceHostEvacuationInfo'
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfClusterComputeResourceMaintenanceInfo:
      type: object
      description: |2
        A boxed array of *ClusterComputeResourceMaintenanceInfo*. To be used in *Any* placeholders.
        
        ***Since:*** vSphere API Release 8.0.3.0
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ClusterComputeResourceMaintenanceInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ClusterComputeResourceSummary:
      type: object
      description: |2
        The *ClusterComputeResourceSummary* data object
        encapsulates runtime properties of a *ClusterComputeResource*.
      properties:
        currentFailoverLevel:
          deprecated: true
          description: |2
            Deprecated as of vSphere API 4.0, use
            *ClusterFailoverLevelAdmissionControlInfo.currentFailoverLevel*.
            
            Current failover level.
            
            This is the number of physical host failures that can
            be tolerated without impacting the ability to satisfy the minimums for all
            running virtual machines. This represents the current value, as opposed to
            desired value configured by the user.
          type: integer
          format: int32
        admissionControlInfo:
          description: |2
            Information about the current amount of resources available for a vSphere HA
            cluster.
            
            The actual type of admissionControlInfo will depend on what kind of
            *ClusterDasAdmissionControlPolicy* was used to configure the cluster.
          $ref: '#/components/schemas/ClusterDasAdmissionControlInfo'
        numVmotions:
          description: |2
            Total number of migrations with VMotion that have been done internal to this
            cluster.
          type: integer
          format: int32
        targetBalance:
          description: |2
            The target balance, in terms of standard deviation, for a DRS cluster.
            
            Units are thousandths. For example, 12 represents 0.012.
          type: integer
          format: int32
        currentBalance:
          description: |2
            The current balance, in terms of standard deviation, for a DRS cluster.
            
            Units are thousandths. For example, 12 represents 0.012.
          type: integer
          format: int32
        drsScore:
          description: |2
            The DRS score of this cluster, in percentage.
          type: integer
          format: int32
        numVmsPerDrsScoreBucket:
          description: |2
            The number of VMs in this cluster corresponding to each DRS score
            bucket.
            
            The buckets are defined as follows:
            - 0% - 20%
            - 21% - 40%
            - 41% - 60%
            - 61% - 80%
            - 81% - 100%
          type: array
          items:
            type: integer
            format: int32
        usageSummary:
          description: |2
            The current usage summary for a DRS cluster.
          $ref: '#/components/schemas/ClusterUsageSummary'
        currentEVCModeKey:
          description: |2
            The Enhanced VMotion Compatibility mode that is currently in effect
            for all hosts in this cluster; unset if no EVC mode is active.
            
            See also *Capability.supportedEVCMode*.
          type: string
        currentEVCGraphicsModeKey:
          description: |2
            The Enhanced VMotion Compatibility Graphics mode that is currently in
            effect for all hosts in this cluster; unset if no EVC mode is active.
            
            See also *Capability.supportedEVCGraphicsMode*.
            
            ***Since:*** vSphere API Release 7.0.1.0
          type: string
        dasData:
          description: |2
            Data pertaining to DAS.
          $ref: '#/components/schemas/ClusterDasData'
        clusterMaintenanceModeStatus:
          description: |2
            Configuration pertinent to state of the cluster maintenance mode.
            
            Valid values are enumerated by the *ClusterMaintenanceModeStatus*
            type.
            
            ***Since:*** vSphere API Release 7.0.0.2
          type: string
        vcsHealthStatus:
          description: |2
            The health status of the vSphere Cluster Services in the cluster.
            
            Supported values are enumerated by the *VcsHealthStatus*
            type.
            
            ***Since:*** vSphere API Release 7.0.1.1
          type: string
        vcsSlots:
          description: |2
            An array of hosts and number of resource slots on the host for
            vSphere Cluster Services in the cluster.
            
            The number of resource slots on the host includes both following types:
            1\. Number of vCS VMs running on the host (resource reserved and occupied).
            2\. Number of reserved and unoccupied slots (reserved for new vCS VMs).
            
            ***Since:*** vSphere API Release 7.0.1.1
          type: array
          items:
            $ref: '#/components/schemas/ClusterComputeResourceVcsSlots'
      required:
        - currentFailoverLevel
        - numVmotions
      allOf:
        - $ref: '#/components/schemas/ComputeResourceSummary'

    ArrayOfClusterComputeResourceSummary:
      type: object
      description: |2
        A boxed array of *ClusterComputeResourceSummary*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ClusterComputeResourceSummary'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ClusterComputeResourceVCProfile:
      type: object
      description: |2
        Describes cluster configuration for various vCenter services.
      properties:
        clusterSpec:
          description: |2
            Cluster configurarion.
          $ref: '#/components/schemas/ClusterConfigSpecEx'
        evcModeKey:
          description: |2
            EVC mode key.
          type: string
        evcGraphicsModeKey:
          description: |2
            EVC Graphics mode key
            
            ***Since:*** vSphere API Release 7.0.1.0
          type: string
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfClusterComputeResourceVCProfile:
      type: object
      description: |2
        A boxed array of *ClusterComputeResourceVCProfile*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ClusterComputeResourceVCProfile'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ClusterComputeResourceValidationResultBase:
      type: object
      description: |2
        Describes the validation results.
      properties:
        info:
          description: |2
            Describes the messages relevant to the validation result
          type: array
          items:
            $ref: '#/components/schemas/LocalizableMessage'
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfClusterComputeResourceValidationResultBase:
      type: object
      description: |2
        A boxed array of *ClusterComputeResourceValidationResultBase*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ClusterComputeResourceValidationResultBase'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ClusterComputeResourceVcsSlots:
      type: object
      description: |2
        ***Since:*** vSphere API Release 7.0.1.1
      properties:
        systemId:
          description: |2
            Identifier of the system for which the slots are applicable.
            
            ***Since:*** vSphere API Release 7.0.3.0
          type: string
        host:
          description: |2
            The host that has vSphere Cluster Services slots.
            
            Refers instance of *HostSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
        datastore:
          description: |2
            Datastores on the host which are recommended for vCLS VM deployment.
            
            ***Since:*** vSphere API Release 7.0.3.0
            
            Refers instances of *Datastore*.
          type: array
          items:
            $ref: '#/components/schemas/ManagedObjectReference'
        totalSlots:
          description: |2
            The number of total vSphere Cluster Services slots on the host.
          type: integer
          format: int32
      required:
        - host
        - totalSlots
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfClusterComputeResourceVcsSlots:
      type: object
      description: |2
        A boxed array of *ClusterComputeResourceVcsSlots*. To be used in *Any* placeholders.
        
        ***Since:*** vSphere API Release 7.0.1.1
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ClusterComputeResourceVcsSlots'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ComputeResourceConfigInfo:
      type: object
      description: |2
        Configuration of the compute resource; applies to both standalone hosts
        and clusters.
      properties:
        vmSwapPlacement:
          description: |2
            Swapfile placement policy for virtual machines within this compute
            resource.
            
            Any policy except for "inherit" is a valid value for this
            property; the default is "vmDirectory". This setting will be honored
            for each virtual machine within the compute resource for which the
            following is true:
            - The virtual machine is executing on a host that has the
              *perVmSwapFiles* capability.
            - The virtual machine configuration's
              *swapPlacement* property is set
              to "inherit".
              
            See also *VirtualMachineConfigInfoSwapPlacementType_enum*.
          type: string
        spbmEnabled:
          description: |2
            Flag indicating whether or not the SPBM(Storage Policy Based Management)
            feature is enabled on this compute resource
          type: boolean
        defaultHardwareVersionKey:
          description: |2
            Key for Default Hardware Version used on this compute resource
            in the format of *VirtualMachineConfigOptionDescriptor.key*.
            
            This field affects
            *VirtualMachineConfigOptionDescriptor.defaultConfigOption* returned
            by *ComputeResource.environmentBrowser* of this object and all its children
            with this field unset.
          type: string
        maximumHardwareVersionKey:
          description: |2
            Key for Maximum Hardware Version used on this compute resource
            in the format of *VirtualMachineConfigOptionDescriptor.key*.
            
            This field affects
            *VirtualMachineConfigOptionDescriptor.defaultConfigOption* returned
            by *ComputeResource.environmentBrowser* of this object and all its children
            with this field unset.
            
            ***Since:*** vSphere API Release 7.0.2.0
          type: string
      required:
        - vmSwapPlacement
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfComputeResourceConfigInfo:
      type: object
      description: |2
        A boxed array of *ComputeResourceConfigInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ComputeResourceConfigInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ComputeResourceConfigSpec:
      type: object
      description: |2
        Changes to apply to the compute resource configuration.
      properties:
        vmSwapPlacement:
          description: |2
            New setting for the swapfile placement policy.
            
            Any change to this
            policy will affect virtual machines that subsequently power on or
            resume from a suspended state in this compute resource, or that
            migrate to a host in this compute resource while powered on; virtual
            machines that are currently powered on in this compute resource will
            not yet be affected.
            
            See also *VirtualMachineConfigInfoSwapPlacementType_enum*.
          type: string
        spbmEnabled:
          description: |2
            Flag indicating whether or not the SPBM(Storage Policy Based Management)
            feature is enabled on this compute resource
          type: boolean
        defaultHardwareVersionKey:
          description: |2
            Key for Default Hardware Version to be used on this compute resource
            in the format of *VirtualMachineConfigOptionDescriptor.key*.
            
            Setting this field affects
            *VirtualMachineConfigOptionDescriptor.defaultConfigOption* returned
            by *ComputeResource.environmentBrowser* of this object and all its children
            with this field unset.
          type: string
        desiredSoftwareSpec:
          description: |2
            Desired software spec for the set of physical compute resources.
            
            This
            parameter is only supported in vim.Folder#createClusterEx operation.
          $ref: '#/components/schemas/DesiredSoftwareSpec'
        maximumHardwareVersionKey:
          description: |2
            Key for Maximum Hardware Version to be used on this compute resource
            in the format of *VirtualMachineConfigOptionDescriptor.key*.
            
            Setting this field affects
            *VirtualMachineConfigOptionDescriptor.defaultConfigOption* returned
            by *ComputeResource.environmentBrowser* of this object and all its children
            with this field unset.
            
            ***Since:*** vSphere API Release 7.0.2.0
          type: string
        enableConfigManager:
          description: |2
            Flag indicating whether or not the vLCM (vSphere Lifecycle Manager)
            Config Manager feature is enabled on this compute resource.
            
            If the
            flag is not set, the Config Manager feature will be disabled by
            default. This parameter is only supported in *Folder.CreateClusterEx*
            operation.
            
            ***Since:*** vSphere API Release 7.0.3.1
          type: boolean
        hostSeedSpec:
          description: |2
            Specification for the host seeding operation.
            
            ***Since:*** vSphere API Release 8.0.3.0
          $ref: '#/components/schemas/ComputeResourceHostSeedSpec'
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfComputeResourceConfigSpec:
      type: object
      description: |2
        A boxed array of *ComputeResourceConfigSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ComputeResourceConfigSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ComputeResourceHostSPBMLicenseInfo:
      type: object
      description: |2
        The *ComputeResourceHostSPBMLicenseInfo* data object
        encapsulates the SPBM(Storage Policy Based Management) license
        information for a host.
      properties:
        host:
          description: |2
            Refers instance of *HostSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
        licenseState:
          $ref: '#/components/schemas/ComputeResourceHostSPBMLicenseInfoHostSPBMLicenseState_enum'
      required:
        - host
        - licenseState
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfComputeResourceHostSPBMLicenseInfo:
      type: object
      description: |2
        A boxed array of *ComputeResourceHostSPBMLicenseInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ComputeResourceHostSPBMLicenseInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ComputeResourceHostSeedSpec:
      type: object
      description: |2
        ***Since:*** vSphere API Release 8.0.3.0
      properties:
        singleHostSpec:
          description: |2
            Specification for the seed host.
          $ref: '#/components/schemas/ComputeResourceHostSeedSpecSingleHostSpec'
      required:
        - singleHostSpec
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfComputeResourceHostSeedSpec:
      type: object
      description: |2
        A boxed array of *ComputeResourceHostSeedSpec*. To be used in *Any* placeholders.
        
        ***Since:*** vSphere API Release 8.0.3.0
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ComputeResourceHostSeedSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ComputeResourceHostSeedSpecSingleHostSpec:
      type: object
      description: |2
        This data object contains a specification for a single candidate host
        for the host seeding operation.
        
        If the candidate host is:
        \- A new host not managed by vCenter Server: A *HostConnectSpec*
        needs to be provided.
        \- A host managed by vCenter Server: A *HostSystem*
        needs to be provided.
      properties:
        newHostCnxSpec:
          description: |2
            Connection Spec for a new host.
          $ref: '#/components/schemas/HostConnectSpec'
        existingHost:
          description: |2
            Reference to an existing host.
            
            Refers instance of *HostSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfComputeResourceHostSeedSpecSingleHostSpec:
      type: object
      description: |2
        A boxed array of *ComputeResourceHostSeedSpecSingleHostSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ComputeResourceHostSeedSpecSingleHostSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ComputeResourceSummary:
      type: object
      description: |2
        This data object type encapsulates a typical set of ComputeResource information
        that is useful for list views and summary pages.
      properties:
        totalCpu:
          description: |2
            Aggregated CPU resources of all hosts, in MHz.
          type: integer
          format: int32
        totalMemory:
          description: |2
            Aggregated memory resources of all hosts, in bytes.
          type: integer
          format: int64
        numCpuCores:
          description: |2
            Number of physical CPU cores.
            
            Physical CPU cores are the processors contained
            by a CPU package.
          type: integer
          minimum: -32768
          maximum: 32767
        numCpuThreads:
          description: |2
            Aggregated number of CPU threads.
          type: integer
          minimum: -32768
          maximum: 32767
        effectiveCpu:
          description: |2
            Effective CPU resources (in MHz) available to run virtual machines.
            
            This is the
            aggregated effective resource level from all running hosts. Hosts that are in
            maintenance mode or are unresponsive are not counted. Resources used by the
            VMware Service Console are not included in the aggregate. This value represents
            the amount of resources available for the root resource pool for running
            virtual machines.
          type: integer
          format: int32
        effectiveMemory:
          description: |2
            Effective memory resources (in MB) available to run virtual machines.
            
            This is the aggregated effective resource level from all running hosts. Hosts
            that are in maintenance mode or are unresponsive are not counted.
            Resources used by the VMware Service Console are not included in the aggregate.
            This value represents the amount of resources available for the root
            resource pool for running virtual machines.
          type: integer
          format: int64
        numHosts:
          description: |2
            Total number of hosts.
          type: integer
          format: int32
        numEffectiveHosts:
          description: |2
            Total number of effective hosts.
          type: integer
          format: int32
        overallStatus:
          description: |2
            Overall alarm status.
            
            In releases after vSphere API 5.0, vSphere Servers might not
            generate property collector update notifications for this property.
            To obtain the latest value of the property, you can use
            PropertyCollector methods RetrievePropertiesEx or WaitForUpdatesEx.
            If you use the PropertyCollector.WaitForUpdatesEx method, specify
            an empty string for the version parameter.
            Since this property is on a DataObject, an update returned by WaitForUpdatesEx may
            contain values for this property when some other property on the DataObject changes.
            If this update is a result of a call to WaitForUpdatesEx with a non-empty
            version parameter, the value for this property may not be current.
          $ref: '#/components/schemas/ManagedEntityStatus_enum'
      required:
        - totalCpu
        - totalMemory
        - numCpuCores
        - numCpuThreads
        - effectiveCpu
        - effectiveMemory
        - numHosts
        - numEffectiveHosts
        - overallStatus
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfComputeResourceSummary:
      type: object
      description: |2
        A boxed array of *ComputeResourceSummary*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ComputeResourceSummary'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    CustomFieldDef:
      type: object
      description: |2
        Describes a custom field.
      properties:
        key:
          description: |2
            A unique ID used to reference this custom field in assignments.
            
            This
            ID is unique for the lifetime of the field (even across
            rename operations).
          type: integer
          format: int32
        name:
          description: |2
            Name of the field.
          type: string
        type:
          description: |2
            Type of the field.
          type: string
        managedObjectType:
          description: |2
            Type of object for which the field is valid.
            
            If not specified,
            the field is valid for all managed objects.
          type: string
        fieldDefPrivileges:
          description: |2
            The set of privileges to apply on this field definition
          $ref: '#/components/schemas/PrivilegePolicyDef'
        fieldInstancePrivileges:
          description: |2
            The set of privileges to apply on instances of this field
          $ref: '#/components/schemas/PrivilegePolicyDef'
      required:
        - key
        - name
        - type
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfCustomFieldDef:
      type: object
      description: |2
        A boxed array of *CustomFieldDef*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/CustomFieldDef'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    CustomFieldStringValue:
      type: object
      description: |2
        Subtype for string values (currently the only supported type).
      properties:
        value:
          description: |2
            Value assigned to the custom field.
          type: string
      required:
        - value
      allOf:
        - $ref: '#/components/schemas/CustomFieldValue'

    ArrayOfCustomFieldStringValue:
      type: object
      description: |2
        A boxed array of *CustomFieldStringValue*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/CustomFieldStringValue'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    CustomFieldValue:
      type: object
      description: |2
        Base type for storing values.
      properties:
        key:
          description: |2
            The ID of the field to which this value belongs.
          type: integer
          format: int32
      required:
        - key
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfCustomFieldValue:
      type: object
      description: |2
        A boxed array of *CustomFieldValue*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/CustomFieldValue'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    CustomizationSpecInfo:
      type: object
      description: |2
        Information about a specification.
      properties:
        name:
          description: |2
            Unique name of the specification.
          type: string
        description:
          description: |2
            Description of the specification.
          type: string
        type:
          description: |2
            Guest operating system for this specification (Linux or Windows).
          type: string
        changeVersion:
          description: |2
            The changeVersion is a unique identifier for a given version
            of the configuration.
            
            Each change to the configuration will
            update this value. This is typically implemented as an ever
            increasing count or a time-stamp. However, a client should
            always treat this as an opaque string.
            
            If specified when updating a specification, the changes will only be
            applied if the current changeVersion matches the specified changeVersion. This
            field can be used to guard against updates that has happened
            between the configInfo was read and until it is applied.
          type: string
        lastUpdateTime:
          description: |2
            Time when the specification was last modified.
            
            This time is ignored when
            the CustomizationSpecItem containing this is used as an input to
            CustomizationSpecManager.create.
          type: string
          format: date-time
      required:
        - name
        - description
        - type
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfCustomizationSpecInfo:
      type: object
      description: |2
        A boxed array of *CustomizationSpecInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/CustomizationSpecInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    CustomizationSpecItem:
      type: object
      description: |2
        Specification information and the Specification object.
      properties:
        info:
          description: |2
            Information about the specification - name, description, and so on.
          $ref: '#/components/schemas/CustomizationSpecInfo'
        spec:
          description: |2
            The customization specification.
          $ref: '#/components/schemas/CustomizationSpec'
      required:
        - info
        - spec
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfCustomizationSpecItem:
      type: object
      description: |2
        A boxed array of *CustomizationSpecItem*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/CustomizationSpecItem'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DatacenterBasicConnectInfo:
      type: object
      description: |2
        BasicConnectInfo consists of essential information about the host.
        
        This
        is a subset of *HostConnectInfo* and contains the information
        which is relevant when it comes to dealing with a set of hosts.
      properties:
        hostname:
          description: |2
            Target host.
          type: string
        error:
          description: |2
            Error encountered while querying the host.
            
            See
            *Datacenter.QueryConnectionInfo* for the list of exceptions which can
            be represented here.
          $ref: '#/components/schemas/MethodFault'
        serverIp:
          description: |2
            IP address of the VirtualCenter already managing this host, if any.
          type: string
        numVm:
          description: |2
            Specifies the number of VMs on the host.
          type: integer
          format: int32
        numPoweredOnVm:
          description: |2
            Specifies the number of powered-on VMs on the host.
          type: integer
          format: int32
        hostProductInfo:
          description: |2
            Information about the software running on the host.
          $ref: '#/components/schemas/AboutInfo'
        hardwareVendor:
          description: |2
            Hardware vendor identification.
          type: string
        hardwareModel:
          description: |2
            System model identification.
          type: string
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfDatacenterBasicConnectInfo:
      type: object
      description: |2
        A boxed array of *DatacenterBasicConnectInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DatacenterBasicConnectInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DatacenterConfigInfo:
      type: object
      description: |2
        Configuration of the datacenter.
      properties:
        defaultHardwareVersionKey:
          description: |2
            Key for Default Hardware Version used on this datacenter
            in the format of *VirtualMachineConfigOptionDescriptor.key*.
            
            This field affects
            *VirtualMachineConfigOptionDescriptor.defaultConfigOption* returned
            by *ComputeResource.environmentBrowser* of all its children
            with this field unset.
          type: string
        maximumHardwareVersionKey:
          description: |2
            Key for Maximum Hardware Version used on this datacenter
            in the format of *VirtualMachineConfigOptionDescriptor.key*.
            
            This field affects
            *VirtualMachineConfigOptionDescriptor.defaultConfigOption* returned
            by *ComputeResource.environmentBrowser* of all its children
            with this field unset.
            
            ***Since:*** vSphere API Release 7.0.2.0
          type: string
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfDatacenterConfigInfo:
      type: object
      description: |2
        A boxed array of *DatacenterConfigInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DatacenterConfigInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DatacenterConfigSpec:
      type: object
      description: |2
        Changes to apply to the datacenter configuration.
      properties:
        defaultHardwareVersionKey:
          description: |2
            Key for Default Hardware Version to be used on this datacenter
            in the format of *VirtualMachineConfigOptionDescriptor.key*.
            
            Setting this field affects
            *VirtualMachineConfigOptionDescriptor.defaultConfigOption* returned
            by *ComputeResource.environmentBrowser* of all its children
            with this field unset.
          type: string
        maximumHardwareVersionKey:
          description: |2
            Key for Maximum Hardware Version to be used on this datacenter
            in the format of *VirtualMachineConfigOptionDescriptor.key*.
            
            Setting this field affects
            *VirtualMachineConfigOptionDescriptor.defaultConfigOption* returned
            by *ComputeResource.environmentBrowser* of all its children
            with this field unset.
            
            ***Since:*** vSphere API Release 7.0.2.0
          type: string
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfDatacenterConfigSpec:
      type: object
      description: |2
        A boxed array of *DatacenterConfigSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DatacenterConfigSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DatastoreCapability:
      type: object
      description: |2
        Information about the capabilities of this datastore.
      properties:
        directoryHierarchySupported:
          description: |2
            Indicates whether or not directories can be created on this datastore.
          type: boolean
        rawDiskMappingsSupported:
          description: |2
            Indicates whether or not raw disk mappings can be created on this datastore.
          type: boolean
        perFileThinProvisioningSupported:
          description: |2
            Indicates whether or not the datastore supports thin provisioning on a per file
            basis.
            
            When thin provisioning is used, backing storage is lazily allocated.
            
            This is supported by VMFS3. VMFS2 always allocates storage eagerly. Thus, this
            value is false for VMFS2. Most NAS systems always use thin provisioning.
            They do not support configuring this on a per file basis, so for NAS systems
            this value is also false.
          type: boolean
        storageIORMSupported:
          deprecated: true
          description: |2
            Deprecated as of vSphere8.0 U3, and there is no replacement for it.
            
            Indicates whether the datastore supports Storage I/O Resource Management.
          type: boolean
        nativeSnapshotSupported:
          description: |2
            Indicates whether the datastore supports native snapshot feature which is
            based on Copy-On-Write.
          type: boolean
        topLevelDirectoryCreateSupported:
          description: |2
            Indicates whether the datastore supports traditional top-level
            directory creation.
            
            See also *DatastoreNamespaceManager*.
          type: boolean
        seSparseSupported:
          description: |2
            Indicates whether the datastore supports the Flex-SE(SeSparse) feature.
          type: boolean
        vmfsSparseSupported:
          description: |2
            Indicates whether the datastore supports the vmfsSparse feature.
            
            True for VMFS3/VMFS5/NFS/NFS41, False for VMFS6.
            If value is undefined, then it should be read as supported.
          type: boolean
        vsanSparseSupported:
          description: |2
            Indicates whether the datastore supports the vsanSparse feature.
          type: boolean
        upitSupported:
          deprecated: true
          description: |2
            Deprecated as of vSphere API 8.0, and there is no replacement for it.
            
            Indicates whether the datastore supports the upit feature.
          type: boolean
        vmdkExpandSupported:
          description: |2
            On certain datastores (e.g.
            
            2016 PMEM datastore) VMDK expand is not supported.
            This field tells user if VMDK on this datastore can be expanded or not.
            If value is undefined, then it should be read as supported.
          type: boolean
        clusteredVmdkSupported:
          description: |2
            Indicates whether the datastore supports clustered VMDK feature.
          type: boolean
      required:
        - directoryHierarchySupported
        - rawDiskMappingsSupported
        - perFileThinProvisioningSupported
        - storageIORMSupported
        - nativeSnapshotSupported
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfDatastoreCapability:
      type: object
      description: |2
        A boxed array of *DatastoreCapability*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DatastoreCapability'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DatastoreHostMount:
      type: object
      description: |2
        Host-specific datastore information.
      properties:
        key:
          description: |2
            The host associated with this datastore.
            
            Refers instance of *HostSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
        mountInfo:
          description: |2
            Host-specific information about the mount.
          $ref: '#/components/schemas/HostMountInfo'
      required:
        - key
        - mountInfo
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfDatastoreHostMount:
      type: object
      description: |2
        A boxed array of *DatastoreHostMount*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DatastoreHostMount'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DatastoreInfo:
      type: object
      description: |2
        Detailed information about a datastore.
        
        This is a base type for derived types
        that have more specific details about a datastore.
        
        See also *HostVmfsVolume*, *HostNasVolume*, *HostLocalFileSystemVolume*.
      properties:
        name:
          description: |2
            The name of the datastore.
          type: string
        url:
          description: |2
            The unique locator for the datastore.
          type: string
        freeSpace:
          description: |2
            Free space of this datastore, in bytes.
            
            The server periodically updates this
            value. It can be explicitly refreshed with the Refresh operation.
          type: integer
          format: int64
        maxFileSize:
          description: |2
            The maximum size of a file that can reside on this file system volume.
          type: integer
          format: int64
        maxVirtualDiskCapacity:
          description: |2
            The maximum capacity of a virtual disk which can be created on this volume.
          type: integer
          format: int64
        maxMemoryFileSize:
          description: |2
            The maximum size of a snapshot or a swap file that can reside on this file system volume.
          type: integer
          format: int64
        timestamp:
          description: |2
            Time when the free-space and capacity values in *DatastoreInfo* and
            *DatastoreSummary* were updated.
          type: string
          format: date-time
        containerId:
          description: |2
            The unique container ID of the datastore, if applicable.
          type: string
        aliasOf:
          description: |2
            vSAN datastore container that this datastore is alias of.
            
            If this
            field is unset then this datastore is not alias of any other vSAN
            datastore.
            See *DatastoreInfo.containerId*.
          type: string
      required:
        - name
        - url
        - freeSpace
        - maxFileSize
        - maxMemoryFileSize
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfDatastoreInfo:
      type: object
      description: |2
        A boxed array of *DatastoreInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DatastoreInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DatastoreMountPathDatastorePair:
      type: object
      description: |2
        Contains a mapping of an old mount path and its corresponding
        resignatured or remounted datastore
      properties:
        oldMountPath:
          description: |2
            Old file path where file system volume is mounted, which
            should be *path* value in
            *HostMountInfo*
          type: string
        datastore:
          description: |2
            The resignatured or remounted datastore corresponding to the oldMountPath
            
            Refers instance of *Datastore*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - oldMountPath
        - datastore
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfDatastoreMountPathDatastorePair:
      type: object
      description: |2
        A boxed array of *DatastoreMountPathDatastorePair*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DatastoreMountPathDatastorePair'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DatastoreSummary:
      type: object
      description: |2
        Summary information about the datastore.
        
        The status fields and managed object
        reference is not set when an object of this type is created. These fields and
        references are typically set later when these objects are associated with a host.
      properties:
        datastore:
          description: |2
            The reference to the managed object.
            
            Refers instance of *Datastore*.
          $ref: '#/components/schemas/ManagedObjectReference'
        name:
          description: |2
            The name of the datastore.
          type: string
        url:
          description: |2
            The unique locator for the datastore.
            
            This property is guaranteed to be valid
            only if *DatastoreSummary.accessible* is true.
          type: string
        capacity:
          description: |2
            Maximum capacity of this datastore, in bytes.
            
            This value is updated
            periodically by the server. It can be explicitly refreshed with the Refresh
            operation. This property is guaranteed to be valid only if *DatastoreSummary.accessible*
            is true.
          type: integer
          format: int64
        freeSpace:
          description: |2
            Available space of this datastore, in bytes.
            
            The server periodically
            updates this value. It can be explicitly refreshed with the Refresh operation.
            This property is guaranteed to be valid only if *DatastoreSummary.accessible* is true.
          type: integer
          format: int64
        uncommitted:
          description: |2
            Total additional storage space, in bytes, potentially used by all
            virtual machines on this datastore.
            
            The server periodically updates this
            value.
            It can be explicitly refreshed with the *Datastore.RefreshDatastoreStorageInfo* operation.
            This property is valid only if *DatastoreSummary.accessible* is true.
          type: integer
          format: int64
        accessible:
          description: |2
            The connectivity status of this datastore.
            
            If this is set to false, meaning the
            datastore is not accessible, this datastore's capacity and freespace properties
            cannot be validated. Furthermore, if this property is set to false, some of the
            properties in this summary and in *DatastoreInfo* should not be
            used. Refer to the documentation for the property of your interest.
            For datastores accessed from multiple hosts, vCenter Server reports
            *DatastoreSummary.accessible* as an aggregated value of the
            properties reported in *HostMountInfo*. For instance,
            if a datastore is accessible through a subset of hosts, then the value of
            *DatastoreSummary.accessible* will be reported as true by
            vCenter Server. And the reason for a daastore being inaccessible from a host
            will be reported in *HostMountInfo.inaccessibleReason*
          type: boolean
        multipleHostAccess:
          description: |2
            More than one host in the datacenter has been configured with access to the
            datastore.
            
            This is only provided by VirtualCenter.
          type: boolean
        type:
          description: |2
            Type of file system volume, such as VMFS or NFS.
            
            See also *HostFileSystemVolume.type*.
          type: string
        maintenanceMode:
          description: |2
            The current maintenance mode state of the datastore.
            
            The set of
            possible values is described in *DatastoreSummaryMaintenanceModeState_enum*.
          type: string
      required:
        - name
        - url
        - capacity
        - freeSpace
        - accessible
        - type
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfDatastoreSummary:
      type: object
      description: |2
        A boxed array of *DatastoreSummary*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DatastoreSummary'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DatastoreVVolContainerFailoverPair:
      type: object
      description: |2
        A pair of source and target VVol containers and mapping of VVol
        IDs from source to target.
      properties:
        srcContainer:
          description: |2
            Storage container on the source side.
          type: string
        tgtContainer:
          description: |2
            Storage container on the target side.
          type: string
        vvolMapping:
          description: |2
            Mapping of VVol IDs from source to target corresponding to the
            given set of containers.
          type: array
          items:
            $ref: '#/components/schemas/KeyValue'
      required:
        - tgtContainer
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfDatastoreVVolContainerFailoverPair:
      type: object
      description: |2
        A boxed array of *DatastoreVVolContainerFailoverPair*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DatastoreVVolContainerFailoverPair'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DatastoreNamespaceManagerDirectoryInfo:
      type: object
      description: |2
        ***Since:*** vSphere API Release 8.0.1.0
      properties:
        capacity:
          description: |2
            Size in MB of underlying object.
          type: integer
          format: int64
        used:
          description: |2
            Used size in MB in the VMFS volume.
          type: integer
          format: int64
      required:
        - capacity
        - used
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfDatastoreNamespaceManagerDirectoryInfo:
      type: object
      description: |2
        A boxed array of *DatastoreNamespaceManagerDirectoryInfo*. To be used in *Any* placeholders.
        
        ***Since:*** vSphere API Release 8.0.1.0
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DatastoreNamespaceManagerDirectoryInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    Description:
      type: object
      description: |2
        Static strings used for describing an object or property.
      properties:
        label:
          description: |2
            Display label.
          type: string
        summary:
          description: |2
            Summary description.
          type: string
      required:
        - label
        - summary
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfDescription:
      type: object
      description: |2
        A boxed array of *Description*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/Description'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DesiredSoftwareSpec:
      type: object
      description: |2
        Desired Software Spec is defined as combination of base-image and add-on
        component which user wants to install on ESX host or cluster.
      properties:
        baseImageSpec:
          description: |2
            Describes a specific base-image spec for the ESX host.
          $ref: '#/components/schemas/DesiredSoftwareSpecBaseImageSpec'
        vendorAddOnSpec:
          description: |2
            Vendor add-on info for desired software spec.
          $ref: '#/components/schemas/DesiredSoftwareSpecVendorAddOnSpec'
        components:
          description: |2
            Additional components which should be part of the desired software
            spec.
            
            These components would override the components present in
            *DesiredSoftwareSpec.vendorAddOnSpec* and *DesiredSoftwareSpec.baseImageSpec*.
            
            ***Since:*** vSphere API Release 7.0.2.0
          type: array
          items:
            $ref: '#/components/schemas/DesiredSoftwareSpecComponentSpec'
        removedComponents:
          description: |2
            Components which should not be part of the desired software
            spec.
            
            These components are not applied on the host.
            
            ***Since:*** vSphere API Release 8.0.3.0
          type: array
          items:
            type: string
      required:
        - baseImageSpec
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfDesiredSoftwareSpec:
      type: object
      description: |2
        A boxed array of *DesiredSoftwareSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DesiredSoftwareSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DesiredSoftwareSpecBaseImageSpec:
      type: object
      description: |2
        Describes base-image spec for the ESX host.
      properties:
        version:
          description: |2
            Version of the base-image.
          type: string
      required:
        - version
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfDesiredSoftwareSpecBaseImageSpec:
      type: object
      description: |2
        A boxed array of *DesiredSoftwareSpecBaseImageSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DesiredSoftwareSpecBaseImageSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DesiredSoftwareSpecComponentSpec:
      type: object
      description: |2
        Component information for the ESX host.
        
        ***Since:*** vSphere API Release 7.0.2.0
      properties:
        name:
          description: |2
            Name of the component.
          type: string
        version:
          description: |2
            Version of the component.
            
            This field is required in the
            current release.
          type: string
      required:
        - name
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfDesiredSoftwareSpecComponentSpec:
      type: object
      description: |2
        A boxed array of *DesiredSoftwareSpecComponentSpec*. To be used in *Any* placeholders.
        
        ***Since:*** vSphere API Release 7.0.2.0
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DesiredSoftwareSpecComponentSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DesiredSoftwareSpecVendorAddOnSpec:
      type: object
      description: |2
        Vendor specific add-on info for ESX host.
      properties:
        name:
          description: |2
            Vendor add-on name.
          type: string
        version:
          description: |2
            Vendor add-on version.
          type: string
      required:
        - name
        - version
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfDesiredSoftwareSpecVendorAddOnSpec:
      type: object
      description: |2
        A boxed array of *DesiredSoftwareSpecVendorAddOnSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DesiredSoftwareSpecVendorAddOnSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DiagnosticManagerAuditRecordResult:
      type: object
      description: |2
        ***Since:*** vSphere API Release 7.0.3.0
      properties:
        records:
          description: |2
            Zero or more audit records returned.
            
            Each audit record is a UTF-8 string in RFC 5424 format. See RFC 5424,
            page 8, for the ABNF grammar.
            
            The HOSTNAME and MSGID fields are set to "-", the structured data
            contains the audit record parameters, no unstructured data will be
            present, and each record is terminated with an ASCII LF (newline).
          type: array
          items:
            type: string
        nextToken:
          description: |2
            The token to be used for subsequent read operations.
            
            The string is "opaque"; the format of this data changes over time.
          type: string
      required:
        - nextToken
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfDiagnosticManagerAuditRecordResult:
      type: object
      description: |2
        A boxed array of *DiagnosticManagerAuditRecordResult*. To be used in *Any* placeholders.
        
        ***Since:*** vSphere API Release 7.0.3.0
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DiagnosticManagerAuditRecordResult'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DiagnosticManagerBundleInfo:
      type: object
      description: |2
        Describes a location of a diagnostic bundle and the server to which
        it belongs.
        
        This is a return type for the generateLogBundles operation.
      properties:
        system:
          description: |2
            The host to which this diagnostic bundle belongs.
            
            If this is for the default server, then it is not set.
            
            Refers instance of *HostSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
        url:
          description: |2
            The location from which the diagnostic bundle can be downloaded.
            
            The host part of the URL is returned as '\*' if the hostname to be used
            is the name of the server to which the call was made. For example, if
            the call is made to vcsrv1.domain1.com, and the bundle is available
            for download from http://vcsrv1.domain1.com/diagnostics/bundle.zip,
            the URL returned may be http:// \* /diagnostics/bundle.zip. The client
            replaces the asterisk with the server name on which it invoked the
            call.
          type: string
      required:
        - url
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfDiagnosticManagerBundleInfo:
      type: object
      description: |2
        A boxed array of *DiagnosticManagerBundleInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DiagnosticManagerBundleInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DiagnosticManagerLogDescriptor:
      type: object
      description: |2
        Describes a log file that is available on a server.
      properties:
        key:
          description: |2
            A key to identify the log file for browsing and download operations.
          type: string
        fileName:
          description: |2
            The filename of the log.
          type: string
        creator:
          description: |2
            The application that generated the log file.
            
            For more information on currently supported creators, see
            *DiagnosticManagerLogCreator_enum*.
          type: string
        format:
          description: |2
            Describes the format of the log file.
            
            For more information on currently supported formats, see
            *DiagnosticManagerLogFormat_enum*.
          type: string
        mimeType:
          description: |2
            Describes the mime-type of the returned file.
            
            Typical
            mime-types include:
            - text/plain - for a plain log file
          type: string
        info:
          description: |2
            Localized description of log file.
          $ref: '#/components/schemas/Description'
      required:
        - key
        - fileName
        - creator
        - format
        - mimeType
        - info
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfDiagnosticManagerLogDescriptor:
      type: object
      description: |2
        A boxed array of *DiagnosticManagerLogDescriptor*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DiagnosticManagerLogDescriptor'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DiagnosticManagerLogHeader:
      type: object
      description: |2
        A header that is returned with a set of log entries.
        
        This header describes where entries are located in the log file. Log
        files typically grow dynamically, so indexes based on line numbers may
        become inaccurate.
      properties:
        lineStart:
          description: |2
            The first line of this log segment.
          type: integer
          format: int32
        lineEnd:
          description: |2
            The last line of this log segment.
          type: integer
          format: int32
        lineText:
          description: |2
            Log entries, listed by line, for this log segment.
          type: array
          items:
            type: string
      required:
        - lineStart
        - lineEnd
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfDiagnosticManagerLogHeader:
      type: object
      description: |2
        A boxed array of *DiagnosticManagerLogHeader*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DiagnosticManagerLogHeader'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DVSBackupRestoreCapability:
      type: object
      description: |2
        The *DVSBackupRestoreCapability* data object
        describes backup, restore, and rollback capabilities for distributed virtual
        switches and distributed virtual portgroups.
        
        Backup and restore capabilities are indicated for *DistributedVirtualSwitch*.
        Rollback capability is indicated for *DistributedVirtualSwitch*
        and *DistributedVirtualPortgroup*.
      properties:
        backupRestoreSupported:
          description: |2
            Indicates whether backup, restore, and rollback are supported.
          type: boolean
      required:
        - backupRestoreSupported
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfDVSBackupRestoreCapability:
      type: object
      description: |2
        A boxed array of *DVSBackupRestoreCapability*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DVSBackupRestoreCapability'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DVSCapability:
      type: object
      description: |2
        The *DVSCapability* data object
        describes the distributed virtual switch features and indicates
        the level of configuration that is allowed.
      properties:
        dvsOperationSupported:
          description: |2
            Indicates whether this switch allows vCenter users to modify
            the switch configuration at the switch level,
            except for host member, policy, and scope operations.
          type: boolean
        dvPortGroupOperationSupported:
          description: |2
            Indicates whether this switch allows vCenter users to modify
            the switch configuration at the portgroup level,
            except for host member, policy, and scope operations.
          type: boolean
        dvPortOperationSupported:
          description: |2
            Indicates whether this switch allows vCenter users to modify
            the switch configuration at the port level,
            except for host member, policy, and scope operations.
          type: boolean
        compatibleHostComponentProductInfo:
          description: |2
            List of host component product information that is compatible
            with the current switch implementation.
          type: array
          items:
            $ref: '#/components/schemas/DistributedVirtualSwitchHostProductSpec'
        featuresSupported:
          description: |2
            Indicators for which version-specific distributed virtual switch
            features are available on this switch.
            
            This information is read-only, with the following exception.
            For a third-party distributed switch implementation, you can
            set the property
            *DVSFeatureCapability*.*DVSFeatureCapability.vmDirectPathGen2Supported*
            during switch creation or when you call the
            *DistributedVirtualSwitch.UpdateDvsCapability* method.
          $ref: '#/components/schemas/DVSFeatureCapability'
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfDVSCapability:
      type: object
      description: |2
        A boxed array of *DVSCapability*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DVSCapability'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DVSConfigInfo:
      type: object
      description: |2
        Configuration of a *DistributedVirtualSwitch*.
      properties:
        uuid:
          description: |2
            Generated UUID of the switch.
            
            Unique across vCenter Server
            inventory and instances.
          type: string
        name:
          description: |2
            Name of the switch.
          type: string
        numStandalonePorts:
          description: |2
            Number of standalone ports in the switch.
            
            Standalone ports are
            ports that do not belong to any portgroup.
          type: integer
          format: int32
        numPorts:
          description: |2
            Current number of ports, not including conflict ports.
          type: integer
          format: int32
        maxPorts:
          description: |2
            Maximum number of ports allowed in the switch,
            not including conflict ports.
          type: integer
          format: int32
        uplinkPortPolicy:
          description: |2
            Uplink port policy.
          $ref: '#/components/schemas/DVSUplinkPortPolicy'
        uplinkPortgroup:
          description: |2
            List of uplink portgroups.
            
            When adding host members, the server
            uses the *DVSConfigInfo.uplinkPortPolicy* to create a number of
            uplink ports for the host. If portgroups are shown here,
            those uplink ports will be added to the portgroups, with uplink ports
            evenly spread among the portgroups.
            
            Refers instances of *DistributedVirtualPortgroup*.
          type: array
          items:
            $ref: '#/components/schemas/ManagedObjectReference'
        defaultPortConfig:
          description: |2
            Default configuration for the ports in the switch, if the port
            does not inherit configuration from the parent portgroup or has
            its own configuration.
          $ref: '#/components/schemas/DVPortSetting'
        host:
          description: |2
            Hosts that join the switch.
          type: array
          items:
            $ref: '#/components/schemas/DistributedVirtualSwitchHostMember'
        productInfo:
          description: |2
            Vendor, product, and version information for the implementation
            module of the switch.
          $ref: '#/components/schemas/DistributedVirtualSwitchProductSpec'
        targetInfo:
          description: |2
            Intended vendor, product, and version information for the
            implementation module of the switch.
          $ref: '#/components/schemas/DistributedVirtualSwitchProductSpec'
        extensionKey:
          description: |2
            Key of the extension registered by the remote server that
            controls the switch.
          type: string
        vendorSpecificConfig:
          description: |2
            Opaque binary blob that stores vendor specific configuration.
          type: array
          items:
            $ref: '#/components/schemas/DistributedVirtualSwitchKeyedOpaqueBlob'
        policy:
          description: |2
            Usage policy of the switch.
          $ref: '#/components/schemas/DVSPolicy'
        description:
          description: |2
            Description string for the switch.
          type: string
        configVersion:
          description: |2
            Version string of the configuration.
          type: string
        contact:
          description: |2
            Human operator contact information.
          $ref: '#/components/schemas/DVSContactInfo'
        switchIpAddress:
          description: |2
            IP address for the switch, specified using IPv4 dot notation.
            
            The
            utility of this address is defined by other switch features.
          type: string
        createTime:
          description: |2
            Create time of the switch.
          type: string
          format: date-time
        networkResourceManagementEnabled:
          description: |2
            Boolean to indicate if network I/O control is enabled on the
            switch.
          type: boolean
        defaultProxySwitchMaxNumPorts:
          description: |2
            Default host proxy switch maximum port number
          type: integer
          format: int32
        healthCheckConfig:
          description: |2
            VDS health check configuration.
          type: array
          items:
            $ref: '#/components/schemas/DVSHealthCheckConfig'
        infrastructureTrafficResourceConfig:
          description: |2
            Host infrastructure traffic class resource configuration.
          type: array
          items:
            $ref: '#/components/schemas/DvsHostInfrastructureTrafficResource'
        netResourcePoolTrafficResourceConfig:
          description: |2
            Dynamic Host infrastructure traffic class resource configuration.
          type: array
          items:
            $ref: '#/components/schemas/DvsHostInfrastructureTrafficResource'
        networkResourceControlVersion:
          description: |2
            Network resource control version of the switch.
            
            Possible value can be of
            *DistributedVirtualSwitchNetworkResourceControlVersion_enum*.
          type: string
        vmVnicNetworkResourcePool:
          description: |2
            The Virtual NIC network resource pool information for the switch.
          type: array
          items:
            $ref: '#/components/schemas/DVSVmVnicNetworkResourcePool'
        pnicCapacityRatioForReservation:
          description: |2
            The percentage of physical nic link speed
            *PhysicalNicLinkInfo.speedMb*
            available for infrastructure traffic reservation.
            
            If this value is 75, then for a 1Gbps physical nic, only
            750Mbps is allowed for all infrastructure traffic reservations.
          type: integer
          format: int32
      required:
        - uuid
        - name
        - numStandalonePorts
        - numPorts
        - maxPorts
        - uplinkPortPolicy
        - defaultPortConfig
        - productInfo
        - configVersion
        - contact
        - createTime
        - networkResourceManagementEnabled
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfDVSConfigInfo:
      type: object
      description: |2
        A boxed array of *DVSConfigInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DVSConfigInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DVSConfigSpec:
      type: object
      description: |2
        The *DVSConfigSpec*
        data object contains configuration data for a
        *DistributedVirtualSwitch*.
        
        Use the *DistributedVirtualSwitch.ReconfigureDvs_Task*
        method to apply the configuration to the
        switch.
      properties:
        dynamicProperty:
          description: |2
            Set of dynamic properties.
            
            This property is optional because only the
            properties of an object that are unknown to a client will be part of this set.
            This property is not readonly just in case we want to send such properties
            from a client in the future.
          type: array
          items:
            $ref: '#/components/schemas/DynamicProperty'
        configVersion:
          description: |2
            The version string of the configuration that this spec is trying to
            change.
            
            This property is required in reconfiguring a switch
            and should be set to the same value as
            *DVSConfigInfo.configVersion*.
            This property is ignored during switch creation.
          type: string
        name:
          description: |2
            The name of the switch.
            
            Must be unique in the parent folder.
          type: string
        numStandalonePorts:
          description: |2
            The number of standalone ports in the switch.
            
            Standalone ports are
            ports that do not belong to any portgroup. If set to a number larger
            than number of existing standalone ports in the switch, new ports get
            created to meet the number. If set to a number smaller than the number
            of existing standalone ports, free ports (uplink ports excluded) are
            deleted to meet the number. If the set number cannot be met by
            deleting free standalone ports, a fault is raised.
          type: integer
          format: int32
        maxPorts:
          deprecated: true
          description: |2
            Deprecated as of vSphere API 5.0
            The default value of this propoerty is maxint and there is no reason
            for users to change it to a lower value.
            
            The maximum number of DistributedVirtualPorts allowed in the switch.
            
            If specified in a reconfigure operation, this number cannot be smaller
            than the number of existing DistributedVirtualPorts.
          type: integer
          format: int32
        uplinkPortPolicy:
          description: |2
            The uplink port policy.
          $ref: '#/components/schemas/DVSUplinkPortPolicy'
        uplinkPortgroup:
          description: |2
            The uplink portgroups.
            
            Refers instances of *DistributedVirtualPortgroup*.
          type: array
          items:
            $ref: '#/components/schemas/ManagedObjectReference'
        defaultPortConfig:
          description: |2
            The default configuration for ports.
          $ref: '#/components/schemas/DVPortSetting'
        host:
          description: |2
            The host member specification.
            
            A particular host should have only one entry
            in this array. Duplicate entries for the same host will raise a fault.
            The host version should be compatible with the version of
            *DistributedVirtualSwitch*. Use
            *DistributedVirtualSwitchManager.QueryDvsCheckCompatibility*
            to check for compatibility.
          type: array
          items:
            $ref: '#/components/schemas/DistributedVirtualSwitchHostMemberConfigSpec'
        extensionKey:
          description: |2
            The key of the extension registered by a remote server that
            controls the switch.
          type: string
        description:
          description: |2
            Set the description string of the switch.
          type: string
        policy:
          description: |2
            The usage policy of the switch.
          $ref: '#/components/schemas/DVSPolicy'
        vendorSpecificConfig:
          description: |2
            Set the opaque blob that stores vendor specific configuration.
          type: array
          items:
            $ref: '#/components/schemas/DistributedVirtualSwitchKeyedOpaqueBlob'
        contact:
          description: |2
            Set the human operator contact information.
          $ref: '#/components/schemas/DVSContactInfo'
        switchIpAddress:
          description: |2
            IP address for the switch, specified using IPv4 dot notation.
            
            IPv6 address is not supported for this property.
            The utility of this address is defined by other switch features.
            switchIpAddress would be ignored when IPFIX collector uses IPv6.
          type: string
        defaultProxySwitchMaxNumPorts:
          description: |2
            The default host proxy switch maximum port number
          type: integer
          format: int32
        infrastructureTrafficResourceConfig:
          description: |2
            The host infrastructure traffic resource allocation specification.
            
            Only the traffic class resource allocations identified in the list
            will be updated. The other traffic class resource allocations that are not
            specified will not change.
          type: array
          items:
            $ref: '#/components/schemas/DvsHostInfrastructureTrafficResource'
        netResourcePoolTrafficResourceConfig:
          description: |2
            The dynamic host infrastructure traffic resource allocation
            specification.
          type: array
          items:
            $ref: '#/components/schemas/DvsHostInfrastructureTrafficResource'
        networkResourceControlVersion:
          description: |2
            Indicates the Network Resource Control APIs that are supported on the switch.
            
            Possible value can be of
            *DistributedVirtualSwitchNetworkResourceControlVersion_enum*.
          type: string
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfDVSConfigSpec:
      type: object
      description: |2
        A boxed array of *DVSConfigSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DVSConfigSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DVSContactInfo:
      type: object
      description: |2
        Contact information of a human operator.
      properties:
        name:
          description: |2
            The name of the person who is responsible for the switch.
          type: string
        contact:
          description: |2
            The contact information for the person.
          type: string
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfDVSContactInfo:
      type: object
      description: |2
        A boxed array of *DVSContactInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DVSContactInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DVSCreateSpec:
      type: object
      description: |2
        Specification to create a *DistributedVirtualSwitch*.
      properties:
        configSpec:
          description: |2
            Configuration data.
          $ref: '#/components/schemas/DVSConfigSpec'
        productInfo:
          description: |2
            Product information for this switch implementation.
            
            If you
            do not specify this property, the Server will use the latest
            version to create the *DistributedVirtualSwitch*.
          $ref: '#/components/schemas/DistributedVirtualSwitchProductSpec'
        capability:
          description: |2
            Capability of the switch.
          $ref: '#/components/schemas/DVSCapability'
      required:
        - configSpec
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfDVSCreateSpec:
      type: object
      description: |2
        A boxed array of *DVSCreateSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DVSCreateSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DVSFeatureCapability:
      type: object
      description: |2
        The *DVSFeatureCapability* data object
        represents the capabilities supported by a
        *DistributedVirtualSwitch*.
        
        These properties are read-only with
        the exception of
        *DVSFeatureCapability.vmDirectPathGen2Supported*.
      properties:
        networkResourceManagementSupported:
          deprecated: true
          description: |2
            Deprecated as of vSphere API 5.0, use
            <code>networkResourceManagementCapability</code>.*DVSNetworkResourceManagementCapability.networkResourceManagementSupported*.
            
            Indicates whether network I/O control is
            supported on the vSphere Distributed Switch.
          type: boolean
        vmDirectPathGen2Supported:
          deprecated: true
          description: |2
            Deprecated as of vSphere API 8.0. VMDirectPath Gen 2 is no longer supported and
            there is no replacement.
            
            Indicates whether VMDirectPath Gen 2 is supported on the
            distributed virtual switch.
            
            See
            *HostCapability*.*HostCapability.vmDirectPathGen2Supported*
            and *PhysicalNic*.*PhysicalNic.vmDirectPathGen2Supported*.
            
            For a third-party distributed switch implementation, you can
            specify this property during switch creation or when you call the
            *DistributedVirtualSwitch.UpdateDvsCapability* method.
            
            VMDirectPath Gen 2 is supported in
            vSphere Distributed Switch Version 4.1 or later.
          type: boolean
        nicTeamingPolicy:
          description: |2
            The available teaming modes for the vSphere Distributed Switch.
            
            The
            value can be one or more of
            *DistributedVirtualSwitchNicTeamingPolicyMode_enum*.
          type: array
          items:
            type: string
        networkResourcePoolHighShareValue:
          deprecated: true
          description: |2
            Deprecated as of vSphere API 5.0, use
            <code>networkResourceManagementCapability</code>.*DVSNetworkResourceManagementCapability.networkResourcePoolHighShareValue*.
            
            This is the value for *high*
            in *DVSNetworkResourcePoolAllocationInfo.shares*.
            
            This
            implicitly defines the legal range of share values to be between 1 and this.
            This also defines values for other level types, such as
            *normal* being one half of this value and
            *low* being one fourth of this value.
          type: integer
          format: int32
        networkResourceManagementCapability:
          description: |2
            Network resource management capabilities supported by a
            distributed virtual switch.
          $ref: '#/components/schemas/DVSNetworkResourceManagementCapability'
        healthCheckCapability:
          description: |2
            Health check capabilities supported by a *VmwareDistributedVirtualSwitch*.
          $ref: '#/components/schemas/DVSHealthCheckCapability'
        rollbackCapability:
          description: |2
            Host rollback capability.
            
            If <code>rollbackCapability</code>.*DVSRollbackCapability.rollbackSupported*
            is true, network operations that disconnect the the host are rolled back.
          $ref: '#/components/schemas/DVSRollbackCapability'
        backupRestoreCapability:
          description: |2
            Backup, restore, and rollback capabilities.
            
            Backup and restore
            are supported only for *VmwareDistributedVirtualSwitch*.
            Rollback is supported for *VmwareDistributedVirtualSwitch*
            and *DistributedVirtualPortgroup*.
            For information about backup and restore, see the
            *DistributedVirtualSwitchManager* methods
            *DistributedVirtualSwitchManager.DVSManagerExportEntity_Task* and
            *DistributedVirtualSwitchManager.DVSManagerImportEntity_Task*.
            For information about rollback, see the
            *DistributedVirtualSwitch*.*DistributedVirtualSwitch.DVSRollback_Task*
            and *DistributedVirtualPortgroup*.*DistributedVirtualPortgroup.DVPortgroupRollback_Task*
            methods.
          $ref: '#/components/schemas/DVSBackupRestoreCapability'
        networkFilterSupported:
          description: |2
            Indicates whether Network Filter feature is
            supported in vSphere Distributed Switch.
          type: boolean
        macLearningSupported:
          description: |2
            Indicates whether MAC learning feature is
            supported in vSphere Distributed Switch.
          type: boolean
      required:
        - networkResourceManagementSupported
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfDVSFeatureCapability:
      type: object
      description: |2
        A boxed array of *DVSFeatureCapability*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DVSFeatureCapability'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DVSHealthCheckConfig:
      type: object
      description: |2
        The *DVSHealthCheckConfig* data object
        defines vSphere Distributed Switch health check configuration.
      properties:
        enable:
          description: |2
            True if enable health check.
          type: boolean
        interval:
          description: |2
            Interval of health check, in minutes.
          type: integer
          format: int32
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfDVSHealthCheckConfig:
      type: object
      description: |2
        A boxed array of *DVSHealthCheckConfig*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DVSHealthCheckConfig'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DVSHealthCheckCapability:
      type: object
      description: |2
        Health check capabilities of health check supported by the
        vSphere Distributed Switch
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfDVSHealthCheckCapability:
      type: object
      description: |2
        A boxed array of *DVSHealthCheckCapability*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DVSHealthCheckCapability'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DvsHostInfrastructureTrafficResource:
      type: object
      description: |2
        This class defines the resource allocation for a host infrastructure
        traffic class on a physical NIC
      properties:
        key:
          description: |2
            The key of the host infrastructure resource.
            
            Possible value can be of
            *DistributedVirtualSwitchHostInfrastructureTrafficClass_enum*.
          type: string
        description:
          description: |2
            The description of the host infrastructure resource.
            
            This property is ignored for update operation.
          type: string
        allocationInfo:
          description: |2
            The allocation settings of the host infrastructure resource.
          $ref: '#/components/schemas/DvsHostInfrastructureTrafficResourceAllocation'
      required:
        - key
        - allocationInfo
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfDvsHostInfrastructureTrafficResource:
      type: object
      description: |2
        A boxed array of *DvsHostInfrastructureTrafficResource*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DvsHostInfrastructureTrafficResource'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DvsHostInfrastructureTrafficResourceAllocation:
      type: object
      description: |2
        Resource allocation information for a
        host infrastructure traffic class.
      properties:
        limit:
          description: |2
            The maximum allowed usage for a traffic class belonging to
            this resource pool per host physical NIC.
            
            The utilization of a traffic class will not exceed the specified limit
            even if there are available network resources. If this value is unset
            or set to -1 in an update operation, then there is no limit on the network
            resource usage (only bounded by available resource and shares).
            Units are in Mbits/sec.
          type: integer
          format: int64
        shares:
          description: |2
            Network share.
            
            The value is used as a relative weight in competing for
            shared bandwidth, in case of resource contention.
          $ref: '#/components/schemas/SharesInfo'
        reservation:
          description: |2
            Amount of bandwidth resource that is guaranteed available
            to the host infrastructure traffic class.
            
            If the utilization is less than the reservation, the extra bandwidth
            is used for other host infrastructure traffic class types. Reservation is not
            allowed to exceed the value of
            *DvsHostInfrastructureTrafficResourceAllocation.limit*, if
            *DvsHostInfrastructureTrafficResourceAllocation.limit* is set.
            Unit is Mbits/sec.
          type: integer
          format: int64
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfDvsHostInfrastructureTrafficResourceAllocation:
      type: object
      description: |2
        A boxed array of *DvsHostInfrastructureTrafficResourceAllocation*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DvsHostInfrastructureTrafficResourceAllocation'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DVSNameArrayUplinkPortPolicy:
      type: object
      description: |2
        The uplink port policy specifies an array of uniform names
        for the uplink ports across the hosts.
        
        The size of the array indicates
        the number of uplink ports that will be created for each host in the
        switch.
        
        When the names in this array change, the uplink ports on all the
        hosts are automatically renamed accordingly. Increasing the number
        of names in the array automatically creates additional uplink ports
        bearing the added name on each host. Decreasing the number of name
        automatically deletes the unused uplink ports on each host. Decreasing
        beyond the number of unused uplink port raises a fault.
        
        This policy overrides the portgroup port naming format
        (*DVPortgroupConfigSpec*.*DVPortgroupConfigSpec.portNameFormat*),
        if both are defined and the uplink ports are created in a uplink portgroup.
      properties:
        uplinkPortName:
          description: |2
            The uniform name of uplink ports on each host.
          type: array
          items:
            type: string
      required:
        - uplinkPortName
      allOf:
        - $ref: '#/components/schemas/DVSUplinkPortPolicy'

    ArrayOfDVSNameArrayUplinkPortPolicy:
      type: object
      description: |2
        A boxed array of *DVSNameArrayUplinkPortPolicy*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DVSNameArrayUplinkPortPolicy'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DVSNetworkResourceManagementCapability:
      type: object
      description: |2
        Dataobject representing the feature capabilities of network resource management
        supported by the vSphere Distributed Switch.
      properties:
        networkResourceManagementSupported:
          description: |2
            Indicates whether network I/O control is
            supported on the vSphere Distributed Switch.
            
            Network I/O control
            is supported in vSphere Distributed Switch Version 4.1 or later.
          type: boolean
        networkResourcePoolHighShareValue:
          description: |2
            High share level (*SharesLevel_enum*.*high*)
            for *DVSNetworkResourcePoolAllocationInfo*.*DVSNetworkResourcePoolAllocationInfo.shares*.
            
            The <code>networkResourcePoolHighshareValue</code> property implicitly defines
            the legal range of share values to be between 1 and this value.
            This property also defines values for other level types, such as
            *normal* being one half of this value and
            *low* being one fourth of this value.
            This feature is supported in vSphere Distributed
            Switch Version 4.1 or later.
          type: integer
          format: int32
        qosSupported:
          description: |2
            Indicates whether Qos Tag(802.1p priority tag)is supported on the
            vSphere Distributed Switch.
            
            Qos Tag is supported in vSphere
            Distributed Switch Version 5.0 or later.
          type: boolean
        userDefinedNetworkResourcePoolsSupported:
          description: |2
            Indicates whether the switch supports creating user defined resource
            pools.
            
            This feature is supported in vSphere Distributed
            Switch Version 5.0 or later.
          type: boolean
        networkResourceControlVersion3Supported:
          description: |2
            Flag to indicate whether Network Resource Control version 3 is supported.
            
            The API supported by Network Resouce Control version 3 include:
            1. VM virtual NIC network resource specification
               *VirtualEthernetCardResourceAllocation*
            2. VM virtual NIC network resource pool specification
               *DVSVmVnicNetworkResourcePool*
            3. Host infrastructure traffic network resource specification
               *DvsHostInfrastructureTrafficResource*
               
            Network Resource Control version 3 is supported for Switch Version 6.0 or later.
          type: boolean
        userDefinedInfraTrafficPoolSupported:
          description: |2
            Indicates whether user defined infrastructure traffic pool
            supported in vSphere Distributed Switch.
          type: boolean
      required:
        - networkResourceManagementSupported
        - networkResourcePoolHighShareValue
        - qosSupported
        - userDefinedNetworkResourcePoolsSupported
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfDVSNetworkResourceManagementCapability:
      type: object
      description: |2
        A boxed array of *DVSNetworkResourceManagementCapability*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DVSNetworkResourceManagementCapability'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DvsResourceRuntimeInfo:
      type: object
      description: |2
        This class defines the bandwidth reservation information for the
        vSphere Distributed Switch.
      properties:
        capacity:
          description: |2
            Capacity: Total Reservation allocated for Virtual Machine
            Traffic for this switch.
            
            Units in Mbits/s.
          type: integer
          format: int32
        usage:
          description: |2
            usage: Current total usage.
            
            This is the sum of all reservations
            allocated to *DVSVmVnicNetworkResourcePool* on this switch and the
            sum of reservation taken by *VirtualEthernetCard* whose
            backing is not associdated with any *DVSVmVnicNetworkResourcePool*.
            Units in Mbits/s.
          type: integer
          format: int32
        available:
          description: |2
            Available: Current available resource for reservation (capacity - usage).
            
            Units in Mbits/s.
          type: integer
          format: int32
        allocatedResource:
          description: |2
            The reservation taken by *VirtualEthernetCard* of which the
            backing is not associdated with any *DVSVmVnicNetworkResourcePool*
          type: array
          items:
            $ref: '#/components/schemas/DvsVnicAllocatedResource'
        vmVnicNetworkResourcePoolRuntime:
          description: |2
            The runtime information of *DVSVmVnicNetworkResourcePool*.
          type: array
          items:
            $ref: '#/components/schemas/DvsVmVnicNetworkResourcePoolRuntimeInfo'
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfDvsResourceRuntimeInfo:
      type: object
      description: |2
        A boxed array of *DvsResourceRuntimeInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DvsResourceRuntimeInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DVSRollbackCapability:
      type: object
      description: |2
        The *DVSRollbackCapability* data object
        describes the rollback capabilities for a *DistributedVirtualSwitch*.
      properties:
        rollbackSupported:
          description: |2
            Indicates whether rollback is supported on the distributed switch.
          type: boolean
      required:
        - rollbackSupported
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfDVSRollbackCapability:
      type: object
      description: |2
        A boxed array of *DVSRollbackCapability*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DVSRollbackCapability'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DVSRuntimeInfo:
      type: object
      description: |2
        The *DVSRuntimeInfo* data object defines
        runtime information for a vSphere Distributed Switch.
      properties:
        hostMemberRuntime:
          description: |2
            Runtime information of the hosts that joined the switch.
          type: array
          items:
            $ref: '#/components/schemas/HostMemberRuntimeInfo'
        resourceRuntimeInfo:
          description: |2
            The bandwidth reservation information for the switch.
          $ref: '#/components/schemas/DvsResourceRuntimeInfo'
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfDVSRuntimeInfo:
      type: object
      description: |2
        A boxed array of *DVSRuntimeInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DVSRuntimeInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DVSSummary:
      type: object
      description: |2
        Summary of the distributed switch configuration.
      properties:
        name:
          description: |2
            The name of the switch.
          type: string
        uuid:
          description: |2
            The generated UUID of the switch.
          type: string
        numPorts:
          description: |2
            Current number of ports, not including conflict ports.
          type: integer
          format: int32
        productInfo:
          description: |2
            The product information for the implementation of the switch.
          $ref: '#/components/schemas/DistributedVirtualSwitchProductSpec'
        hostMember:
          description: |2
            The names of the hosts that join the switch.
            
            Refers instances of *HostSystem*.
          type: array
          items:
            $ref: '#/components/schemas/ManagedObjectReference'
        vm:
          description: |2
            The Virtual Machines with Virtual NICs that connect to the switch.
            
            In releases after vSphere API 5.0, vSphere Servers might not
            generate property collector update notifications for this property.
            To obtain the latest value of the property, you can use
            PropertyCollector methods RetrievePropertiesEx or WaitForUpdatesEx.
            If you use the PropertyCollector.WaitForUpdatesEx method, specify
            an empty string for the version parameter.
            Since this property is on a DataObject, an update returned by WaitForUpdatesEx may
            contain values for this property when some other property on the DataObject changes.
            If this update is a result of a call to WaitForUpdatesEx with a non-empty
            version parameter, the value for this property may not be current.
            
            Refers instances of *VirtualMachine*.
          type: array
          items:
            $ref: '#/components/schemas/ManagedObjectReference'
        host:
          description: |2
            The hosts with Virtual NICs that connect to the switch.
            
            Refers instances of *HostSystem*.
          type: array
          items:
            $ref: '#/components/schemas/ManagedObjectReference'
        portgroupName:
          description: |2
            The names of the portgroups that are defined on the switch.
          type: array
          items:
            type: string
        description:
          description: |2
            A description string of the switch.
          type: string
        contact:
          description: |2
            The human operator contact information.
          $ref: '#/components/schemas/DVSContactInfo'
        numHosts:
          description: |2
            The number of hosts in the switch.
            
            The value of this property
            is not affected by the privileges granted to the current user.
          type: integer
          format: int32
      required:
        - name
        - uuid
        - numPorts
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfDVSSummary:
      type: object
      description: |2
        A boxed array of *DVSSummary*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DVSSummary'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DVSPolicy:
      type: object
      description: |2
        The switch usage policy types
      properties:
        autoPreInstallAllowed:
          description: |2
            Whether downloading a new proxy VirtualSwitch module to the host is
            allowed to be automatically executed by the switch.
          type: boolean
        autoUpgradeAllowed:
          description: |2
            Whether upgrading of the switch is allowed to be automatically
            executed by the switch.
          type: boolean
        partialUpgradeAllowed:
          description: |2
            Whether to allow upgrading a switch when some of the hosts failed to
            install the needed module.
            
            The vCenter Server will reattempt the
            pre-install operation of the host module on those failed hosts,
            whenever they reconnect to vCenter.
          type: boolean
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfDVSPolicy:
      type: object
      description: |2
        A boxed array of *DVSPolicy*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DVSPolicy'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DVSUplinkPortPolicy:
      type: object
      description: |2
        The base class for uplink port policy.
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfDVSUplinkPortPolicy:
      type: object
      description: |2
        A boxed array of *DVSUplinkPortPolicy*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DVSUplinkPortPolicy'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    EVCMode:
      type: object
      description: |2
        The *EVCMode* data object describes an Enhanced vMotion Compatibility mode.
        
        An EVC mode is associated with a set of CPU features. A vCenter Server defines
        the available EVC modes. You use them to establish a common set of features
        for compatibility between hosts in a cluster. An EVC-enabled cluster supports
        safe vMotion of virtual machines across a range of CPU generations.
        You must use the vSphere Client to configure EVC.
        
        When you add a host to an EVC-enabled cluster, the vCenter Server determines
        the CPU compatibility to preserve vMotion compatibility within the cluster.
        If the host CPU is compatible with those already in the cluster, the Server
        adds the host to the cluster and configures it for compatible operation.
        Hosts that are not compatible are not allowed to join the cluster.
        
        The inherited *ElementDescription.key* property is a string value
        that uniquely identifies an EVC mode. The vCenter Server assigns
        the key value; the vSphere API uses the key to identify modes
        in summary and information objects:
        - *ClusterComputeResourceSummary*.*ClusterComputeResourceSummary.currentEVCModeKey*
        - *HostListSummary*.*HostListSummary.currentEVCModeKey*
        - *HostListSummary*.*HostListSummary.maxEVCModeKey*
        - *VirtualMachineRuntimeInfo*.*VirtualMachineRuntimeInfo.minRequiredEVCModeKey*
          
        The inherited *Description.label* and *Description.summary*
        properties are human-readable strings.
        
        You can use the *EVCMode.track* and *EVCMode.vendorTier* properties to determine
        feature-superset relationships between modes without examining the
        individual feature bits in *EVCMode.guaranteedCPUFeatures*.
        The CPU feature baseline of mode A is a superset of mode B's baseline
        if and only if:
        - modeA.track is the same as or a superset of modeB.track
        - modeA.vendorTier is equal to or greater than modeB.vendorTier
          
        Use the *EVCMode.track* and *EVCMode.vendorTier* properties only for the
        purpose of feature-superset calculations as described above. Do not use
        them to infer the presence or absence of specific features. The
        property values for a given mode may change across releases
        as the set of available EVC modes changes, to better represent mode
        relationships.
      properties:
        guaranteedCPUFeatures:
          deprecated: true
          description: |2
            Deprecated as of vSphere API 6.5 use *EVCMode.featureCapability*.
            
            Describes the CPU feature baseline associated with the EVC mode.
            
            On the cluster where a particular EVC mode is configured,
            those CPU features are guaranteed, either because the host
            hardware naturally matches those features or because CPU feature override
            is used to mask out differences and enforce a match.
          type: array
          items:
            $ref: '#/components/schemas/HostCpuIdInfo'
        featureCapability:
          description: |2
            Describes the feature capability baseline associated with the EVC mode.
            
            On the cluster where a particular EVC mode is configured,
            these features capabilities are guaranteed, either because the host
            hardware naturally matches those features or because feature masks
            are used to mask out differences and enforce a match.
          type: array
          items:
            $ref: '#/components/schemas/HostFeatureCapability'
        featureMask:
          description: |2
            The masks (modifications to a host's feature capabilities) that limit a
            host's capabilities to that of the EVC mode baseline.
          type: array
          items:
            $ref: '#/components/schemas/HostFeatureMask'
        featureRequirement:
          description: |2
            The conditions that must be true of a host's feature capabilities in order
            for the host to meet the minimum requirements of the EVC mode baseline.
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineFeatureRequirement'
        vendor:
          description: |2
            CPU hardware vendor required for this mode.
          type: string
        track:
          description: |2
            Identifiers for feature groups that are at least partially present in
            the *EVCMode.guaranteedCPUFeatures* array for this mode.
            
            Use this property to compare track values from two modes.
            Do not use this property to determine the presence or absence of
            specific features.
          type: array
          items:
            type: string
        vendorTier:
          description: |2
            Index for ordering the set of modes that apply to a given CPU vendor.
            
            Use this property to compare vendor tier values from two modes.
            Do not use this property to determine the presence or absence
            of specific features.
          type: integer
          format: int32
      required:
        - vendor
        - track
        - vendorTier
      allOf:
        - $ref: '#/components/schemas/ElementDescription'

    ArrayOfEVCMode:
      type: object
      description: |2
        A boxed array of *EVCMode*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/EVCMode'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ElementDescription:
      type: object
      description: |2
        Static strings used for describing an object model string or enumeration.
      properties:
        key:
          description: |2
            Enumeration or literal ID being described.
          type: string
      required:
        - key
      allOf:
        - $ref: '#/components/schemas/Description'

    ArrayOfElementDescription:
      type: object
      description: |2
        A boxed array of *ElementDescription*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ElementDescription'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    EnumDescription:
      type: object
      description: |2
        Static strings used for describing an enumerated type.
      properties:
        key:
          description: |2
            Type of enumeration being described.
          type: string
        tags:
          description: |2
            Element descriptions of all the tags for that enumerated type.
          type: array
          items:
            $ref: '#/components/schemas/ElementDescription'
      required:
        - key
        - tags
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfEnumDescription:
      type: object
      description: |2
        A boxed array of *EnumDescription*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/EnumDescription'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    EnvironmentBrowserConfigOptionQuerySpec:
      type: object
      description: |2
        Represent search criteria and filters on a *VirtualMachineConfigOption*
        object.
      properties:
        key:
          description: |2
            The key found in the VirtualMachineConfigOptionDescriptor,
            obtained by invoking the
            *EnvironmentBrowser.QueryConfigOptionDescriptor* operation.
          type: string
        host:
          description: |2
            The host whose ConfigOption is requested.
            
            Refers instance of *HostSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
        guestId:
          description: |2
            The Guest OS IDs whose *VirtualMachineConfigOption* is requested
            *GuestOsIdentifier*
          type: array
          items:
            type: string
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfEnvironmentBrowserConfigOptionQuerySpec:
      type: object
      description: |2
        A boxed array of *EnvironmentBrowserConfigOptionQuerySpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/EnvironmentBrowserConfigOptionQuerySpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ExtendedDescription:
      type: object
      properties:
        messageCatalogKeyPrefix:
          description: |2
            Key to the localized message string in the catalog.
            
            If the localized string contains parameters, values to the
            parameters will be provided in #messageArg.
            E.g: If the message in the catalog is
            "IP address is {address}", value for "address"
            will be provided by #messageArg.
            Both summary and label in Description will have a corresponding
            entry in the message catalog with the keys
            &lt;messageCatalogKeyPrefix&gt;.summary and &lt;messageCatalogKeyPrefix&gt;.label
            respectively.
            Description.summary and Description.label will contain
            the strings in server locale.
          type: string
        messageArg:
          description: |2
            Provides named arguments that can be used to localize the
            message in the catalog.
          type: array
          items:
            $ref: '#/components/schemas/KeyAnyValue'
      required:
        - messageCatalogKeyPrefix
      allOf:
        - $ref: '#/components/schemas/Description'

    ArrayOfExtendedDescription:
      type: object
      description: |2
        A boxed array of *ExtendedDescription*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ExtendedDescription'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ExtendedElementDescription:
      type: object
      properties:
        messageCatalogKeyPrefix:
          description: |2
            Key to the localized message string in the catalog.
            
            If the localized string contains parameters, values to the
            parameters will be provided in #messageArg.
            E.g: If the message in the catalog is
            "IP address is {address}", value for "address"
            will be provided by #messageArg.
            Both summary and label in ElementDescription will have a corresponding
            entry in the message catalog with the keys
            &lt;messageCatalogKeyPrefix&gt;.summary and &lt;messageCatalogKeyPrefix&gt;.label
            respectively.
            ElementDescription.summary and ElementDescription.label will contain
            the strings in server locale.
          type: string
        messageArg:
          description: |2
            Provides named arguments that can be used to localize the
            message in the catalog.
          type: array
          items:
            $ref: '#/components/schemas/KeyAnyValue'
      required:
        - messageCatalogKeyPrefix
      allOf:
        - $ref: '#/components/schemas/ElementDescription'

    ArrayOfExtendedElementDescription:
      type: object
      description: |2
        A boxed array of *ExtendedElementDescription*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ExtendedElementDescription'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    Extension:
      type: object
      description: |2
        This data object type contains all information about an extension.
        
        An extension may contain zero or more server interfaces and zero
        or more clients.
      properties:
        description:
          description: |2
            Description of extension.
          $ref: '#/components/schemas/Description'
        key:
          description: |2
            Extension key.
            
            Should follow java package naming conventions
            for uniqueness (e.g. "com.example.management").
            
            Extension names can only contain characters belonging to the
            lower ASCII character set (UTF-7) with the exception of the
            following characters:
            1. All whitespace characters ("space" - ascii character 0x20 is allowed)
            2. Control characters
            3. Comma (ascii 0x2c), Forward slash (ascii 0x2f), Backward slash (ascii 0x5c),
               Hash/Pound (ascii 0x23), Plus (ascii 0x2b), Greater (ascii 0x3e), Lesser (ascii 0x3c),
               Equals (ascii 0x3d), Semi-colon (ascii 0x3b) and Double quote (ascii 0x22).
          type: string
        company:
          description: |2
            Company information.
          type: string
        type:
          description: |2
            Type of extension (example may include CP-DVS, NUOVA-DVS, etc.).
          type: string
        version:
          description: |2
            Extension version number as a dot-separated string.
            
            For example, "1.0.0"
          type: string
        subjectName:
          description: |2
            Subject name from client certificate.
          type: string
        server:
          description: |2
            Servers for this extension.
          type: array
          items:
            $ref: '#/components/schemas/ExtensionServerInfo'
        client:
          description: |2
            Clients for this extension.
          type: array
          items:
            $ref: '#/components/schemas/ExtensionClientInfo'
        taskList:
          description: |2
            Definitions of tasks defined by this extension.
          type: array
          items:
            $ref: '#/components/schemas/ExtensionTaskTypeInfo'
        eventList:
          description: |2
            Definitions of events defined by this extension.
          type: array
          items:
            $ref: '#/components/schemas/ExtensionEventTypeInfo'
        faultList:
          description: |2
            Definitions of faults defined by this extension.
          type: array
          items:
            $ref: '#/components/schemas/ExtensionFaultTypeInfo'
        privilegeList:
          description: |2
            Definitions privileges defined by this extension.
          type: array
          items:
            $ref: '#/components/schemas/ExtensionPrivilegeInfo'
        resourceList:
          description: |2
            Resource data for all locales
          type: array
          items:
            $ref: '#/components/schemas/ExtensionResourceInfo'
        lastHeartbeatTime:
          description: |2
            Last extension heartbeat time.
          type: string
          format: date-time
        healthInfo:
          description: |2
            Health specification provided by this extension.
          $ref: '#/components/schemas/ExtensionHealthInfo'
        ovfConsumerInfo:
          description: |2
            OVF consumer specification provided by this extension.
          $ref: '#/components/schemas/ExtensionOvfConsumerInfo'
        extendedProductInfo:
          description: |2
            Extended product information, such as URLs to vendor, product, etc.
          $ref: '#/components/schemas/ExtExtendedProductInfo'
        managedEntityInfo:
          description: |2
            Information about entities managed by this extension.
            
            An extension can
            register virtual machines as managed by itself, by setting the
            *managedBy* property of the virtual
            machine.
          type: array
          items:
            $ref: '#/components/schemas/ExtManagedEntityInfo'
        shownInSolutionManager:
          description: |2
            Opt-in to the Solution Manager.
            
            If set to true, this extension will be
            shown in the Solution Manager. If not set, or set to false, this extension
            is not shown in the Solution Manager.
          type: boolean
        solutionManagerInfo:
          description: |2
            Solution Manager configuration for this extension.
          $ref: '#/components/schemas/ExtSolutionManagerInfo'
      required:
        - description
        - key
        - version
        - lastHeartbeatTime
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfExtension:
      type: object
      description: |2
        A boxed array of *Extension*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/Extension'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ExtensionClientInfo:
      type: object
      description: |2
        This data object type describes a client of the extension.
      properties:
        version:
          description: |2
            Client version number as a dot-separated string.
            
            For example, "1.0.0"
          type: string
        description:
          description: |2
            Description of client.
          $ref: '#/components/schemas/Description'
        company:
          description: |2
            Company information.
          type: string
        type:
          description: |2
            Type of client (examples may include win32, .net, linux, etc.).
          type: string
        url:
          description: |2
            Plugin url.
          type: string
      required:
        - version
        - description
        - company
        - type
        - url
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfExtensionClientInfo:
      type: object
      description: |2
        A boxed array of *ExtensionClientInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ExtensionClientInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ExtensionEventTypeInfo:
      type: object
      description: |2
        This data object type describes event types defined by the extension.
      properties:
        eventID:
          description: |2
            The ID of the event type.
            
            Should follow java package
            naming conventions for uniqueness.
          type: string
        eventTypeSchema:
          description: |2
            Optional XML descriptor for the EventType.
            
            The structure of this descriptor is:
            
                 <EventType>
                   <eventTypeID>eventID</eventTypeID>
                   <description>Optional description for event eventID</description>
                   <-- Optional arguments: -->
                   <arguments>
                      <-- Zero or more of: -->
                      <argument>
                        <name>argName</name>
                        <type>argtype</name>
                      </argument>
                   </arguments>
                 </EventType>
            where _argtype_ can be one of the following:
            - This is an example list and should be considered as incomplete.
            <!-- -->
            - Primitive types:
              - _string_
              - _bool_
              - _int_
              - _long_
              - _float_
              - _moid_
            - Entity reference types:
              - _vm_
              - _host_
              - _resourcepool_
              - _computeresource_
              - _datacenter_
              - _datastore_
              - _network_
              - _dvs_
          type: string
      required:
        - eventID
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfExtensionEventTypeInfo:
      type: object
      description: |2
        A boxed array of *ExtensionEventTypeInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ExtensionEventTypeInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ExtensionFaultTypeInfo:
      type: object
      description: |2
        This data object type describes fault types defined by the extension.
      properties:
        faultID:
          description: |2
            The ID of the fault type.
            
            Should follow java package
            naming conventions for uniqueness.
          type: string
      required:
        - faultID
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfExtensionFaultTypeInfo:
      type: object
      description: |2
        A boxed array of *ExtensionFaultTypeInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ExtensionFaultTypeInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ExtensionHealthInfo:
      type: object
      description: |2
        This data object encapsulates the health specification for the
        extension.
      properties:
        url:
          type: string
      required:
        - url
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfExtensionHealthInfo:
      type: object
      description: |2
        A boxed array of *ExtensionHealthInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ExtensionHealthInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ExtensionOvfConsumerInfo:
      type: object
      description: |2
        This data object contains configuration for extensions that also extend the OVF
        functionality of vCenter server.
        
        **Note:** This feature is for internal use only.
      properties:
        callbackUrl:
          description: |2
            Callback url for the OVF consumer.
            
            This URL must point to a SOAP API
            implementing the OVF consumer interface.
            
            Example: https://extension-host:8081/
            
            This callback is for internal use only.
          type: string
        sectionType:
          description: |2
            A list of fully qualified OVF section types that this consumer handles.
            
            Fully qualified means that each section type must be prefixed with its namespace
            enclosed in curly braces. See the examples below.
            
            An InvalidArgument error is thrown if there is overlap between OVF consumers,
            meaning that the same section type appears in the sectionType list of more than
            one OVF consumer.
            
            Example: \[ "{http://www.vmware.com/schema/vServiceManager}vServiceDependency",
            "{http://www.vmware.com/schema/vServiceManager}vServiceBinding" \]
          type: array
          items:
            type: string
      required:
        - callbackUrl
        - sectionType
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfExtensionOvfConsumerInfo:
      type: object
      description: |2
        A boxed array of *ExtensionOvfConsumerInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ExtensionOvfConsumerInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ExtensionPrivilegeInfo:
      type: object
      description: |2
        This data object type describes privileges defined by the extension.
      properties:
        privID:
          description: |2
            The ID of the privilege.
            
            The format should be
            &quot;&lt;group name&gt;.&lt;privilege name&gt;&quot;.
            The group name should be the same as the privGroupName
            property.
            
            The privilege name should follow java package naming
            conventions for uniqueness. The set of characters allowed
            follow the same rules as *Extension.key*.
          type: string
        privGroupName:
          description: |2
            Hierarchical group name.
            
            Each level of the grouping hierarchy is
            separated by a "." so group names may not include a ".".
            *AuthorizationPrivilege.privGroupName*.
          type: string
      required:
        - privID
        - privGroupName
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfExtensionPrivilegeInfo:
      type: object
      description: |2
        A boxed array of *ExtensionPrivilegeInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ExtensionPrivilegeInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ExtensionResourceInfo:
      type: object
      description: |2
        This data object encapsulates the message resources for all locales.
      properties:
        locale:
          type: string
        module:
          description: |2
            Module for a resource type and other message or fault resources.
            
            Examples: "task" for task, "event" for event and "auth" for "privilege".
          type: string
        data:
          type: array
          items:
            $ref: '#/components/schemas/KeyValue'
      required:
        - locale
        - module
        - data
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfExtensionResourceInfo:
      type: object
      description: |2
        A boxed array of *ExtensionResourceInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ExtensionResourceInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ExtensionServerInfo:
      type: object
      description: |2
        This data object type describes a server for the extension.
      properties:
        url:
          description: |2
            Server url.
          type: string
        description:
          description: |2
            Server description.
          $ref: '#/components/schemas/Description'
        company:
          description: |2
            Company information.
          type: string
        type:
          description: |2
            Type of server (examples may include SOAP, REST, HTTP, etc.).
          type: string
        adminEmail:
          description: |2
            Extension administrator email addresses.
          type: array
          items:
            type: string
        serverThumbprint:
          description: |2
            Thumbprint of the extension server certificate presented to clients
          type: string
        serverCertificate:
          description: |2
            X.509 certificate of the extension server presented to clients in PEM
            format according to RFC 7468
            
            ***Since:*** vSphere API Release 8.0.2.0
          type: string
      required:
        - url
        - description
        - company
        - type
        - adminEmail
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfExtensionServerInfo:
      type: object
      description: |2
        A boxed array of *ExtensionServerInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ExtensionServerInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ExtensionTaskTypeInfo:
      type: object
      description: |2
        This data object type describes task types defined by the extension.
      properties:
        taskID:
          description: |2
            The ID of the task type.
            
            Should follow java package
            naming conventions for uniqueness.
          type: string
      required:
        - taskID
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfExtensionTaskTypeInfo:
      type: object
      description: |2
        A boxed array of *ExtensionTaskTypeInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ExtensionTaskTypeInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ExtensionManagerIpAllocationUsage:
      type: object
      description: |2
        This data object type contains usage information about an
        extension's IP allocation usage.
      properties:
        extensionKey:
          description: |2
            Key of the extension whose usage is being
            reported.
          type: string
        numAddresses:
          description: |2
            Number of IP addresses allocated from IP pools.
          type: integer
          format: int32
      required:
        - extensionKey
        - numAddresses
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfExtensionManagerIpAllocationUsage:
      type: object
      description: |2
        A boxed array of *ExtensionManagerIpAllocationUsage*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ExtensionManagerIpAllocationUsage'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    FaultsByHost:
      type: object
      description: |2
        Group of faults associated with Host.
        
        This Class is used in e.g.
        *HostEnterMaintenanceResult*.
      properties:
        host:
          description: |2
            The Host in the cluster for which faults were generated.
            
            Refers instance of *HostSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
        faults:
          description: |2
            The array of faults related to the given Host.
          type: array
          items:
            $ref: '#/components/schemas/MethodFault'
      required:
        - host
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfFaultsByHost:
      type: object
      description: |2
        A boxed array of *FaultsByHost*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/FaultsByHost'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    FaultsByVM:
      type: object
      description: |2
        VM specific faults.
        
        This Class is used in e.g.
        *HostEnterMaintenanceResult*.
      properties:
        vm:
          description: |2
            The VM for which faults were generated.
            
            Refers instance of *VirtualMachine*.
          $ref: '#/components/schemas/ManagedObjectReference'
        faults:
          description: |2
            The array of faults related to the given VM.
          type: array
          items:
            $ref: '#/components/schemas/MethodFault'
      required:
        - vm
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfFaultsByVM:
      type: object
      description: |2
        A boxed array of *FaultsByVM*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/FaultsByVM'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    FeatureEVCMode:
      type: object
      description: |2
        The *FeatureEVCMode* data object describes an Enhanced vMotion
        Compatibility mode for VMFeature.
        
        An Feature EVC mode is associated with a set of features. This object
        is modeled after EVCMode, which is more CPU-centric. Members that
        are specific to CPU are removed in favor of VMFeature EVC properties.
        For more information about EVC interaction, see *EVCMode*.
        
        The inherited *ElementDescription.key* property is a string value
        that uniquely identifies an EVC mode. The vCenter Server assigns
        the key value; the vSphere API uses the key to identify modes
        in summary and information objects, for example:
        - *ClusterComputeResourceSummary*.*ClusterComputeResourceSummary.currentEVCGraphicsModeKey*
        - *HostListSummary*.*HostListSummary.currentEVCGraphicsModeKey*
          
        The inherited *Description.label* and *Description.summary*
        properties are human-readable strings.
        
        ***Since:*** vSphere API Release 7.0.1.0
      properties:
        mask:
          description: |2
            The masks (modifications to a host's feature capabilities) that limit a
            host's capabilities to that of the EVC mode baseline.
          type: array
          items:
            $ref: '#/components/schemas/HostFeatureMask'
        capability:
          description: |2
            Describes the feature capability baseline associated with the EVC mode.
            
            On the cluster where a particular EVC mode is configured,
            these features capabilities are guaranteed, either because the host
            hardware naturally matches those features or because feature masks
            are used to mask out differences and enforce a match.
          type: array
          items:
            $ref: '#/components/schemas/HostFeatureCapability'
        requirement:
          description: |2
            The conditions that must be true of a host's feature capabilities in order
            for the host to meet the minimum requirements of the EVC mode baseline.
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineFeatureRequirement'
      allOf:
        - $ref: '#/components/schemas/ElementDescription'

    ArrayOfFeatureEVCMode:
      type: object
      description: |2
        A boxed array of *FeatureEVCMode*. To be used in *Any* placeholders.
        
        ***Since:*** vSphere API Release 7.0.1.0
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/FeatureEVCMode'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    FileLockInfo:
      type: object
      description: |2
        The File information available on a particular file on the host that
        can be fetched.
        
        Attempt is made to query and fetch as much information
        as possible depending on the file system the file is residing on.
        
        ***Since:*** vSphere API Release 8.0.2.0
      properties:
        filePath:
          type: string
        host:
          type: string
        mac:
          type: string
        id:
          type: string
        worldName:
          type: string
        ownerId:
          type: string
        lockMode:
          type: string
        acquired:
          description: |2
            Optional future - will be fetched if available.
          type: string
          format: date-time
        heartbeat:
          type: string
          format: date-time
        refCount:
          type: integer
          format: int32
      required:
        - filePath
        - host
        - mac
        - id
        - worldName
        - lockMode
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfFileLockInfo:
      type: object
      description: |2
        A boxed array of *FileLockInfo*. To be used in *Any* placeholders.
        
        ***Since:*** vSphere API Release 8.0.2.0
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/FileLockInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    FileLockInfoResult:
      type: object
      description: |2
        ***Since:*** vSphere API Release 8.0.2.0
      properties:
        lockInfo:
          description: |2
            FileLockInfo entries populated based on results fetched from host.
            
            If a single path is provided result should contain a single entry.
            For a generic VM name potentially multiple entries could be fetched
            and populated. Refer to *FileManager.QueryFileLockInfo* for
            more details.
          type: array
          items:
            $ref: '#/components/schemas/FileLockInfo'
        fault:
          $ref: '#/components/schemas/MethodFault'
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfFileLockInfoResult:
      type: object
      description: |2
        A boxed array of *FileLockInfoResult*. To be used in *Any* placeholders.
        
        ***Since:*** vSphere API Release 8.0.2.0
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/FileLockInfoResult'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    FolderBatchAddHostsToClusterResult:
      type: object
      properties:
        hostsAddedToCluster:
          description: |2
            List of hosts that were successfully added to the cluster
            in the desired state.
            
            Refers instances of *HostSystem*.
          type: array
          items:
            $ref: '#/components/schemas/ManagedObjectReference'
        hostsFailedInventoryAdd:
          description: |2
            Contains a fault for each host that failed addition to the inventory.
            
            A failed host will not be part of hostsAddedToCluster list.
          type: array
          items:
            $ref: '#/components/schemas/FolderFailedHostResult'
        hostsFailedMoveToCluster:
          description: |2
            List of hosts that are part of inventory but failed to move to the
            cluster in the desired state.
            
            A failed host will not be part of hostsAddedToCluster list however,
            a failed host will be part of inventory as it might have been added
            as a standalone host but failed to move to cluster in the desired
            state.
          type: array
          items:
            $ref: '#/components/schemas/FolderFailedHostResult'
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfFolderBatchAddHostsToClusterResult:
      type: object
      description: |2
        A boxed array of *FolderBatchAddHostsToClusterResult*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/FolderBatchAddHostsToClusterResult'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    FolderBatchAddStandaloneHostsResult:
      type: object
      properties:
        addedHosts:
          description: |2
            List of hosts that were successfully added as standalone hosts
            to the inventory.
            
            Refers instances of *HostSystem*.
          type: array
          items:
            $ref: '#/components/schemas/ManagedObjectReference'
        hostsFailedInventoryAdd:
          description: |2
            Contains a fault for each host that failed to add.
            
            A failed host
            will not be part of addedHosts list.
          type: array
          items:
            $ref: '#/components/schemas/FolderFailedHostResult'
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfFolderBatchAddStandaloneHostsResult:
      type: object
      description: |2
        A boxed array of *FolderBatchAddStandaloneHostsResult*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/FolderBatchAddStandaloneHostsResult'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    FolderFailedHostResult:
      type: object
      properties:
        hostName:
          description: |2
            Host name for which fault belongs to.
          type: string
        host:
          description: |2
            Host for which fault belongs to.
            
            Only set when the HostSystem
            reference is avaibale as a result of Host being part of inventory.
            
            Refers instance of *HostSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
        context:
          description: |2
            Message describing context where the failure happened.
          $ref: '#/components/schemas/LocalizableMessage'
        fault:
          description: |2
            Exception encountered while operating on this host.
          $ref: '#/components/schemas/MethodFault'
      required:
        - context
        - fault
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfFolderFailedHostResult:
      type: object
      description: |2
        A boxed array of *FolderFailedHostResult*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/FolderFailedHostResult'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    FolderNewHostSpec:
      type: object
      properties:
        hostCnxSpec:
          description: |2
            Connection Spec for new host that needs to be added to the inventory.
          $ref: '#/components/schemas/HostConnectSpec'
        esxLicense:
          description: |2
            LicenseKey.
            
            See *LicenseManager*. If supplied, new
            host will be updated with the license.
          type: string
      required:
        - hostCnxSpec
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfFolderNewHostSpec:
      type: object
      description: |2
        A boxed array of *FolderNewHostSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/FolderNewHostSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HbrManagerReplicationVmInfo:
      type: object
      description: |2
        This data object represents the essential information about the
        state of a given replicated *VirtualMachine*.
      properties:
        state:
          description: |2
            A string representing the current *ReplicationVmState_enum* of the virtual machine.
          type: string
        progressInfo:
          description: |2
            Progress stats for the current operation.
            
            Never present if the state is
            not "syncing" or "active". If not present while in one of these states,
            the host is still gathering initial operation statistics (progress can
            be assumed to be 0).
          $ref: '#/components/schemas/ReplicationVmProgressInfo'
        imageId:
          description: |2
            An optional imageId that identifies the instance being created,
            this is the imagId string that is passed to
            *HbrManager.HbrCreateInstance_Task* or
            *HbrManager.HbrStartOfflineInstance_Task*
          type: string
        lastError:
          description: |2
            A MethodFault representing the last replication specific error
            that the *VirtualMachine* encountered during a create
            instance operation.
            
            The successful creation of an instance
            will clear any error.
          $ref: '#/components/schemas/MethodFault'
      required:
        - state
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHbrManagerReplicationVmInfo:
      type: object
      description: |2
        A boxed array of *HbrManagerReplicationVmInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HbrManagerReplicationVmInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ReplicationVmProgressInfo:
      type: object
      description: |2
        A set of statistics related to the progress of the current
        operation (full sync or lwd).
      properties:
        progress:
          description: |2
            An estimation of the operation progress as a percentage completed,
            from 0 to 100.
          type: integer
          format: int32
        bytesTransferred:
          description: |2
            Number of bytes transferred so far.
            
            For sync operations, this value includes (i.e. counts multiple
            times) areas that were transferred multiple times (due to stopping
            and continuing the operation, or for some errors).
          type: integer
          format: int64
        bytesToTransfer:
          description: |2
            The total number of bytes to be transferred.
            
            For lwd operations, this is the total size of the disk images that
            are transferring. This is known from the start and will not change
            during a lwd operation.
            
            For sync operations, this is the total size of the blocks that have
            been found not to match between the primary and secondary (by
            comparing checksums). It starts from 0 and grows as the checksum
            operations advance. The value includes (i.e. counts multiple times)
            areas that will end up being transferred more than once (due to
            stopping and continuing the operation, or for some errors).
          type: integer
          format: int64
        checksumTotalBytes:
          description: |2
            The total number of bytes to be checksummed, only present for sync
            tasks.
            
            This is the total size of all disks.
          type: integer
          format: int64
        checksumComparedBytes:
          description: |2
            The total number of bytes that were checksummed, only present for
            sync tasks.
          type: integer
          format: int64
      required:
        - progress
        - bytesTransferred
        - bytesToTransfer
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfReplicationVmProgressInfo:
      type: object
      description: |2
        A boxed array of *ReplicationVmProgressInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ReplicationVmProgressInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HbrManagerVmReplicationCapability:
      type: object
      description: |2
        This data object represents the capabilities of a given
        *VirtualMachine*.
      properties:
        vm:
          description: |2
            Refers instance of *VirtualMachine*.
          $ref: '#/components/schemas/ManagedObjectReference'
        supportedQuiesceMode:
          description: |2
            A string representing the current *QuiesceMode_enum* of the virtual machine.
          type: string
        compressionSupported:
          description: |2
            Flag indicating compression support on the host on which this virtual
            machine is running.
          type: boolean
        maxSupportedSourceDiskCapacity:
          description: |2
            Maximum disk size supported (in bytes) on the host on which this virtual
            machine is running.
          type: integer
          format: int64
        minRpo:
          description: |2
            Minimum rpo supported (in minutes) on the host on which this virtual
            machine is running.
          type: integer
          format: int64
        fault:
          description: |2
            If we are unable to find the VM, we would set this to NotFound fault.
            
            And, if we are unable to find the host for a given VM, then we would
            set this to HostNotReachable fault.
            Unset if we are able to fetch the capabilities for the VM.
          $ref: '#/components/schemas/MethodFault'
      required:
        - vm
        - supportedQuiesceMode
        - compressionSupported
        - maxSupportedSourceDiskCapacity
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHbrManagerVmReplicationCapability:
      type: object
      description: |2
        A boxed array of *HbrManagerVmReplicationCapability*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HbrManagerVmReplicationCapability'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HealthUpdate:
      type: object
      properties:
        entity:
          description: |2
            The entity on which the health update occurred.
            
            Only host is supported.
            
            Refers instance of *ManagedEntity*.
          $ref: '#/components/schemas/ManagedObjectReference'
        healthUpdateInfoId:
          description: |2
            The ID of the corresponding HealthUpdateInfo.
          type: string
        id:
          description: |2
            The ID of this particular HealthUpdate instance, for cross-reference
            with HealthUpdateProvider logs.
          type: string
        status:
          description: |2
            The current health status.
            
            Values are of type
            *Status*.
          $ref: '#/components/schemas/ManagedEntityStatus_enum'
        remediation:
          description: |2
            A description of the physical remediation required to resolve this
            health update.
            
            For example, "Replace Fan #3".
          type: string
      required:
        - entity
        - healthUpdateInfoId
        - id
        - status
        - remediation
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHealthUpdate:
      type: object
      description: |2
        A boxed array of *HealthUpdate*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HealthUpdate'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HealthUpdateInfo:
      type: object
      properties:
        id:
          description: |2
            The identifier provided by the HealthUpdateProvider.
            
            Identifiers are
            required to be unique per HealthUpdateProvider.
          type: string
        componentType:
          description: |2
            The component type.
            
            For supported values, see *HealthUpdateInfoComponentType_enum*
          type: string
        description:
          description: |2
            A description of the change in health.
          type: string
      required:
        - id
        - componentType
        - description
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHealthUpdateInfo:
      type: object
      description: |2
        A boxed array of *HealthUpdateInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HealthUpdateInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PerfInterval:
      type: object
      description: |2
        This data object type contains metadata about a performance interval.
        - For VirtualCenter Server systems, instances of this data object are
          referred to as &#147;historical intervals&#148; because they control
          how data collected from the ESX systems will be aggregated and stored
          in the database.
        - For ESX system, this data object is typically referred to simply as the
          &#147;interval&#148; or &#147;performance interval&#148; because ESX
          does not aggregate statistical data. 
          
        For ESX systems, a single instance of this data object exists. It cannot
        be modified. It has these properties:
        <table border="1"width="100%">
        <tr>
        <th>key</th>
        <th>samplingPeriod</th>
        <th>length</th>
        <th>name</th>
        <th>level</th>
        <th>enabled</th>
        </tr>
        <tr>
        <td>1</td>
        <td>300</td>
        <td>129600</td>
        <td>PastDay</td>
        <td>null</td>
        <td>true</td>
        </tr>
        </table>
        
        VirtualCenter Server system provides four instances of this data object
        by default, that apply globally to all system entities.
        
        **Example Collection Levels**  
        VirtualCenter Server
        uses the specifications configured in its historical intervals to collect metrics
        from the ESX systems that it manages. The quantity of data collected depends on
        the level settings for the server, and the level associated with a specific counter.
        Both factors may change from one version of the products to the next. In general,
        the lower the number, the smaller the amount of data collected. For VirtualCenter
        Server 2.5, for example, the levels 1 through 4 collected data as follows:
        1. Basic counters defined with "average" *rollup type* for CPU, Memory,
           Disk, and Network; plus counters for System Uptime, System Heartbeat,
           and DRS (Distributed Resource Scheduler, tracked in the
           "clusterServices" group). Does not include counters for devices.
        2. Counters defined with "average," "summation," and "latest" *rollup types* for CPU,
           Memory, Disk, and Network; plus counters for System Uptime, System
           Heartbeat, and DRS (clusterServices). Does not include counters for
           devices.
        3. Counters defined with "average," "summmation," and "latest" *rollup types* for CPU,
           Memory, Disk, Network, and all devices; plus counters for System
           Uptime, System Heartbeat, and DRS (clusterServices).
        4. All counters defined for all entities and devices, for every *rollup type*, including
           &#147;minimum&#148; and &#147;maximum&#46;&#148; 
           
        Default properties for the four built-in historical intervals
        include:
        <table border="1"width="100%">
        <tr>
        <th>key</th>
        <th>samplingPeriod</th>
        <th>length</th>
        <th>name</th>
        <th>level</th>
        <th>enabled</th>
        </tr>
        <tr>
        <td>1</td>
        <td>300</td>
        <td>86400</td>
        <td>Past&nbsp;day</td>
        <td>1</td>
        <td>true</td>
        </tr>
        <tr>
        <td>2</td>
        <td>1800</td>
        <td>604800</td>
        <td>Past&nbsp;week</td>
        <td>1</td>
        <td>true</td>
        </tr>
        <tr>
        <td>3</td>
        <td>7200</td>
        <td>2592000</td>
        <td>Past&nbsp;month</td>
        <td>1</td>
        <td>true</td>
        </tr>
        <tr>
        <td>4</td>
        <td>86400</td>
        <td>31536000</td>
        <td>Past&nbsp;year</td>
        <td>1</td>
        <td>true</td>
        </tr>
        </table>
        
        All values are in seconds. The default setting for vCenter Server is
        level 1, which retains sampled statistical data as follows:
        - 5-minute samples for the past day
        - 30-minute samples for the past week
        - 2-hour samples for the past month
        - 1-day samples for the past year 
          
        Data older than a year is purged from the vCenter Server database.
        
        Prior to version 2&#46;5 of the API, this data object could be used in
        conjunction with the *PerformanceManager.CreatePerfInterval*
        operation, to define new, custom historical intervals. That operation has
        been deprecated: Adding and deleting objects of this type is no longer
        supported. However, the default historical intervals can be enabled or
        disabled, and can be modified within certain limits (with the *PerformanceManager.UpdatePerfInterval* operation)&#46;
      properties:
        key:
          description: |2
            A unique identifier for the interval.
          type: integer
          format: int32
        samplingPeriod:
          description: |2
            Number of seconds that data is sampled for this interval.
            
            The real-time
            samplingPeriod is 20 seconds.
          type: integer
          format: int32
        name:
          description: |2
            The name of the historical interval.
            
            A localized string that provides a
            name for the interval. Names include:
            - "Past Day"
            - "Past Week"
            - "Past Month"
            - "Past Year"
              
            The name is not meaningful in terms of system behavior. That is, the
            interval named &#147;Past Week&#148; works as it does because of its
            length, level, and so on, not because of the value of this string.
          type: string
        length:
          description: |2
            Number of seconds that the statistics corresponding to this interval are
            kept on the system.
          type: integer
          format: int32
        level:
          description: |2
            Statistics collection level for this historical interval.
            
            vCenter Server
            will aggregate only those statistics that match the value of this
            property for this historical interval. For ESX, the value of this
            property is null. For vCenter Server, the value will be a number from 1
            to 4.
          type: integer
          format: int32
        enabled:
          description: |2
            Indicates whether the interval is enabled (true) or disabled (false).
            
            Disabling a historical interval prevents vCenter Server from collecting
            metrics for that interval and all higher (longer) intervals.
            
            For example, disabling the "Past Month" interval disables both "Past
            Month" and "Past Year" intervals. The system will aggregate and retain
            performance data using the "Past Day" and "Past Week" intervals only.
          type: boolean
      required:
        - key
        - samplingPeriod
        - name
        - length
        - enabled
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfPerfInterval:
      type: object
      description: |2
        A boxed array of *PerfInterval*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PerfInterval'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostServiceTicket:
      type: object
      description: |2
        Return value for ticketable host services.
        
        The server has the option to
        provide a hostname and port for a future ticket-authenticated connection to
        a service on a host. If the service provider does not return a host the
        client must connect to the same host it used to request the ticket. In case
        the service provider does not return a port, except in the case of connecting
        to CIM interfaces, the client must connect using the same port it used to
        request the ticket. In the case of connecting to a CIM interface the
        standard well known port number for the particular service will be used for
        the connection.
        
        For example, when a client requests a ticket from an ESX Server, the returned ticket
        may omit the optional host and port. In such a case, the client establishes an
        out-of-band ticketed connection to the same server host and on the same port on
        which it made the connection to request the ticket. If this request is
        made to the VirtualCenter server, but the server does not provide the required
        service directly, then the server provides a hostname and port for a server that
        accepts the ticketed connection and provides the service.
      properties:
        host:
          description: |2
            The name of the host providing the service for which the ticket applies.
            
            If
            omitted, then the client uses the host name for the server that issued the ticket.
          type: string
        port:
          description: |2
            Access to some services is made possible by connecting to a port on a
            server.
            
            If the service for which a ticket is issued is available on a
            particular port, that port number is specified with this property. If
            omitted, except in the case of connecting to CIM interfaces, the port
            number for the service that issued the ticket is used. In the case of
            connecting to a CIM interface the standard well known port for the
            particular service will be used for the connection.
          type: integer
          format: int32
        sslThumbprint:
          description: |2
            The expected thumbprint of the SSL cert of the host to which
            we are connecting.
          type: string
        service:
          description: |2
            The name of the service to which to connect.
          type: string
        serviceVersion:
          description: |2
            A dot-separated string identifying the service protocol version.
            
            For example, 1.0
            is used for NFC hosted by vpxa on ESX 2.5, and 1.1 is used for
            NFC hosted by hostd on ESX 3.0.
          type: string
        sessionId:
          description: |2
            An identifying string for the session created for the ticketed connection.
            
            This
            is used by the host service to identify the operations permitted within the
            session.
          type: string
          format: password
      required:
        - service
        - serviceVersion
        - sessionId
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostServiceTicket:
      type: object
      description: |2
        A boxed array of *HostServiceTicket*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostServiceTicket'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostSystemComplianceCheckState:
      type: object
      description: |2
        The host profile compliance check state.
      properties:
        state:
          description: |2
            The compliance check operation state.
            
            See
            *ComplianceResultStatus_enum* for the valid values.
          type: string
        checkTime:
          description: |2
            The compliance check starting time for running state; compliance
            check finish time for others.
          type: string
          format: date-time
      required:
        - state
        - checkTime
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostSystemComplianceCheckState:
      type: object
      description: |2
        A boxed array of *HostSystemComplianceCheckState*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostSystemComplianceCheckState'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostSystemReconnectSpec:
      type: object
      description: |2
        Specifies the parameters needed to merge vCenter Server settings
        and host settings on reconnect.
      properties:
        syncState:
          description: |2
            This flag should be set if on a host reconnect, state such as virtual
            machine state in vCenter Server e.g.
            
            the virtual machine inventory
            and autostart rules, has to be propogated to the host. Any virtual
            machines that may have been unregistered or orphaned will be
            reregistered according to the vCenter Server inventory. Any autostart
            rules that may have changed on the host will be similarly restored.
            This flag is primarily intended for stateless hosts to enable vCenter
            Server to resync these hosts after a reboot.
          type: boolean
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostSystemReconnectSpec:
      type: object
      description: |2
        A boxed array of *HostSystemReconnectSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostSystemReconnectSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostSystemRemediationState:
      type: object
      description: |2
        The valid remediation states.
        
        Host profile apply has two stages:
        precheck remediation and remediation. Precheck remediation generates
        task list and task requirement: apply may fail when task requirements
        are not satisfied. Remediation stage can be started only when precheck
        remediation succeeded.
      properties:
        state:
          description: |2
            The remediation or precheck remediation operation state.
            
            See
            *HostSystemRemediationStateState_enum* for the valid
            values.
          type: string
        operationTime:
          description: |2
            For any "running" state, this is the starting time; for others, this
            is the completion time.
          type: string
          format: date-time
      required:
        - state
        - operationTime
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostSystemRemediationState:
      type: object
      description: |2
        A boxed array of *HostSystemRemediationState*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostSystemRemediationState'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HttpNfcLeaseCapabilities:
      type: object
      description: |2
        Descriptor of the lease capabilities.
      properties:
        pullModeSupported:
          description: |2
            True if overall this lease can be upgraded to pull mode and
            all hosts in this lease support pull mode.
            
            Prerequisite before calling pullFromUrls.
          type: boolean
        corsSupported:
          description: |2
            True if all hosts in the lease support HTTP CORS.
          type: boolean
      required:
        - pullModeSupported
        - corsSupported
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHttpNfcLeaseCapabilities:
      type: object
      description: |2
        A boxed array of *HttpNfcLeaseCapabilities*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HttpNfcLeaseCapabilities'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HttpNfcLeaseDatastoreLeaseInfo:
      type: object
      description: |2
        For a given datastore, represented by datastoreKey, contains a list of leased
        multi-POST-capable hosts connected to it.
      properties:
        datastoreKey:
          description: |2
            Datastore key.
          type: string
        hosts:
          description: |2
            List of hosts connected to this datastore and covered by this lease.
            
            The
            hosts in this list are multi-POST-capable, and any one of them can be used
            to transfer disks on this datastore.
          type: array
          items:
            $ref: '#/components/schemas/HttpNfcLeaseHostInfo'
      required:
        - datastoreKey
        - hosts
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHttpNfcLeaseDatastoreLeaseInfo:
      type: object
      description: |2
        A boxed array of *HttpNfcLeaseDatastoreLeaseInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HttpNfcLeaseDatastoreLeaseInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HttpNfcLeaseDeviceUrl:
      type: object
      description: |2
        Provides a mapping from logical device IDs to upload/download
        URLs.
        
        For export, a single device id is returned based on the object
        identifiers for the objects.
        
        For import, two device ids are returned. One based on the object
        names used in the ImportSpec, and one based on the object
        identifiers for the created objects. This is immutable and would
        match the id if an ExportLease is latter created.
      properties:
        key:
          description: |2
            The immutable identifier for the device.
            
            This is set for both import/export
            leases.
          type: string
        importKey:
          description: |2
            Identifies the device based on the names in an ImportSpec.
            
            This is only
            set for import leases.
          type: string
        url:
          description: |2
            The URL to use to upload/download the device content.
            
            The returned url contains either an IP address, a hostname or a "\*". If a
            "\*" is returned the client must substitutes the "\*" with the hostname
            or IP address used when connecting to the server.
            For example if the client connected to "someHost" and the device
            url returned is:
            
                 http:// *:somePort/somePath
            the client must substitute the "\*" with "someHost" before use. The resulting
            url would be:
            
                 http://someHost:somePort/somePath
            The server cannot return a valid hostname or IP address when the client
            connects via a NAT, a proxy, or when the server is multihomed.
          type: string
        sslThumbprint:
          description: |2
            SSL thumbprint for the host the URL refers to.
            
            Empty if no SSL thumbprint
            is available or needed.
          type: string
        disk:
          description: |2
            Optional value to specify if the attached file is a disk in
            vmdk format.
          type: boolean
        targetId:
          description: |2
            Id for this target.
            
            This only used for multi-POSTing, where a single HTTP
            POST is applied to multiple targets.
          type: string
        datastoreKey:
          description: |2
            Key for the datastore this disk is on.
            
            This is used to look up hosts
            which can be used to multi-POST disk contents, in the host map of the
            lease.
          type: string
        fileSize:
          description: |2
            Specifies the size of the file backing for this device.
            
            This property
            is only set for non-disk file backings.
          type: integer
          format: int64
      required:
        - key
        - importKey
        - url
        - sslThumbprint
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHttpNfcLeaseDeviceUrl:
      type: object
      description: |2
        A boxed array of *HttpNfcLeaseDeviceUrl*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HttpNfcLeaseDeviceUrl'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HttpNfcLeaseHostInfo:
      type: object
      description: |2
        Contains information about how to connect to a given host.
      properties:
        url:
          description: |2
            The host url will be of the form
            
                https://hostname/nfc/ticket id/
            The url can be used for both POST requests to a single device and for
            multi-POST requests to multiple devices. A single-POST URL is formed
            by adding the target id to the hostUrl:
            
                https://hostname/nfc/ticket id/target id
            a multi-POST URL looks like
            
                https://hostname/nfc/ticket id/multi?targets=id1,id2,id3,...
          type: string
        sslThumbprint:
          description: |2
            SSL thumbprint for the host the URL refers to.
            
            Empty if no SSL thumbprint
            is available or needed.
          type: string
      required:
        - url
        - sslThumbprint
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHttpNfcLeaseHostInfo:
      type: object
      description: |2
        A boxed array of *HttpNfcLeaseHostInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HttpNfcLeaseHostInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HttpNfcLeaseInfo:
      type: object
      description: |2
        This class holds information about the lease, such as the entity covered by the
        lease, and HTTP URLs for up/downloading file backings.
      properties:
        lease:
          description: |2
            The *HttpNfcLease* object this information belongs to.
            
            Refers instance of *HttpNfcLease*.
          $ref: '#/components/schemas/ManagedObjectReference'
        entity:
          description: |2
            The *VirtualMachine* or *VirtualApp* this
            lease covers.
            
            Refers instance of *ManagedEntity*.
          $ref: '#/components/schemas/ManagedObjectReference'
        deviceUrl:
          description: |2
            The deviceUrl property contains a mapping from logical device keys
            to URLs.
          type: array
          items:
            $ref: '#/components/schemas/HttpNfcLeaseDeviceUrl'
        totalDiskCapacityInKB:
          description: |2
            Total capacity in kilobytes of all disks in all Virtual Machines
            covered by this lease.
            
            This can be used to track progress when
            transferring disks.
          type: integer
          format: int64
        leaseTimeout:
          description: |2
            Number of seconds before the lease times out.
            
            The client extends
            the lease by calling *HttpNfcLease.HttpNfcLeaseProgress* before
            the timeout has expired.
          type: integer
          format: int32
        hostMap:
          description: |2
            Map of URLs for leased hosts for a given datastore.
            
            This is used to
            look up multi-POST-capable hosts for a datastore.
          type: array
          items:
            $ref: '#/components/schemas/HttpNfcLeaseDatastoreLeaseInfo'
      required:
        - lease
        - entity
        - totalDiskCapacityInKB
        - leaseTimeout
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHttpNfcLeaseInfo:
      type: object
      description: |2
        A boxed array of *HttpNfcLeaseInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HttpNfcLeaseInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HttpNfcLeaseManifestEntry:
      type: object
      description: |2
        Provides a manifest for downloaded (exported) files and disks.
      properties:
        key:
          description: |2
            Key used to match this entry with the corresponding *HttpNfcLeaseDeviceUrl*
            entry in *HttpNfcLease.info*.
          type: string
        sha1:
          description: |2
            SHA-1 checksum of the data stream sent from the server.
            
            This can be used
            to verify that the bytes received by the client match those sent by the
            HttpNfc server.
          type: string
        checksum:
          description: |2
            Checksum of the data stream sent/recieved by host.
            
            See *HttpNfcLeaseManifestEntryChecksumType_enum* for used algoritm.
          type: string
        checksumType:
          description: |2
            Algorithm used to produce checksum in respective property.
            
            See *HttpNfcLeaseManifestEntryChecksumType_enum* for supported algorithms.
          type: string
        size:
          description: |2
            Size of the downloaded file.
          type: integer
          format: int64
        disk:
          description: |2
            True if the downloaded file is a virtual disk backing.
          type: boolean
        capacity:
          description: |2
            The capacity of the disk, if the file is a virtual disk backing.
          type: integer
          format: int64
        populatedSize:
          description: |2
            The populated size of the disk, if the file is a virtual disk backing.
          type: integer
          format: int64
      required:
        - key
        - sha1
        - size
        - disk
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHttpNfcLeaseManifestEntry:
      type: object
      description: |2
        A boxed array of *HttpNfcLeaseManifestEntry*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HttpNfcLeaseManifestEntry'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HttpNfcLeaseProbeResult:
      type: object
      description: |2
        Descriptor of ProbeResult
        
        ***Since:*** vSphere API Release 7.0.2.0
      properties:
        serverAccessible:
          description: |2
            True if target host can access the web server.
          type: boolean
      required:
        - serverAccessible
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHttpNfcLeaseProbeResult:
      type: object
      description: |2
        A boxed array of *HttpNfcLeaseProbeResult*. To be used in *Any* placeholders.
        
        ***Since:*** vSphere API Release 7.0.2.0
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HttpNfcLeaseProbeResult'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HttpNfcLeaseSourceFile:
      type: object
      description: |2
        Descriptor of the remote source file used in pull scenario.
      properties:
        targetDeviceId:
          description: |2
            Target device id that will be used to store remote file.
            
            Uniquely identifies host, vm and device.
            Given by this lease in *HttpNfcLeaseDeviceUrl.importKey*.
          type: string
        url:
          description: |2
            Full url of the source file, for example https://server/path/disk-1.vmdk.
            
            Or url to OVA, in that case *HttpNfcLeaseSourceFile.memberName* should be specified.
          type: string
        memberName:
          description: |2
            Used only when OVA is specified in *HttpNfcLeaseSourceFile.url*.
            
            Should contain file name to extract from OVA.
          type: string
        create:
          description: |2
            True if PUT should be used for upload, otherwise POST.
            
            Same as *OvfFileItem.create*
          type: boolean
        sslThumbprint:
          description: |2
            Esx has no CA database for checking arbitrary certificates.
            
            Client should verify the server certificate and provide
            certificate thumbprint here.
          type: string
        httpHeaders:
          description: |2
            For the case when remote server requires authentication or any other
            type of custom HTTP headers be provided with the request.
          type: array
          items:
            $ref: '#/components/schemas/KeyValue'
        size:
          description: |2
            Size of the file, if known.
            
            Otherwise it will be determined by a HEAD
            request. Not used for OVA members.
          type: integer
          format: int64
      required:
        - targetDeviceId
        - url
        - create
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHttpNfcLeaseSourceFile:
      type: object
      description: |2
        A boxed array of *HttpNfcLeaseSourceFile*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HttpNfcLeaseSourceFile'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ImportSpec:
      type: object
      description: |2
        An ImportSpec is used when importing VMs or vApps.
        
        It can be built from scratch, or it can be generated from an OVF descriptor using the
        service interface *OvfManager*.
        
        This class is the abstract base for *VirtualMachineImportSpec* and
        *VirtualAppImportSpec*. These three classes form a composite structure
        that allows us to contain arbitrarily complex entitites in a single ImportSpec.
      properties:
        entityConfig:
          description: |2
            Configuration of sub-entities (virtual machine or vApp).
            
            This is used for
            sub-entities of a vApp that could be a virtual machine or a vApp.
          $ref: '#/components/schemas/VAppEntityConfigInfo'
        instantiationOst:
          description: |2
            The instantiation OST (see *OvfConsumer* ) to be consumed by OVF
            consumers.
          $ref: '#/components/schemas/OvfConsumerOstNode'
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfImportSpec:
      type: object
      description: |2
        A boxed array of *ImportSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ImportSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    InheritablePolicy:
      type: object
      description: |2
        The base class for any type of setting or configuration that may get a
        inherited value.
        
        When used in a reconfigure operation specification, if *InheritablePolicy.inherited* is true,
        it specifies the intention to change the values of subclass's properties to the
        inherited values from the level above. In this case, users don't need to specify
        the values and any set property in the subclass will be ignored.
        if *InheritablePolicy.inherited* is false, it specifies the intention to explicitly set
        subclass's properties to user specified values. Users should set the properties in
        the subclass with the desired values.
        
        When used in a configuration information object, The values of the properties in
        the subclass are the effective values. if *InheritablePolicy.inherited* is true, the object
        is getting the effective values from upper level. If false, the values are
        explicitly set by a user.
      properties:
        inherited:
          description: |2
            Whether the configuration is set to inherited value.
          type: boolean
      required:
        - inherited
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfInheritablePolicy:
      type: object
      description: |2
        A boxed array of *InheritablePolicy*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/InheritablePolicy'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    IntExpression:
      type: object
      description: |2
        The integer type of setting or configuration that may get a
        negated value.
      properties:
        value:
          description: |2
            The integer value that is either negated or used as it is
          type: integer
          format: int32
      allOf:
        - $ref: '#/components/schemas/NegatableExpression'

    ArrayOfIntExpression:
      type: object
      description: |2
        A boxed array of *IntExpression*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/IntExpression'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    IntPolicy:
      type: object
      description: |2
        The integer type of setting or configuration that may get an
        inherited value.
      properties:
        value:
          description: |2
            The integer value that is either set or inherited.
          type: integer
          format: int32
      allOf:
        - $ref: '#/components/schemas/InheritablePolicy'

    ArrayOfIntPolicy:
      type: object
      description: |2
        A boxed array of *IntPolicy*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/IntPolicy'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ClusterIoFilterInfo:
      type: object
      description: |2
        Information about an IO Filter on a compute resource.
      properties:
        opType:
          description: |2
            The operation that was performed for the IO Filter.
            
            The set of possible values are described in
            *IoFilterOperation_enum*.
            If opType is *uninstall*,
            and the uninstallation of the filter was sucessful on all the hosts
            in the cluster, the filter will be removed from the cluster's filter
            list.
          type: string
        vibUrl:
          description: |2
            The URL of the VIB package that the IO Filter is installed from.
            
            The property is unset if the information is not available.
          type: string
      required:
        - opType
      allOf:
        - $ref: '#/components/schemas/IoFilterInfo'

    ArrayOfClusterIoFilterInfo:
      type: object
      description: |2
        A boxed array of *ClusterIoFilterInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ClusterIoFilterInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostIoFilterInfo:
      type: object
      description: |2
        Information about an IO Filter installed on a host.
      properties:
        available:
          description: |2
            Whether or not the filter is available for use.
          type: boolean
      required:
        - available
      allOf:
        - $ref: '#/components/schemas/IoFilterInfo'

    ArrayOfHostIoFilterInfo:
      type: object
      description: |2
        A boxed array of *HostIoFilterInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostIoFilterInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    IoFilterInfo:
      type: object
      description: |2
        Information about an IO Filter.
      properties:
        id:
          description: |2
            IO Filter identifier.
          type: string
        name:
          description: |2
            Name of the IO Filter.
          type: string
        vendor:
          description: |2
            Vendor of the IO Filter.
          type: string
        version:
          description: |2
            Version of the IO Filter.
          type: string
        type:
          description: |2
            Type of the IO Filter.
            
            The set of possible values are listed in
            *IoFilterType_enum*.
            The property is unset if the information is not available.
          type: string
        summary:
          description: |2
            Short description of the IO Filter.
            
            The property is unset if the information is not available.
          type: string
        releaseDate:
          description: |2
            Release date of the IO Filter.
            
            The property is unset if the information is not available.
          type: string
      required:
        - id
        - name
        - vendor
        - version
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfIoFilterInfo:
      type: object
      description: |2
        A boxed array of *IoFilterInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/IoFilterInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PinnedCertificate:
      type: object
      description: |2
        Specifies SSL policy to trust a pinned SSL certificate.
        
        ***Since:*** vSphere API Release 8.0.3.0
      properties:
        sslCertificate:
          description: |2
            PEM-encoded pinned SSL certificate of the server that needs to be
            trusted.
          type: string
      required:
        - sslCertificate
      allOf:
        - $ref: '#/components/schemas/IoFilterManagerSslTrust'

    ArrayOfPinnedCertificate:
      type: object
      description: |2
        A boxed array of *PinnedCertificate*. To be used in *Any* placeholders.
        
        ***Since:*** vSphere API Release 8.0.3.0
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PinnedCertificate'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    IoFilterQueryIssueResult:
      type: object
      description: |2
        Result for *IoFilterManager.QueryIoFilterIssues*.
      properties:
        opType:
          description: |2
            The type of the operation performed on the IO Filter.
            
            The set of possible values are defined in
            *IoFilterOperation_enum*.
          type: string
        hostIssue:
          description: |2
            The issues on hosts.
          type: array
          items:
            $ref: '#/components/schemas/IoFilterHostIssue'
      required:
        - opType
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfIoFilterQueryIssueResult:
      type: object
      description: |2
        A boxed array of *IoFilterQueryIssueResult*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/IoFilterQueryIssueResult'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    IoFilterHostIssue:
      type: object
      description: |2
        The issues on a host.
      properties:
        host:
          description: |2
            Host.
            
            Refers instance of *HostSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
        issue:
          description: |2
            The issues.
          type: array
          items:
            $ref: '#/components/schemas/MethodFault'
      required:
        - host
        - issue
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfIoFilterHostIssue:
      type: object
      description: |2
        A boxed array of *IoFilterHostIssue*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/IoFilterHostIssue'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    IoFilterManagerSslTrust:
      type: object
      description: |2
        Specifies an SSL trust policy.
        
        ***Since:*** vSphere API Release 8.0.3.0
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfIoFilterManagerSslTrust:
      type: object
      description: |2
        A boxed array of *IoFilterManagerSslTrust*. To be used in *Any* placeholders.
        
        ***Since:*** vSphere API Release 8.0.3.0
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/IoFilterManagerSslTrust'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    UntrustedCertificate:
      type: object
      description: |2
        Specifies SSL policy for untrusted SSL certificate.
        
        This option allows to explicitly disable SSL certificate verification.
        
        ***Since:*** vSphere API Release 8.0.3.0
      allOf:
        - $ref: '#/components/schemas/IoFilterManagerSslTrust'

    ArrayOfUntrustedCertificate:
      type: object
      description: |2
        A boxed array of *UntrustedCertificate*. To be used in *Any* placeholders.
        
        ***Since:*** vSphere API Release 8.0.3.0
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/UntrustedCertificate'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    IpAddress:
      type: object
      description: |2
        This is the abstract base class for IP address.
      allOf:
        - $ref: '#/components/schemas/NegatableExpression'

    ArrayOfIpAddress:
      type: object
      description: |2
        A boxed array of *IpAddress*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/IpAddress'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    IpPoolManagerIpAllocation:
      type: object
      description: |2
        Describes an IP allocation.
      properties:
        ipAddress:
          description: |2
            IP address
          type: string
        allocationId:
          description: |2
            The allocation ID
          type: string
      required:
        - ipAddress
        - allocationId
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfIpPoolManagerIpAllocation:
      type: object
      description: |2
        A boxed array of *IpPoolManagerIpAllocation*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/IpPoolManagerIpAllocation'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    IpRange:
      type: object
      description: |2
        This class specifies a range of IP addresses by using prefix.
        
        Usage: 128.20.20.10/24. Here 128.20.20.10 is IP address
        and 24 is prefix length.
      properties:
        addressPrefix:
          description: |2
            IP address prefix.
          type: string
        prefixLength:
          description: |2
            Prefix length with max value of 32 for IPv4 and 128 for IPv6.
          type: integer
          format: int32
      required:
        - addressPrefix
      allOf:
        - $ref: '#/components/schemas/IpAddress'

    ArrayOfIpRange:
      type: object
      description: |2
        A boxed array of *IpRange*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/IpRange'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    KeyValue:
      type: object
      description: |2
        Non-localized key/value pair
      properties:
        key:
          description: |2
            Key.
          type: string
        value:
          description: |2
            Value.
          type: string
      required:
        - key
        - value
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfKeyValue:
      type: object
      description: |2
        A boxed array of *KeyValue*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/KeyValue'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    LatencySensitivity:
      type: object
      description: |2
        Specification of the latency-sensitivity information.
        
        The latency-sensitivity is used to request from the kernel a constraint
        on the scheduling delay of the virtual CPUs or other resources. This allows
        latency-sensitive applications(e.g. VOIP, audio/video streaming, etc.) to run
        in a virtual machine which is configured to use specific scheduling
        latencies and to be scheduled with low latency.
        
        The kernel does not provide any guarantee that it will meet the
        latency-sensitivity requirement of a virtual machine CPU or other resources
        but it will always accept the latency-sensitivity value provided.
      properties:
        level:
          description: |2
            The nominal latency-sensitive level of the application.
          $ref: '#/components/schemas/LatencySensitivitySensitivityLevel_enum'
        sensitivity:
          deprecated: true
          description: |2
            Deprecated as of vSphere version 5.5, this field is deprecated.
            
            The custom absolute latency-sensitivity value of the application.
            
            This value will be used only when the latency-sensitivity
            *LatencySensitivity.level* property is is set to
            <code>custom</code>. It is ignored in all other cases.
            
            The unit of this value is micro-seconds and the application is more
            latency sensitive when this value is smaller. For example, if the
            absolute latency-sensitivity is 2000us, the kernel will
            try to schedule the virtual machine in a way so that its scheduling
            latency is not more than 2ms.
          type: integer
          format: int32
      required:
        - level
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfLatencySensitivity:
      type: object
      description: |2
        A boxed array of *LatencySensitivity*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/LatencySensitivity'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    LicenseAssignmentManagerLicenseAssignment:
      type: object
      properties:
        entityId:
          description: |2
            Id for the entity
          type: string
        scope:
          description: |2
            Scope of the entityId
          type: string
        entityDisplayName:
          description: |2
            Display name of the entity
          type: string
        assignedLicense:
          description: |2
            License assigned to the entity
          $ref: '#/components/schemas/LicenseManagerLicenseInfo'
        properties:
          description: |2
            Additional properties associated with this assignment
            Some of the properties are:
            "inUseFeatures" -- Features in the license key that are being used by the entity
            "ProductName" -- Name of the entity.
            
            Should match the product name of the assigned license.
            "ProductVersion" -- Version of the entity. Should match the product version of the assigned license.
            "Evaluation" -- EvaluationInfo object representing the evaluation left for the entity.
          type: array
          items:
            $ref: '#/components/schemas/KeyAnyValue'
      required:
        - entityId
        - assignedLicense
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfLicenseAssignmentManagerLicenseAssignment:
      type: object
      description: |2
        A boxed array of *LicenseAssignmentManagerLicenseAssignment*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/LicenseAssignmentManagerLicenseAssignment'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    LicenseAvailabilityInfo:
      type: object
      deprecated: true
      description: |2
        Deprecated as of vSphere API 4.0, this is not used by the system.
        
        Describes how many licenses of a particular feature is provided by the licensing
        source.
      properties:
        feature:
          description: |2
            Describes the feature.
          $ref: '#/components/schemas/LicenseFeatureInfo'
        total:
          description: |2
            Total number of licenses for this given type that are installed on the source.
          type: integer
          format: int32
        available:
          description: |2
            The number of licenses that have not yet been reserved on the source.
          type: integer
          format: int32
      required:
        - feature
        - total
        - available
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfLicenseAvailabilityInfo:
      type: object
      description: |2
        A boxed array of *LicenseAvailabilityInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/LicenseAvailabilityInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    LicenseDiagnostics:
      type: object
      deprecated: true
      description: |2
        Deprecated as of vSphere API 4.0, this is not used by the system.
        
        This data object type provides summary status and diagnostic information for
        *LicenseManager*.
        
        Counters in this property can be reset to zero. The
        property specified as a discontinuity is used to determine when this last
        occurred.
      properties:
        sourceLastChanged:
          description: |2
            A timestamp of when sourceAvailable last changed state, expressed in UTC.
          type: string
          format: date-time
        sourceLost:
          description: |2
            Counter to track number of times connection to source was lost.
            
            This value starts at zero and wraps at 2^32-1 to zero.
            Discontinuity: sourceLastChanged.
          type: string
        sourceLatency:
          description: |2
            Exponentially decaying average of the transaction time for license
            acquisition and routine communications with LicenseSource.
            
            Units: milliseconds.
          type: number
          format: float
        licenseRequests:
          description: |2
            Counter to track total number of licenses requested.
            
            This value starts at zero and wraps at 2^32-1 to zero.
            Discontinuity: sourceLastChanged.
          type: string
        licenseRequestFailures:
          description: |2
            Counter to track Total number of licenses requests that were
            not fulfilled (denied, timeout, or other).
            
            This value starts at zero and wraps at 2^32-1 to zero.
            Discontinuity: sourceLastChanged.
          type: string
        licenseFeatureUnknowns:
          description: |2
            Counter to track Total number of license features parsed from
            License source that are not recognized.
            
            This value starts at zero and wraps at 2^32-1 to zero.
            Discontinuity: sourceLastChanged.
          type: string
        opState:
          description: |2
            The general state of the license subsystem.
          $ref: '#/components/schemas/LicenseManagerState_enum'
        lastStatusUpdate:
          description: |2
            A timestamp of when opState was last updated.
          type: string
          format: date-time
        opFailureMessage:
          description: |2
            A human readable reason when optState reports Fault condition.
          type: string
      required:
        - sourceLastChanged
        - sourceLost
        - sourceLatency
        - licenseRequests
        - licenseRequestFailures
        - licenseFeatureUnknowns
        - opState
        - lastStatusUpdate
        - opFailureMessage
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfLicenseDiagnostics:
      type: object
      description: |2
        A boxed array of *LicenseDiagnostics*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/LicenseDiagnostics'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    LicenseManagerEvaluationInfo:
      type: object
      description: |2
        Encapsulates product evaluation information
      properties:
        properties:
          description: |2
            Evaluation properties
          type: array
          items:
            $ref: '#/components/schemas/KeyAnyValue'
      required:
        - properties
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfLicenseManagerEvaluationInfo:
      type: object
      description: |2
        A boxed array of *LicenseManagerEvaluationInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/LicenseManagerEvaluationInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    EvaluationLicenseSource:
      type: object
      deprecated: true
      description: |2
        Deprecated as of vSphere API 4.0, this is not used by the system.
        
        Specify an evaluation license source.
        
        Feature licensing is not required while the remaining hours is greater than zero.
      properties:
        remainingHours:
          description: |2
            The number of remaining hours before product evaluation expires
          type: integer
          format: int64
      allOf:
        - $ref: '#/components/schemas/LicenseSource'

    ArrayOfEvaluationLicenseSource:
      type: object
      description: |2
        A boxed array of *EvaluationLicenseSource*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/EvaluationLicenseSource'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    LicenseFeatureInfo:
      type: object
      deprecated: true
      description: |2
        Deprecated as of vSphere API 4.0, this is not used by the system.
        
        A single feature that can be licensed.
        
        This information is immutable.
      properties:
        key:
          description: |2
            Unique identifier for license as defined in License source data.
            
            Max length of this string is 64 characters of ASCII/ISO Latin-1
            character set.
          type: string
        featureName:
          description: |2
            The display string for the feature name.
          type: string
        featureDescription:
          description: |2
            A human readable description of what function this feature enables.
          type: string
        state:
          description: |2
            Describes the state of the feature based on the current edition license.
            
            This
            property is unset for an edition license.
          $ref: '#/components/schemas/LicenseFeatureInfoState_enum'
        costUnit:
          description: |2
            Each license has a cost associated with it and the value of costUnit
            specifies the applicable unit.
            
            See also *LicenseFeatureInfoUnit_enum*.
          type: string
        sourceRestriction:
          description: |2
            Describe any restriction on the source of a license for this feature.
            
            See also *LicenseFeatureInfoSourceRestriction_enum*.
          type: string
        dependentKey:
          description: |2
            Report List of feature keys used by this edition.
          type: array
          items:
            type: string
        edition:
          description: |2
            Flag to indicate whether the feature is an edition.
          type: boolean
        expiresOn:
          description: |2
            Date representing the expiration date
          type: string
          format: date-time
      required:
        - key
        - featureName
        - costUnit
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfLicenseFeatureInfo:
      type: object
      description: |2
        A boxed array of *LicenseFeatureInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/LicenseFeatureInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostLicensableResourceInfo:
      type: object
      description: |2
        Encapsulates information about all licensable resources on the host.
      properties:
        resource:
          description: |2
            List of currently supported resources.
            
            The type of every value is long. The key can be one of *HostLicensableResourceKey_enum*
            or arbitrary string.
            
            NOTE:
            The values in this property may not be accurate for pre-5.0 hosts when returned by vCenter 5.0
          type: array
          items:
            $ref: '#/components/schemas/KeyAnyValue'
      required:
        - resource
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostLicensableResourceInfo:
      type: object
      description: |2
        A boxed array of *HostLicensableResourceInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostLicensableResourceInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    LicenseManagerLicenseInfo:
      type: object
      description: |2
        Encapsulates information about a license
      properties:
        licenseKey:
          description: |2
            Key for the license.
            
            E.g. serial number.
          type: string
        editionKey:
          description: |2
            Edition key.
          type: string
        name:
          description: |2
            Display name for the license
          type: string
        total:
          description: |2
            Total number of units contain in the license
          type: integer
          format: int32
        used:
          description: |2
            Number of units used from this license
          type: integer
          format: int32
        costUnit:
          description: |2
            The cost unit for this license
          type: string
        properties:
          description: |2
            Additional properties associated with this license
          type: array
          items:
            $ref: '#/components/schemas/KeyAnyValue'
        labels:
          description: |2
            Key-value lables for this license
          type: array
          items:
            $ref: '#/components/schemas/KeyValue'
      required:
        - licenseKey
        - editionKey
        - name
        - total
        - costUnit
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfLicenseManagerLicenseInfo:
      type: object
      description: |2
        A boxed array of *LicenseManagerLicenseInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/LicenseManagerLicenseInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    LicenseServerSource:
      type: object
      deprecated: true
      description: |2
        Deprecated as of vSphere API 4.0, this is not used by the system.
        
        Specify a license server reachable via IPv4 network.
      properties:
        licenseServer:
          description: |2
            This property defines the server to establish a TCP session to
            obtain license data.
            
            Format of string is host:port
            Port is optional unsigned 16 bit integer license
            server is listening on. A trailing colon ':' without a port number
            is a valid expression.
            Host can either be an IPv4 address in dotted quad
            format or a resolvable DNS name &leq;254 characters. See RFC 3696.
          type: string
      required:
        - licenseServer
      allOf:
        - $ref: '#/components/schemas/LicenseSource'

    ArrayOfLicenseServerSource:
      type: object
      description: |2
        A boxed array of *LicenseServerSource*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/LicenseServerSource'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    LicenseSource:
      type: object
      deprecated: true
      description: |2
        Deprecated as of vSphere API 4.0, this is not used by the system.
        
        This data object type is used to communicate configuration about
        where to find licenses to use for this system.
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfLicenseSource:
      type: object
      description: |2
        A boxed array of *LicenseSource*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/LicenseSource'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    LicenseUsageInfo:
      type: object
      deprecated: true
      description: |2
        Deprecated as of vSphere API 4.0, this is not used by the system.
        
        Contains source information, licensed features, and usage.
      properties:
        source:
          description: |2
            The source from which licensing data is acquired.
            
            See also *LicenseSource*.
          $ref: '#/components/schemas/LicenseSource'
        sourceAvailable:
          description: |2
            Returns whether or not the source is currently available.
            
            See also *LicenseManager.sourceAvailable*.
          type: boolean
        reservationInfo:
          description: |2
            A list of feature reservations.
          type: array
          items:
            $ref: '#/components/schemas/LicenseReservationInfo'
        featureInfo:
          description: |2
            Includes all the features that are referenced in the reservation array.
          type: array
          items:
            $ref: '#/components/schemas/LicenseFeatureInfo'
      required:
        - source
        - sourceAvailable
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfLicenseUsageInfo:
      type: object
      description: |2
        A boxed array of *LicenseUsageInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/LicenseUsageInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    LocalLicenseSource:
      type: object
      deprecated: true
      description: |2
        Deprecated as of vSphere API 4.0, this is not used by the system.
        
        Specify license key data to store locally.
      properties:
        licenseKeys:
          description: |2
            The size of this string is implementation dependent.
            
            It must contain ASCII or ISO Latin-1 characters only.
          type: string
      required:
        - licenseKeys
      allOf:
        - $ref: '#/components/schemas/LicenseSource'

    ArrayOfLocalLicenseSource:
      type: object
      description: |2
        A boxed array of *LocalLicenseSource*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/LocalLicenseSource'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    LicenseReservationInfo:
      type: object
      deprecated: true
      description: |2
        Deprecated as of vSphere API 4.0, this is not used by the system.
        
        A reservation describes how many licenses of a particular feature are being used
        by a particular feature.
      properties:
        key:
          description: |2
            Key of the License Feature.
            
            See also *LicenseFeatureInfo.key*.
          type: string
        state:
          description: |2
            Describes the reservation state of a license.
          $ref: '#/components/schemas/LicenseReservationInfoState_enum'
        required:
          description: |2
            Contains the required number of licenses of the particular type that the
            product needs in its current configuration.
            
            Licenses are normally allocated at the same time as they are needed, so the
            value of required is set at the time the license is needed. For example,
            in the case of the number of licenses based on virtual machines, the required
            count is set at the time a virtual machine is powered on, just before the
            license is checked out.
          type: integer
          format: int32
      required:
        - key
        - state
        - required
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfLicenseReservationInfo:
      type: object
      description: |2
        A boxed array of *LicenseReservationInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/LicenseReservationInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    LocalizationManagerMessageCatalog:
      type: object
      description: |2
        Description of an available message catalog
      properties:
        moduleName:
          description: |2
            The module or extension that publishes this catalog.
            
            The moduleName will be empty for the core catalogs for the
            VirtualCenter server itself.
          type: string
        catalogName:
          description: |2
            The name of the catalog.
          type: string
        locale:
          description: |2
            The locale for the catalog.
          type: string
        catalogUri:
          description: |2
            The URI (relative to the connection URL for the VirtualCenter server
            itself) from which the catalog can be downloaded.
            
            The caller will need to augment this with a scheme and authority (host
            and port) to make a complete URL.
          type: string
        lastModified:
          description: |2
            The last-modified time of the catalog file, if available
          type: string
          format: date-time
        md5sum:
          description: |2
            The checksum of the catalog file, if available
          type: string
        version:
          description: |2
            The version of the catalog file, if available
            The format is dot-separated version string, e.g.
            
            "1.2.3".
          type: string
      required:
        - moduleName
        - catalogName
        - locale
        - catalogUri
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfLocalizationManagerMessageCatalog:
      type: object
      description: |2
        A boxed array of *LocalizationManagerMessageCatalog*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/LocalizationManagerMessageCatalog'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    LongPolicy:
      type: object
      description: |2
        The long integer type of setting or configuration that may get an
        inherited value.
      properties:
        value:
          description: |2
            The boolean value that is either set or inherited.
          type: integer
          format: int64
      allOf:
        - $ref: '#/components/schemas/InheritablePolicy'

    ArrayOfLongPolicy:
      type: object
      description: |2
        A boxed array of *LongPolicy*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/LongPolicy'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    MacAddress:
      type: object
      description: |2
        Base class for specifying MAC addresses.
      allOf:
        - $ref: '#/components/schemas/NegatableExpression'

    ArrayOfMacAddress:
      type: object
      description: |2
        A boxed array of *MacAddress*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/MacAddress'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    MacRange:
      type: object
      description: |2
        This class defines a range of MAC address.
      properties:
        address:
          description: |2
            MAC address.
          type: string
        mask:
          description: |2
            Mask that is used in matching the MAC address.
            
            A MAC address is
            considered matched if the "and" operation of the mask on the
            MAC address and *MacRange.address* yields the same result.
            For example, a MAC of "00:A0:FF:14:FF:29" is considered matched
            for a *MacRange.address* of "00:A0:C9:14:C8:29" and a
            *MacRange.mask* of "FF:FF:00:FF:00:FF".
          type: string
      required:
        - address
        - mask
      allOf:
        - $ref: '#/components/schemas/MacAddress'

    ArrayOfMacRange:
      type: object
      description: |2
        A boxed array of *MacRange*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/MacRange'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    MethodDescription:
      type: object
      description: |2
        Static strings used for describing an object model method.
      properties:
        key:
          description: |2
            Method being described.
          type: string
      required:
        - key
      allOf:
        - $ref: '#/components/schemas/Description'

    ArrayOfMethodDescription:
      type: object
      description: |2
        A boxed array of *MethodDescription*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/MethodDescription'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    NegatableExpression:
      type: object
      description: |2
        The base class for any type of setting or configuration to which negation
        can be applied.
        
        When used in a configuration information object:
        if *NegatableExpression.negate* is true, then ~(objectValue) will be used for the
        configuration. If false, then objectValue will be used as it is.
      properties:
        negate:
          description: |2
            Whether the configuration needs to be negated or not.
          type: boolean
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfNegatableExpression:
      type: object
      description: |2
        A boxed array of *NegatableExpression*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/NegatableExpression'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    NetworkSummary:
      type: object
      description: |2
        General information about a network.
      properties:
        network:
          description: |2
            Reference to the associated managed object.
            
            Refers instance of *Network*.
          $ref: '#/components/schemas/ManagedObjectReference'
        name:
          description: |2
            Name of the network.
          type: string
        accessible:
          description: |2
            At least one host is configured to provide this network.
          type: boolean
        ipPoolName:
          description: |2
            Name of the associated IP pool.
            
            Empty if the network is not associated with an
            IP pool.
          type: string
        ipPoolId:
          description: |2
            Identifier of the associated IP pool.
            
            Zero if the network is not associated
            with an IP pool.
          type: integer
          format: int32
      required:
        - name
        - accessible
        - ipPoolName
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfNetworkSummary:
      type: object
      description: |2
        A boxed array of *NetworkSummary*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/NetworkSummary'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    NumericRange:
      type: object
      description: |2
        The class that describe an integer range.
      properties:
        start:
          description: |2
            The starting number.
          type: integer
          format: int32
        end:
          description: |2
            The ending number (inclusive).
          type: integer
          format: int32
      required:
        - start
        - end
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfNumericRange:
      type: object
      description: |2
        A boxed array of *NumericRange*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/NumericRange'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    OpaqueNetworkCapability:
      type: object
      description: |2
        The data object representing the capabilities supported by the Opaque
        Network.
      properties:
        networkReservationSupported:
          description: |2
            Indicates whether network I/O control is supported for a network
            adapter that connects to the opaque network.
          type: boolean
      required:
        - networkReservationSupported
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfOpaqueNetworkCapability:
      type: object
      description: |2
        A boxed array of *OpaqueNetworkCapability*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/OpaqueNetworkCapability'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    OpaqueNetworkSummary:
      type: object
      description: |2
        The summary of a opaque network.
        
        An object of this class is returned by the *Network.summary* property.
      properties:
        opaqueNetworkId:
          description: |2
            The opaque network ID
          type: string
        opaqueNetworkType:
          description: |2
            The opaque network type
          type: string
      required:
        - opaqueNetworkId
        - opaqueNetworkType
      allOf:
        - $ref: '#/components/schemas/NetworkSummary'

    ArrayOfOpaqueNetworkSummary:
      type: object
      description: |2
        A boxed array of *OpaqueNetworkSummary*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/OpaqueNetworkSummary'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    OvfConsumerOstNode:
      type: object
      description: |2
        A node in the OVF section tree.
        
        This class represents a node on which OVF sections can be defined. The possible
        node types are OstNodeType.envelope, OstNodeType.virtualSystem or
        OstNodeType.virtualSystemCollection, corresponding to the identically named OVF
        element types.
        
        Since the node contains a list of children, it can also be regarded as a tree. This
        tree mirrors the structure of the OVF descriptor. It is provided to OVF consumers
        as a more convenient way to navigate and modify the OVF than by working directly on
        the XML.
      properties:
        id:
          description: |2
            The OVF id of the Content (VirtualSystem or VirtualSystemCollection)
            element.
            
            Empty on the envelope node.
          type: string
        type:
          description: |2
            The type of the node.
            
            Possible values are defined in the OstNodeType enum.
            
            Since the OstNode tree structure mirrors the structure of the OVF descriptor,
            only one Envelope node is defined, and it is always the root of the tree.
          type: string
        section:
          description: |2
            The list of sections on this node.
          type: array
          items:
            $ref: '#/components/schemas/OvfConsumerOvfSection'
        child:
          description: |2
            The list of child nodes.
            
            As dictated by OVF, this list is subject to the
            following rules:
            - The Envelope node must have exactly one child.
            - VirtualSystemCollection nodes may have zero or more children.
            - VirtualSystem nodes must have no children.
          type: array
          items:
            $ref: '#/components/schemas/OvfConsumerOstNode'
        entity:
          description: |2
            The VM or vApp corresponding to this node.
            
            This field is set when this OstNode represents an existing managed entity.
            
            The entity is unset on nodes of type OstNodeType.envelope.
            
            Refers instance of *ManagedEntity*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - id
        - type
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfOvfConsumerOstNode:
      type: object
      description: |2
        A boxed array of *OvfConsumerOstNode*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/OvfConsumerOstNode'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    OvfConsumerOvfSection:
      type: object
      description: |2
        A self-contained OVF section
      properties:
        lineNumber:
          description: |2
            The line number in the OVF descriptor on which this section starts.
            
            The line number is only present on sections that were imported as part of an OVF
            descriptor (as opposed to sections that are about to be exported to OVF).
            
            The value is zero if the section did not originate from an OVF descriptor.
          type: integer
          format: int32
        xml:
          description: |2
            The XML fragment for the section.
            
            The XML fragment must explicitly define all namespaces and namespace prefixes
            that are used in the fragment, including the default namespace.
          type: string
      required:
        - lineNumber
        - xml
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfOvfConsumerOvfSection:
      type: object
      description: |2
        A boxed array of *OvfConsumerOvfSection*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/OvfConsumerOvfSection'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    OvfManagerCommonParams:
      type: object
      description: |2
        A common super-class for basic OVF descriptor parameters
      properties:
        locale:
          description: |2
            The locale-identifier to choose from the descriptor.
            
            If empty, the
            default locale on the server is used.
          type: string
        deploymentOption:
          description: |2
            The key of the chosen deployment option.
            
            If empty, the default option is
            chosen. The list of possible deployment options is returned in the result of
            parseDescriptor.
          type: string
        msgBundle:
          description: |2
            An optional set of localization strings to be used.
            
            The server will use
            these message strings to localize information in the result and in
            error and warning messages.
            
            This argument allows a client to pass messages from external
            string bundles. The client is responsible for selecting the right string
            bundle (based on locale) and parsing the external string bundle. The
            passed in key/value pairs are looked up before any messages
            included in the OVF descriptor itself.
          type: array
          items:
            $ref: '#/components/schemas/KeyValue'
        importOption:
          description: |2
            An optional argument for modifing the OVF parsing.
            
            When the server parses an OVF
            descriptor a set of options can be used to modify the parsing. The argument is a list
            of keywords.
            
            To get a list of supported keywords see *OvfManager.ovfImportOption*. Unknown
            options will be ignored by the server.
          type: array
          items:
            type: string
      required:
        - locale
        - deploymentOption
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfOvfManagerCommonParams:
      type: object
      description: |2
        A boxed array of *OvfManagerCommonParams*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/OvfManagerCommonParams'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    OvfCreateDescriptorParams:
      type: object
      description: |2
        Collection of parameters for createDescriptor
      properties:
        ovfFiles:
          description: |2
            Contains information about the files of the entity, if they have already been
            downloaded.
            
            Needed to construct the References section of the descriptor.
            
            OvfFile is a positive list of files to include in the export. An Empty list
            will do no filtering.
          type: array
          items:
            $ref: '#/components/schemas/OvfFile'
        name:
          description: |2
            The ovf:id to use for the top-level OVF Entity.
            
            If unset, the entity's
            product name is used if available. Otherwise, the VI entity name is used.
          type: string
        description:
          description: |2
            The contents of the Annontation section of the top-level OVF Entity.
            
            If unset,
            any existing annotation on the entity is left unchanged.
          type: string
        includeImageFiles:
          description: |2
            Controls whether attached image files should be included in the descriptor.
            
            This applies to image files attached to VirtualCdrom and VirtualFloppy.
          type: boolean
        exportOption:
          description: |2
            An optional argument for modifying the export process.
            
            The option is used to control what extra information that will be included in the
            OVF descriptor.
            
            To get a list of supported keywords see *OvfManager.ovfExportOption*. Unknown
            options will be ignored by the server.
          type: array
          items:
            type: string
        snapshot:
          description: |2
            Snapshot reference from which the OVF descriptor should be based.
            
            If this parameter is set, the OVF descriptor is based off the
            snapshot point. This means that the OVF descriptor will have the
            same configuration as the virtual machine at the time the snapshot
            was taken.
            
            The snapshot must be belong to the specified ManagedEntity in the
            createDescriptor call.
            
            Refers instance of *VirtualMachineSnapshot*.
          $ref: '#/components/schemas/ManagedObjectReference'
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfOvfCreateDescriptorParams:
      type: object
      description: |2
        A boxed array of *OvfCreateDescriptorParams*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/OvfCreateDescriptorParams'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    OvfCreateDescriptorResult:
      type: object
      description: |2
        The result of creating the OVF descriptor for the entity.
      properties:
        ovfDescriptor:
          description: |2
            The OVF descriptor for the entity.
          type: string
        error:
          description: |2
            Errors that happened during processing.
            
            For example, unknown or unsupported devices could be found (in which case
            this array will contain one or more instances of Unsupported-/UnknownDevice).
          type: array
          items:
            $ref: '#/components/schemas/MethodFault'
        warning:
          description: |2
            Non-fatal warnings from the processing.
            
            The result will be valid, but the user may choose to reject it based on these
            warnings.
          type: array
          items:
            $ref: '#/components/schemas/MethodFault'
        includeImageFiles:
          description: |2
            Returns true if there are ISO or Floppy images attached to one or more VMs.
          type: boolean
      required:
        - ovfDescriptor
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfOvfCreateDescriptorResult:
      type: object
      description: |2
        A boxed array of *OvfCreateDescriptorResult*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/OvfCreateDescriptorResult'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    OvfCreateImportSpecParams:
      type: object
      description: |2
        Parameters for deploying an OVF.
      properties:
        entityName:
          description: |2
            The name to set on the entity (more precisely, on the top-level vApp or
            VM of the entity) as it appears in VI.
            
            If empty, the product name is obtained
            from the ProductSection of the descriptor. If that name is not specified, the
            ovf:id of the top-level entity is used.
          type: string
        hostSystem:
          description: |2
            The host to validate the OVF descriptor against, if it cannot be deduced from
            the resource pool.
            
            The privilege System.Read is required on the host.
            
            Refers instance of *HostSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
        networkMapping:
          description: |2
            The mapping of network identifiers from the descriptor to networks in the VI
            infrastructure.
            
            The privilege Network.Assign is required on all networks in the list.
          type: array
          items:
            $ref: '#/components/schemas/OvfNetworkMapping'
        ipAllocationPolicy:
          description: |2
            The IP allocation policy chosen by the caller.
            
            See *VAppIPAssignmentInfo*.
          type: string
        ipProtocol:
          description: |2
            The IP protocol chosen by the caller.
            
            See *VAppIPAssignmentInfo*.
          type: string
        propertyMapping:
          description: |2
            The assignment of values to the properties found in the descriptor.
            
            If no value
            is specified for an option, the default value from the descriptor is used.
          type: array
          items:
            $ref: '#/components/schemas/KeyValue'
        resourceMapping:
          deprecated: true
          description: |2
            Deprecated as of vSphere API 5.1.
            
            The resource configuration for the created vApp.
            
            This can be used to distribute
            a vApp across multiple resource pools (and create linked children).
          type: array
          items:
            $ref: '#/components/schemas/OvfResourceMap'
        diskProvisioning:
          description: |2
            An optional disk provisioning.
            
            If set, all the disks in the deployed OVF will
            have get the same specified disk type (e.g., thin provisioned).
            The valide values for disk provisioning are:
            - *monolithicSparse*
            - *monolithicFlat*
            - *twoGbMaxExtentSparse*
            - *twoGbMaxExtentFlat*
            - *thin*
            - *thick*
            - *sparse*
            - *flat*
            - *seSparse*
              
            See also *VirtualDiskMode_enum*.
          type: string
        instantiationOst:
          description: |2
            The instantiation OST to configure OVF consumers.
            
            This is created by the client
            from the annotated OST. See *OvfConsumer* for details.
          $ref: '#/components/schemas/OvfConsumerOstNode'
      required:
        - entityName
      allOf:
        - $ref: '#/components/schemas/OvfManagerCommonParams'

    ArrayOfOvfCreateImportSpecParams:
      type: object
      description: |2
        A boxed array of *OvfCreateImportSpecParams*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/OvfCreateImportSpecParams'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    OvfCreateImportSpecResult:
      type: object
      description: |2
        The CreateImportSpecResult contains all information regarding the import that can
        be extracted from the OVF descriptor.
        
        For example, this includes the list of items that the caller must upload in order
        to complete the import, but not the list of URLs to which the files must be
        uploaded. These paths are not known until the VMs have been created, ie. until
        *ResourcePool.importVApp* has been
        called.
      properties:
        importSpec:
          description: |2
            The ImportSpec contains information about which *VirtualMachine*s
            and *VirtualApp*s are present in the entity and
            how they relate to each other.
          $ref: '#/components/schemas/ImportSpec'
        fileItem:
          description: |2
            The files that must be uploaded by the caller as part of importing the entity.
            
            The files must be uploaded in order, because some of them may be delta files
            that patch already-uploaded files.
          type: array
          items:
            $ref: '#/components/schemas/OvfFileItem'
        warning:
          description: |2
            Non-fatal warnings from the processing.
            
            The ImportSpec will be valid, but the
            user may choose to reject it based on these warnings.
          type: array
          items:
            $ref: '#/components/schemas/MethodFault'
        error:
          description: |2
            Errors that happened during processing.
            
            Something will be wrong with the
            ImportSpec, or it is not present.
          type: array
          items:
            $ref: '#/components/schemas/MethodFault'
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfOvfCreateImportSpecResult:
      type: object
      description: |2
        A boxed array of *OvfCreateImportSpecResult*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/OvfCreateImportSpecResult'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    OvfDeploymentOption:
      type: object
      description: |2
        A deployment option as defined in the OVF specfication.
        
        This corresponds to the Configuration element of the DeploymentOptionSection in the
        specification.
      properties:
        key:
          description: |2
            The key of the deployment option, corresponding to the ovf:id attribute in the
            OVF descriptor
          type: string
        label:
          description: |2
            A localized label for the deployment option
          type: string
        description:
          description: |2
            A localizable description for the deployment option.
          type: string
      required:
        - key
        - label
        - description
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfOvfDeploymentOption:
      type: object
      description: |2
        A boxed array of *OvfDeploymentOption*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/OvfDeploymentOption'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    OvfFileItem:
      type: object
      description: |2
        An FileItem represents a file that must be uploaded by the caller when the
        inventory objects has been created in VI.
        
        These objects are created by *ResourcePool.importVApp*.
        
        Files can either be new files, in which case the "create" flag will be true, or
        updates to existing files in VI. The latter is used to support the OVF parentRef
        mechanism for Disks.
      properties:
        deviceId:
          description: |2
            Uniquely identifies the device (disk, CD-ROM etc.) within the entity hierarchy.
            
            When *ResourcePool.importVApp* is
            called to create the *VirtualMachine*s and *VirtualApp*s, it returns a map,
            device ID -&gt; URL, of where to upload the backing files.
          type: string
        path:
          description: |2
            The path of the item to upload, relative to the path of the OVF descriptor.
          type: string
        compressionMethod:
          description: |2
            The compression method as specified by the OVF
            specification (for example "gzip" or "bzip2").
          type: string
        chunkSize:
          description: |2
            The chunksize as specified by the OVF specification.
            
            If this attribute is set, the "path" attribute is a prefix to
            each chunk of the complete file.
            For example, if chunksize is 2000000000 bytes, the actual files
            might be:
            myfile.000000000 (2000000000 bytes)
            myfile.000000001 (2000000000 bytes)
            myfile.000000002 (1500000000 bytes)
          type: integer
          format: int64
        size:
          description: |2
            The complete size of the file, if it is specified in the
            OVF descriptor.
          type: integer
          format: int64
        cimType:
          description: |2
            The CIM type of the device for which this file provides
            backing.
            
            For example, the value 17 means "Disk drive".
          type: integer
          format: int32
        create:
          description: |2
            True if the item is not expected to exist in the infrastructure
            and should therefore be created by the caller (for example using HTTP PUT).
          type: boolean
      required:
        - deviceId
        - path
        - cimType
        - create
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfOvfFileItem:
      type: object
      description: |2
        A boxed array of *OvfFileItem*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/OvfFileItem'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    OvfNetworkInfo:
      type: object
      description: |2
        The name and description of a network as specified by the OVF descriptor.
      properties:
        name:
          type: string
        description:
          type: string
      required:
        - name
        - description
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfOvfNetworkInfo:
      type: object
      description: |2
        A boxed array of *OvfNetworkInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/OvfNetworkInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    OvfNetworkMapping:
      type: object
      description: |2
        A NetworkMapping is a choice made by the caller about which VI network to use for a
        specific network in the OVF descriptor.
      properties:
        name:
          type: string
        network:
          description: |2
            Refers instance of *Network*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - name
        - network
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfOvfNetworkMapping:
      type: object
      description: |2
        A boxed array of *OvfNetworkMapping*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/OvfNetworkMapping'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    OvfFile:
      type: object
      description: |2
        Represents a file that the caller has downloaded and stored somewhere appropriate.
        
        An instance of this class is used to tell OvfManager about the choices the caller
        made about a file. This information is needed when the OVF descriptor is generated
        with createDescriptor.
      properties:
        deviceId:
          description: |2
            The ID of the device backed by this file.
            
            This ID uniquely identifies the
            device within the entity hierarchy.
            
            The caller will have received this along with the URL needed to download the
            file (this is handled by another service interface).
          type: string
        path:
          description: |2
            The path chosen by the caller for this file.
            
            This path becomes the value of the
            "href" attribute of the corresponding "File" element in the OVF descriptor.
            
            This path must be relative to the path chosen for the OVF descriptor. This
            implies that the caller must decide in advance on the path to which it will
            write the OVF descriptor, once it is returned.
            
            The folder separator must be "/" (forward slash).
            
            The path must not begin with a slash - ie. it must not be an absolute path.
          type: string
        compressionMethod:
          description: |2
            The compression method the caller chose to employ for this file.
          type: string
        chunkSize:
          description: |2
            The chunksize chosen by the caller.
            
            When using chunking, the caller must adhere to the method described in the OVF
            specification.
          type: integer
          format: int64
        size:
          description: |2
            The file size, as observed by the caller during download.
          type: integer
          format: int64
        capacity:
          description: |2
            The capacity of the disk backed by this file.
            
            This should only be set if the
            device backed by this file is a disk. This value will be written in the
            "capacity" attribute of the corresponding "Disk" element in the OVF descriptor.
            
            Note that the "capacity" attribute is normally set to the capacity of the
            corresponding *VirtualDisk*. Setting this variable
            overrides the capacity from the VirtualDisk.
          type: integer
          format: int64
        populatedSize:
          description: |2
            The populated size of the disk backed by this file.
            
            This should only be set if
            the device backed by this file is a disk. This value will be written in the
            "populatedSize" attribute of the corresponding "Disk" element in the OVF
            descriptor.
          type: integer
          format: int64
      required:
        - deviceId
        - path
        - size
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfOvfFile:
      type: object
      description: |2
        A boxed array of *OvfFile*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/OvfFile'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    OvfOptionInfo:
      type: object
      description: |2
        Represents the OVF options the server support for import and export of
        OVFs
      properties:
        option:
          description: |2
            The name of the OVF option that is supported by the server
          type: string
        description:
          description: |2
            A description of the OVF option
          $ref: '#/components/schemas/LocalizableMessage'
      required:
        - option
        - description
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfOvfOptionInfo:
      type: object
      description: |2
        A boxed array of *OvfOptionInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/OvfOptionInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    OvfParseDescriptorParams:
      type: object
      allOf:
        - $ref: '#/components/schemas/OvfManagerCommonParams'

    ArrayOfOvfParseDescriptorParams:
      type: object
      description: |2
        A boxed array of *OvfParseDescriptorParams*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/OvfParseDescriptorParams'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    OvfParseDescriptorResult:
      type: object
      properties:
        eula:
          description: |2
            The list of all EULAs contained in the OVF
          type: array
          items:
            type: string
        network:
          description: |2
            The list of networks required by the OVF
          type: array
          items:
            $ref: '#/components/schemas/OvfNetworkInfo'
        ipAllocationScheme:
          description: |2
            The kind of IP allocation supported by the guest.
            
            See *VAppIPAssignmentInfo*.
          type: array
          items:
            type: string
        ipProtocols:
          description: |2
            The IP protocols supported by the guest.
            
            See *VAppIPAssignmentInfo*.
          type: array
          items:
            type: string
        property:
          description: |2
            Metadata about the properties contained in the OVF
          type: array
          items:
            $ref: '#/components/schemas/VAppPropertyInfo'
        productInfo:
          description: |2
            The product info contained in the OVF
          $ref: '#/components/schemas/VAppProductInfo'
        annotation:
          description: |2
            The annotation info contained in the OVF
          type: string
        approximateDownloadSize:
          description: |2
            The OVF Manager's best guess as to the total amount
            of data that must be transferred to download the entity.
            
            This may be inaccurate due to disk compression etc.
          type: integer
          format: int64
        approximateFlatDeploymentSize:
          description: |2
            The OVF Manager's best guess as to the total amount of space required to deploy
            the entity if using flat disks.
          type: integer
          format: int64
        approximateSparseDeploymentSize:
          description: |2
            The OVF Manager's best guess as to the total amount of space required to deploy
            the entity using sparse disks.
          type: integer
          format: int64
        defaultEntityName:
          description: |2
            The default name to use for the entity, if a product name is not
            specified.
            
            This is the ID of the OVF top-level entity, or taken from a
            ProductSection.
          type: string
        virtualApp:
          description: |2
            True if the OVF contains a vApp (containing one or more vApps
            and/or virtual machines), as opposed to a single virtual machine.
          type: boolean
        deploymentOption:
          description: |2
            The list of possible deployment options.
          type: array
          items:
            $ref: '#/components/schemas/OvfDeploymentOption'
        defaultDeploymentOption:
          description: |2
            The key of the default deployment option.
            
            Empty only if there are no
            deployment options.
          type: string
        entityName:
          description: |2
            A list of the child entities contained in this package
            and their location in the vApp hierarchy.
            
            Each entry is a
            (key,value) pair, where the key is the display name, and
            the value is a unique path identifier for the entity in
            the vApp. The path is constructed by appending the id
            of each entity of the path down to the entity, separated
            by slashes. For example, the path for a child of the root
            entity with id = "vm1", would simply be "vm1". If the vm is
            the child of a VirtualSystemCollection called "webTier", then
            the path would be "webTier/vm".
          type: array
          items:
            $ref: '#/components/schemas/KeyValue'
        annotatedOst:
          description: |2
            The annotated OST for the OVF descriptor, generated by OVF
            consumers.
            
            See *OvfConsumer* for details.
          $ref: '#/components/schemas/OvfConsumerOstNode'
        error:
          description: |2
            Errors that happened during processing.
            
            Something
            will be wrong with the result.
            
            For example, during export, devices could be
            missing (in which case this array will contain one
            or more instances of Unsupported-/UnknownDevice).
          type: array
          items:
            $ref: '#/components/schemas/MethodFault'
        warning:
          description: |2
            Non-fatal warnings from the processing.
            
            The result will be valid, but the
            user may choose to reject it based on these
            warnings.
          type: array
          items:
            $ref: '#/components/schemas/MethodFault'
      required:
        - annotation
        - defaultEntityName
        - virtualApp
        - defaultDeploymentOption
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfOvfParseDescriptorResult:
      type: object
      description: |2
        A boxed array of *OvfParseDescriptorResult*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/OvfParseDescriptorResult'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    OvfResourceMap:
      type: object
      deprecated: true
      description: |2
        Deprecated as of vSphere API 5.1.
        
        Maps source child entities to destination resource pools
        and resource settings.
        
        If a mapping is not specified,
        a child is copied as a direct child of the parent.
      properties:
        source:
          description: |2
            Identifies a source VirtualSystem or VirtualSystemCollection in an OVF
            descriptor.
            
            The source cannot be the root VirtualSystem or
            VirtualSystemCollection of the OVF.
            This is a path created by concatenating the OVF ids for each entity, e.g., "vm1",
            "WebTier/vm2", etc.
          type: string
        parent:
          description: |2
            The parent resource pool to use for the entity.
            
            This must specify a
            resource pool that is not part of the vApp. If this is specified, a linked
            child (as opposed to a direct child) is created for the vApp.
            
            Refers instance of *ResourcePool*.
          $ref: '#/components/schemas/ManagedObjectReference'
        resourceSpec:
          description: |2
            An optional resource configuration for the created entity.
            
            If
            not specified, the resource configuration given in the OVF descriptor
            is used.
          $ref: '#/components/schemas/ResourceConfigSpec'
        datastore:
          description: |2
            A client can optionally specify a datastore location in the resource map to
            override the default datastore passed into *OvfManager.CreateImportSpec* field.
            
            This enables importing to different compute resources that do not have shared
            datastores.
            
            Refers instance of *Datastore*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - source
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfOvfResourceMap:
      type: object
      description: |2
        A boxed array of *OvfResourceMap*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/OvfResourceMap'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    OvfValidateHostParams:
      type: object
      allOf:
        - $ref: '#/components/schemas/OvfManagerCommonParams'

    ArrayOfOvfValidateHostParams:
      type: object
      description: |2
        A boxed array of *OvfValidateHostParams*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/OvfValidateHostParams'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    OvfValidateHostResult:
      type: object
      properties:
        downloadSize:
          description: |2
            The total amount of data that must be transferred to download the entity.
            
            This may be inaccurate due to disk compression etc.
          type: integer
          format: int64
        flatDeploymentSize:
          description: |2
            The total amount of space required to deploy the entity if using flat disks.
          type: integer
          format: int64
        sparseDeploymentSize:
          description: |2
            The total amount of space required to deploy the entity using sparse disks,
            if known.
          type: integer
          format: int64
        error:
          description: |2
            Errors that happened during validation.
            
            The presence of faults in this list
            indicates that the validation failed.
          type: array
          items:
            $ref: '#/components/schemas/MethodFault'
        warning:
          description: |2
            Non-fatal warnings from the validation.
          type: array
          items:
            $ref: '#/components/schemas/MethodFault'
        supportedDiskProvisioning:
          description: |2
            An array of the disk provisioning type supported by the target host system.
          type: array
          items:
            type: string
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfOvfValidateHostResult:
      type: object
      description: |2
        A boxed array of *OvfValidateHostResult*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/OvfValidateHostResult'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PasswordField:
      type: object
      description: |2
        DataObject which represents a Password field.
        
        Password is functionally equivalent to String.
      properties:
        value:
          type: string
          format: password
      required:
        - value
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfPasswordField:
      type: object
      description: |2
        A boxed array of *PasswordField*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PasswordField'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PerformanceDescription:
      type: object
      description: |2
        Static strings for performance metrics.
      properties:
        counterType:
          description: |2
            Identifies the *type* of
            the counter.
          type: array
          items:
            $ref: '#/components/schemas/ElementDescription'
        statsType:
          description: |2
            Identifies the *type*
            of statistic.
          type: array
          items:
            $ref: '#/components/schemas/ElementDescription'
      required:
        - counterType
        - statsType
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfPerformanceDescription:
      type: object
      description: |2
        A boxed array of *PerformanceDescription*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PerformanceDescription'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PerfCompositeMetric:
      type: object
      description: |2
        *PerfCompositeMetric* includes an optional
        aggregated entity performance statistics and a list of composite entities
        performance statistics&#46; The aggregated entity statistics are optional
        because some entities, such as folders, do not have their own
        statistics&#46;
      properties:
        entity:
          description: |2
            The aggregated entity performance metrics.
            
            If it exists, the *PerfSampleInfo* list of the aggregate entity is a
            complete list of *PerfSampleInfo* that could
            be contained in *PerfSampleInfo* lists of
            child entities.
          $ref: '#/components/schemas/PerfEntityMetricBase'
        childEntity:
          description: |2
            A list of *metrics* of
            performance providers that comprise the aggregated entity.
            
            For
            example, Host is an aggregated entity for virtual machines and
            virtual machine Folders. ResourcePools are aggregate entities for
            virtual machines. Host, Folder, and Cluster are aggregate entities
            for hosts in the cluster or folder.
          type: array
          items:
            $ref: '#/components/schemas/PerfEntityMetricBase'
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfPerfCompositeMetric:
      type: object
      description: |2
        A boxed array of *PerfCompositeMetric*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PerfCompositeMetric'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PerfCounterInfo:
      type: object
      description: |2
        This data object type contains metadata for a performance counter.
        
        See
        *PerformanceManager* for definitions of available counters.
      properties:
        key:
          description: |2
            A system-generated number that uniquely identifies the counter in the
            context of the system.
            
            The performance counter ID.
          type: integer
          format: int32
        nameInfo:
          description: |2
            The name of the counter with label and summary details.
            
            For example,
            the counter with name "usage" for the "cpu" group of performance
            counters.
          $ref: '#/components/schemas/ElementDescription'
        groupInfo:
          description: |2
            The group of the performance counter with its label and summary
            details.
            
            Counter groups include "cpu," "mem," "net," "disk," "system,"
            "rescpu," and "clusterServices," for example.
          $ref: '#/components/schemas/ElementDescription'
        unitInfo:
          description: |2
            The unit for the values of the performance counter with its label and
            summary details.
            
            See *PerformanceManagerUnit_enum* for a
            description of the valid values.
          $ref: '#/components/schemas/ElementDescription'
        rollupType:
          description: |2
            The counter type.
            
            Valid values include average, maximum, minimum,
            latest, summation, or none. This determines the type of statistical
            values that are returned for the counter. None means that the counter
            is never rolled up.
          $ref: '#/components/schemas/PerfSummaryType_enum'
        statsType:
          description: |2
            Statistics type for the counter.
            
            Valid values include absolute, delta,
            or rate.
          $ref: '#/components/schemas/PerfStatsType_enum'
        level:
          description: |2
            Minimum level at which metrics of this type will be collected by
            VirtualCenter Server.
            
            The value for this property for any performance
            counter is a number from 1 to 4. The higher the setting, the more data
            is collected by VirtualCenter Server. The default setting for
            VirtualCenter Server is 1, which collects the minimal amount of
            performance data that is typically useful to administrators and
            developers alike. The specific level of each counter is documented in
            the respective counter-documentation pages, by group. See *PerformanceManager* for links to the counter group pages.
          type: integer
          format: int32
        perDeviceLevel:
          description: |2
            Minimum level at which the per device metrics of this type will be
            collected by vCenter Server.
            
            The value for this property for any
            performance counter is a number from 1 to 4. By default all per device
            metrics are calculated at level 3 or more. If a certain per device
            counter is collected at a certain level, the aggregate metric is also
            calculated at that level, i.e., perDeviceLevel is greater than or
            equal to level.
          type: integer
          format: int32
        associatedCounterId:
          deprecated: true
          description: |2
            Deprecated as of VI API 2.5, this property is not used.
            
            The counter IDs associated with the same performance counter name for
            the same device type.
            
            For example, the rollup types for CPU Usage for
            a host are average, minimum, and maximum&#46; Therefore, their counter
            IDs are associated.
          type: array
          items:
            type: integer
            format: int32
      required:
        - key
        - nameInfo
        - groupInfo
        - unitInfo
        - rollupType
        - statsType
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfPerfCounterInfo:
      type: object
      description: |2
        A boxed array of *PerfCounterInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PerfCounterInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PerformanceManagerCounterLevelMapping:
      type: object
      description: |2
        *PerformanceManagerCounterLevelMapping* class captures the counter
        and level mapping.
        
        Any counter has two aspects: aggregate value or the
        per-device value. For example, cpu.usage.average on a host is an
        aggregate counter and cpu.usage.average on pcpus in a host is a
        per-device counters. There is a need to be able to specify different
        levels for the two versions. Currently, all per-device stats are
        collected at level greater than or equal to 3.
        
        In order to be able to configure the level of collections for
        aggregate and per-device counters we have two optional level fields.
        *PerformanceManagerCounterLevelMapping* is used to update the
        levels for a counter.
      properties:
        counterId:
          description: |2
            The counter Id
          type: integer
          format: int32
        aggregateLevel:
          description: |2
            Level for the aggregate counter.
            
            If not set then the value is not
            changed when updateCounterLevelMapping is called.
          type: integer
          format: int32
        perDeviceLevel:
          description: |2
            Level for the per device counter.
            
            If not set then the value is not
            changed when updateCounterLevelMapping is called.
          type: integer
          format: int32
      required:
        - counterId
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfPerformanceManagerCounterLevelMapping:
      type: object
      description: |2
        A boxed array of *PerformanceManagerCounterLevelMapping*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PerformanceManagerCounterLevelMapping'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PerfEntityMetric:
      type: object
      description: |2
        This data object type stores values and metadata for metrics associated
        with a specific entity, in 'normal' format.
      properties:
        sampleInfo:
          description: |2
            A list of objects containing information (an interval and a timestamp)
            about the samples collected.
          type: array
          items:
            $ref: '#/components/schemas/PerfSampleInfo'
        value:
          description: |2
            A list of values that corresponds to the samples collected.
          type: array
          items:
            $ref: '#/components/schemas/PerfMetricSeries'
      allOf:
        - $ref: '#/components/schemas/PerfEntityMetricBase'

    ArrayOfPerfEntityMetric:
      type: object
      description: |2
        A boxed array of *PerfEntityMetric*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PerfEntityMetric'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PerfEntityMetricBase:
      type: object
      description: |2
        Base type for the various *PerfEntityMetric*
        encodings.
      properties:
        entity:
          description: |2
            Performance provider ID.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - entity
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfPerfEntityMetricBase:
      type: object
      description: |2
        A boxed array of *PerfEntityMetricBase*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PerfEntityMetricBase'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PerfEntityMetricCSV:
      type: object
      description: |2
        This data object type stores metric values for a specific entity in CSV
        format.
      properties:
        sampleInfoCSV:
          description: |2
            The *PerfSampleInfo* encoded in the following CSV
            format: \[interval1\], \[date1\], \[interval2\], \[date2\], and so on.
          type: string
        value:
          description: |2
            Metric values corresponding to the samples collected in this list.
          type: array
          items:
            $ref: '#/components/schemas/PerfMetricSeriesCSV'
      required:
        - sampleInfoCSV
      allOf:
        - $ref: '#/components/schemas/PerfEntityMetricBase'

    ArrayOfPerfEntityMetricCSV:
      type: object
      description: |2
        A boxed array of *PerfEntityMetricCSV*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PerfEntityMetricCSV'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PerfMetricIntSeries:
      type: object
      description: |2
        This data object type describes integer metric values.
        
        The size of the
        array must match the size of *PerfEntityMetric.sampleInfo* property in the *PerfEntityMetric* that contains this series.
      properties:
        value:
          description: |2
            An array of 64-bit integer values.
            
            The size of the array matches the
            size as the *PerfSampleInfo*, because the values
            can only be interpreted in the context of the sample that generated
            the value.
          type: array
          items:
            type: integer
            format: int64
      allOf:
        - $ref: '#/components/schemas/PerfMetricSeries'

    ArrayOfPerfMetricIntSeries:
      type: object
      description: |2
        A boxed array of *PerfMetricIntSeries*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PerfMetricIntSeries'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PerfMetricId:
      type: object
      description: |2
        This data object type contains information that associates a performance
        counter with a performance metric.
        
        When constructing this data object for
        the *PerfQuerySpec.metricId* property of the *PerfQuerySpec* to submit to one of the *PerformanceManager* query operations, the *PerfMetricId.instance* property
        supports these special characters:
        - An asterisk (\*) to specify all instances of the metric for the
          specified *PerfMetricId.counterId*
        - Double-quotes ("") to specify aggregated statistics
      properties:
        counterId:
          description: |2
            The *ID* of the counter for
            the metric.
          type: integer
          format: int32
        instance:
          description: |2
            An identifier that is derived from configuration names for the device
            associated with the metric.
            
            It identifies the instance of the metric
            with its source. This property may be empty.
            - For memory and aggregated statistics, this property is empty.
            - For host and virtual machine devices, this property contains the
              name of the device, such as the name of the host-bus adapter or
              the name of the virtual Ethernet adapter. For example,
              &#147;mpx&#46;vmhba33&#58;C0&#58;T0&#58;L0&#148; or
              &#147;vmnic0&#58;&#148;
            - For a CPU, this property identifies the numeric position within
              the CPU core, such as 0, 1, 2, 3.
            - For a virtual disk, this property identifies the file type:
              - DISKFILE, for virtual machine base-disk files
              - SWAPFILE, for virtual machine swap files
              - DELTAFILE, for virtual machine snapshot overhead files
              - OTHERFILE, for all other files of a virtual machine
          type: string
      required:
        - counterId
        - instance
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfPerfMetricId:
      type: object
      description: |2
        A boxed array of *PerfMetricId*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PerfMetricId'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PerfMetricSeries:
      type: object
      description: |2
        This is a generic data object type that stores values for a specific
        performance metric.
        
        Useful data objects that store actual metric values
        extend this data object (see *PerfMetricIntSeries*).
      properties:
        id:
          description: |2
            An identifier for the performance metric.
          $ref: '#/components/schemas/PerfMetricId'
      required:
        - id
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfPerfMetricSeries:
      type: object
      description: |2
        A boxed array of *PerfMetricSeries*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PerfMetricSeries'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PerfMetricSeriesCSV:
      type: object
      description: |2
        This data object type represents a *PerfMetricSeries* encoded in CSV format.
      properties:
        value:
          description: |2
            An array of sample values in CSV format
          type: string
      allOf:
        - $ref: '#/components/schemas/PerfMetricSeries'

    ArrayOfPerfMetricSeriesCSV:
      type: object
      description: |2
        A boxed array of *PerfMetricSeriesCSV*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PerfMetricSeriesCSV'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PerfProviderSummary:
      type: object
      description: |2
        This data object type contains information about a performance provider,
        the type of statistics it generates, and the *PerfProviderSummary.refreshRate* for
        statistics generation.
        
        A performance provider is any *managed object* that generates real-time or
        historical statistics (or both&#151;the *PerfProviderSummary.currentSupported* and
        *PerfProviderSummary.summarySupported* properties are not mutually exclusive).
      properties:
        entity:
          description: |2
            Reference to the performance provider, the *managed object* that provides real-time or
            historical metrics.
            
            The managed objects include but are not limited to
            *managed entities*, such as *host systems*, *virtual machines*, and *resource pools*.
          $ref: '#/components/schemas/ManagedObjectReference'
        currentSupported:
          description: |2
            True if this entity supports real-time (current) statistics; false if
            it does not.
            
            If this property is true for an entity, a client application
            can set the *PerfQuerySpec.intervalId* of the
            *PerfQuerySpec* (passed to the
            *PerformanceManager.QueryPerf* operation) to the *PerfProviderSummary.refreshRate* to obtain the maximum information possible for the
            entity.
          type: boolean
        summarySupported:
          description: |2
            True if this entity supports historical (aggregated) statistics; false
            if it does not.
            
            When this property is true for an entity, a client
            application can set the *PerfQuerySpec.intervalId* of *PerformanceManager.QueryPerf* to one of the historical *intervals* to obtain historical statistics for this
            entity.
          type: boolean
        refreshRate:
          description: |2
            Number of seconds between the generation of each counter.
            
            This value
            applies only to entities that support real-time (current)
            statistics&#46;
          type: integer
          format: int32
      required:
        - entity
        - currentSupported
        - summarySupported
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfPerfProviderSummary:
      type: object
      description: |2
        A boxed array of *PerfProviderSummary*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PerfProviderSummary'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PerfQuerySpec:
      type: object
      description: |2
        This data object specifies the query parameters, including the managed
        object reference to the target entity for statistics retrieval.
        - If the optional *PerfQuerySpec.intervalId* is omitted, the metrics are
          returned in their originally sampled interval.
          - When an *PerfQuerySpec.intervalId* is specified, the server tries to
            summarize the information for the specified *PerfQuerySpec.intervalId*.
            However, if that interval does not exist or has no data, the
            server summarizes the information using the best interval
            available.
        - If the range between *PerfQuerySpec.startTime* and *PerfQuerySpec.endTime* crosses
          multiple sample interval periods, the result contains data from the
          longest interval in the period.
      properties:
        entity:
          description: |2
            The managed object whose performance statistics are being queried.
          $ref: '#/components/schemas/ManagedObjectReference'
        startTime:
          description: |2
            The server time from which to obtain counters.
            
            If not specified,
            defaults to the first available counter. When a startTime is
            specified, the returned samples do not include the sample at
            startTime.
          type: string
          format: date-time
        endTime:
          description: |2
            The time up to which statistics are retrieved.
            
            Corresponds to server
            time. When endTime is omitted, the returned result includes up to the
            most recent metric value. When an endTime is specified, the returned
            samples include the sample at endTime.
          type: string
          format: date-time
        maxSample:
          description: |2
            Limits the number of samples returned.
            
            Defaults to the most recent
            sample (or samples), unless a time range is specified. Use this
            property only in conjunction with the *PerfQuerySpec.intervalId* to obtain
            real-time statistics (set the *PerfQuerySpec.intervalId* to the *PerfProviderSummary.refreshRate*. This property is
            ignored for historical statistics, and is not valid for the *PerformanceManager.QueryPerfComposite* operation.
          type: integer
          format: int32
        metricId:
          description: |2
            The performance metrics to be retrieved.
            
            This property is required for
            the *PerformanceManager.QueryPerfComposite* operation.
          type: array
          items:
            $ref: '#/components/schemas/PerfMetricId'
        intervalId:
          description: |2
            The interval (*PerfInterval.samplingPeriod*), in seconds,
            for the performance statistics&#46; For aggregated information, use
            one of the historical intervals for this property.
            
            See *PerfInterval* for more information.
            - To obtain the greatest detail, use the provider&#146;s *PerfProviderSummary.refreshRate* for this
              property.
          type: integer
          format: int32
        format:
          description: |2
            The format to be used while returning the statistics&#46;
            
            See also *PerfFormat_enum*.
          type: string
      required:
        - entity
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfPerfQuerySpec:
      type: object
      description: |2
        A boxed array of *PerfQuerySpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PerfQuerySpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PerfSampleInfo:
      type: object
      description: |2
        This data object type describes information contained in a sample
        collection, its timestamp, and sampling interval.
      properties:
        timestamp:
          description: |2
            The time at which the sample was collected.
          type: string
          format: date-time
        interval:
          description: |2
            The interval in seconds for which performance statistics were
            collected.
            
            This can be the refreshRate of the managed object for which
            this statistics was collected or one of the intervals for historical
            statistics configured in the system. See *PerformanceManager.UpdatePerfInterval* for more information about the intervals
            configured in the system.
          type: integer
          format: int32
      required:
        - timestamp
        - interval
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfPerfSampleInfo:
      type: object
      description: |2
        A boxed array of *PerfSampleInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PerfSampleInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PosixUserSearchResult:
      type: object
      description: |2
        Searching for users and groups on POSIX systems provides
        User ID and Group ID information, in addition to that
        defined in UserSearchResult.
      properties:
        id:
          description: |2
            If the search result is for a user, then id refers to User ID.
            
            For a group,
            the value of Group ID is assigned to id.
          type: integer
          format: int32
        shellAccess:
          description: |2
            If the search result is for a user, shellAccess indicates whether shell
            access has been granted or not.
          type: boolean
      required:
        - id
      allOf:
        - $ref: '#/components/schemas/UserSearchResult'

    ArrayOfPosixUserSearchResult:
      type: object
      description: |2
        A boxed array of *PosixUserSearchResult*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PosixUserSearchResult'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PrivilegePolicyDef:
      type: object
      description: |2
        Describes a basic privilege policy.
      properties:
        createPrivilege:
          description: |2
            Name of privilege required for creation.
          type: string
        readPrivilege:
          description: |2
            Name of privilege required for reading.
          type: string
        updatePrivilege:
          description: |2
            Name of privilege required for updating.
          type: string
        deletePrivilege:
          description: |2
            Name of privilege required for deleting.
          type: string
      required:
        - createPrivilege
        - readPrivilege
        - updatePrivilege
        - deletePrivilege
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfPrivilegePolicyDef:
      type: object
      description: |2
        A boxed array of *PrivilegePolicyDef*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PrivilegePolicyDef'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ResourceAllocationInfo:
      type: object
      description: |2
        The ResourceAllocationInfo data object specifies the reserved resource
        requirement as well as the limit (maximum allowed usage) for a given
        kind of resource.
        
        This is specified for both memory
        allocation (specified in MB) and CPU allocation (specified in MHz).
        
        For a *ResourcePool*, the ResourceAllocationInfo object describes
        both the guaranteed amount of the resource (*ResourceAllocationInfo.reservation*)
        and whether or not it is expandable
        (*ResourceAllocationInfo.expandableReservation*).
        If expandableReservation is true, then the resource pool can grow its reservation
        dynamically by borrowing unreserved resources from its parent resource pool.
        For the methods *ResourcePool.CreateResourcePool*,
        *ResourcePool.CreateVApp* and *ResourcePool.ImportVApp*,
        you must provide values for all properties except overheadLimit; they are not optional.
        (Currently, overheadLimit is for vCenter Server use only.)
        
        If the limit is configured, it must be greater than or equal to the
        reservation.
      properties:
        reservation:
          description: |2
            Amount of resource that is guaranteed available to the virtual machine or
            resource pool.
            
            Reserved resources are not wasted if they are not used. If
            the utilization is less than the reservation, the resources can be utilized by
            other running virtual machines. Units are MB for memory, MHz for CPU.
          type: integer
          format: int64
        expandableReservation:
          description: |2
            In a resource pool with an expandable reservation, the reservation on a resource
            pool can grow beyond the specified value, if the parent resource pool has
            unreserved resources.
            
            A non-expandable reservation is called a fixed
            reservation. This property is invalid for virtual machines.
          type: boolean
        limit:
          description: |2
            The utilization of a virtual machine/resource pool will not exceed this limit, even
            if there are available resources.
            
            This is typically used to ensure a consistent
            performance of virtual machines / resource pools independent of available resources.
            If set to -1, then there is no fixed limit on resource usage (only bounded by available
            resources and shares). Units are MB for memory, MHz for CPU.
          type: integer
          format: int64
        shares:
          description: |2
            Memory shares are used in case of resource contention.
          $ref: '#/components/schemas/SharesInfo'
        overheadLimit:
          description: |2
            The maximum allowed overhead memory.
            
            For a powered on virtual
            machine, the overhead memory reservation cannot be larger than its
            overheadLimit. This property is only applicable to powered on
            virtual machines and is not persisted across reboots. This property
            is not applicable for resource pools. If set to -1, then there is
            no limit on reservation. Units are MB.
            
            Note: For vCenter Server use only. Not available for other clients
            at this time.
            The server will throw an exception if you attempt to set
            this property.
          type: integer
          format: int64
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfResourceAllocationInfo:
      type: object
      description: |2
        A boxed array of *ResourceAllocationInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ResourceAllocationInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ResourceAllocationOption:
      type: object
      description: |2
        The ResourceAllocationOption data object specifies value ranges and
        default values for *ResourceAllocationInfo*.
      properties:
        sharesOption:
          description: |2
            Default value and value range for *ResourceAllocationInfo.shares*.
          $ref: '#/components/schemas/SharesOption'
      required:
        - sharesOption
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfResourceAllocationOption:
      type: object
      description: |2
        A boxed array of *ResourceAllocationOption*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ResourceAllocationOption'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ResourceConfigOption:
      type: object
      description: |2
        This data object type is a default value and value range specification
        for *ResourceConfigSpec* object.
      properties:
        cpuAllocationOption:
          description: |2
            Resource allocation options for CPU.
            
            See also *ResourceAllocationInfo*.
          $ref: '#/components/schemas/ResourceAllocationOption'
        memoryAllocationOption:
          description: |2
            Resource allocation options for memory.
            
            See also *ResourceAllocationInfo*.
          $ref: '#/components/schemas/ResourceAllocationOption'
      required:
        - cpuAllocationOption
        - memoryAllocationOption
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfResourceConfigOption:
      type: object
      description: |2
        A boxed array of *ResourceConfigOption*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ResourceConfigOption'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ResourceConfigSpec:
      type: object
      description: |2
        This data object type is a specification for a set of resources
        allocated to a virtual machine or a resource pool.
      properties:
        entity:
          description: |2
            Reference to the entity with this resource specification:
            either a VirtualMachine or a ResourcePool.
            
            Refers instance of *ManagedEntity*.
          $ref: '#/components/schemas/ManagedObjectReference'
        changeVersion:
          description: |2
            The changeVersion is a unique identifier for a given version
            of the configuration.
            
            Each change to the configuration will
            update this value. This is typically implemented as an ever
            increasing count or a time-stamp. However, a client should
            always treat this as an opaque string.
            
            If specified when updating the resource config., the
            changes will only be applied if the current changeVersion matches the
            specified changeVersion. This field can be used to guard against updates that
            has happened between the configInfo was read and until it is applied.
          type: string
        lastModified:
          description: |2
            Timestamp when the resources were last modified.
            
            This is ignored when
            the object is used to update a configuration.
          type: string
          format: date-time
        cpuAllocation:
          description: |2
            Resource allocation for CPU.
          $ref: '#/components/schemas/ResourceAllocationInfo'
        memoryAllocation:
          description: |2
            Resource allocation for memory.
          $ref: '#/components/schemas/ResourceAllocationInfo'
        scaleDescendantsShares:
          description: |2
            Specifies the scaling behavior of the shares of all descendant resource
            pools under a given resource pool.
            
            See *ResourceConfigSpecScaleSharesBehavior_enum* for possible values. If any
            scaling behavior other than *disabled* is
            specified, the system will scale the CPU and memory shares allocated to
            each descendant resource pool with the total shares of all powered on
            virtual machines under each respective pool. The system will also use the
            *SharesInfo* set on each descendant resource pool as a
            multiplier for the scale. If a resource pool's shares are already
            scalable through the *ResourceConfigSpec.scaleDescendantsShares* setting on an ancestor
            resource pool, the system will not allow *ResourceConfigSpec.scaleDescendantsShares* to be set on the resource
            pool. The *ResourcePoolRuntimeInfo.sharesScalable* property
            indicates whether or not a resource pool's shares are scalable. This
            property does not apply to virtual machines.
          type: string
      required:
        - cpuAllocation
        - memoryAllocation
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfResourceConfigSpec:
      type: object
      description: |2
        A boxed array of *ResourceConfigSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ResourceConfigSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DatabaseSizeEstimate:
      type: object
      description: |2
        DatabaseSizeEstimate contains information about the size
        required to by the database.
      properties:
        size:
          description: |2
            The estimated size required in MB
          type: integer
          format: int64
      required:
        - size
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfDatabaseSizeEstimate:
      type: object
      description: |2
        A boxed array of *DatabaseSizeEstimate*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DatabaseSizeEstimate'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DatabaseSizeParam:
      type: object
      description: |2
        DatabaseSizeParam contains information about a sample inventory.
        
        Using this
        information, database size requirements for that sample inventory can be computed.
        Depending on the accuracy of estimate desired, users can choose to specify
        the number of different types of managed entities. The numHosts and
        numVirtualMachines are the only two required fields. Rest are all optional
        fields filled up by Virtual Center based on some heuristics.
        These parameters need not represent a real inventory. The user can use these
        parameters to estimate the database size required by a hypothetical
        VirtualCenter setup.
      properties:
        inventoryDesc:
          description: |2
            Object to capture inventory description
          $ref: '#/components/schemas/InventoryDescription'
        perfStatsDesc:
          description: |2
            Object to capture performance statistics
            related parameters
          $ref: '#/components/schemas/PerformanceStatisticsDescription'
      required:
        - inventoryDesc
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfDatabaseSizeParam:
      type: object
      description: |2
        A boxed array of *DatabaseSizeParam*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DatabaseSizeParam'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    InventoryDescription:
      type: object
      description: |2
        Data object to capture all information needed to
        describe a sample inventory.
      properties:
        numHosts:
          description: |2
            The number of hosts.
          type: integer
          format: int32
        numVirtualMachines:
          description: |2
            The number of virtual machines.
          type: integer
          format: int32
        numResourcePools:
          description: |2
            The number of resource pools.
            
            Default value is equal to numHosts
          type: integer
          format: int32
        numClusters:
          description: |2
            The number of clusters.
            
            Default value is equal to numHosts/5.
          type: integer
          format: int32
        numCpuDev:
          description: |2
            The number cpu devices per host.
            
            Default value is 4.
          type: integer
          format: int32
        numNetDev:
          description: |2
            The number network devices per host.
            
            Default value is 2.
          type: integer
          format: int32
        numDiskDev:
          description: |2
            The number disk devices per host.
            
            Default value is 10.
          type: integer
          format: int32
        numvCpuDev:
          description: |2
            The number cpu devices per vm.
            
            Default value is 2.
          type: integer
          format: int32
        numvNetDev:
          description: |2
            The number network devices per vm.
            
            Default value is 1.
          type: integer
          format: int32
        numvDiskDev:
          description: |2
            The number disk devices per vm.
            
            Default value is 4.
          type: integer
          format: int32
      required:
        - numHosts
        - numVirtualMachines
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfInventoryDescription:
      type: object
      description: |2
        A boxed array of *InventoryDescription*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/InventoryDescription'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PerformanceStatisticsDescription:
      type: object
      description: |2
        Data object to capture all information needed to
        describe a sample inventory.
      properties:
        intervals:
          description: |2
            Historic interval setting.
            
            Default value is the same as the historic
            interval settings of the current instance
            of running VC.
          type: array
          items:
            $ref: '#/components/schemas/PerfInterval'
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfPerformanceStatisticsDescription:
      type: object
      description: |2
        A boxed array of *PerformanceStatisticsDescription*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PerformanceStatisticsDescription'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ResourcePoolResourceUsage:
      type: object
      description: |2
        Specifies the resource usage for either memory
        or CPU.
        
        For CPU the unit is MHz, for memory the unit is bytes.
        
        In the typical case, where a resourcepool is in a consistent state,
        unreservedForVm will be equal to unreservedForPool. Hence, we
        can simply say talk about unreserved resources.
        
        If the reservation on the resource pool is not expandable, then
        the following is true:
        
                       reservation = reservationUsed + unreserved
        If the reservation on the resource pool is expandable, then
        the following is true:
        
                  reservation + parent.unreserved = reservationUsed + unreserved
      properties:
        reservationUsed:
          description: |2
            Total amount of resources that have been used to satisfy the
            reservation requirements of all descendants of this
            resource pool (includes both resource pools and virtual
            machines).
          type: integer
          format: int64
        reservationUsedForVm:
          description: |2
            Total amount of resources that have been used to satisfy the reservation
            requirements of running virtual machines in this resource pool or any of its
            child resource pools.
          type: integer
          format: int64
        unreservedForPool:
          description: |2
            Total amount of resources available to satisfy a reservation
            for a child resource pool.
            
            In the undercommitted state, this is
            limited by the capacity at the root node. In the overcommitted case,
            this could be higher since we do not perform the dynamic capacity
            checks.
          type: integer
          format: int64
        unreservedForVm:
          description: |2
            Total amount of resources available to satisfy a reservation for
            a child virtual machine.
            
            In general, this should be the same as
            *ResourcePoolResourceUsage.unreservedForPool*. However, in the overcommitted case, this
            is limited by the remaining available resources at the root
            node.
          type: integer
          format: int64
        overallUsage:
          deprecated: true
          description: |2
            Deprecated as of vSphere API 6.5.
            Use *ResourcePoolQuickStats.overallCpuUsage* and
            *ResourcePoolQuickStats.hostMemoryUsage*.
            
            Close to real-time resource usage of all running child virtual
            machines, including virtual machines in child resource pools.
          type: integer
          format: int64
        maxUsage:
          description: |2
            Current upper-bound on usage.
            
            The upper-bound is based on the limit configured
            on this resource pool, as well as limits configured on any parent resource
            pool.
          type: integer
          format: int64
      required:
        - reservationUsed
        - reservationUsedForVm
        - unreservedForPool
        - unreservedForVm
        - overallUsage
        - maxUsage
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfResourcePoolResourceUsage:
      type: object
      description: |2
        A boxed array of *ResourcePoolResourceUsage*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ResourcePoolResourceUsage'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ResourcePoolRuntimeInfo:
      type: object
      description: |2
        Current runtime resource usage and state of the resource pool
      properties:
        memory:
          description: |2
            Runtime resource usage for memory.
            
            Values are in bytes.
          $ref: '#/components/schemas/ResourcePoolResourceUsage'
        cpu:
          description: |2
            Runtime resource usage for CPU.
            
            Values are in Mhz.
          $ref: '#/components/schemas/ResourcePoolResourceUsage'
        overallStatus:
          deprecated: true
          description: |2
            Deprecated as of vSphere API 6.5.
            Use *ManagedEntity.overallStatus*.
            
            Overall health of the tree.
            
            See header for description of various
            statuses and when they are set.
          $ref: '#/components/schemas/ManagedEntityStatus_enum'
        sharesScalable:
          description: |2
            The scaling behavior of the shares of a given resource pool.
            
            See *ResourceConfigSpecScaleSharesBehavior_enum* for possible values. The
            system will automatically compute this property based on the *ResourceConfigSpec.scaleDescendantsShares* setting on every
            ancestor resource pool. This property does not apply to virtual
            machines.
          type: string
      required:
        - memory
        - cpu
        - overallStatus
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfResourcePoolRuntimeInfo:
      type: object
      description: |2
        A boxed array of *ResourcePoolRuntimeInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ResourcePoolRuntimeInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ResourcePoolSummary:
      type: object
      description: |2
        This data object type encapsulates a typical set of resource
        pool information that is useful for list views and summary pages.
      properties:
        name:
          description: |2
            Name of resource pool.
          type: string
        config:
          description: |2
            Current configuration of the resource pool.
          $ref: '#/components/schemas/ResourceConfigSpec'
        runtime:
          description: |2
            Current runtime state of the resource pool.
          $ref: '#/components/schemas/ResourcePoolRuntimeInfo'
        quickStats:
          description: |2
            A set of statistics that are typically updated with near real-time regularity.
            
            This data object type does not support notification, for scalability reasons.
            Therefore, changes in QuickStats do not generate property collector updates.
            To monitor statistics values, use the statistics and alarms modules instead.
          $ref: '#/components/schemas/ResourcePoolQuickStats'
        configuredMemoryMB:
          description: |2
            Total configured memory of all virtual machines in the resource pool, in MB.
          type: integer
          format: int32
      required:
        - name
        - config
        - runtime
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfResourcePoolSummary:
      type: object
      description: |2
        A boxed array of *ResourcePoolSummary*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ResourcePoolSummary'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ResourcePoolQuickStats:
      type: object
      description: |2
        A set of statistics that are typically updated with near real-time regularity.
        
        These statistics are aggregates of the corresponding statistics of all virtual
        machines in the given resource pool, and unless otherwise noted, only make sense
        when at least one virtual machine in the given resource pool is powered on.
        This data object type does not support notification, for scalability reasons.
        Therefore, changes in QuickStats do not generate property collector updates. To
        monitor statistics values, use the statistics and alarms modules instead.
      properties:
        overallCpuUsage:
          description: |2
            Basic CPU performance statistics, in MHz.
          type: integer
          format: int64
        overallCpuDemand:
          description: |2
            Basic CPU performance statistics, in MHz.
          type: integer
          format: int64
        guestMemoryUsage:
          description: |2
            Guest memory utilization statistics, in MB.
            
            This
            is also known as active guest memory. The number
            can be between 0 and the configured memory size of
            a virtual machine.
          type: integer
          format: int64
        hostMemoryUsage:
          description: |2
            Host memory utilization statistics, in MB.
            
            This
            is also known as consummed host memory. This is between 0 and
            the configured resource limit. Valid while a virtual machine is
            running. This includes the overhead memory of a virtual machine.
          type: integer
          format: int64
        distributedCpuEntitlement:
          description: |2
            This is the amount of CPU resource, in MHz, that this VM is entitled to, as
            calculated by DRS.
            
            Valid only for a VM managed by DRS.
          type: integer
          format: int64
        distributedMemoryEntitlement:
          description: |2
            This is the amount of memory, in MB, that this VM is entitled to, as
            calculated by DRS.
            
            Valid only for a VM managed by DRS.
          type: integer
          format: int64
        staticCpuEntitlement:
          description: |2
            The static CPU resource entitlement for a virtual machine.
            
            This value is
            calculated based on this virtual machine's resource reservations, shares
            and limit, and doesn't take into account current usage. This is the worst
            case CPU allocation for this virtual machine, that is, the amount of CPU
            resource this virtual machine would receive if all virtual machines running
            in the cluster went to maximum consumption. Units are MHz.
          type: integer
          format: int32
        staticMemoryEntitlement:
          description: |2
            The static memory resource entitlement for a virtual machine.
            
            This value is
            calculated based on this virtual machine's resource reservations, shares
            and limit, and doesn't take into account current usage. This is the worst
            case memory allocation for this virtual machine, that is, the amount of
            memory this virtual machine would receive if all virtual machines running
            in the cluster went to maximum consumption. Units are MB.
          type: integer
          format: int32
        privateMemory:
          description: |2
            The portion of memory, in MB, that is granted to a virtual machine from
            non-shared host memory.
          type: integer
          format: int64
        sharedMemory:
          description: |2
            The portion of memory, in MB, that is granted to a virtual machine from host
            memory that is shared between VMs.
          type: integer
          format: int64
        swappedMemory:
          description: |2
            The portion of memory, in MB, that is granted to a virtual machine from the
            host's swap space.
            
            This is a sign that there is memory pressure on the host.
          type: integer
          format: int64
        balloonedMemory:
          description: |2
            The size of the balloon driver in a virtual machine, in MB.
            
            The host will
            inflate the balloon driver to reclaim physical memory from a virtual machine.
            This is a sign that there is memory pressure on the host.
          type: integer
          format: int64
        overheadMemory:
          description: |2
            The amount of memory resource (in MB) that will be used by
            a virtual machine above its guest memory requirements.
            
            This value is set if and only if a virtual machine is registered
            on a host that supports memory resource allocation features.
            For powered off VMs, this is the minimum overhead required to
            power on the VM on the registered host.
            For powered on VMs, this is the current overhead reservation, a
            value which is almost always larger than the minimum overhead, and
            which grows with time.
            
            See also *HostSystem.QueryMemoryOverheadEx*.
          type: integer
          format: int64
        consumedOverheadMemory:
          description: |2
            The amount of overhead memory, in MB, currently being consumed to run a VM.
            
            This value is limited by the overhead memory reservation for a VM, stored
            in *ResourcePoolQuickStats.overheadMemory*.
          type: integer
          format: int64
        compressedMemory:
          description: |2
            The amount of compressed memory currently consumed by VM, in KB.
          type: integer
          format: int64
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfResourcePoolQuickStats:
      type: object
      description: |2
        A boxed array of *ResourcePoolQuickStats*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ResourcePoolQuickStats'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    SDDCBase:
      type: object
      description: |2
        An empty data object which can be used as the base class for data objects
        outside VIM namespace which have to be proxied through vCenter opaquely.
        
        For example, vSan configuration spec will extend from this which will
        allow HCI API to pass the spec to set up vSan on the cluster.
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfSDDCBase:
      type: object
      description: |2
        A boxed array of *SDDCBase*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/SDDCBase'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    SelectionSet:
      type: object
      description: |2
        Base class for selecting entities
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfSelectionSet:
      type: object
      description: |2
        A boxed array of *SelectionSet*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/SelectionSet'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostVMotionCompatibility:
      type: object
      description: |2
        The object type for the array returned by queryVMotionCompatibility;
        specifies the VMotion compatibility types for a host.
      properties:
        host:
          description: |2
            The prospective host for the virtual machine.
            
            Refers instance of *HostSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
        compatibility:
          description: |2
            Ways in which the host is compatible with the designated virtual
            machine that is a candidate for VMotion.
            
            This array will be
            a subset of the set of VMotionCompatibilityType strings that
            were input to queryVMotionCompatibility.
          type: array
          items:
            type: string
      required:
        - host
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostVMotionCompatibility:
      type: object
      description: |2
        A boxed array of *HostVMotionCompatibility*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostVMotionCompatibility'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ProductComponentInfo:
      type: object
      description: |2
        ProductComponentInfo data object type describes installed components.
        
        Product component is defined as a software module that is released
        and versioned independently but has dependency relationship with other products.
        If one product, for usability or any other reason, bundles other products,
        ProductComponentInfo type may be used to describe installed components.
        For example, ESX product may bundle VI Client in its releases.
      properties:
        id:
          description: |2
            Opaque identifier that is unique for this product component
          type: string
        name:
          description: |2
            Canonical name of product component
          type: string
        version:
          description: |2
            Version of product component
          type: string
        release:
          description: |2
            Release property is a number which increments with each
            new release of product.
            
            Product release may not rev version
            but release number is always incremented.
          type: integer
          format: int32
      required:
        - id
        - name
        - version
        - release
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfProductComponentInfo:
      type: object
      description: |2
        A boxed array of *ProductComponentInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ProductComponentInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ServiceContent:
      type: object
      description: |2
        The *ServiceContent* data object defines properties for the ServiceInstance
        managed object.
        
        The ServiceInstance itself does not have directly-accessible
        properties because reading the properties of a managed object requires
        the use of a property collector, and the property collector itself
        is a property of the *ServiceInstance*.
        For this reason, use the method *ServiceInstance.RetrieveServiceContent*
        to retrieve the *ServiceContent* object.
      properties:
        rootFolder:
          description: |2
            Reference to the top of the inventory managed by this service.
            
            Refers instance of *Folder*.
          $ref: '#/components/schemas/ManagedObjectReference'
        propertyCollector:
          description: |2
            Reference to a per-session object for retrieving properties and updates.
            
            Refers instance of *PropertyCollector*.
          $ref: '#/components/schemas/ManagedObjectReference'
        viewManager:
          description: |2
            A singleton managed object for tracking custom sets of objects.
            
            Refers instance of *ViewManager*.
          $ref: '#/components/schemas/ManagedObjectReference'
        about:
          description: |2
            Information about the service, such as the software version.
          $ref: '#/components/schemas/AboutInfo'
        setting:
          description: |2
            Generic configuration for a management server.
            
            This is for example by
            vCenter to store the vCenter Settings. This is not used for a
            stand-alone host, instead the vim.host.ConfigManager.advancedOption is used.
            
            See also *HostConfigManager*.
            
            Refers instance of *OptionManager*.
          $ref: '#/components/schemas/ManagedObjectReference'
        userDirectory:
          description: |2
            A user directory managed object.
            
            Refers instance of *UserDirectory*.
          $ref: '#/components/schemas/ManagedObjectReference'
        sessionManager:
          description: |2
            Managed object for logging in and managing sessions.
            
            Refers instance of *SessionManager*.
          $ref: '#/components/schemas/ManagedObjectReference'
        authorizationManager:
          description: |2
            Manages permissions for managed entities in the service.
            
            Refers instance of *AuthorizationManager*.
          $ref: '#/components/schemas/ManagedObjectReference'
        serviceManager:
          description: |2
            A singleton managed object that manages local services.
            
            Refers instance of *ServiceManager*.
          $ref: '#/components/schemas/ManagedObjectReference'
        perfManager:
          description: |2
            A singleton managed object that manages the collection and reporting
            of performance statistics.
            
            Refers instance of *PerformanceManager*.
          $ref: '#/components/schemas/ManagedObjectReference'
        scheduledTaskManager:
          description: |2
            A singleton managed object that manages scheduled tasks.
            
            Refers instance of *ScheduledTaskManager*.
          $ref: '#/components/schemas/ManagedObjectReference'
        alarmManager:
          description: |2
            A singleton managed object that manages alarms.
            
            Refers instance of *AlarmManager*.
          $ref: '#/components/schemas/ManagedObjectReference'
        eventManager:
          description: |2
            A singleton managed object that manages events.
            
            Refers instance of *EventManager*.
          $ref: '#/components/schemas/ManagedObjectReference'
        taskManager:
          description: |2
            A singleton managed object that manages tasks.
            
            Refers instance of *TaskManager*.
          $ref: '#/components/schemas/ManagedObjectReference'
        extensionManager:
          description: |2
            A singleton managed object that manages extensions.
            
            Refers instance of *ExtensionManager*.
          $ref: '#/components/schemas/ManagedObjectReference'
        customizationSpecManager:
          description: |2
            A singleton managed object that manages saved guest customization
            specifications.
            
            Refers instance of *CustomizationSpecManager*.
          $ref: '#/components/schemas/ManagedObjectReference'
        guestCustomizationManager:
          description: |2
            A singleton managed object that manages guest customization of
            a running VM.
            
            The typical usage is for the guest customization after the
            InstantClone operation. See *VirtualMachine.InstantClone_Task*.
            
            Refers instance of *VirtualMachineGuestCustomizationManager*.
          $ref: '#/components/schemas/ManagedObjectReference'
        customFieldsManager:
          description: |2
            A singleton managed object that managed custom fields.
            
            Refers instance of *CustomFieldsManager*.
          $ref: '#/components/schemas/ManagedObjectReference'
        accountManager:
          description: |2
            A singleton managed object that manages host local user and group accounts.
            
            Refers instance of *HostLocalAccountManager*.
          $ref: '#/components/schemas/ManagedObjectReference'
        diagnosticManager:
          description: |2
            A singleton managed object that provides access to low-level log files.
            
            Refers instance of *DiagnosticManager*.
          $ref: '#/components/schemas/ManagedObjectReference'
        licenseManager:
          description: |2
            A singleton managed object that manages licensing
            
            Refers instance of *LicenseManager*.
          $ref: '#/components/schemas/ManagedObjectReference'
        searchIndex:
          description: |2
            A singleton managed object that allows search of the inventory
            
            Refers instance of *SearchIndex*.
          $ref: '#/components/schemas/ManagedObjectReference'
        fileManager:
          description: |2
            A singleton managed object that allows management of files present
            on datastores.
            
            Refers instance of *FileManager*.
          $ref: '#/components/schemas/ManagedObjectReference'
        datastoreNamespaceManager:
          description: |2
            Datastore Namespace manager.
            
            A singleton managed object that is used to manage manipulations
            related to datastores' namespaces.
            
            Refers instance of *DatastoreNamespaceManager*.
          $ref: '#/components/schemas/ManagedObjectReference'
        virtualDiskManager:
          description: |2
            A singleton managed object that allows management of virtual disks
            on datastores.
            
            Refers instance of *VirtualDiskManager*.
          $ref: '#/components/schemas/ManagedObjectReference'
        virtualizationManager:
          deprecated: true
          description: |2
            Deprecated as of VI API 2.5, use the VMware vCenter Converter plug-in.
            
            A singleton managed object that manages the discovery, analysis,
            recommendation and virtualization of physical machines
            
            Refers instance of *VirtualizationManager*.
          $ref: '#/components/schemas/ManagedObjectReference'
        snmpSystem:
          description: |2
            A singleton managed object that allows SNMP configuration.
            
            Not set if not supported on a particular platform.
            
            Refers instance of *HostSnmpSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
        vmProvisioningChecker:
          description: |2
            A singleton managed object that can answer questions about the
            feasibility of certain provisioning operations.
            
            Refers instance of *VirtualMachineProvisioningChecker*.
          $ref: '#/components/schemas/ManagedObjectReference'
        vmCompatibilityChecker:
          description: |2
            A singleton managed object that can answer questions about compatibility
            of a virtual machine with a host.
            
            Refers instance of *VirtualMachineCompatibilityChecker*.
          $ref: '#/components/schemas/ManagedObjectReference'
        ovfManager:
          description: |2
            A singleton managed object that can generate OVF descriptors (export) and create
            vApps (single-VM or vApp container-based) from OVF descriptors (import).
            
            Refers instance of *OvfManager*.
          $ref: '#/components/schemas/ManagedObjectReference'
        ipPoolManager:
          description: |2
            A singleton managed object that supports management of IpPool objects.
            
            IP pools are
            used when allocating IPv4 and IPv6 addresses to vApps.
            
            Refers instance of *IpPoolManager*.
          $ref: '#/components/schemas/ManagedObjectReference'
        dvSwitchManager:
          description: |2
            A singleton managed object that provides relevant information of
            DistributedVirtualSwitch.
            
            Refers instance of *DistributedVirtualSwitchManager*.
          $ref: '#/components/schemas/ManagedObjectReference'
        hostProfileManager:
          description: |2
            A singleton managed object that manages the host profiles.
            
            Refers instance of *HostProfileManager*.
          $ref: '#/components/schemas/ManagedObjectReference'
        clusterProfileManager:
          description: |2
            A singleton managed object that manages the cluster profiles.
            
            Refers instance of *ClusterProfileManager*.
          $ref: '#/components/schemas/ManagedObjectReference'
        complianceManager:
          description: |2
            A singleton managed object that manages compliance aspects of entities.
            
            Refers instance of *ProfileComplianceManager*.
          $ref: '#/components/schemas/ManagedObjectReference'
        localizationManager:
          description: |2
            A singleton managed object that provides methods for retrieving message
            catalogs for client-side localization support.
            
            Refers instance of *LocalizationManager*.
          $ref: '#/components/schemas/ManagedObjectReference'
        storageResourceManager:
          description: |2
            A singleton managed object that provides methods for storage resource
            management.
            
            Refers instance of *StorageResourceManager*.
          $ref: '#/components/schemas/ManagedObjectReference'
        guestOperationsManager:
          description: |2
            A singleton managed object that provides methods for guest operations.
            
            Refers instance of *GuestOperationsManager*.
          $ref: '#/components/schemas/ManagedObjectReference'
        overheadMemoryManager:
          description: |2
            A singleton managed object that provides methods for looking up static VM
            overhead memory.
            
            Refers instance of *OverheadMemoryManager*.
          $ref: '#/components/schemas/ManagedObjectReference'
        certificateManager:
          description: |2
            host certificate manager
            A singleton managed object to manage the certificates between the
            Certificate Server and the host.
            
            Refers instance of *CertificateManager*.
          $ref: '#/components/schemas/ManagedObjectReference'
        ioFilterManager:
          description: |2
            A singleton managed object that manages IO Filters installed on the ESXi
            hosts and IO Filter configuration of virtual disks.
            
            Refers instance of *IoFilterManager*.
          $ref: '#/components/schemas/ManagedObjectReference'
        vStorageObjectManager:
          description: |2
            A singleton managed object that manages all storage objects in the
            Virtual Infrastructure.
            
            If connected to a vCenter,
            this is the *VcenterVStorageObjectManager*; If connected
            to an ESXi host, this is the *HostVStorageObjectManager*.
            
            A storage object in the Virtual Infrastructure is represented by a
            vStorageObject.
            
            Refers instance of *VStorageObjectManagerBase*.
          $ref: '#/components/schemas/ManagedObjectReference'
        hostSpecManager:
          description: |2
            A singleton managed object that manages the host specification data.
            
            Refers instance of *HostSpecificationManager*.
          $ref: '#/components/schemas/ManagedObjectReference'
        cryptoManager:
          description: |2
            A singleton managed object used to manage cryptographic keys.
            
            Refers instance of *CryptoManager*.
          $ref: '#/components/schemas/ManagedObjectReference'
        healthUpdateManager:
          description: |2
            A singleton managed object that manages the health updates.
            
            Refers instance of *HealthUpdateManager*.
          $ref: '#/components/schemas/ManagedObjectReference'
        failoverClusterConfigurator:
          description: |2
            A singleton managed object that manages the VCHA Cluster
            configuration.
            
            Refers instance of *FailoverClusterConfigurator*.
          $ref: '#/components/schemas/ManagedObjectReference'
        failoverClusterManager:
          description: |2
            A singleton managed object for managing a configured VCHA Cluster.
            
            Refers instance of *FailoverClusterManager*.
          $ref: '#/components/schemas/ManagedObjectReference'
        tenantManager:
          description: |2
            A singleton managed object used to configure tenants.
            
            Refers instance of *TenantTenantManager*.
          $ref: '#/components/schemas/ManagedObjectReference'
        siteInfoManager:
          description: |2
            A singleton managed object used to manage site related capabilities.
            
            Refers instance of *SiteInfoManager*.
          $ref: '#/components/schemas/ManagedObjectReference'
        storageQueryManager:
          description: |2
            A singleton managed object used to query storage related entities.
            
            Refers instance of *StorageQueryManager*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - rootFolder
        - propertyCollector
        - about
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfServiceContent:
      type: object
      description: |2
        A boxed array of *ServiceContent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ServiceContent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ServiceLocator:
      type: object
      description: |2
        This data object type specifies the information of a service endpoint as
        well as the parameters needed to locate and login to to the service
        endpoint.
      properties:
        instanceUuid:
          description: |2
            Unique ID of the instance to which the service belongs.
            
            For
            instances that support the vSphere API, this is the same as the
            value found in *AboutInfo.instanceUuid*.
          type: string
        url:
          description: |2
            URL used to access the service endpoint
          type: string
        credential:
          description: |2
            Credential to establish the connection and login to the service.
          $ref: '#/components/schemas/ServiceLocatorCredential'
        sslThumbprint:
          description: |2
            The SSL thumbprint of the certificate of the service endpoint.
            
            Superceded by *#sslCertificate*.
            Note: If both <code>sslThumbprint</code> and <code>sslCertificate</code> are set,
            <code>sslThumbprint</code> must correspond to the <code>sslCertificate</code>.
          type: string
      required:
        - instanceUuid
        - url
        - credential
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfServiceLocator:
      type: object
      description: |2
        A boxed array of *ServiceLocator*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ServiceLocator'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ServiceLocatorCredential:
      type: object
      description: |2
        The data object type is a base type of credential for authentication such
        as username/password or SAML token.
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfServiceLocatorCredential:
      type: object
      description: |2
        A boxed array of *ServiceLocatorCredential*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ServiceLocatorCredential'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ServiceLocatorNamePassword:
      type: object
      description: |2
        The data object type specifies the username and password credential for
        authenticating to a service endpoint.
      properties:
        username:
          description: |2
            The username for Username-Password authentication
          type: string
        password:
          description: |2
            The password for Username-Password authentication
          type: string
          format: password
      required:
        - username
        - password
      allOf:
        - $ref: '#/components/schemas/ServiceLocatorCredential'

    ArrayOfServiceLocatorNamePassword:
      type: object
      description: |2
        A boxed array of *ServiceLocatorNamePassword*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ServiceLocatorNamePassword'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ServiceLocatorSAMLCredential:
      type: object
      description: |2
        The data object type specifies the SAML token (SSO) based credential for
        authenticating to a service endpoint.
      properties:
        token:
          description: |2
            The SAML token for authentication
          type: string
          format: password
      allOf:
        - $ref: '#/components/schemas/ServiceLocatorCredential'

    ArrayOfServiceLocatorSAMLCredential:
      type: object
      description: |2
        A boxed array of *ServiceLocatorSAMLCredential*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ServiceLocatorSAMLCredential'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ServiceManagerServiceInfo:
      type: object
      description: |2
        This data object represents essential information about a particular service.
        
        The information is sufficient to be able to identify the service and retrieve
        the object implementing it.
      properties:
        serviceName:
          description: |2
            A service name.
            
            Each service is expected to create a unique name
            for itself that can be used to locate the service. This name
            does not need to be unique across hosts or other such locations though.
          type: string
        location:
          description: |2
            A list of data that can be used to uniquely identify a particular instance of a service.
            
            Multiple instances of a service can exist across different domains (for instance, a service
            that is associated with a particular virtual machine or a particular host). In such cases,
            the service name is insufficient to identify the service and location data can be used
            to identify the instance of interest. A service may publish as much location data
            as is needed to identify it (e.g, vmware.host.&lt;hostname&gt; or vmware.vm.&lt;uuid&gt; or both).
            The particular choice of locations have to be agreed upon by
            the client and the service.
          type: array
          items:
            type: string
        service:
          description: |2
            The managed object that presents this service.
          $ref: '#/components/schemas/ManagedObjectReference'
        description:
          description: |2
            A description of the service.
            
            Provides help text on how
            to use the service.
          type: string
      required:
        - serviceName
        - service
        - description
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfServiceManagerServiceInfo:
      type: object
      description: |2
        A boxed array of *ServiceManagerServiceInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ServiceManagerServiceInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    SessionManagerGenericServiceTicket:
      type: object
      description: |2
        This data object represents a ticket which grants access to some service.
        
        The ticket may be used only once and is valid only for the
        *SessionManagerServiceRequestSpec* with which it was acquired.
        For HTTP service requests (when spec is of type HttpServiceRequestSpec)
        the returned ticket must be used by setting
        *SessionManagerGenericServiceTicket.id*
        as the value of a special cookie in the HTTP request.
        For CGI requests the name of this cookie is 'vmware\_cgi\_ticket'.
        The use of the returned ticket for other services is to be defined.
      properties:
        id:
          description: |2
            A unique string identifying the ticket.
          type: string
          format: password
        hostName:
          description: |2
            The name of the host that the service is running on
          type: string
        sslThumbprint:
          description: |2
            The expected thumbprint of the SSL certificate of the host.
            
            If it is empty, the host must be authenticated by name.
          type: string
        certThumbprintList:
          description: |2
            List of expected thumbprints of the certificate of the host to
            which we are connecting.
            
            The list can be configured on the host
            to include only certain hash types. The default configuration
            includes all hash types that are considered secure. See vmware.com
            for the current security standards.
            
            ***Since:*** vSphere API Release 7.0.3.1
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineCertThumbprint'
        ticketType:
          description: |2
            Type of the ticket
            See { @Vim::SessionManager::GenericServiceTicket::TicketType }
            
            ***Since:*** vSphere API Release 7.0.2.0
          type: string
      required:
        - id
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfSessionManagerGenericServiceTicket:
      type: object
      description: |2
        A boxed array of *SessionManagerGenericServiceTicket*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/SessionManagerGenericServiceTicket'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    SessionManagerHttpServiceRequestSpec:
      type: object
      description: |2
        This data object type describes a request to an HTTP or HTTPS service.
      properties:
        method:
          description: |2
            The HTTP method used for the request.
            
            If null, then any method is assumed.
            
            See also *SessionManagerHttpServiceRequestSpecMethod_enum*.
          type: string
        url:
          description: |2
            URL of the HTTP request.
            
            E.g. 'https://127.0.0.1:8080/cgi-bin/vm-support.cgi?n=val'.
            
            For ESXi CGI service requests:
            - only the path and query parts of the URL are used
              (e.g. "/cgi-bin/vm-support.cgi?n=val"). 
              
            This is so because the scheme is not known to the CGI service,
            and the port may not be the same if using a proxy.
          type: string
      required:
        - url
      allOf:
        - $ref: '#/components/schemas/SessionManagerServiceRequestSpec'

    ArrayOfSessionManagerHttpServiceRequestSpec:
      type: object
      description: |2
        A boxed array of *SessionManagerHttpServiceRequestSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/SessionManagerHttpServiceRequestSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    SessionManagerLocalTicket:
      type: object
      description: |2
        This data object type contains the user name
        and location of the file containing the password that
        clients can use for one-time logon to a server.
      properties:
        userName:
          description: |2
            User name to be used for logon.
          type: string
        passwordFilePath:
          description: |2
            Absolute local path to the file containing a one-time password.
          type: string
      required:
        - userName
        - passwordFilePath
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfSessionManagerLocalTicket:
      type: object
      description: |2
        A boxed array of *SessionManagerLocalTicket*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/SessionManagerLocalTicket'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    SessionManagerServiceRequestSpec:
      type: object
      description: |2
        This data object type describes a request to a service.
        
        It is used as argument to
        *SessionManager.AcquireGenericServiceTicket*.
        This is the base class for more specific service request specifications.
        E.g. for HTTP services the derived class will provide a URL property.
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfSessionManagerServiceRequestSpec:
      type: object
      description: |2
        A boxed array of *SessionManagerServiceRequestSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/SessionManagerServiceRequestSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    SessionManagerVmomiServiceRequestSpec:
      type: object
      description: |2
        This data object type describes a request to invoke a specific method
        in a VMOMI service.
        
        It currently only supports {link vim.SessionManager#cloneSession} method.
        The GenericServiceTicket.id returned from
        *SessionManager.AcquireGenericServiceTicket* for this request
        can be use for *SessionManager.CloneSession* to clone a session
      properties:
        method:
          description: |2
            Name of the method identified by this request spec
          type: string
      required:
        - method
      allOf:
        - $ref: '#/components/schemas/SessionManagerServiceRequestSpec'

    ArrayOfSessionManagerVmomiServiceRequestSpec:
      type: object
      description: |2
        A boxed array of *SessionManagerVmomiServiceRequestSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/SessionManagerVmomiServiceRequestSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    SharesInfo:
      type: object
      description: |2
        Specification of shares.
        
        Shares are used to determine relative allocation between resource consumers.
        In general, a consumer with more shares gets proportionally more of
        the resource, subject to certain other constraints.
      properties:
        shares:
          description: |2
            The number of shares allocated.
            
            Used to determine resource allocation in case of
            resource contention. This value is only set if level is set to custom. If level is
            not set to custom, this value is ignored. Therefore, only shares with custom
            values can be compared.
            
            There is no unit for this value. It is a relative measure based on the settings
            for other resource pools.
          type: integer
          format: int32
        level:
          description: |2
            The allocation level.
            
            The level is a simplified view of shares.
            Levels map to a pre-determined set of numeric values for shares.
            If the shares value does not map to a predefined size, then
            the level is set as custom.
          $ref: '#/components/schemas/SharesLevel_enum'
      required:
        - shares
        - level
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfSharesInfo:
      type: object
      description: |2
        A boxed array of *SharesInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/SharesInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    SharesOption:
      type: object
      description: |2
        Specification of shares.
        
        Object of this class specifies value ranges for object of
        instance *SharesInfo*
      properties:
        sharesOption:
          description: |2
            Value range which can be used for share definition
            in *SharesInfo.shares*
          $ref: '#/components/schemas/IntOption'
        defaultLevel:
          description: |2
            Default value for *SharesInfo.level*
          $ref: '#/components/schemas/SharesLevel_enum'
      required:
        - sharesOption
        - defaultLevel
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfSharesOption:
      type: object
      description: |2
        A boxed array of *SharesOption*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/SharesOption'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    SingleIp:
      type: object
      description: |2
        This class specifies a single IP address.
      properties:
        address:
          description: |2
            The IP address.
            
            The value of this property should either be an
            IPv4 address such as "192.168.0.1" or an IPv6 address such as
            "fc00:192:168:0:6cd9:a132:e889:b612"
          type: string
      required:
        - address
      allOf:
        - $ref: '#/components/schemas/IpAddress'

    ArrayOfSingleIp:
      type: object
      description: |2
        A boxed array of *SingleIp*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/SingleIp'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    SingleMac:
      type: object
      description: |2
        This class defines a Single MAC address.
      properties:
        address:
          description: |2
            The MAC address.
            
            The value for this property should be in the form
            like "00:50:56:bc:ef:ab".
          type: string
      required:
        - address
      allOf:
        - $ref: '#/components/schemas/MacAddress'

    ArrayOfSingleMac:
      type: object
      description: |2
        A boxed array of *SingleMac*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/SingleMac'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    SiteInfo:
      type: object
      description: |2
        This data object type represents the external site-related capabilities
        available in the environment managed by this vCenter.
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfSiteInfo:
      type: object
      description: |2
        A boxed array of *SiteInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/SiteInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    StoragePodSummary:
      type: object
      description: |2
        The *StoragePodSummary* data object
        encapsulates runtime properties of a *StoragePod*.
      properties:
        name:
          description: |2
            The name of the storage pod.
          type: string
        capacity:
          description: |2
            Total capacity of this storage pod, in bytes.
            
            This value is the sum of the
            capacity of all datastores that are part of this storage pod, and is updated
            periodically by the server.
          type: integer
          format: int64
        freeSpace:
          description: |2
            Total free space on this storage pod, in bytes.
            
            This value is the sum of the
            free space on all datastores that are part of this storage pod, and is updated
            periodically by the server.
          type: integer
          format: int64
      required:
        - name
        - capacity
        - freeSpace
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfStoragePodSummary:
      type: object
      description: |2
        A boxed array of *StoragePodSummary*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/StoragePodSummary'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    StorageIOAllocationInfo:
      type: object
      deprecated: true
      description: |2
        Deprecated as of vSphere8.0 U3, and there is no replacement for it.
        
        The IOAllocationInfo specifies the shares, limit and reservation
        for storage I/O resource.
        
        The storage I/O resource is allocated to virtual machines based on their
        shares, limit and reservation. The reservation is currently exposed only
        at the host level for local and shared datastores.
        We do not support storage I/O resource management on resource pools.
        
        Each virtual machine has one IOAllocationInfo object per virtual
        disk. For example, we can specify that a virtual machine has 500 shares
        on the first virtual disk, 1000 shares on the second virtual disk, etc.
      properties:
        limit:
          description: |2
            The utilization of a virtual machine will not exceed this limit, even
            if there are available resources.
            
            This is typically used to ensure a consistent
            performance of virtual machines independent of available resources.
            If set to -1, then there is no fixed limit on resource usage (only
            bounded by available resources and shares). The unit is number of
            I/O per second.
            While setting the limit for storage I/O resource, if the property is unset,
            it is treated as no change and the property is not updated. While reading
            back the limit information of storage I/O resource, if the property is unset,
            a default value of -1 will be returned, which indicates that there is no
            limit on resource usage.
          type: integer
          format: int64
        shares:
          deprecated: true
          description: |2
            Deprecated as of vSphere8.0 U3, and there is no replacement for it.
            
            Shares are used in case of resource contention.
            
            The value should be within a range of 200 to 4000.
            While setting shares for storage I/O resource, if the property is unset,
            it is treated as no change and the property is not updated. While reading
            back the shares information of storage I/O resource, if the property is unset,
            a default value of *SharesInfo.level* = normal,
            *SharesInfo.shares* = 1000 will be returned.
          $ref: '#/components/schemas/SharesInfo'
        reservation:
          deprecated: true
          description: |2
            Deprecated as of vSphere8.0 U3, and there is no replacement for it.
            
            Reservation control is used to provide guaranteed allocation in terms
            of IOPS.
            
            Large IO sizes are considered as multiple IOs using a chunk
            size of 32 KB as default. This control is initially supported only
            at host level for local datastores. It future, it may get supported
            on shared storage based on integration with Storage IO Control.
            Also right now we don't do any admission control based on IO
            reservation values.
          type: integer
          format: int32
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfStorageIOAllocationInfo:
      type: object
      description: |2
        A boxed array of *StorageIOAllocationInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/StorageIOAllocationInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    StorageIOAllocationOption:
      type: object
      deprecated: true
      description: |2
        Deprecated as of vSphere8.0 U3, and there is no replacement for it.
        
        The IOAllocationOption specifies value ranges that can be used
        to initialize *StorageIOAllocationInfo* object.
      properties:
        limitOption:
          description: |2
            limitOptions defines a range of values allowed to be used for
            storage IO limit *StorageIOAllocationInfo.limit*.
          $ref: '#/components/schemas/LongOption'
        sharesOption:
          description: |2
            sharesOption defines a range of values allowed to be used to
            specify allocated io shares *StorageIOAllocationInfo.shares*.
          $ref: '#/components/schemas/SharesOption'
      required:
        - limitOption
        - sharesOption
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfStorageIOAllocationOption:
      type: object
      description: |2
        A boxed array of *StorageIOAllocationOption*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/StorageIOAllocationOption'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    StorageIORMInfo:
      type: object
      deprecated: true
      description: |2
        Deprecated as of vSphere8.0 U3, and there is no replacement for it.
        
        Configuration of storage I/O resource management.
      properties:
        enabled:
          description: |2
            Flag indicating whether or not the service is enabled.
          type: boolean
        congestionThresholdMode:
          description: |2
            Mode of congestion threshold specification
            For more information, see
            *StorageIORMThresholdMode_enum*
          type: string
        congestionThreshold:
          description: |2
            The latency beyond which the storage array is considered congested.
            
            If storage I/O resource management is enabled on a datastore,
            the algorithm tries to maintain the latency to be below or
            close to this value. The unit is millisecond. The range of
            this value is between 5 to 100 milliseconds.
          type: integer
          format: int32
        percentOfPeakThroughput:
          description: |2
            The percentage of peak throughput to be used for setting congestion threshold
            of a datastore.
            
            Valid values are between 50 to 100. Default value is 90%
            
            For more information, see
            *StorageIORMInfo.congestionThreshold*
          type: integer
          format: int32
        statsCollectionEnabled:
          deprecated: true
          description: |2
            Deprecated as of vSphere API 6.5, use *StorageIORMInfo.enabled* instead.
            
            Flag indicating whether service is running in stats collection mode.
          type: boolean
        reservationEnabled:
          deprecated: true
          description: |2
            Deprecated as of vSphere8.0 U3, and there is no replacement for it.
            
            Flag indicating whether IO reservations support is enabled.
          type: boolean
        statsAggregationDisabled:
          description: |2
            Flag indicating whether stats aggregation is disabled.
          type: boolean
        reservableIopsThreshold:
          deprecated: true
          description: |2
            Deprecated as of vSphere8.0 U3, and there is no replacement for it.
            
            Storage DRS makes storage migration recommendations
            if total IOPs reservation for all VMs running on the
            datastore is higher than specified threshold value.
            
            This value (if present) overrides
            *vim.StorageResourceManager.PodConfigInfo.reservableIopsThreshold*
          type: integer
          format: int32
      required:
        - enabled
        - congestionThresholdMode
        - congestionThreshold
        - statsCollectionEnabled
        - reservationEnabled
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfStorageIORMInfo:
      type: object
      description: |2
        A boxed array of *StorageIORMInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/StorageIORMInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    StorageIORMConfigOption:
      type: object
      deprecated: true
      description: |2
        Deprecated as of vSphere8.0 U3, and there is no replacement for it.
        
        Configuration setting ranges for *StorageIORMConfigSpec* object.
      properties:
        enabledOption:
          description: |2
            enabledOption provides default state value for
            *StorageIORMConfigSpec.enabled*
          $ref: '#/components/schemas/BoolOption'
        congestionThresholdOption:
          description: |2
            congestionThresholdOption defines value range which can be used for
            *StorageIORMConfigSpec.congestionThreshold*
          $ref: '#/components/schemas/IntOption'
        statsCollectionEnabledOption:
          description: |2
            statsCollectionEnabledOption provides default value for
            *StorageIORMConfigSpec.statsCollectionEnabled*
          $ref: '#/components/schemas/BoolOption'
        reservationEnabledOption:
          deprecated: true
          description: |2
            Deprecated as of vSphere8.0 U3, and there is no replacement for it.
            
            reservationEnabledOption provides default value for
            *StorageIORMConfigSpec.reservationEnabled*
          $ref: '#/components/schemas/BoolOption'
      required:
        - enabledOption
        - congestionThresholdOption
        - statsCollectionEnabledOption
        - reservationEnabledOption
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfStorageIORMConfigOption:
      type: object
      description: |2
        A boxed array of *StorageIORMConfigOption*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/StorageIORMConfigOption'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    StorageIORMConfigSpec:
      type: object
      deprecated: true
      description: |2
        Deprecated as of vSphere8.0 U3, and there is no replacement for it.
        
        Configuration settings used for creating or reconfiguring
        storage I/O resource management.
        
        All fields are defined as optional. If a field is unset,
        the property is not changed.
      properties:
        enabled:
          description: |2
            Flag indicating whether or not the service is enabled.
          type: boolean
        congestionThresholdMode:
          description: |2
            Mode of congestion threshold specification
            For more information, see
            *StorageIORMThresholdMode_enum*
          type: string
        congestionThreshold:
          description: |2
            The latency beyond which the storage array is considered congested.
            
            For more information, see
            *StorageIORMInfo.congestionThreshold*
          type: integer
          format: int32
        percentOfPeakThroughput:
          description: |2
            The percentage of peak throughput to be used for setting threshold latency
            of a datastore.
            
            Valid values are between 50 to 100.
            
            For more information, see
            *StorageIORMInfo.congestionThreshold*
          type: integer
          format: int32
        statsCollectionEnabled:
          description: |2
            Flag indicating whether the service is enabled in stats collection mode.
          type: boolean
        reservationEnabled:
          deprecated: true
          description: |2
            Deprecated as of vSphere8.0 U3, and there is no replacement for it.
            
            Flag indicating whether IO reservations support is enabled.
          type: boolean
        statsAggregationDisabled:
          description: |2
            Flag indicating whether stats aggregation is disabled.
          type: boolean
        reservableIopsThreshold:
          deprecated: true
          description: |2
            Deprecated as of vSphere8.0 U3, and there is no replacement for it.
            
            Storage DRS makes storage migration recommendations
            if total IOPs reservation for all VMs running on the
            datastore is higher than specified threshold value.
            
            This value (if present) overrides
            *vim.StorageResourceManager.PodConfigInfo.reservableIopsThreshold*
          type: integer
          format: int32
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfStorageIORMConfigSpec:
      type: object
      description: |2
        A boxed array of *StorageIORMConfigSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/StorageIORMConfigSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PodStorageDrsEntry:
      type: object
      description: |2
        An entry containing storage DRS configuration, runtime
        results, and history for a pod *StoragePod*.
      properties:
        storageDrsConfig:
          description: |2
            Storage DRS configuration.
          $ref: '#/components/schemas/StorageDrsConfigInfo'
        recommendation:
          description: |2
            List of recommended actions for the Storage Pod.
            
            It is
            possible that the current set of recommendations may be empty,
            either due to not having any running dynamic recommendation
            generation module, or since there may be no recommended actions
            at this time.
          type: array
          items:
            $ref: '#/components/schemas/ClusterRecommendation'
        drsFault:
          description: |2
            A collection of the DRS faults generated in the last Storage DRS invocation.
            
            Each element of the collection is the set of faults generated in one
            recommendation.
          type: array
          items:
            $ref: '#/components/schemas/ClusterDrsFaults'
        actionHistory:
          description: |2
            The set of actions that have been performed recently.
          type: array
          items:
            $ref: '#/components/schemas/ClusterActionHistory'
      required:
        - storageDrsConfig
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfPodStorageDrsEntry:
      type: object
      description: |2
        A boxed array of *PodStorageDrsEntry*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PodStorageDrsEntry'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    StoragePerformanceSummary:
      type: object
      deprecated: true
      description: |2
        Deprecated as of vSphere8.0 U3, and there is no replacement for it.
        
        Summary statistics for datastore performance
        The statistics are reported in aggregated quantiles over a time period
      properties:
        interval:
          description: |2
            Time period over which statistics are aggregated
            The reported time unit is in seconds
          type: integer
          format: int32
        percentile:
          description: |2
            Metric percentile specification.
            
            A percentile is a value
            between 1 and 100. The metric value reported in the
            aggregated statistics corresponds with the percentile values
            in this field. For example, if the value of percentile\[0\] is
            P, and the value of the datastoreReadLatency\[0\] is L, then
            P% of all the read IOs performed during observation interval
            is less than L milliseconds.
          type: array
          items:
            type: integer
            format: int32
        datastoreReadLatency:
          description: |2
            Aggregated datastore latency in milliseconds for read operations
          type: array
          items:
            type: number
            format: double
        datastoreWriteLatency:
          description: |2
            Aggregated datastore latency in milliseconds for write operations
          type: array
          items:
            type: number
            format: double
        datastoreVmLatency:
          description: |2
            Aggregated datastore latency as observed by Vms using the datastore
            The reported latency is in milliseconds.
          type: array
          items:
            type: number
            format: double
        datastoreReadIops:
          description: |2
            Aggregated datastore Read IO rate (Reads/second)
          type: array
          items:
            type: number
            format: double
        datastoreWriteIops:
          description: |2
            Aggregated datastore Write IO rate (Writes/second)
          type: array
          items:
            type: number
            format: double
        siocActivityDuration:
          deprecated: true
          description: |2
            Deprecated as of vSphere8.0 U3, and there is no replacement for it.
            
            Cumulative SIOC activity to satisfy SIOC latency threshold
            setting.
            
            This metric indicates the total time that SIOC is
            actively throttling IO requests. The SIOC throttling
            activity occurs whenever the datastore latency exceeds the
            SIOC latency threshold. If SIOC is not enabled on the
            datastore, the metric indicates the total time that SIOC
            would have been active. The unit of reporting is in
            milliseconds.
          type: integer
          format: int32
      required:
        - interval
        - percentile
        - datastoreReadLatency
        - datastoreWriteLatency
        - datastoreVmLatency
        - datastoreReadIops
        - datastoreWriteIops
        - siocActivityDuration
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfStoragePerformanceSummary:
      type: object
      description: |2
        A boxed array of *StoragePerformanceSummary*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/StoragePerformanceSummary'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    StorageResourceManagerStorageProfileStatistics:
      type: object
      description: |2
        A data object to report aggregate storage statistics by storage
        profile
      properties:
        profileId:
          description: |2
            Profile identifier for the reported statistics
          type: string
        totalSpaceMB:
          description: |2
            The aggregate storage capacity available for a given storage
            capability profile.
            
            The capacity is reported in Megabytes.
          type: integer
          format: int64
        usedSpaceMB:
          description: |2
            The aggregate used storage capacity by a given storage capability
            profile
            The used space is reported in Megabytes
          type: integer
          format: int64
      required:
        - profileId
        - totalSpaceMB
        - usedSpaceMB
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfStorageResourceManagerStorageProfileStatistics:
      type: object
      description: |2
        A boxed array of *StorageResourceManagerStorageProfileStatistics*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/StorageResourceManagerStorageProfileStatistics'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    StringExpression:
      type: object
      description: |2
        The string type of setting or configuration that may get a
        negated value.
      properties:
        value:
          description: |2
            The String value that is either used as it is or negated.
          type: string
      allOf:
        - $ref: '#/components/schemas/NegatableExpression'

    ArrayOfStringExpression:
      type: object
      description: |2
        A boxed array of *StringExpression*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/StringExpression'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    StringPolicy:
      type: object
      description: |2
        The string type of setting or configuration that may get an
        inherited value.
      properties:
        value:
          description: |2
            The String value that is either set or inherited.
          type: string
      allOf:
        - $ref: '#/components/schemas/InheritablePolicy'

    ArrayOfStringPolicy:
      type: object
      description: |2
        A boxed array of *StringPolicy*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/StringPolicy'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    Tag:
      type: object
      description: |2
        Defines a tag that can be associated with a managed entity.
      properties:
        key:
          description: |2
            The tag key in human readable form.
          type: string
      required:
        - key
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfTag:
      type: object
      description: |2
        A boxed array of *Tag*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/Tag'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    TaskDescription:
      type: object
      description: |2
        Static strings for task objects.
        
        These strings are locale-specific.
      properties:
        methodInfo:
          description: |2
            Display label and summary for all tasks
          type: array
          items:
            $ref: '#/components/schemas/ElementDescription'
        state:
          description: |2
            *TaskInfo State enum*
          type: array
          items:
            $ref: '#/components/schemas/ElementDescription'
        reason:
          description: |2
            Kind of entity responsible for creating this task.
          type: array
          items:
            $ref: '#/components/schemas/TypeDescription'
      required:
        - methodInfo
        - state
        - reason
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfTaskDescription:
      type: object
      description: |2
        A boxed array of *TaskDescription*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/TaskDescription'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    TaskFilterSpec:
      type: object
      description: |2
        This data object type defines the specification for the task filter used
        to query tasks in the history collector database.
        
        The client creates a task
        history collector with a filter specification, then retrieves the tasks from
        the task history collector.
      properties:
        entity:
          description: |2
            The filter specification for retrieving tasks by managed entity.
            
            If not provided, then the tasks attached to all managed entities are
            collected.
          $ref: '#/components/schemas/TaskFilterSpecByEntity'
        time:
          description: |2
            The filter specification for retrieving tasks by time.
            
            If not provided, then the tasks with any time stamp are collected.
          $ref: '#/components/schemas/TaskFilterSpecByTime'
        userName:
          description: |2
            The filter specification for retrieving tasks by user name.
            
            If not provided, then the tasks belonging to any user are collected.
          $ref: '#/components/schemas/TaskFilterSpecByUsername'
        activationId:
          description: |2
            This property, if provided, limits the set of collected tasks to those
            associated with the specified activation Ids.
          type: array
          items:
            type: string
        state:
          description: |2
            This property, if provided, limits the set of collected tasks by their states.
            
            Task states are enumerated in *State*.
            If not provided, tasks are collected regardless of their state.
          type: array
          items:
            $ref: '#/components/schemas/TaskInfoState_enum'
        alarm:
          description: |2
            This property, if provided, limits the set of collected tasks to those
            associated with the specified alarm.
            
            If not provided, tasks are collected regardless of their association with alarms.
            
            Refers instance of *Alarm*.
          $ref: '#/components/schemas/ManagedObjectReference'
        scheduledTask:
          description: |2
            This property, if provided, limits the set of collected tasks to those
            associated with the specified scheduled task.
            
            If not provided, tasks are collected regardless of their association with any
            scheduled task.
            
            Refers instance of *ScheduledTask*.
          $ref: '#/components/schemas/ManagedObjectReference'
        eventChainId:
          description: |2
            The filter specification for retrieving tasks by chain ID.
            
            If it is set,
            tasks not with the given *TaskInfo.eventChainId* will be
            filtered out. If the property is not set, tasks' chain ID is disregarded
            for filtering purposes.
          type: array
          items:
            type: integer
            format: int32
        tag:
          description: |2
            The filter specification for retrieving tasks by
            *tag*.
            
            If it is set, tasks not with the given tag(s)
            will be filtered out. If the property is not set, tasks' tag is disregarded for
            filtering purposes. If it is set, and includes an empty string, tasks without a
            tag will be returned.
          type: array
          items:
            type: string
        parentTaskKey:
          description: |2
            The filter specification for retrieving tasks by
            *TaskInfo.parentTaskKey*.
            
            If it is set, tasks not with the
            given parentTaskKey(s) will be filtered out. If the property is not set,
            tasks' parentTaskKey is disregarded for filtering purposes.
          type: array
          items:
            type: string
        rootTaskKey:
          description: |2
            The filter specification for retrieving tasks by
            *TaskInfo.rootTaskKey*.
            
            If it is set, tasks not with the
            given rootTaskKey(s) will be filtered out. If the property is not set,
            tasks' rootTaskKey is disregarded for filtering purposes.
          type: array
          items:
            type: string
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfTaskFilterSpec:
      type: object
      description: |2
        A boxed array of *TaskFilterSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/TaskFilterSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    TaskFilterSpecByEntity:
      type: object
      description: |2
        This data object type specifies a managed entity used to
        filter task history.
      properties:
        entity:
          description: |2
            The managed entity to which the task pertains.
            
            Refers instance of *ManagedEntity*.
          $ref: '#/components/schemas/ManagedObjectReference'
        recursion:
          description: |2
            Specification of related managed entities in the inventory hierarchy.
          $ref: '#/components/schemas/TaskFilterSpecRecursionOption_enum'
      required:
        - entity
        - recursion
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfTaskFilterSpecByEntity:
      type: object
      description: |2
        A boxed array of *TaskFilterSpecByEntity*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/TaskFilterSpecByEntity'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    TaskFilterSpecByTime:
      type: object
      description: |2
        This data object type specifies a time range used to filter task history.
      properties:
        timeType:
          description: |2
            The time stamp to filter: queued, started, or completed time.
          $ref: '#/components/schemas/TaskFilterSpecTimeOption_enum'
        beginTime:
          description: |2
            The beginning of the time range.
            
            If this property is not specified, then tasks are collected from
            the earliest time in the database.
            
            When this property is specified, the time type field must also be specified.
          type: string
          format: date-time
        endTime:
          description: |2
            The end of the time range.
            
            If this property is not specified, then tasks are collected up to
            the latest time in the database.
            
            When this property is specified, the time type field must also be specified.
          type: string
          format: date-time
      required:
        - timeType
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfTaskFilterSpecByTime:
      type: object
      description: |2
        A boxed array of *TaskFilterSpecByTime*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/TaskFilterSpecByTime'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    TaskFilterSpecByUsername:
      type: object
      description: |2
        This data object type enables you to filter task history according to
        the users who performed the tasks.
      properties:
        systemUser:
          description: |2
            Whether or not to filter by system user.
            
            If set to true, filters for system user event.
          type: boolean
        userList:
          description: |2
            Specifies the username list to use in the filter.
            
            If not set, then all regular user tasks are collected.
          type: array
          items:
            type: string
      required:
        - systemUser
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfTaskFilterSpecByUsername:
      type: object
      description: |2
        A boxed array of *TaskFilterSpecByUsername*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/TaskFilterSpecByUsername'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    TaskInfo:
      type: object
      description: |2
        This data object type contains all information about a task.
        
        A task
        represents an operation performed by VirtualCenter or ESX.
      properties:
        key:
          description: |2
            The unique key for the task.
          type: string
        task:
          description: |2
            The managed object that represents this task.
            
            Refers instance of *Task*.
          $ref: '#/components/schemas/ManagedObjectReference'
        description:
          description: |2
            The description field of the task describes the current phase of
            operation of the task.
            
            For a task that does a single monolithic
            activity, this will be fixed and unchanging.
            For tasks that have various substeps, this field will change
            as the task progresses from one phase to another.
          $ref: '#/components/schemas/LocalizableMessage'
        name:
          description: |2
            The name of the operation that created the task.
            
            This is not set
            for internal tasks.
          type: string
        descriptionId:
          description: |2
            An identifier for this operation.
            
            This includes publicly visible
            internal tasks and is a lookup in the TaskDescription methodInfo
            data object.
          type: string
        entity:
          description: |2
            Managed entity to which the operation applies.
            
            Refers instance of *ManagedEntity*.
          $ref: '#/components/schemas/ManagedObjectReference'
        entityName:
          description: |2
            The name of the managed entity, locale-specific, retained for the
            history collector database.
          type: string
        locked:
          description: |2
            If the state of the task is "running", then this property is a list of
            managed entities that the operation has locked, with a shared lock.
            
            Refers instances of *ManagedEntity*.
          type: array
          items:
            $ref: '#/components/schemas/ManagedObjectReference'
        state:
          description: |2
            Runtime status of the task.
          $ref: '#/components/schemas/TaskInfoState_enum'
        cancelled:
          description: |2
            Flag to indicate whether or not the client requested
            cancellation of the task.
          type: boolean
        cancelable:
          description: |2
            Flag to indicate whether or not the cancel task operation is supported.
          type: boolean
        error:
          description: |2
            If the task state is "error", then this property contains the fault code.
          $ref: '#/components/schemas/MethodFault'
        result:
          description: |2
            If the task state is "success", then this property may be used
            to hold a return value.
          $ref: '#/components/schemas/Any'
        progress:
          description: |2
            If the task state is "running", then this property contains a
            progress measurement, expressed as percentage completed, from 0 to 100.
            
            If this property is not set, then the command does not report progress.
          type: integer
          format: int32
        progressDetails:
          description: |2
            ***Since:*** vSphere API Release 8.0.1.0
          type: array
          items:
            $ref: '#/components/schemas/KeyAnyValue'
        reason:
          description: |2
            Kind of entity responsible for creating this task.
          $ref: '#/components/schemas/TaskReason'
        queueTime:
          description: |2
            Time stamp when the task was created.
          type: string
          format: date-time
        startTime:
          description: |2
            Time stamp when the task started running.
          type: string
          format: date-time
        completeTime:
          description: |2
            Time stamp when the task was completed (whether success or failure).
          type: string
          format: date-time
        eventChainId:
          description: |2
            Event chain ID that leads to the corresponding events.
          type: integer
          format: int32
        changeTag:
          description: |2
            The user entered tag to identify the operations and their side effects
          type: string
        parentTaskKey:
          description: |2
            Tasks can be created by another task.
            
            This shows *TaskInfo.key* of the task spun off this task. This is to
            track causality between tasks.
          type: string
        rootTaskKey:
          description: |2
            Tasks can be created by another task and such creation can go on for
            multiple levels.
            
            This is the *TaskInfo.key* of the task
            that started the chain of tasks.
          type: string
        activationId:
          description: |2
            The activation Id is a client-provided token to link an API call with a task.
          type: string
      required:
        - key
        - task
        - descriptionId
        - state
        - cancelled
        - cancelable
        - reason
        - queueTime
        - eventChainId
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfTaskInfo:
      type: object
      description: |2
        A boxed array of *TaskInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/TaskInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    TaskInfoFilterSpec:
      type: object
      description: |2
        This data object type defines the specification for the filter used
        to include or exclude various information from the tasks while retrieving
        from the history collector database.
        
        The client creates a task history
        collector with *TaskFilterSpec* along with this optional
        spec, then retrieves the tasks from the task history collector.
        
        ***Since:*** vSphere API Release 8.0.3.0
      properties:
        filterTaskResults:
          description: |2
            The filter specification for filtering out tasks' results.
            
            If it is set, then the
            results information will be included or excluded based on the supplied parameters. If it is
            not set, then results information of all tasks will be included.
          $ref: '#/components/schemas/TaskInfoFilterSpecFilterTaskResults'
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfTaskInfoFilterSpec:
      type: object
      description: |2
        A boxed array of *TaskInfoFilterSpec*. To be used in *Any* placeholders.
        
        ***Since:*** vSphere API Release 8.0.3.0
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/TaskInfoFilterSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    TaskInfoFilterSpecFilterTaskResults:
      type: object
      description: |2
        This data object type enables to filter the results information for
        all or the specified tasks.
        
        1\. If removeAll=true, the results information of all tasks will be excluded.
        2\. If removeAll=false/unset:
        a. If descriptionIds is empty, the results information of all tasks will be included.
        b. If descriptionIds is non-empty:
        i. If filterIn=true, the results information of all tasks will be included.
        ii. If filterIn=false/unset, the results information of all tasks will be excluded.
        
        ***Since:*** vSphere API Release 8.0.3.0
      properties:
        removeAll:
          description: |2
            Excludes results information of all tasks.
            
            If set to true, the results information of all tasks will be excluded.
          type: boolean
        descriptionIds:
          description: |2
            The description IDs of tasks that have to be filtered out.
            
            The *TaskInfoFilterSpecFilterTaskResults.filterIn*
            option can switch the behavior to filter in.
          type: array
          items:
            type: string
        filterIn:
          description: |2
            Boolean Flag to invert the filter semantics to filter in the results instead of
            filtering out.
            
            If set to true, then the results of only the tasks specified by the
            *TaskInfoFilterSpecFilterTaskResults.descriptionIds* will be included.
            If unset or set to false, then the results of only the tasks specified by the
            *TaskInfoFilterSpecFilterTaskResults.descriptionIds* will be excluded.
            This boolean flag will only be considered if descriptionsIds is non-empty and if removeAll is false.
          type: boolean
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfTaskInfoFilterSpecFilterTaskResults:
      type: object
      description: |2
        A boxed array of *TaskInfoFilterSpecFilterTaskResults*. To be used in *Any* placeholders.
        
        ***Since:*** vSphere API Release 8.0.3.0
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/TaskInfoFilterSpecFilterTaskResults'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    TaskReason:
      type: object
      description: |2
        Base type for all task reasons.
        
        Task reasons represent the kind of entity responsible for a task's creation.
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfTaskReason:
      type: object
      description: |2
        A boxed array of *TaskReason*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/TaskReason'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    TaskReasonAlarm:
      type: object
      description: |2
        Indicates that the task was queued by an alarm.
      properties:
        alarmName:
          description: |2
            The name of the alarm that queued the task, retained in the history
            collector database.
          type: string
        alarm:
          description: |2
            The alarm object that queued the task.
            
            Refers instance of *Alarm*.
          $ref: '#/components/schemas/ManagedObjectReference'
        entityName:
          description: |2
            The name of the managed entity on which the alarm is triggered,
            retained in the history collector database.
          type: string
        entity:
          description: |2
            The managed entity object on which the alarm is triggered.
            
            Refers instance of *ManagedEntity*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - alarmName
        - alarm
        - entityName
        - entity
      allOf:
        - $ref: '#/components/schemas/TaskReason'

    ArrayOfTaskReasonAlarm:
      type: object
      description: |2
        A boxed array of *TaskReasonAlarm*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/TaskReasonAlarm'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    TaskReasonSchedule:
      type: object
      description: |2
        Indicates that the task was queued by a scheduled task.
      properties:
        name:
          description: |2
            The name of the scheduled task that queued this task.
          type: string
        scheduledTask:
          description: |2
            The scheduledTask object that queued this task.
            
            Refers instance of *ScheduledTask*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - name
        - scheduledTask
      allOf:
        - $ref: '#/components/schemas/TaskReason'

    ArrayOfTaskReasonSchedule:
      type: object
      description: |2
        A boxed array of *TaskReasonSchedule*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/TaskReasonSchedule'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    TaskReasonSystem:
      type: object
      description: |2
        Indicates that the task was started by the system (a default task).
      allOf:
        - $ref: '#/components/schemas/TaskReason'

    ArrayOfTaskReasonSystem:
      type: object
      description: |2
        A boxed array of *TaskReasonSystem*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/TaskReasonSystem'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    TaskReasonUser:
      type: object
      description: |2
        Indicates that the task was queued by a specific user.
      properties:
        userName:
          description: |2
            Name of the user that queued the task.
          type: string
      required:
        - userName
      allOf:
        - $ref: '#/components/schemas/TaskReason'

    ArrayOfTaskReasonUser:
      type: object
      description: |2
        A boxed array of *TaskReasonUser*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/TaskReasonUser'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    TypeDescription:
      type: object
      description: |2
        Static strings used for describing an object type.
      properties:
        key:
          description: |2
            Type being described
          type: string
      required:
        - key
      allOf:
        - $ref: '#/components/schemas/Description'

    ArrayOfTypeDescription:
      type: object
      description: |2
        A boxed array of *TypeDescription*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/TypeDescription'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    UpdateVirtualMachineFilesResult:
      type: object
      description: |2
        UpdateVirtualMachineFilesResult is the result returned
        to the *Datastore.UpdateVirtualMachineFiles_Task* method.
      properties:
        failedVmFile:
          description: |2
            The list of virtual machines files the server has attempted
            to update but failed to update.
          type: array
          items:
            $ref: '#/components/schemas/UpdateVirtualMachineFilesResultFailedVmFileInfo'
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfUpdateVirtualMachineFilesResult:
      type: object
      description: |2
        A boxed array of *UpdateVirtualMachineFilesResult*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/UpdateVirtualMachineFilesResult'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    UpdateVirtualMachineFilesResultFailedVmFileInfo:
      type: object
      properties:
        vmFile:
          description: |2
            The file path
          type: string
        fault:
          description: |2
            The reason why the update failed.
          $ref: '#/components/schemas/MethodFault'
      required:
        - vmFile
        - fault
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfUpdateVirtualMachineFilesResultFailedVmFileInfo:
      type: object
      description: |2
        A boxed array of *UpdateVirtualMachineFilesResultFailedVmFileInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/UpdateVirtualMachineFilesResultFailedVmFileInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    UserSearchResult:
      type: object
      description: |2
        When searching for users, the search results in
        some additional information.
        
        This object describes
        the additional information.
      properties:
        principal:
          description: |2
            Login name of a user or the name of a group.
            
            This key is
            the user within the searched domain.
          type: string
        fullName:
          description: |2
            Full name of the user found by the search, or the description
            of a group, if available.
          type: string
        group:
          description: |2
            If this is true, then the result is a group.
            
            If this is false, then the
            result is a user.
          type: boolean
      required:
        - principal
        - group
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfUserSearchResult:
      type: object
      description: |2
        A boxed array of *UserSearchResult*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/UserSearchResult'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    UserSession:
      type: object
      description: |2
        Information about a current user session.
      properties:
        key:
          description: |2
            A unique identifier for this session,
            also known as the session ID.
          type: string
        userName:
          description: |2
            The user name represented by this session.
          type: string
        fullName:
          description: |2
            The full name of the user, if available.
          type: string
        loginTime:
          description: |2
            Timestamp when the user last logged on to the server.
          type: string
          format: date-time
        lastActiveTime:
          description: |2
            Timestamp when the user last executed a command.
          type: string
          format: date-time
        locale:
          description: |2
            The locale for the session used for data formatting and preferred for messages.
          type: string
        messageLocale:
          description: |2
            The locale used for messages for the session.
            
            If there are no localized messages for the user-specified locale, then
            the server determines this locale.
          type: string
        extensionSession:
          description: |2
            Whether or not this session belongs to a VC Extension.
          type: boolean
        ipAddress:
          description: |2
            The client identity.
            
            It could be IP address, or pipe name depended
            on client binding
          type: string
        userAgent:
          description: |2
            The name of user agent or application
          type: string
        callCount:
          description: |2
            Number of API invocations since the session started
          type: integer
          format: int64
      required:
        - key
        - userName
        - fullName
        - loginTime
        - lastActiveTime
        - locale
        - messageLocale
        - extensionSession
        - ipAddress
        - userAgent
        - callCount
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfUserSession:
      type: object
      description: |2
        A boxed array of *UserSession*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/UserSession'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VVolVmConfigFileUpdateResult:
      type: object
      description: |2
        VVolVmConfigFileUpdateResult is the result returned
        by the *Datastore.UpdateVVolVirtualMachineFiles_Task* method.
      properties:
        succeededVmConfigFile:
          description: |2
            Mapping of target config VVol IDs to the target virtual machine
            config file paths which are successfully updated.
          type: array
          items:
            $ref: '#/components/schemas/KeyValue'
        failedVmConfigFile:
          description: |2
            The list of virtual machines config files the server has attempted,
            but failed to update.
          type: array
          items:
            $ref: '#/components/schemas/VVolVmConfigFileUpdateResultFailedVmConfigFileInfo'
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVVolVmConfigFileUpdateResult:
      type: object
      description: |2
        A boxed array of *VVolVmConfigFileUpdateResult*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VVolVmConfigFileUpdateResult'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VVolVmConfigFileUpdateResultFailedVmConfigFileInfo:
      type: object
      description: |2
        Information of the failed update on the virtual machine config
        file.
      properties:
        targetConfigVVolId:
          description: |2
            The target virtual machine config VVol ID
          type: string
        dsPath:
          description: |2
            Datastore path for the virtual machine that failed to recover
          type: string
        fault:
          description: |2
            The reason why the update failed.
          $ref: '#/components/schemas/MethodFault'
      required:
        - targetConfigVVolId
        - fault
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVVolVmConfigFileUpdateResultFailedVmConfigFileInfo:
      type: object
      description: |2
        A boxed array of *VVolVmConfigFileUpdateResultFailedVmConfigFileInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VVolVmConfigFileUpdateResultFailedVmConfigFileInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VASAStorageArray:
      type: object
      description: |2
        Represent Storage Array
      properties:
        name:
          description: |2
            Name
          type: string
        uuid:
          description: |2
            Unique identifier
          type: string
        vendorId:
          description: |2
            Vendor Id
          type: string
        modelId:
          description: |2
            Model Id
          type: string
        discoverySvcInfo:
          description: |2
            Transport information to address the array's discovery
            service.
            
            ***Since:*** vSphere API Release 8.0.0.0
          type: array
          items:
            $ref: '#/components/schemas/VASAStorageArrayDiscoverySvcInfo'
      required:
        - name
        - uuid
        - vendorId
        - modelId
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVASAStorageArray:
      type: object
      description: |2
        A boxed array of *VASAStorageArray*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VASAStorageArray'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VASAStorageArrayDiscoveryFcTransport:
      type: object
      description: |2
        Discovery service information of the array with FC
        transport.
        
        ***Since:*** vSphere API Release 8.0.0.0
      properties:
        nodeWwn:
          description: |2
            Node-WWN (World Wide Name) represented in hexadecimal format.
          type: string
        portWwn:
          description: |2
            Port-WWN (World Wide Name) represented in hexadecimal format.
          type: string
      required:
        - nodeWwn
        - portWwn
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVASAStorageArrayDiscoveryFcTransport:
      type: object
      description: |2
        A boxed array of *VASAStorageArrayDiscoveryFcTransport*. To be used in *Any* placeholders.
        
        ***Since:*** vSphere API Release 8.0.0.0
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VASAStorageArrayDiscoveryFcTransport'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VASAStorageArrayDiscoveryIpTransport:
      type: object
      description: |2
        Discovery service information of the array with IP
        transport.
        
        ***Since:*** vSphere API Release 8.0.0.0
      properties:
        ipAddress:
          description: |2
            IP address (IPv4/v6) of the RDMA/TCP target port.
          type: string
        portNumber:
          description: |2
            Port number.
            
            Defaults to port 8009 (TCP) and RoCEv2
            port 4420 (UDP).
          type: string
      required:
        - ipAddress
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVASAStorageArrayDiscoveryIpTransport:
      type: object
      description: |2
        A boxed array of *VASAStorageArrayDiscoveryIpTransport*. To be used in *Any* placeholders.
        
        ***Since:*** vSphere API Release 8.0.0.0
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VASAStorageArrayDiscoveryIpTransport'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VASAStorageArrayDiscoverySvcInfo:
      type: object
      description: |2
        Discovery service information of storage array.
        
        ***Since:*** vSphere API Release 8.0.0.0
      properties:
        portType:
          description: |2
            Port type, string as defined in *VASAStorageArrayBlockEnum_enum*.
          type: string
        svcNqn:
          description: |2
            Well-known NQN of discovery service.
          type: string
        ipInfo:
          description: |2
            IP transport discovery information.
            
            Must be specified if
            the discovery service is IP-based.
          $ref: '#/components/schemas/VASAStorageArrayDiscoveryIpTransport'
        fcInfo:
          description: |2
            FC transport discovery information.
            
            Must be specified if
            the discovery service is FC-based.
          $ref: '#/components/schemas/VASAStorageArrayDiscoveryFcTransport'
      required:
        - portType
        - svcNqn
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVASAStorageArrayDiscoverySvcInfo:
      type: object
      description: |2
        A boxed array of *VASAStorageArrayDiscoverySvcInfo*. To be used in *Any* placeholders.
        
        ***Since:*** vSphere API Release 8.0.0.0
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VASAStorageArrayDiscoverySvcInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VasaProviderContainerSpec:
      type: object
      description: |2
        Represents a VASA provider and its related datastores.
      properties:
        vasaProviderInfo:
          description: |2
            VASA Providers that manage this volume
          type: array
          items:
            $ref: '#/components/schemas/VimVasaProviderInfo'
        scId:
          description: |2
            Vendor specified Storage Container ID
          type: string
        deleted:
          description: |2
            Indicates whether the container got deleted
          type: boolean
        stretched:
          description: |2
            Indicates whether container is stretched
            
            ***Since:*** vSphere API Release 8.0.3.0
          type: boolean
      required:
        - scId
        - deleted
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVasaProviderContainerSpec:
      type: object
      description: |2
        A boxed array of *VasaProviderContainerSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VasaProviderContainerSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VimVasaProvider:
      type: object
      description: |2
        Data object representing VASA Provider.
      properties:
        uid:
          description: |2
            Provider UID.
            
            This is populated with namespace prefixed to providerId,
            which uniquely identifies a VASA Provider. Both namespace and providerId
            are sourced from Vasa Provider and available within SMS. This field
            helps in preventing a regeneration of duplicate VASA Provider within
            vvold when a user attempts to register the same VP using different names
            or alternative urls.
          type: string
        url:
          description: |2
            VASA Provider URL.
            
            In VirtualHost based MultiVC setup,
            this is set to default virtual host's URL.
          type: string
        name:
          description: |2
            Name
          type: string
        selfSignedCertificate:
          description: |2
            Self-signed certificate of VASA provider.
            
            In VirtualHost based MultiVC setup,
            this is set to default virtual host's self-signed certificate.
          type: string
        vhostConfig:
          description: |2
            Virtual host configuration for VASA Provider when it supports MultiVC
            through VirtualHosts.
            
            ***Since:*** vSphere API Release 8.0.1.0
          $ref: '#/components/schemas/VimVasaProviderVirtualHostConfig'
        versionId:
          description: |2
            SMS supported VASA provider versionId.
            
            i-e if versionX corresponds to VASA version supported
            by SMS, then X needs to be set here.
            versionX corresponds to SMS supported VASA versions are, 1.0-&gt;version1, 1.5-&gt;version2,
            2.0-&gt;version3, 3.0-&gt;version4, 3.5-&gt;version5, 4.0-&gt;version6, 5.0-&gt;version7, etc.
            For example: If SMS is connecting to VASA 5.0, the this field should be set to 7.
            
            ***Since:*** vSphere API Release 8.0.1.0
          type: integer
          format: int32
      required:
        - url
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVimVasaProvider:
      type: object
      description: |2
        A boxed array of *VimVasaProvider*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VimVasaProvider'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VimVasaProviderStatePerArray:
      type: object
      description: |2
        Per Storage Array VP status.
      properties:
        priority:
          description: |2
            Priority of the provider for the given array
          type: integer
          format: int32
        arrayId:
          description: |2
            Storage Array object Id
          type: string
        active:
          description: |2
            Indicates whether a VASA Provider (*VimVasaProvider.url*) is active
            for the specified storage array.
          type: boolean
      required:
        - priority
        - arrayId
        - active
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVimVasaProviderStatePerArray:
      type: object
      description: |2
        A boxed array of *VimVasaProviderStatePerArray*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VimVasaProviderStatePerArray'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VimVasaProviderVirtualHostConfig:
      type: object
      description: |2
        Holds VirtualHost configuration information when VASA 5.0 or greater VVOL VASA Provider
        supports MultiVC through VirtualHosts.
        
        ***Since:*** vSphere API Release 8.0.1.0
      properties:
        vhostName:
          description: |2
            Virtual Host FQDN on VASA Provider.
            
            If set, it's
            used as SNI hostname in outgoing VASA Provider connection.
          type: string
        serviceHost:
          description: |2
            IP address where Virtual Host is running
          type: string
        servicePort:
          description: |2
            Dedicated port for the virtual host.
            
            If not specified, default VirtualHost port is used to
            communicate with VASA Provider.
          type: integer
          format: int32
      required:
        - serviceHost
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVimVasaProviderVirtualHostConfig:
      type: object
      description: |2
        A boxed array of *VimVasaProviderVirtualHostConfig*. To be used in *Any* placeholders.
        
        ***Since:*** vSphere API Release 8.0.1.0
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VimVasaProviderVirtualHostConfig'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VimVasaProviderInfo:
      type: object
      description: |2
        Data object representing VASA Provider information.
      properties:
        provider:
          description: |2
            Vasa provider
          $ref: '#/components/schemas/VimVasaProvider'
        arrayState:
          description: |2
            Per-array State
          type: array
          items:
            $ref: '#/components/schemas/VimVasaProviderStatePerArray'
      required:
        - provider
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVimVasaProviderInfo:
      type: object
      description: |2
        A boxed array of *VimVasaProviderInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VimVasaProviderInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualAppLinkInfo:
      type: object
      deprecated: true
      description: |2
        Deprecated as of vSphere API 5.1.
        
        Linked child information.
      properties:
        key:
          description: |2
            The key contains a reference to the entity that is linked to this vApp
            
            Refers instance of *ManagedEntity*.
          $ref: '#/components/schemas/ManagedObjectReference'
        destroyWithParent:
          description: |2
            Whether the entity should be removed, when this vApp is removed
          type: boolean
      required:
        - key
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVirtualAppLinkInfo:
      type: object
      description: |2
        A boxed array of *VirtualAppLinkInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualAppLinkInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualAppSummary:
      type: object
      description: |2
        This data object type encapsulates a typical set of resource
        pool information that is useful for list views and summary pages.
      properties:
        product:
          description: |2
            Product information.
            
            References to properties in the URLs are expanded.
          $ref: '#/components/schemas/VAppProductInfo'
        vAppState:
          description: |2
            Whether the vApp is running
          $ref: '#/components/schemas/VirtualAppVAppState_enum'
        suspended:
          description: |2
            Whether a vApp is suspended, in the process of being suspended, or in the
            process of being resumed.
            
            A stopped vApp is marked as suspended
            under the following conditions:
            - All child virtual machines are either suspended or powered-off.
            - There is at least one suspended virtual machine for which the
              stop action is not "suspend".
              
            If the vAppState property is "stopped", the value is set to true if the vApp is
            suspended (according the the above definition).
            
            If the vAppState property is "stopping" or "starting" and the suspend flag is set to
            true, then the vApp is either in the process of being suspended or resumed
            from a suspended state, respectively.
            
            If the vAppState property is "started", then the suspend flag is set to false.
          type: boolean
        installBootRequired:
          description: |2
            Whether one or more VMs in this vApp require a reboot to finish
            installation.
          type: boolean
        instanceUuid:
          description: |2
            vCenter-specific UUID of the vApp
          type: string
      allOf:
        - $ref: '#/components/schemas/ResourcePoolSummary'

    ArrayOfVirtualAppSummary:
      type: object
      description: |2
        A boxed array of *VirtualAppSummary*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualAppSummary'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DeviceBackedVirtualDiskSpec:
      type: object
      description: |2
        Specification used to create a host device backed virtual disk
      properties:
        device:
          description: |2
            The deviceName of the backing device
            
            See also *ScsiLun*.
          type: string
      required:
        - device
      allOf:
        - $ref: '#/components/schemas/VirtualDiskSpec'

    ArrayOfDeviceBackedVirtualDiskSpec:
      type: object
      description: |2
        A boxed array of *DeviceBackedVirtualDiskSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DeviceBackedVirtualDiskSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    FileBackedVirtualDiskSpec:
      type: object
      description: |2
        Specification used to create a file based virtual disk
      properties:
        capacityKb:
          description: |2
            Specify the capacity of the virtual disk in Kb.
          type: integer
          format: int64
        profile:
          description: |2
            Virtual Disk Profile requirement.
            
            Profiles are solution specifics.
            Profile Based Storage Management is a vSphere server extension.
            The API users who want to provision VMs using Storage Profiles, need to
            interact with it.
            This is an optional parameter and if user doesn't specify profile,
            the default behavior will apply.
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineProfileSpec'
        crypto:
          description: |2
            Encryption options for the new virtual disk.
          $ref: '#/components/schemas/CryptoSpec'
      required:
        - capacityKb
      allOf:
        - $ref: '#/components/schemas/VirtualDiskSpec'

    ArrayOfFileBackedVirtualDiskSpec:
      type: object
      description: |2
        A boxed array of *FileBackedVirtualDiskSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/FileBackedVirtualDiskSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    SeSparseVirtualDiskSpec:
      type: object
      description: |2
        Specification used to create an Flex-SE based virtual disk
      properties:
        grainSizeKb:
          description: |2
            The grain size in kB for Flex-SE disk types.
            
            Default value will
            be used if unset.
          type: integer
          format: int32
      allOf:
        - $ref: '#/components/schemas/FileBackedVirtualDiskSpec'

    ArrayOfSeSparseVirtualDiskSpec:
      type: object
      description: |2
        A boxed array of *SeSparseVirtualDiskSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/SeSparseVirtualDiskSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualDiskSpec:
      type: object
      description: |2
        Specification used to create or clone a virtual disk
      properties:
        diskType:
          description: |2
            The type of the new virtual disk.
            
            See also *VirtualDiskType_enum*.
          type: string
        adapterType:
          description: |2
            The type of the virtual disk adapter for the new virtual disk.
            
            See also *VirtualDiskAdapterType_enum*.
          type: string
      required:
        - diskType
        - adapterType
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVirtualDiskSpec:
      type: object
      description: |2
        A boxed array of *VirtualDiskSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualDiskSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualMachineConnection:
      type: object
      description: |2
        The *VirtualMachineConnection* object describes a connection to the virtual
        machine.
        
        ***Since:*** vSphere API Release 7.0.1.0
      properties:
        label:
          description: |2
            The unique identifier associated with the connection.
            
            The label is a UTF-8 string which specifies a unique identifier for
            a connection.
          type: string
        client:
          description: |2
            The client identifer.
            
            This identifier is a UTF-8 string which is semantically meaningful
            for the connection. Examples of the client identifier are an IP
            address (V4 or V6) with or without a port specification, a machine
            name that requires a DNS lookup, or any other network oriented
            identification scheme.
          type: string
        userName:
          description: |2
            The name of the user authorizing the connection.
            
            This is used for auditing.
          type: string
      required:
        - label
        - client
        - userName
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVirtualMachineConnection:
      type: object
      description: |2
        A boxed array of *VirtualMachineConnection*. To be used in *Any* placeholders.
        
        ***Since:*** vSphere API Release 7.0.1.0
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineConnection'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DiskChangeInfo:
      type: object
      description: |2
        Data structure to describe areas in a disk associated with this VM that have
        been modified since a well-defined point in the past.
        
        Returned by
        *VirtualMachine.QueryChangedDiskAreas*. This data structure describes
        a subset of the disk identified by startOffset and length. All areas that
        have been modified within this interval are listed under changedArea.
      properties:
        startOffset:
          description: |2
            Start offset (in bytes) of disk area described by this data structure.
          type: integer
          format: int64
        length:
          description: |2
            Length (in bytes) of disk area described by this data structure.
          type: integer
          format: int64
        changedArea:
          description: |2
            Modified disk areas.
            
            Might be empty if no parts of the disk between
            startOffset and startOffset + length were modified.
          type: array
          items:
            $ref: '#/components/schemas/DiskChangeExtent'
      required:
        - startOffset
        - length
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfDiskChangeInfo:
      type: object
      description: |2
        A boxed array of *DiskChangeInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DiskChangeInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DiskChangeExtent:
      type: object
      description: |2
        An area of the disk flagged as modified
      properties:
        start:
          description: |2
            Start offset (in bytes) of modified area
          type: integer
          format: int64
        length:
          description: |2
            Length (in bytes) of modified area
          type: integer
          format: int64
      required:
        - start
        - length
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfDiskChangeExtent:
      type: object
      description: |2
        A boxed array of *DiskChangeExtent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DiskChangeExtent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualMachineDisplayTopology:
      type: object
      description: |2
        This data object defines a two-dimensional, rectangular
        display area.
      properties:
        x:
          description: |2
            The x co-ordinate defining the start of the display rectangle.
          type: integer
          format: int32
        y:
          description: |2
            The y co-ordinate defining the start of the display rectangle.
          type: integer
          format: int32
        width:
          description: |2
            The width of the display rectangle.
          type: integer
          format: int32
        height:
          description: |2
            The height of the display rectangle.
          type: integer
          format: int32
      required:
        - x
        - y
        - width
        - height
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVirtualMachineDisplayTopology:
      type: object
      description: |2
        A boxed array of *VirtualMachineDisplayTopology*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineDisplayTopology'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualMachineMksConnection:
      type: object
      description: |2
        The *VirtualMachineMksConnection* object describes an MKS style connection
        to the virtual machine.
        
        ***Since:*** vSphere API Release 7.0.1.0
      allOf:
        - $ref: '#/components/schemas/VirtualMachineConnection'

    ArrayOfVirtualMachineMksConnection:
      type: object
      description: |2
        A boxed array of *VirtualMachineMksConnection*. To be used in *Any* placeholders.
        
        ***Since:*** vSphere API Release 7.0.1.0
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineMksConnection'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualMachineMksTicket:
      type: object
      deprecated: true
      description: |2
        Deprecated as of vSphere API 4.1, use *VirtualMachineTicket*
        instead.
        
        This data object contains the information needed to establish an MKS
        (mouse-keyboard-screen) connection to a running virtual machine.
      properties:
        ticket:
          description: |2
            The ticket name.
            
            This is used as the username and password for the MKS
            connection.
          type: string
          format: password
        cfgFile:
          description: |2
            The name of the configuration file for the virtual machine.
          type: string
        host:
          description: |2
            The host with which to establish a connection.
            
            If the host is not specified,
            it is assumed that the requesting entity knows the appropriate host with which
            to connect.
          type: string
        port:
          description: |2
            The port number to use.
            
            If the port is not specified,
            it is assumed that the requesting entity knows the appropriate port to
            use when making a new connection.
          type: integer
          format: int32
        sslThumbprint:
          description: |2
            The expected thumbprint of the SSL cert of the host to which
            we are connecting.
          type: string
      required:
        - ticket
        - cfgFile
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVirtualMachineMksTicket:
      type: object
      description: |2
        A boxed array of *VirtualMachineMksTicket*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineMksTicket'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    StorageRequirement:
      type: object
      description: |2
        Describes the storage requirement to perform a consolidation
        operation.
      properties:
        datastore:
          description: |2
            The datastore.
            
            Refers instance of *Datastore*.
          $ref: '#/components/schemas/ManagedObjectReference'
        freeSpaceRequiredInKb:
          description: |2
            Space required.
          type: integer
          format: int64
      required:
        - datastore
        - freeSpaceRequiredInKb
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfStorageRequirement:
      type: object
      description: |2
        A boxed array of *StorageRequirement*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/StorageRequirement'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualMachineTicket:
      type: object
      description: |2
        This data object contains the information needed to establish a
        connection to a running virtual machine.
      properties:
        ticket:
          description: |2
            The ticket name.
            
            This is used as the username and password for the MKS
            connection.
          type: string
          format: password
        cfgFile:
          description: |2
            The name of the configuration file for the virtual machine.
          type: string
        host:
          description: |2
            The host with which to establish a connection.
            
            If the host is not specified,
            it is assumed that the requesting entity knows the appropriate host with which
            to connect.
          type: string
        port:
          description: |2
            The port number to use.
            
            If the port is not specified,
            it is assumed that the requesting entity knows the appropriate port to
            use when making a new connection.
          type: integer
          format: int32
        sslThumbprint:
          description: |2
            The expected SHA1 thumbprint of the SSL cert of the host to which we
            are connecting.
            
            This field can be enabled or disabled on the host.
          type: string
        certThumbprintList:
          description: |2
            List of expected thumbprints of the certificate of the host to
            which we are connecting.
            
            The list can be configured on the host
            to include only certain hash types. The default configuration
            includes all hash types that are considered secure. See vmware.com
            for the current security standards.
            
            ***Since:*** vSphere API Release 7.0.3.1
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineCertThumbprint'
        url:
          description: |2
            Websocket URL.
            
            Some tickets are "websocket" tickets and are best expressed
            as a URL.
          type: string
      required:
        - ticket
        - cfgFile
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVirtualMachineTicket:
      type: object
      description: |2
        A boxed array of *VirtualMachineTicket*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineTicket'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualMachineWipeResult:
      type: object
      description: |2
        Data structure used by wipeDisk to return the amount of disk space that
        can be saved on an Flex-SE disk if a subsequent shrinkDisk API is invoked
        on that disk.
      properties:
        diskId:
          description: |2
            The disk id for the disk that was wiped.
          type: integer
          format: int32
        shrinkableDiskSpace:
          description: |2
            The amount of shrinkable disk space in kB.
          type: integer
          format: int64
      required:
        - diskId
        - shrinkableDiskSpace
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVirtualMachineWipeResult:
      type: object
      description: |2
        A boxed array of *VirtualMachineWipeResult*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineWipeResult'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VsanUpgradeSystemAPIBrokenIssue:
      type: object
      description: |2
        Pre-flight check encountered a VC plumbing issue.
      properties:
        hosts:
          description: |2
            Hosts this issue applies to.
            
            Refers instances of *HostSystem*.
          type: array
          items:
            $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - hosts
      allOf:
        - $ref: '#/components/schemas/VsanUpgradeSystemPreflightCheckIssue'

    ArrayOfVsanUpgradeSystemAPIBrokenIssue:
      type: object
      description: |2
        A boxed array of *VsanUpgradeSystemAPIBrokenIssue*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VsanUpgradeSystemAPIBrokenIssue'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VsanUpgradeSystemAutoClaimEnabledOnHostsIssue:
      type: object
      description: |2
        Pre-flight check encountered at least one host with auto-claim enabled.
      properties:
        hosts:
          description: |2
            Hosts this issue applies to.
            
            Refers instances of *HostSystem*.
          type: array
          items:
            $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - hosts
      allOf:
        - $ref: '#/components/schemas/VsanUpgradeSystemPreflightCheckIssue'

    ArrayOfVsanUpgradeSystemAutoClaimEnabledOnHostsIssue:
      type: object
      description: |2
        A boxed array of *VsanUpgradeSystemAutoClaimEnabledOnHostsIssue*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VsanUpgradeSystemAutoClaimEnabledOnHostsIssue'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VsanUpgradeSystemHostsDisconnectedIssue:
      type: object
      description: |2
        Pre-flight check encountered at least one host that is disconnected
        or not responding.
      properties:
        hosts:
          description: |2
            Hosts this issue applies to.
            
            Refers instances of *HostSystem*.
          type: array
          items:
            $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - hosts
      allOf:
        - $ref: '#/components/schemas/VsanUpgradeSystemPreflightCheckIssue'

    ArrayOfVsanUpgradeSystemHostsDisconnectedIssue:
      type: object
      description: |2
        A boxed array of *VsanUpgradeSystemHostsDisconnectedIssue*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VsanUpgradeSystemHostsDisconnectedIssue'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VsanUpgradeSystemMissingHostsInClusterIssue:
      type: object
      description: |2
        Pre-flight check encountered at least one host that is part of the
        VC cluster but not the VSAN cluster.
      properties:
        hosts:
          description: |2
            Hosts this issue applies to.
            
            Refers instances of *HostSystem*.
          type: array
          items:
            $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - hosts
      allOf:
        - $ref: '#/components/schemas/VsanUpgradeSystemPreflightCheckIssue'

    ArrayOfVsanUpgradeSystemMissingHostsInClusterIssue:
      type: object
      description: |2
        A boxed array of *VsanUpgradeSystemMissingHostsInClusterIssue*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VsanUpgradeSystemMissingHostsInClusterIssue'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VsanUpgradeSystemNetworkPartitionInfo:
      type: object
      description: |2
        Information about a particular group of hosts making up a network partition.
      properties:
        hosts:
          description: |2
            Hosts that make up the network partition
            
            Refers instances of *HostSystem*.
          type: array
          items:
            $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - hosts
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVsanUpgradeSystemNetworkPartitionInfo:
      type: object
      description: |2
        A boxed array of *VsanUpgradeSystemNetworkPartitionInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VsanUpgradeSystemNetworkPartitionInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VsanUpgradeSystemNetworkPartitionIssue:
      type: object
      description: |2
        Pre-flight check encountered a network partition.
        
        Contains details
        about the discovered network partition.
      properties:
        partitions:
          description: |2
            List of network partitions
          type: array
          items:
            $ref: '#/components/schemas/VsanUpgradeSystemNetworkPartitionInfo'
      required:
        - partitions
      allOf:
        - $ref: '#/components/schemas/VsanUpgradeSystemPreflightCheckIssue'

    ArrayOfVsanUpgradeSystemNetworkPartitionIssue:
      type: object
      description: |2
        A boxed array of *VsanUpgradeSystemNetworkPartitionIssue*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VsanUpgradeSystemNetworkPartitionIssue'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VsanUpgradeSystemNotEnoughFreeCapacityIssue:
      type: object
      description: |2
        Pre-flight check encountered not enough free disk capacity to maintain policy compliance.
      properties:
        reducedRedundancyUpgradePossible:
          description: |2
            Indicates that whether upgrade could be processed if option
            allowReducedRedundancy is taken.
          type: boolean
      required:
        - reducedRedundancyUpgradePossible
      allOf:
        - $ref: '#/components/schemas/VsanUpgradeSystemPreflightCheckIssue'

    ArrayOfVsanUpgradeSystemNotEnoughFreeCapacityIssue:
      type: object
      description: |2
        A boxed array of *VsanUpgradeSystemNotEnoughFreeCapacityIssue*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VsanUpgradeSystemNotEnoughFreeCapacityIssue'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VsanUpgradeSystemPreflightCheckIssue:
      type: object
      description: |2
        Base class for a pre-flight check issue.
        
        Can be used directly
        but usually a derived class with a specific issue type is used.
      properties:
        msg:
          description: |2
            Message describing the issue.
          type: string
      required:
        - msg
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVsanUpgradeSystemPreflightCheckIssue:
      type: object
      description: |2
        A boxed array of *VsanUpgradeSystemPreflightCheckIssue*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VsanUpgradeSystemPreflightCheckIssue'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VsanUpgradeSystemPreflightCheckResult:
      type: object
      description: |2
        Captures the result of a VSAN upgrade pre-flight check.
      properties:
        issues:
          description: |2
            Detected issues.
            
            In some cases, not all possible issues are captured,
            i.e. only the first (few) issues may be captured, and only once those
            are resolved would additional issues be reported.
            Absence of issues means the pre-flight check passed.
          type: array
          items:
            $ref: '#/components/schemas/VsanUpgradeSystemPreflightCheckIssue'
        diskMappingToRestore:
          description: |2
            If the upgrade process was previously interrupted, it may have
            removed VSAN from a disk group, but not added the disk group back
            into VSAN.
            
            If such a situation is detected, this field will be set
            and contains information about this disk group.
          $ref: '#/components/schemas/VsanHostDiskMapping'
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVsanUpgradeSystemPreflightCheckResult:
      type: object
      description: |2
        A boxed array of *VsanUpgradeSystemPreflightCheckResult*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VsanUpgradeSystemPreflightCheckResult'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VsanUpgradeSystemRogueHostsInClusterIssue:
      type: object
      description: |2
        Pre-flight check encountered at least one host that is part of the VSAN
        cluster but not the VC cluster.
      properties:
        uuids:
          description: |2
            Host UUIDs of rogue hosts.
          type: array
          items:
            type: string
      required:
        - uuids
      allOf:
        - $ref: '#/components/schemas/VsanUpgradeSystemPreflightCheckIssue'

    ArrayOfVsanUpgradeSystemRogueHostsInClusterIssue:
      type: object
      description: |2
        A boxed array of *VsanUpgradeSystemRogueHostsInClusterIssue*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VsanUpgradeSystemRogueHostsInClusterIssue'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VsanUpgradeSystemUpgradeHistoryDiskGroupOp:
      type: object
      description: |2
        The upgrade process removed or added VSAN from/to a disk group.
        
        Class
        provides details about the operation and the disk group.
      properties:
        operation:
          description: |2
            Type of the operation, e.g.
            
            add or remove.
            
            See also *VsanUpgradeSystemUpgradeHistoryDiskGroupOpType_enum*.
          type: string
        diskMapping:
          description: |2
            Disk group that is being added/removed
          $ref: '#/components/schemas/VsanHostDiskMapping'
      required:
        - operation
        - diskMapping
      allOf:
        - $ref: '#/components/schemas/VsanUpgradeSystemUpgradeHistoryItem'

    ArrayOfVsanUpgradeSystemUpgradeHistoryDiskGroupOp:
      type: object
      description: |2
        A boxed array of *VsanUpgradeSystemUpgradeHistoryDiskGroupOp*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VsanUpgradeSystemUpgradeHistoryDiskGroupOp'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VsanUpgradeSystemUpgradeHistoryItem:
      type: object
      description: |2
        Captures one "log entry" of an upgrade process.
      properties:
        timestamp:
          description: |2
            Time stamp when the history is record.
          type: string
          format: date-time
        host:
          description: |2
            The host a history item pertains to.
            
            May be unset when item related
            to no particular host.
            
            Refers instance of *HostSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
        message:
          description: |2
            Description of the history item.
          type: string
        task:
          description: |2
            A task associated with the history item.
            
            May be unset if no task is
            associated.
            
            Refers instance of *Task*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - timestamp
        - message
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVsanUpgradeSystemUpgradeHistoryItem:
      type: object
      description: |2
        A boxed array of *VsanUpgradeSystemUpgradeHistoryItem*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VsanUpgradeSystemUpgradeHistoryItem'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VsanUpgradeSystemUpgradeHistoryPreflightFail:
      type: object
      description: |2
        Upgrade process encountered a pre-flight check failure.
        
        This leads to
        the upgrade process aborting the upgrade.
      properties:
        preflightResult:
          description: |2
            Details about the failed preflight check.
          $ref: '#/components/schemas/VsanUpgradeSystemPreflightCheckResult'
      required:
        - preflightResult
      allOf:
        - $ref: '#/components/schemas/VsanUpgradeSystemUpgradeHistoryItem'

    ArrayOfVsanUpgradeSystemUpgradeHistoryPreflightFail:
      type: object
      description: |2
        A boxed array of *VsanUpgradeSystemUpgradeHistoryPreflightFail*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VsanUpgradeSystemUpgradeHistoryPreflightFail'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VsanUpgradeSystemUpgradeStatus:
      type: object
      description: |2
        Captures the status of a VSAN cluster on-disk format upgrade.
        
        Contains
        information about progress, result, and a detailed log of operations.
      properties:
        inProgress:
          description: |2
            True if there is an active upgrade process.
            
            If true, other fields
            are guaranteed to be populated. If false, other fields may reflect
            a previous upgrade process run, or they may be unset.
          type: boolean
        history:
          description: |2
            Log of a single upgrade task.
            
            Lists all operations performed by the
            upgrade process in chronological order.
          type: array
          items:
            $ref: '#/components/schemas/VsanUpgradeSystemUpgradeHistoryItem'
        aborted:
          description: |2
            Set if the upgrade process was aborted.
          type: boolean
        completed:
          description: |2
            Set if the upgrade process has completed successfully.
          type: boolean
        progress:
          description: |2
            Progress in percent.
          type: integer
          format: int32
      required:
        - inProgress
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVsanUpgradeSystemUpgradeStatus:
      type: object
      description: |2
        A boxed array of *VsanUpgradeSystemUpgradeStatus*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VsanUpgradeSystemUpgradeStatus'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VsanUpgradeSystemV2ObjectsPresentDuringDowngradeIssue:
      type: object
      description: |2
        Pre-flight check encountered v2 objects preventing a downgrade.
      properties:
        uuids:
          description: |2
            Object UUIDs of v2 objects.
          type: array
          items:
            type: string
      required:
        - uuids
      allOf:
        - $ref: '#/components/schemas/VsanUpgradeSystemPreflightCheckIssue'

    ArrayOfVsanUpgradeSystemV2ObjectsPresentDuringDowngradeIssue:
      type: object
      description: |2
        A boxed array of *VsanUpgradeSystemV2ObjectsPresentDuringDowngradeIssue*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VsanUpgradeSystemV2ObjectsPresentDuringDowngradeIssue'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VsanUpgradeSystemWrongEsxVersionIssue:
      type: object
      description: |2
        Pre-flight check encountered at least one host with wrong ESX version.
        
        Only 6.0 is allowed.
      properties:
        hosts:
          description: |2
            Hosts this issue applies to.
            
            Refers instances of *HostSystem*.
          type: array
          items:
            $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - hosts
      allOf:
        - $ref: '#/components/schemas/VsanUpgradeSystemPreflightCheckIssue'

    ArrayOfVsanUpgradeSystemWrongEsxVersionIssue:
      type: object
      description: |2
        A boxed array of *VsanUpgradeSystemWrongEsxVersionIssue*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VsanUpgradeSystemWrongEsxVersionIssue'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    Action:
      type: object
      description: |2
        This data object type defines the action initiated by a scheduled task or alarm.
        
        This is an abstract type.
        A client creates a scheduled task or an alarm each of which triggers
        an action, defined by a subclass of this type.
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfAction:
      type: object
      description: |2
        A boxed array of *Action*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/Action'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    CreateTaskAction:
      type: object
      description: |2
        This data object type specifies the type of task to be created
        when this action is triggered.
      properties:
        taskTypeId:
          description: |2
            Extension registered task type identifier
            for type of task being created.
          type: string
        cancelable:
          description: |2
            Whether the task should be cancelable.
          type: boolean
      required:
        - taskTypeId
        - cancelable
      allOf:
        - $ref: '#/components/schemas/Action'

    ArrayOfCreateTaskAction:
      type: object
      description: |2
        A boxed array of *CreateTaskAction*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/CreateTaskAction'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    MethodAction:
      type: object
      description: |2
        This data object type defines an operation and its arguments, invoked
        on a particular entity.
      properties:
        name:
          description: |2
            Name of the operation.
          type: string
        argument:
          description: |2
            An array consisting of the arguments for the operation.
          type: array
          items:
            $ref: '#/components/schemas/MethodActionArgument'
      required:
        - name
      allOf:
        - $ref: '#/components/schemas/Action'

    ArrayOfMethodAction:
      type: object
      description: |2
        A boxed array of *MethodAction*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/MethodAction'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    MethodActionArgument:
      type: object
      description: |2
        This data object type defines a named argument for an operation.
      properties:
        value:
          description: |2
            The value of the argument.
          $ref: '#/components/schemas/Any'
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfMethodActionArgument:
      type: object
      description: |2
        A boxed array of *MethodActionArgument*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/MethodActionArgument'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    RunScriptAction:
      type: object
      description: |2
        This data object type specifies a script that is triggered by an alarm.
        
        You can use any elements of the
        *ActionParameter* enumerated list
        as part of your script to provide information available at runtime.
      properties:
        script:
          description: |2
            The fully-qualified path to a shell script that runs on the
            VirtualCenter server as a result of an alarm.
          type: string
      required:
        - script
      allOf:
        - $ref: '#/components/schemas/Action'

    ArrayOfRunScriptAction:
      type: object
      description: |2
        A boxed array of *RunScriptAction*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/RunScriptAction'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    SendEmailAction:
      type: object
      description: |2
        This data object type defines an email that is triggered by an
        alarm.
        
        You can use any
        elements of the *ActionParameter*
        enumerated list as part of your strings to provide information available
        at runtime.
      properties:
        toList:
          description: |2
            A comma-separated list of addresses to which the email notification is sent.
          type: string
        ccList:
          description: |2
            A comma-separated list of addresses that are cc'ed on the email notification.
          type: string
        subject:
          description: |2
            Subject of the email notification.
          type: string
        body:
          description: |2
            Content of the email notification.
          type: string
      required:
        - toList
        - ccList
        - subject
        - body
      allOf:
        - $ref: '#/components/schemas/Action'

    ArrayOfSendEmailAction:
      type: object
      description: |2
        A boxed array of *SendEmailAction*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/SendEmailAction'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    SendSNMPAction:
      type: object
      description: |2
        This data object type specifies an SNMP trap that is triggered by an alarm.
      allOf:
        - $ref: '#/components/schemas/Action'

    ArrayOfSendSNMPAction:
      type: object
      description: |2
        A boxed array of *SendSNMPAction*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/SendSNMPAction'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    AlarmAction:
      type: object
      description: |2
        Action invoked by triggered alarm.
        
        This is an abstract type.
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfAlarmAction:
      type: object
      description: |2
        A boxed array of *AlarmAction*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/AlarmAction'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    AlarmDescription:
      type: object
      description: |2
        Static strings for alarms.
      properties:
        expr:
          description: |2
            Descriptions of expression types for a trigger.
          type: array
          items:
            $ref: '#/components/schemas/TypeDescription'
        stateOperator:
          description: |2
            *State Operator enum description*
          type: array
          items:
            $ref: '#/components/schemas/ElementDescription'
        metricOperator:
          description: |2
            *MetricAlarmExpression Metric Operator enum description*
          type: array
          items:
            $ref: '#/components/schemas/ElementDescription'
        hostSystemConnectionState:
          description: |2
            *Host System Connection State enum description*
          type: array
          items:
            $ref: '#/components/schemas/ElementDescription'
        virtualMachinePowerState:
          description: |2
            *Virtual Machine Power State enum description*
          type: array
          items:
            $ref: '#/components/schemas/ElementDescription'
        datastoreConnectionState:
          description: |2
            *DatastoreSummary.accessible* and
            *description*
          type: array
          items:
            $ref: '#/components/schemas/ElementDescription'
        hostSystemPowerState:
          description: |2
            *Host System Power State enum description*
          type: array
          items:
            $ref: '#/components/schemas/ElementDescription'
        virtualMachineGuestHeartbeatStatus:
          description: |2
            *Guest Heartbeat Status enum description*
          type: array
          items:
            $ref: '#/components/schemas/ElementDescription'
        entityStatus:
          description: |2
            *ManagedEntity Status enum description*
          type: array
          items:
            $ref: '#/components/schemas/ElementDescription'
        action:
          description: |2
            Action class descriptions for an alarm.
          type: array
          items:
            $ref: '#/components/schemas/TypeDescription'
      required:
        - expr
        - stateOperator
        - metricOperator
        - hostSystemConnectionState
        - virtualMachinePowerState
        - datastoreConnectionState
        - hostSystemPowerState
        - virtualMachineGuestHeartbeatStatus
        - entityStatus
        - action
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfAlarmDescription:
      type: object
      description: |2
        A boxed array of *AlarmDescription*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/AlarmDescription'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    AlarmExpression:
      type: object
      description: |2
        Base type for the expressions specifying the conditions that define
        the status of an alarm.
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfAlarmExpression:
      type: object
      description: |2
        A boxed array of *AlarmExpression*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/AlarmExpression'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    AlarmFilterSpec:
      type: object
      description: |2
        Alarm Filter used to filter/group alarms.
      properties:
        status:
          description: |2
            Status array which could be used to filter alarms according to their
            triggered state.
            
            If all triggered alarms need to be matched an empty array or
            ManagedEntity::red and ManagedEntity::yellow could be filled in the array.
          type: array
          items:
            $ref: '#/components/schemas/ManagedEntityStatus_enum'
        typeEntity:
          description: |2
            Use values from *AlarmFilterSpecAlarmTypeByEntity_enum*
          type: string
        typeTrigger:
          description: |2
            Use values from *AlarmFilterSpecAlarmTypeByTrigger_enum*
          type: string
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfAlarmFilterSpec:
      type: object
      description: |2
        A boxed array of *AlarmFilterSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/AlarmFilterSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    AlarmInfo:
      type: object
      description: |2
        Attributes of an alarm.
      properties:
        key:
          description: |2
            The unique key.
          type: string
        alarm:
          description: |2
            The alarm object.
            
            Refers instance of *Alarm*.
          $ref: '#/components/schemas/ManagedObjectReference'
        entity:
          description: |2
            The entity on which the alarm is registered.
            
            Refers instance of *ManagedEntity*.
          $ref: '#/components/schemas/ManagedObjectReference'
        lastModifiedTime:
          description: |2
            The time the alarm was created or modified.
          type: string
          format: date-time
        lastModifiedUser:
          description: |2
            User name that modified the alarm most recently.
          type: string
        creationEventId:
          description: |2
            The event ID that records the alarm creation.
          type: integer
          format: int32
      required:
        - key
        - alarm
        - entity
        - lastModifiedTime
        - lastModifiedUser
        - creationEventId
      allOf:
        - $ref: '#/components/schemas/AlarmSpec'

    ArrayOfAlarmInfo:
      type: object
      description: |2
        A boxed array of *AlarmInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/AlarmInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    AlarmSetting:
      type: object
      description: |2
        Tolerance and frequency limits of an alarm.
      properties:
        toleranceRange:
          description: |2
            Tolerance range for the metric triggers, measured in one hundredth percentage.
            
            A zero value means that the alarm
            triggers whenever the metric value is above
            or below the specified value.
            A nonzero value means that the alarm
            triggers only after reaching a certain percentage
            above or below the nominal trigger value.
          type: integer
          format: int32
        reportingFrequency:
          description: |2
            How often the alarm is triggered, measured in seconds.
            
            A zero value means that the alarm is allowed
            to trigger as often as possible.
            A nonzero value means that any subsequent triggers
            are suppressed for a period of seconds following a
            reported trigger.
          type: integer
          format: int32
      required:
        - toleranceRange
        - reportingFrequency
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfAlarmSetting:
      type: object
      description: |2
        A boxed array of *AlarmSetting*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/AlarmSetting'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    AlarmSpec:
      type: object
      description: |2
        Parameters for alarm creation.
      properties:
        name:
          description: |2
            Name of the alarm.
          type: string
        systemName:
          description: |2
            System name of the alarm.
            
            This is set only for predefined Alarms - i.e. Alarms created by the
            server or extensions automatically. After creation this value cannot be
            modified. User-created Alarms do not have a systemName at all.
            
            The purpose of this field is to identify system-created Alarms
            reliably, even if they are edited by users.
            
            When creating Alarms with systemName, the systemName and the name of the
            alarm should be equal.
            
            When reconfiguring an Alarm with systemName, the same systemName should
            be passed in the new AlarmSpec. Renaming Alarms with systemName is not
            allowed, i.e. when reconfiguring, the name passed in the new AlarmSpec
            should be equal to either the systemName or its localized version (the
            current name in the Alarm's info).
          type: string
        description:
          description: |2
            Description of the alarm.
          type: string
        enabled:
          description: |2
            Flag to indicate whether or not the alarm is enabled or disabled.
          type: boolean
        expression:
          description: |2
            Top-level alarm expression that defines trigger conditions.
          $ref: '#/components/schemas/AlarmExpression'
        action:
          description: |2
            Action to perform when the alarm is triggered.
          $ref: '#/components/schemas/AlarmAction'
        actionFrequency:
          description: |2
            Frequency in seconds, which specifies how often appropriate actions
            should repeat when an alarm does not change state.
          type: integer
          format: int32
        setting:
          description: |2
            Tolerance and maximum frequency settings.
          $ref: '#/components/schemas/AlarmSetting'
      required:
        - name
        - description
        - enabled
        - expression
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfAlarmSpec:
      type: object
      description: |2
        A boxed array of *AlarmSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/AlarmSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    AlarmState:
      type: object
      description: |2
        Information about the alarm's state.
      properties:
        key:
          description: |2
            Unique key that identifies the alarm.
          type: string
        entity:
          description: |2
            Entity on which the alarm is instantiated.
            
            Refers instance of *ManagedEntity*.
          $ref: '#/components/schemas/ManagedObjectReference'
        alarm:
          description: |2
            Alarm object from which the AlarmState object is instantiated.
            
            Refers instance of *Alarm*.
          $ref: '#/components/schemas/ManagedObjectReference'
        overallStatus:
          description: |2
            Overall status of the alarm object.
            
            This is the value of the alarm's top-level expression.
            In releases after vSphere API 5.0, vSphere Servers might not
            generate property collector update notifications for this property.
            To obtain the latest value of the property, you can use
            PropertyCollector methods RetrievePropertiesEx or WaitForUpdatesEx.
            If you use the PropertyCollector.WaitForUpdatesEx method, specify
            an empty string for the version parameter.
            Since this property is on a DataObject, an update returned by WaitForUpdatesEx may
            contain values for this property when some other property on the DataObject changes.
            If this update is a result of a call to WaitForUpdatesEx with a non-empty
            version parameter, the value for this property may not be current.
          $ref: '#/components/schemas/ManagedEntityStatus_enum'
        time:
          description: |2
            Time the alarm triggered.
          type: string
          format: date-time
        acknowledged:
          description: |2
            Flag to indicate if the alarm's actions have been acknowledged for the
            associated ManagedEntity.
          type: boolean
        acknowledgedByUser:
          description: |2
            The user who acknowledged this triggering.
            
            If the triggering has not
            been acknowledged, then the value is not valid.
          type: string
        acknowledgedTime:
          description: |2
            The time this triggering was acknowledged.
            
            If the triggering has not
            been acknowledged, then the value is not valid.
          type: string
          format: date-time
        eventKey:
          description: |2
            Contains the key of the event that has triggered the alarm.
            
            The value
            is set only for event based alarms. The value is not set for gray or
            manually reset alarms (via vim.AlarmManager.setAlarmStatus).
          type: integer
          format: int32
        disabled:
          description: |2
            Flag to indicate if the alarm is disabled for the associated
            ManagedEntity.
          type: boolean
      required:
        - key
        - entity
        - alarm
        - overallStatus
        - time
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfAlarmState:
      type: object
      description: |2
        A boxed array of *AlarmState*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/AlarmState'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    AlarmTriggeringAction:
      type: object
      description: |2
        This data object type describes one or more
        triggering transitions and an action to be done
        when an alarm is triggered.
        
        There are four triggering transitions; at least one of them must
        be provided. A gray state is considered the same as a green state,
        for the purpose of detecting transitions.
      properties:
        action:
          description: |2
            The action to be done when the alarm is triggered.
          $ref: '#/components/schemas/Action'
        transitionSpecs:
          description: |2
            Indicates on which transitions this action executes and repeats.
            
            This is optional only for backwards compatibility.
          type: array
          items:
            $ref: '#/components/schemas/AlarmTriggeringActionTransitionSpec'
        green2yellow:
          deprecated: true
          description: |2
            Deprecated as of vSphere API 4.0, use
            *AlarmTriggeringActionTransitionSpec* .
            
            Flag to specify that the alarm should trigger on a transition
            from green to yellow.
          type: boolean
        yellow2red:
          deprecated: true
          description: |2
            Deprecated as of vSphere API 4.0, use
            *AlarmTriggeringActionTransitionSpec* .
            
            Flag to specify that the alarm should trigger on a transition
            from yellow to red.
          type: boolean
        red2yellow:
          deprecated: true
          description: |2
            Deprecated as of vSphere API 4.0, use
            *AlarmTriggeringActionTransitionSpec* .
            
            Flag to specify that the alarm should trigger on a transition
            from red to yellow.
          type: boolean
        yellow2green:
          deprecated: true
          description: |2
            Deprecated as of vSphere API 4.0, use
            *AlarmTriggeringActionTransitionSpec* .
            
            Flag to specify that the alarm should trigger on a transition
            from yellow to green.
          type: boolean
      required:
        - action
        - green2yellow
        - yellow2red
        - red2yellow
        - yellow2green
      allOf:
        - $ref: '#/components/schemas/AlarmAction'

    ArrayOfAlarmTriggeringAction:
      type: object
      description: |2
        A boxed array of *AlarmTriggeringAction*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/AlarmTriggeringAction'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    AlarmTriggeringActionTransitionSpec:
      type: object
      description: |2
        Specification indicating which on transitions this action fires.
        
        The existence of a Spec indicates that this action fires on
        transitions from that Spec's startState to finalState.
        
        There are six acceptable {startState, finalState} pairs:
        {green, yellow}, {green, red}, {yellow, red}, {red, yellow},
        {red, green} and {yellow, green}.
        Direct transitions have precedence over indirect.
        At least one of these pairs must be specified.
        Any deviation from the above will render the enclosing AlarmSpec invalid.
      properties:
        startState:
          description: |2
            The state from which the alarm must transition for the action to
            fire.
            
            Valid choices are red, yellow and green.
          $ref: '#/components/schemas/ManagedEntityStatus_enum'
        finalState:
          description: |2
            The state to which the alarm must transition for the action to fire.
            
            Valid choices are red, yellow, and green.
          $ref: '#/components/schemas/ManagedEntityStatus_enum'
        repeats:
          description: |2
            Whether or not the action repeats, as per the actionFrequency defined
            in the enclosing Alarm.
          type: boolean
      required:
        - startState
        - finalState
        - repeats
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfAlarmTriggeringActionTransitionSpec:
      type: object
      description: |2
        A boxed array of *AlarmTriggeringActionTransitionSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/AlarmTriggeringActionTransitionSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    AndAlarmExpression:
      type: object
      description: |2
        A data object type that links multiple alarm expressions with AND operators.
      properties:
        expression:
          description: |2
            List of alarm expressions that define the overall status of the alarm.
            - The state of the alarm expression is gray if all subexpressions are gray.
              Otherwise, gray subexpressions are ignored.
            - The state is red if all subexpressions are red.
            - Otherwise, the state is yellow if all subexpressions are red or yellow.
            - Otherwise, the state of the alarm expression is green.
          type: array
          items:
            $ref: '#/components/schemas/AlarmExpression'
      required:
        - expression
      allOf:
        - $ref: '#/components/schemas/AlarmExpression'

    ArrayOfAndAlarmExpression:
      type: object
      description: |2
        A boxed array of *AndAlarmExpression*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/AndAlarmExpression'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    EventAlarmExpression:
      type: object
      description: |2
        An alarm expression that uses the event stream to trigger the alarm.
        
        This alarm is triggered when an event matching this expression gets logged.
      properties:
        comparisons:
          description: |2
            The attributes/values to compare.
          type: array
          items:
            $ref: '#/components/schemas/EventAlarmExpressionComparison'
        eventType:
          deprecated: true
          description: |2
            Deprecated use <code>eventTypeId</code> instead.
            
            The type of the event to trigger the alarm on.
          type: string
        eventTypeId:
          description: |2
            The eventTypeId of the event to match.
            
            The semantics of how eventTypeId matching is done is as follows:
            - If the event being matched is of type *EventEx*
              or *ExtendedEvent*, then we match this value
              against the <code>eventTypeId</code> (for <code>EventEx</code>) or
              <code>eventId</code> (for <code>ExtendedEvent</code>) member of the Event.
            - Otherwise, we match it against the type of the Event itself.
              
            Either <code>eventType</code> or <code>eventTypeId</code> _must_
            be set.
          type: string
        objectType:
          description: |2
            Name of the type of managed object on which the event is logged.
            
            An event alarm defined on a *ManagedEntity*
            is propagated to child entities in the VirtualCenter inventory depending
            on the value of this attribute. If objectType is any of the following,
            the alarm is propagated down to all children of that type:
            - A datacenter: *Datacenter*.
            - A cluster of host systems: *ClusterComputeResource*.
            - A single host system: *HostSystem*.
            - A resource pool representing a set of physical resources on a single host:
              *ResourcePool*.
            - A virtual machine: *VirtualMachine*.
            - A datastore: *Datastore*.
            - A network: *Network*.
            - A distributed virtual switch: *DistributedVirtualSwitch*.
              
            If objectType is unspecified or not contained in the above list,
            the event alarm is not propagated down to child entities in the
            VirtualCenter inventory.
            
            It is possible to specify an event alarm containing two (or more) different
            EventAlarmExpression's which contain different objectTypes. In such a case,
            the event is propagated to all child entities with specified type(s).
          type: string
        status:
          description: |2
            The alarm's new state when this condition is evaluated and satisfied.
            
            If not specified then there is no change to alarm status, and all
            actions are fired (rather than those for the transition).
          $ref: '#/components/schemas/ManagedEntityStatus_enum'
      required:
        - eventType
      allOf:
        - $ref: '#/components/schemas/AlarmExpression'

    ArrayOfEventAlarmExpression:
      type: object
      description: |2
        A boxed array of *EventAlarmExpression*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/EventAlarmExpression'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    EventAlarmExpressionComparison:
      type: object
      description: |2
        Encapsulates Comparison of an event's attribute to a value.
      properties:
        attributeName:
          description: |2
            The attribute of the event to compare
          type: string
        operator:
          description: |2
            An operator from the list above
          type: string
        value:
          description: |2
            The value to compare against
          type: string
      required:
        - attributeName
        - operator
        - value
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfEventAlarmExpressionComparison:
      type: object
      description: |2
        A boxed array of *EventAlarmExpressionComparison*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/EventAlarmExpressionComparison'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    GroupAlarmAction:
      type: object
      description: |2
        This data object type describes a group of
        actions that occur when the alarm is triggered.
        
        These actions are not
        necessarily executed in order.
      properties:
        action:
          description: |2
            The list of alarm actions that occur when the alarm is triggered.
          type: array
          items:
            $ref: '#/components/schemas/AlarmAction'
      required:
        - action
      allOf:
        - $ref: '#/components/schemas/AlarmAction'

    ArrayOfGroupAlarmAction:
      type: object
      description: |2
        A boxed array of *GroupAlarmAction*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/GroupAlarmAction'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    MetricAlarmExpression:
      type: object
      description: |2
        An alarm expression that uses a metric as the condition that triggers an
        alarm.
        
        Base type.
        
        There are two alarm operands: yellow and red. At least one of them
        must be set. The value of the alarm expression is determined as follows:
        - If the host is not connected, the host metric expression is gray.
        - If the vm is not connected, the vm metric expression is gray.
        - If red is set but yellow is not, the expression is red when
          the metric is over (isAbove operator) or under (isBelow operator)
          the red value. Otherwise, the expression is green.
        - If yellow is set but red is not, the expression is yellow when
          the metric is over (isAbove) or under (isBelow)
          the yellow value. Otherwise, the expression is green.
        - If both yellow and red are set, the value of the expression is red
          when the metric is over (isAbove) or under (isBelow) the red value.
          Otherwise, the expression is yellow when the metric is over (isAbove)
          or under (isBelow) the yellow value. Otherwise, the expression is green.
      properties:
        operator:
          description: |2
            The operation to be tested on the metric.
          $ref: '#/components/schemas/MetricAlarmOperator_enum'
        type:
          description: |2
            Name of the object type containing the property.
          type: string
        metric:
          description: |2
            The instance of the metric.
          $ref: '#/components/schemas/PerfMetricId'
        yellow:
          description: |2
            Whether or not to test for a yellow condition.
            
            If not set, do not calculate yellow status.
            If set, it contains the threshold value that triggers yellow status.
          type: integer
          format: int32
        yellowInterval:
          description: |2
            Time interval in seconds for which the yellow condition must be true
            before the yellow status is triggered.
            
            If unset, the yellow status is
            triggered immediately when the yellow condition becomes true.
          type: integer
          format: int32
        red:
          description: |2
            Whether or not to test for a red condition.
            
            If not set, do not calculate red status.
            If set, it contains the threshold value that triggers red status.
          type: integer
          format: int32
        redInterval:
          description: |2
            Time interval in seconds for which the red condition must be true
            before the red status is triggered.
            
            If unset, the red status is
            triggered immediately when the red condition becomes true.
          type: integer
          format: int32
      required:
        - operator
        - type
        - metric
      allOf:
        - $ref: '#/components/schemas/AlarmExpression'

    ArrayOfMetricAlarmExpression:
      type: object
      description: |2
        A boxed array of *MetricAlarmExpression*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/MetricAlarmExpression'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    OrAlarmExpression:
      type: object
      description: |2
        A data object type that links multiple alarm expressions with OR operators.
      properties:
        expression:
          description: |2
            List of alarm expressions that define the overall status of the alarm.
            - The state of the alarm expression is gray if all subexpressions are gray.
              Otherwise, gray subexpressions are ignored.
            - The state is red if any subexpression is red.
            - Otherwise, the state is yellow if any subexpression is yellow.
            - Otherwise, the state of the alarm expression is green.
          type: array
          items:
            $ref: '#/components/schemas/AlarmExpression'
      required:
        - expression
      allOf:
        - $ref: '#/components/schemas/AlarmExpression'

    ArrayOfOrAlarmExpression:
      type: object
      description: |2
        A boxed array of *OrAlarmExpression*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/OrAlarmExpression'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    StateAlarmExpression:
      type: object
      description: |2
        An alarm expression that uses the running state of either a virtual machine or
        a host as the condition that triggers the alarm.
        
        Base type.
        
        There are two alarm operands: yellow and red. At least one of them
        must be set. The value of the alarm expression is determined as follows:
        - If the red state is set but the yellow state is not: the expression is red when
          the state operand matches (isEqual operator) or does not match (isUnequal operator)
          the state of the managed entity. The expression is green otherwise.
        - If yellow is set but red is not: the expression is yellow when
          the state operand matches (isEqual) or does not match (isUnequal)
          the state of the managed entity. The expression is green otherwise.
        - If both yellow and red are set, the value of the expression is red when
          the red state operand matches (isEqual) or does not match (isUnequal)
          the state of the managed entity. Otherwise, the expression is
          yellow when the yellow state operand matches (isEqual) or does not match (isUnequal)
          the state of the managed entity. Otherwise, the expression is green.
      properties:
        operator:
          description: |2
            The operation to be tested on the target state.
          $ref: '#/components/schemas/StateAlarmOperator_enum'
        type:
          description: |2
            Name of the object type containing the property.
          type: string
        statePath:
          description: |2
            Path of the state property.
            
            The supported values:
            - for vim.VirtualMachine type:
            - runtime.powerState or summary.quickStats.guestHeartbeatStatus
            - for vim.HostSystem type: runtime.connectionState
          type: string
        yellow:
          description: |2
            Whether or not to test for a yellow condition.
            
            If this property is not set, do not calculate yellow status.
          type: string
        red:
          description: |2
            Whether or not to test for a red condition.
            
            If this property is not set, do not calculate red status.
          type: string
      required:
        - operator
        - type
        - statePath
      allOf:
        - $ref: '#/components/schemas/AlarmExpression'

    ArrayOfStateAlarmExpression:
      type: object
      description: |2
        A boxed array of *StateAlarmExpression*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/StateAlarmExpression'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ClusterAction:
      type: object
      description: |2
        Base class for all action recommendations in VirtualCenter.
      properties:
        type:
          description: |2
            Type of the action.
            
            This is encoded to differentiate between
            different types of actions aimed at achieving different goals.
          type: string
        target:
          description: |2
            The target object on which this action will be applied.
            
            For
            instance, a migration action will have a virtual machine as its
            target object, while a host power action will have a host as its
            target action.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - type
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfClusterAction:
      type: object
      description: |2
        A boxed array of *ClusterAction*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ClusterAction'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ClusterActionHistory:
      type: object
      description: |2
        Base class for all action history.
      properties:
        action:
          description: |2
            The action that was executed recently.
          $ref: '#/components/schemas/ClusterAction'
        time:
          description: |2
            The time when the action was executed.
          type: string
          format: date-time
      required:
        - action
        - time
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfClusterActionHistory:
      type: object
      description: |2
        A boxed array of *ClusterActionHistory*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ClusterActionHistory'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ClusterAffinityRuleSpec:
      type: object
      description: |2
        The *ClusterAffinityRuleSpec* data object defines a set
        of virtual machines.
        
        DRS will attempt to schedule the virtual machines
        to run on the same host.
      properties:
        vm:
          description: |2
            List of virtual machine references.
            
            Refers instances of *VirtualMachine*.
          type: array
          items:
            $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - vm
      allOf:
        - $ref: '#/components/schemas/ClusterRuleInfo'

    ArrayOfClusterAffinityRuleSpec:
      type: object
      description: |2
        A boxed array of *ClusterAffinityRuleSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ClusterAffinityRuleSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ClusterAntiAffinityRuleSpec:
      type: object
      description: |2
        The *ClusterAntiAffinityRuleSpec* data object defines
        a set of virtual machines.
        
        DRS will attempt to schedule the virtual
        machines to run on different hosts.
      properties:
        vm:
          description: |2
            List of virtual machine references.
            
            Refers instances of *VirtualMachine*.
          type: array
          items:
            $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - vm
      allOf:
        - $ref: '#/components/schemas/ClusterRuleInfo'

    ArrayOfClusterAntiAffinityRuleSpec:
      type: object
      description: |2
        A boxed array of *ClusterAntiAffinityRuleSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ClusterAntiAffinityRuleSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ClusterAttemptedVmInfo:
      type: object
      description: |2
        This data class reports virtual machine powerOn information.
      properties:
        vm:
          description: |2
            The virtual machine being powered on.
            
            Refers instance of *VirtualMachine*.
          $ref: '#/components/schemas/ManagedObjectReference'
        task:
          description: |2
            The ID of the task, which monitors powering on.
            
            Refers instance of *Task*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - vm
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfClusterAttemptedVmInfo:
      type: object
      description: |2
        A boxed array of *ClusterAttemptedVmInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ClusterAttemptedVmInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ClusterClusterInitialPlacementAction:
      type: object
      description: |2
        Describes an action for the initial placement of a virtual machine in a
        cluster.
        
        This action is used by the cross cluster placement API when a
        virtual machine needs to be placed across a set of given clusters. See
        *Folder.PlaceVmsXCluster*. This action encapsulates details
        about the chosen cluster (via the resource pool inside that cluster), the
        chosen host and the chosen datastores for the disks of the virtual machine.
        
        ***Since:*** vSphere API Release 8.0.0.1
      properties:
        targetHost:
          description: |2
            The host where the virtual machine should be initially placed.
            
            This field
            is optional because the primary use case of
            *Folder.PlaceVmsXCluster* is to select the best cluster for
            placing VMs. This *ClusterClusterInitialPlacementAction.targetHost*
            denotes the best host within the best cluster and it is only returned
            if the client asks for it, which is determined by
            *PlaceVmsXClusterSpec.hostRecommRequired*. If
            *PlaceVmsXClusterSpec.hostRecommRequired* is set to true, then
            the targetHost is returned with a valid value and if it is either set to
            false or left unset, then targetHost is also left unset. When this field
            is unset, then it means that the client did not ask for the target host
            within the recommended cluster. It does not mean that there is no
            recommended host for placing this VM in the recommended cluster.
            
            Refers instance of *HostSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
        pool:
          description: |2
            The chosen resource pool for placing the virtual machine.
            
            This is non-
            optional because recommending the best cluster (by recommending the
            resource pool in the best cluster) is the primary use case for the
            *ClusterClusterInitialPlacementAction*.
            
            Refers instance of *ResourcePool*.
          $ref: '#/components/schemas/ManagedObjectReference'
        configSpec:
          description: |2
            The config spec of the virtual machine to be placed.
            
            The *Folder.PlaceVmsXCluster* method takes
            input of *VirtualMachineConfigSpec* from client and populates the backing
            for each virtual disk and the VM home path in it unless the input
            ConfigSpec already provides them. The existing settings in the input
            ConfigSpec are preserved and not overridden in the returned ConfigSpec
            in this action as well as the resulting
            *ClusterRecommendation*. This field is set based on whether
            the client needs *Folder.PlaceVmsXCluster* to recommend a
            backing datastore for the disks of the candidate VMs or not, which is
            specified via *PlaceVmsXClusterSpec.datastoreRecommRequired*.
            If *PlaceVmsXClusterSpec.datastoreRecommRequired* is set to
            true, then this
            *ClusterClusterInitialPlacementAction.configSpec* is also set
            with the backing of each disk populated. If
            *PlaceVmsXClusterSpec.datastoreRecommRequired* is either set to
            false or left unset, then this field is also left unset. When this field
            is left unset, then it means that the client did not ask to populate the
            backing datastore for the disks of the candidate VMs.
          $ref: '#/components/schemas/VirtualMachineConfigSpec'
      required:
        - pool
      allOf:
        - $ref: '#/components/schemas/ClusterAction'

    ArrayOfClusterClusterInitialPlacementAction:
      type: object
      description: |2
        A boxed array of *ClusterClusterInitialPlacementAction*. To be used in *Any* placeholders.
        
        ***Since:*** vSphere API Release 8.0.0.1
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ClusterClusterInitialPlacementAction'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ClusterConfigInfo:
      type: object
      deprecated: true
      description: |2
        Deprecated as of VI API 2.5, use *ClusterConfigInfoEx*.
        
        A complete cluster configuration.
      properties:
        dasConfig:
          description: |2
            Cluster-wide configuration of the vSphere HA service.
          $ref: '#/components/schemas/ClusterDasConfigInfo'
        dasVmConfig:
          description: |2
            List of virtual machine configurations for the vSphere HA
            service.
            
            Each entry applies to one virtual machine.
            
            If a virtual machine is not specified in this array, the service uses
            the default settings for that virtual machine.
          type: array
          items:
            $ref: '#/components/schemas/ClusterDasVmConfigInfo'
        drsConfig:
          description: |2
            Cluster-wide configuration of the VMware DRS service.
          $ref: '#/components/schemas/ClusterDrsConfigInfo'
        drsVmConfig:
          description: |2
            List of virtual machine configurations for the VMware DRS
            service.
            
            Each entry applies to one virtual machine.
            
            If a virtual machine is not specified in this array, the service uses
            the default settings for that virtual machine.
          type: array
          items:
            $ref: '#/components/schemas/ClusterDrsVmConfigInfo'
        rule:
          description: |2
            Cluster-wide rules.
          type: array
          items:
            $ref: '#/components/schemas/ClusterRuleInfo'
      required:
        - dasConfig
        - drsConfig
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfClusterConfigInfo:
      type: object
      description: |2
        A boxed array of *ClusterConfigInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ClusterConfigInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ClusterConfigInfoEx:
      type: object
      description: |2
        The *ClusterConfigInfoEx* data object describes a complete cluster
        configuration.
        
        For information about configuring a cluster, see
        *ClusterConfigSpecEx*.
      properties:
        systemVMsConfig:
          description: |2
            Configuration for vCLS system VMs deployment.
            
            ***Since:*** vSphere API Release 7.0.3.0
          $ref: '#/components/schemas/ClusterSystemVMsConfigInfo'
        dasConfig:
          description: |2
            Cluster-wide configuration of the vSphere HA service.
          $ref: '#/components/schemas/ClusterDasConfigInfo'
        dasVmConfig:
          description: |2
            List of virtual machine configurations for the vSphere HA
            service.
            
            Each entry applies to one virtual machine.
            
            If a virtual machine is not specified in this array, the service uses
            the default settings for that virtual machine.
          type: array
          items:
            $ref: '#/components/schemas/ClusterDasVmConfigInfo'
        drsConfig:
          description: |2
            Cluster-wide configuration of the VMware DRS service.
          $ref: '#/components/schemas/ClusterDrsConfigInfo'
        drsVmConfig:
          description: |2
            List of virtual machine configurations for the VMware DRS
            service.
            
            Each entry applies to one virtual machine.
            
            If a virtual machine is not specified in this array, the service uses
            the default settings for that virtual machine.
          type: array
          items:
            $ref: '#/components/schemas/ClusterDrsVmConfigInfo'
        rule:
          description: |2
            Cluster-wide rules.
          type: array
          items:
            $ref: '#/components/schemas/ClusterRuleInfo'
        orchestration:
          description: |2
            Cluster-wide configuration of VM orchestration.
          $ref: '#/components/schemas/ClusterOrchestrationInfo'
        vmOrchestration:
          description: |2
            List of virtual machine configurations that apply during cluster wide
            VM orchestration.
            
            Each entry applies to one virtual machine.
            
            If a virtual machine is not specified in this array, the service uses
            the default settings for that virtual machine.
          type: array
          items:
            $ref: '#/components/schemas/ClusterVmOrchestrationInfo'
        dpmConfigInfo:
          description: |2
            Cluster-wide configuration of the VMware DPM service.
          $ref: '#/components/schemas/ClusterDpmConfigInfo'
        dpmHostConfig:
          description: |2
            List of host configurations for the VMware DPM
            service.
            
            Each entry applies to one host.
            
            If a host is not specified in this array, the service uses
            the cluster default settings for that host.
          type: array
          items:
            $ref: '#/components/schemas/ClusterDpmHostConfigInfo'
        vsanConfigInfo:
          description: |2
            Cluster-wide configuration of the VMware VSAN service.
          $ref: '#/components/schemas/VsanClusterConfigInfo'
        vsanHostConfig:
          description: |2
            List of host configurations for the VMware VSAN service.
            
            Each entry applies to one host.
            
            If a host is not specified in this array, the service uses
            the cluster default settings for that host.
          type: array
          items:
            $ref: '#/components/schemas/VsanHostConfigInfo'
        group:
          description: |2
            Cluster-wide groups.
          type: array
          items:
            $ref: '#/components/schemas/ClusterGroupInfo'
        infraUpdateHaConfig:
          description: |2
            Cluster-wide configuration of the VMware InfraUpdateHA service.
          $ref: '#/components/schemas/ClusterInfraUpdateHaConfigInfo'
        proactiveDrsConfig:
          description: |2
            Cluster-wide configuration of the ProactiveDRS service.
          $ref: '#/components/schemas/ClusterProactiveDrsConfigInfo'
        cryptoConfig:
          description: |2
            Cluster-wide configuration of the encryption mode.
          $ref: '#/components/schemas/ClusterCryptoConfigInfo'
      required:
        - dasConfig
        - drsConfig
      allOf:
        - $ref: '#/components/schemas/ComputeResourceConfigInfo'

    ArrayOfClusterConfigInfoEx:
      type: object
      description: |2
        A boxed array of *ClusterConfigInfoEx*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ClusterConfigInfoEx'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ClusterConfigSpec:
      type: object
      deprecated: true
      description: |2
        Deprecated as of VI API 2.5, use *ClusterConfigSpecEx*.
        
        A complete cluster configuration.
        
        All fields are defined as
        optional. In case of a reconfiguration, unset fields are
        unchanged.
      properties:
        dasConfig:
          description: |2
            Changes to the configuration of vSphere HA.
          $ref: '#/components/schemas/ClusterDasConfigInfo'
        dasVmConfigSpec:
          description: |2
            Changes to the per-virtual-machine vSphere HA settings.
          type: array
          items:
            $ref: '#/components/schemas/ClusterDasVmConfigSpec'
        drsConfig:
          description: |2
            Changes to the configuration of the VMware DRS service.
          $ref: '#/components/schemas/ClusterDrsConfigInfo'
        drsVmConfigSpec:
          description: |2
            Changes to the per-virtual-machine DRS settings.
          type: array
          items:
            $ref: '#/components/schemas/ClusterDrsVmConfigSpec'
        rulesSpec:
          description: |2
            Changes to the set of rules.
          type: array
          items:
            $ref: '#/components/schemas/ClusterRuleSpec'
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfClusterConfigSpec:
      type: object
      description: |2
        A boxed array of *ClusterConfigSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ClusterConfigSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ClusterConfigSpecEx:
      type: object
      description: |2
        The *ClusterConfigSpecEx* data object provides a set of update
        specifications for complete cluster configuration.
        
        You can configure a cluster when you create a new cluster
        (the *Folder.CreateClusterEx* method) or when you
        reconfigure an existing cluster
        (the *ComputeResource.ReconfigureComputeResource_Task* method).
        
        All fields are optional. If you set the <code>modify</code>
        parameter to <code>true</code> when you call
        *ComputeResource.ReconfigureComputeResource_Task*, an unset property has no effect
        on the existing property value in the cluster configuration on the Server.
        If you set the <code>modify</code> parameter to <code>false</code> when you
        reconfigure a cluster, the cluster configuration is reverted to the default
        values, then the new configuration values are applied.
        
        Use the properties defined for this object to configure
        the following services:
        - HA (High Availability) -
          provides failover protection for virtual machines
          running in a cluster of ESX Server hosts.
          The virtual machines are located in a *Datastore*, which
          provides shared storage for the cluster.
          When a failure occurs that affects a protected virtual machine,
          HA will restart the virtual machine on another host.
          When HA detects a host failure, either the host has failed or it may be
          isolated from the network. The HA agent on an isolated host will power off
          or shutdown the virtual machines running on that host so that they
          can be restarted elsewhere.
          See *ClusterDasVmSettingsIsolationResponse_enum* for information
          about how a host handles network isolation.
          
          When it chooses a failover host, HA selects a host that is compatible
          with the virtual machine and that can support resource allocation for
          that virtual machine so that service level guarantees remain intact.
          HA does not consider hosts that are in maintenance mode, standby mode,
          or which are disconnected from the vCenter Server. When a host powers
          on or becomes available again, HA is reenabled on that host,
          so it becomes available for failover again.
          VMware recommends that you configure hosts and virtual machines
          so that all virtual machines can run on all hosts in the cluster.
          This will maximize the chances of restarting a VM after a failure.
          
          HA also restarts a virtual machine after a guest operating system failure.
          In this case, the virtual machine health monitoring service detects
          the guest failure, and HA restarts the virtual machine on the same host.
          The service monitors heartbeats from the VmTools service and optionally
          heartbeats that are generated by a third-party application monitor.
          See *ClusterVmToolsMonitoringSettings* and
          *ClusterDasConfigInfo*.*ClusterDasConfigInfo.vmMonitoring*.
          
          To enable HA for a cluster, set the
          *ClusterDasConfigInfo*.*ClusterDasConfigInfo.enabled*
          property to <code>true</code> and the
          *ClusterDasConfigInfo*.*ClusterDasConfigInfo.hostMonitoring*
          property to *enabled*.
          (The vSphere API uses the substring "das" in object, property,
          and method names for HA.<sup>1</sup>)
        - DRS (Distributed Resource Scheduling) - provides automatic initial
          virtual machine placement on any of the hosts in the cluster. DRS
          also makes automatic resource relocation and optimization decisions
          as hosts or virtual machines are added or removed from the cluster.
          You can also configure DRS for manual control, so that it only makes
          recommendations that you can review and carry out.
          
          To enable DRS for a cluster, set the
          *ClusterDrsConfigInfo*.*ClusterDrsConfigInfo.enabled*
          property to <code>true</code>.
        - DPM (Distributed Power Management) - supports optimized power
          consumption on the cluster. When virtual machines in a DRS
          cluster require fewer resources, DPM consolidates workloads
          onto fewer servers while maintaining quality of service guarantees
          and powers off the rest to reduce power consumption.
          When more resources are required, DPM brings the powered-down hosts online.
          
          To enable DPM for a cluster, set the
          *ClusterDpmConfigInfo*.*ClusterDpmConfigInfo.enabled*
          property to <code>true</code>.
        - VSAN - aggregrates hosts' local disks to present a single
          shared datastore to the cluster.
          
          To enable VSAN for a cluster, set the
          *VsanClusterConfigInfo.enabled* property to
          <code>true</code> for *ClusterConfigSpecEx.vsanConfig*.
        - InfraUpdateHA (Infrastructure update HA) - supports automatic
          migration of virtual machines to hosts with low risk of a
          catastrophic failure. Similar to DRS, you can also configure
          InfraUpdateHA for manual control to only makes recommendations that
          you can review and carry out. The health state of the hosts are
          propagated to HA to enable restarting of virtual machines in healthy
          hosts as possible.
          
          To enable InfraUpdateHA for a cluster, set the
          *ClusterInfraUpdateHaConfigInfo*.*ClusterInfraUpdateHaConfigInfo.enabled* property to
          <code>true</code>.
        - ProactiveDRS (Proactive Distributed Resources Scheduling) - supports
          virtual machine load balancing decisions that take predicted
          resource demand information into account.
          
          To enable ProactiveDRS for a cluster, set the
          *ClusterProactiveDrsConfigInfo*.*ClusterProactiveDrsConfigInfo.enabled* property to
          <code>true</code>.
          
        The HA, DRS, and DPM services are integrated with the FT (Fault Tolerance)
        and EVC (Enhanced vMotion Compatibility) services.
        Use the *VirtualMachine.CreateSecondaryVM_Task* method to establish
        fault tolerance for a virtual machine. Use the vSphere Client to configure EVC.
        The HA, DRS, DPM, FT, and EVC services interact under
        the following circumstances.
        - To determine initial placement of a virtual machine, DRS
          checks to see if the HA admission control policy on a
          potential host supports the addition of the powered on
          virtual machine. With the default setting, DRS will not
          power on more than four FT virtual machines per host.
          You can use the configuration editor in the vSphere Client
          to set the HA advanced option <code>das.maxFtVmsPerHost</code>
          to the desired number or to zero to disable.
        - When a host fails, HA determines placement within
          the cluster when it restarts the virtual machines.
          If there is insufficient capacity, and DPM has put one or more
          compatible hosts into standby, HA relies on DPM to bring more
          capacity online.
        - To use FT in a cluster, the cluster must be HA-enabled.
        - You can disable HA in a cluster while there are FT virtual
          machines registered on hosts in the cluster.
          While HA is disabled, powered on FT virtual machines will continue
          to run, but HA will not restart any virtual machines after a failure.
          When HA is disabled, you cannot use the following FT operations:
          - Turn on FT (*VirtualMachine.CreateSecondaryVM_Task*)
          - Enable FT (*VirtualMachine.EnableSecondaryVM_Task*)
          - Power on an FT virtual machine
            (*VirtualMachine.PowerOnVM_Task*)
          - Test failover and test secondary restart
            (*VirtualMachine.TerminateFaultTolerantVM_Task*)
        - In a cluster using DRS and HA with admission control turned on
          (*ClusterDasConfigInfo*.*ClusterDasConfigInfo.admissionControlEnabled*),
          the vCenter Server might not migrate virtual machines from hosts
          entering maintenance mode. This is because resources are reserved
          to maintain the failover level. You must use vMotion to manually
          migrate the virtual machines off the hosts.
          
          When admission control is disabled, failover resource constraints
          are not passed on to DRS and DPM. The constraints are not enforced.
          - DRS determines virtual machine placement and status
            (maintenance mode, standby mode) regardless of the impact
            this might have on failover requirements.
          - DPM powers off hosts (places them in standby mode)
            even if doing so violates failover requirements.
            If there is insufficient capacity when a failover
            occurs, DPM will attempt to bring more capacity online
            in order to correct the situation.
        - You must enable EVC in a cluster to enable DRS to manage FT primary
          and secondary virtual machine pairs in the cluster.
          For information about EVC clusters, see *EVCMode*.
          
          If EVC is disabled, vCenter automatically creates overrides
          to disable DRS for FT primary/secondary pairs in the cluster.
          vCenter will still use DRS to place a secondary virtual machine
          when it powers on.
          Attempts to remove the overrides or to enable DRS operations
          will fail.
        - EVC clusters support load balancing of powered on FT primary
          and secondary virtual machines. DRS behavior
          is governed by the overrides defined for the primary virtual
          machine. The secondary inherits DRS behavior from its primary.
          If you do not configure a DRS override for an FT virtual
          machine, DRS uses the cluster default
          (*ClusterDrsConfigInfo.defaultVmBehavior*).
          
        <sup>1</sup>High Availability was previously called Distributed
        Availability Services.
      properties:
        systemVMsConfig:
          description: |2
            Configuration for vCLS system VMs deployment.
            
            ***Since:*** vSphere API Release 7.0.3.0
          $ref: '#/components/schemas/ClusterSystemVMsConfigSpec'
        dasConfig:
          description: |2
            HA configuration; includes default settings for virtual machines.
          $ref: '#/components/schemas/ClusterDasConfigInfo'
        dasVmConfigSpec:
          description: |2
            HA configuration for individual virtual machines.
            
            The entries in this array override the cluster default
            settings
            (*ClusterDasConfigInfo*.*ClusterDasConfigInfo.defaultVmSettings*).
            You cannot specify an HA override for a secondary FT virtual
            machine. The secondary virtual machine will inherit whatever
            settings apply to its primary virtual machine. If you
            include an entry for a secondary, the reconfigure method
            will throw the fault
            *CannotChangeHaSettingsForFtSecondary*.
          type: array
          items:
            $ref: '#/components/schemas/ClusterDasVmConfigSpec'
        drsConfig:
          description: |2
            DRS configuration; includes default settings for virtual machines.
          $ref: '#/components/schemas/ClusterDrsConfigInfo'
        drsVmConfigSpec:
          description: |2
            DRS configuration for individual virtual machines.
            
            The entries in this array override the cluster default
            settings
            (*ClusterDrsConfigInfo*.*ClusterDrsConfigInfo.defaultVmBehavior*).
            You cannot specify a DRS override for a secondary FT virtual
            machine. The secondary virtual machine will inherit whatever
            setting applies to its primary virtual machine. If you
            include an entry for a secondary, the reconfigure method
            will throw the fault
            *CannotChangeDrsBehaviorForFtSecondary*.
          type: array
          items:
            $ref: '#/components/schemas/ClusterDrsVmConfigSpec'
        rulesSpec:
          description: |2
            Cluster affinity and anti-affinity rule configuration.
          type: array
          items:
            $ref: '#/components/schemas/ClusterRuleSpec'
        orchestration:
          description: |2
            Cluster configuration of VM orchestration.
          $ref: '#/components/schemas/ClusterOrchestrationInfo'
        vmOrchestrationSpec:
          description: |2
            List of specific VM configurations that apply during cluster wide
            VM orchestration.
            
            Each entry applies to one virtual machine, and
            overrides the cluster default settings.
          type: array
          items:
            $ref: '#/components/schemas/ClusterVmOrchestrationSpec'
        dpmConfig:
          description: |2
            DPM configuration; includes default settings for hosts.
          $ref: '#/components/schemas/ClusterDpmConfigInfo'
        dpmHostConfigSpec:
          description: |2
            DPM configuration for individual hosts.
            
            The entries in this array override the cluster default
            settings
            (*ClusterDpmConfigInfo*.*ClusterDpmConfigInfo.defaultDpmBehavior*).
          type: array
          items:
            $ref: '#/components/schemas/ClusterDpmHostConfigSpec'
        vsanConfig:
          description: |2
            VSAN configuration; includes default settings for hosts.
            
            When it is requested to change, vSAN related sub tasks will be
            generated automatically per member hosts, which are identified
            by using cluster reconfiguration task id as
            *TaskInfo.parentTaskKey*, and should be monitored
            and tracked separatedly.
          $ref: '#/components/schemas/VsanClusterConfigInfo'
        vsanHostConfigSpec:
          description: |2
            VSAN configuration for individual hosts.
            
            The entries in this array override the cluster default settings
            as specified in *VsanClusterConfigInfo*.
          type: array
          items:
            $ref: '#/components/schemas/VsanHostConfigInfo'
        groupSpec:
          description: |2
            Cluster-wide group configuration.
            
            The array contains one or more group specification objects.
            A group specification object contains a virtual machine group
            (*ClusterVmGroup*) or a host group (*ClusterHostGroup*).
            Groups can be related; see *ClusterVmHostRuleInfo*.
          type: array
          items:
            $ref: '#/components/schemas/ClusterGroupSpec'
        infraUpdateHaConfig:
          description: |2
            InfraUpdateHA configuration.
          $ref: '#/components/schemas/ClusterInfraUpdateHaConfigInfo'
        proactiveDrsConfig:
          description: |2
            ProactiveDrs configuration.
          $ref: '#/components/schemas/ClusterProactiveDrsConfigInfo'
        inHciWorkflow:
          description: |2
            Flag to place the cluster in the HCI workflow during cluster creation.
            
            This flag is specified only at the time of cluster creation.
            A cluster cannot be reconfigured to place it in the HCI workflow.
          type: boolean
        cryptoConfig:
          description: |2
            Cluster-wide configuration of encryption mode.
          $ref: '#/components/schemas/ClusterCryptoConfigInfo'
      allOf:
        - $ref: '#/components/schemas/ComputeResourceConfigSpec'

    ArrayOfClusterConfigSpecEx:
      type: object
      description: |2
        A boxed array of *ClusterConfigSpecEx*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ClusterConfigSpecEx'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ClusterCryptoConfigInfo:
      type: object
      properties:
        cryptoMode:
          description: |2
            The cluster encryption mode.
            
            See *ClusterCryptoConfigInfoCryptoMode_enum* for supported values.
          type: string
        policy:
          description: |2
            The encryption mode policy for the cluster.
            
            When unset, host keys will be automatically generated using the current
            default key provider.
            
            ***Since:*** vSphere API Release 8.0.3.0
          $ref: '#/components/schemas/ClusterComputeResourceCryptoModePolicy'
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfClusterCryptoConfigInfo:
      type: object
      description: |2
        A boxed array of *ClusterCryptoConfigInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ClusterCryptoConfigInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ClusterDasAamHostInfo:
      type: object
      deprecated: true
      description: |2
        Deprecated as of vSphere API 5.0, this object is no longer returned by
        vCenter Server. Availability information is now reported using
        *HostRuntimeInfo.dasHostState*.
        
        The *ClusterDasAamHostInfo* object contains a list of the ESX hosts
        in an HA cluster and a list that identifies the _primary_ hosts.
        
        (AAM is a component of the HA service.)
        The primary hosts share the joint responsibility of maintaining all cluster
        state and one will initiate failover actions should a failure occur.
        
        When you add an ESX host to a vSphere HA cluster, the host
        downloads HA agent components from the vCenter Server.
        The HA agent maintains communication with the vCenter Server.
        
        When the host downloads the HA agent, the host configures the agent
        to communicate with other agents in the cluster. A host that joins
        the cluster communicates with an existing primary host to complete
        its configuration (except when you are adding the first host to the cluster).
        - The first five hosts added to the cluster are designated
          as primary hosts. All subsequent hosts are designated as secondary hosts.
        - If a primary host is removed from the cluster,
          the vCenter Server promotes another host to primary status.
        - There must be at least one functional primary host for vSphere HA
          to operate correctly. If there is not an available primary host
          (no response), host configuration for HA will fail.
          If there is a total cluster failure, HA will begin restarting virtual
          machines as soon as one host recovers and its HA agent is up and running.
          
        One of the primary hosts assumes the role of the active primary host.
        The active primary host responsibilities include the following activities:
        - Decides where to restart virtual machines.
        - Tracks failed restart attempts.
        - Determines when it is appropriate to continue attempts to restart
          a virtual machine.
          
        If the active primary host fails, another primary host replaces it.
      properties:
        hostDasState:
          description: |2
            The state of HA on the hosts.
          type: array
          items:
            $ref: '#/components/schemas/ClusterDasAamNodeState'
        primaryHosts:
          description: |2
            The list of primary hosts.
          type: array
          items:
            type: string
      allOf:
        - $ref: '#/components/schemas/ClusterDasHostInfo'

    ArrayOfClusterDasAamHostInfo:
      type: object
      description: |2
        A boxed array of *ClusterDasAamHostInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ClusterDasAamHostInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ClusterDasAamNodeState:
      type: object
      deprecated: true
      description: |2
        Deprecated as of vSphere API 5.0, this object is no longer returned by
        vCenter Server. See *HostRuntimeInfo.dasHostState* for a
        description of the objects now used.
        
        The *ClusterDasAamNodeState* data object represents the state
        of the HA service on an ESX host.
        
        (AAM is a component of this service.)
      properties:
        host:
          description: |2
            Reference to the host.
            
            Refers instance of *HostSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
        name:
          description: |2
            Name of the host
            (*HostSystem*.*ManagedEntity.name*).
          type: string
        configState:
          description: |2
            Configuration state of the HA agent on the host.
            
            The property can be one of the following values:
            
            configuring  
            error  
            unconfiguring  
            running  
            
            <code>configState</code> represents setting or resetting the HA
            configuration on the host. If the configuration operation is
            successful, the value of <code>configState</code> changes
            to <code>running</code>. See *ClusterDasAamNodeStateDasState_enum*.
          type: string
        runtimeState:
          description: |2
            The runtime state of the HA agent on the node.
            
            The property can be one of the following values:
            
            uninitialized  
            initialized  
            running  
            error  
            agentShutdown  
            nodeFailed
            
            See *ClusterDasAamNodeStateDasState_enum*.
          type: string
      required:
        - host
        - name
        - configState
        - runtimeState
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfClusterDasAamNodeState:
      type: object
      description: |2
        A boxed array of *ClusterDasAamNodeState*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ClusterDasAamNodeState'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ClusterDasAdmissionControlInfo:
      type: object
      description: |2
        Base class for admission control related information of a vSphere HA cluster.
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfClusterDasAdmissionControlInfo:
      type: object
      description: |2
        A boxed array of *ClusterDasAdmissionControlInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ClusterDasAdmissionControlInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ClusterDasAdmissionControlPolicy:
      type: object
      description: |2
        Base class for specifying how admission control should be done for vSphere HA.
      properties:
        resourceReductionToToleratePercent:
          description: |2
            Percentage of resource reduction that a cluster of VMs can tolerate
            in case of a failover.
          type: integer
          format: int32
        pMemAdmissionControlEnabled:
          description: |2
            Flag that determines whether strict admission control for persistent
            memory is enabled.
            
            By default, this value is false.
            This flag can only be set to true if
            *ClusterDasConfigInfo.admissionControlEnabled* is set to true.
            When you use persistent memory admission control, the following
            operations are prevented, if doing so would violate the
            *ClusterDasConfigInfo.admissionControlEnabled*.
            - Creating a virtual machine with persistent memory.
            - Adding a virtual persistent memory device to a virtual machine.
            - Increasing the capacity of a virtual persistent memory device.
              
            ***Since:*** vSphere API Release 7.0.2.0
          type: boolean
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfClusterDasAdmissionControlPolicy:
      type: object
      description: |2
        A boxed array of *ClusterDasAdmissionControlPolicy*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ClusterDasAdmissionControlPolicy'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ClusterDasAdvancedRuntimeInfo:
      type: object
      description: |2
        Base class for advanced runtime information related to the high
        availability service for a cluster.
      properties:
        dasHostInfo:
          description: |2
            The information pertaining to the HA agents on the hosts
          $ref: '#/components/schemas/ClusterDasHostInfo'
        vmcpSupported:
          description: |2
            Whether HA VM Component Protection can be enabled for the cluster.
          $ref: '#/components/schemas/ClusterDasAdvancedRuntimeInfoVmcpCapabilityInfo'
        heartbeatDatastoreInfo:
          description: |2
            The map of a datastore to the set of hosts that are using
            the datastore for storage heartbeating.
          type: array
          items:
            $ref: '#/components/schemas/DasHeartbeatDatastoreInfo'
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfClusterDasAdvancedRuntimeInfo:
      type: object
      description: |2
        A boxed array of *ClusterDasAdvancedRuntimeInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ClusterDasAdvancedRuntimeInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DasHeartbeatDatastoreInfo:
      type: object
      description: |2
        Class for the selection of heartbeat datastores
      properties:
        datastore:
          description: |2
            Refers instance of *Datastore*.
          $ref: '#/components/schemas/ManagedObjectReference'
        hosts:
          description: |2
            Refers instances of *HostSystem*.
          type: array
          items:
            $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - datastore
        - hosts
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfDasHeartbeatDatastoreInfo:
      type: object
      description: |2
        A boxed array of *DasHeartbeatDatastoreInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DasHeartbeatDatastoreInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ClusterDasAdvancedRuntimeInfoVmcpCapabilityInfo:
      type: object
      description: |2
        Class for capability to support VM Component Protection
      properties:
        storageAPDSupported:
          description: |2
            If all hosts in the cluster support the reaction of VM Component Protection
            to storage All Paths Down timeout
            (@link vim.host.MountInfo.InaccessibleReason#AllPathsDown\_Timeout}
          type: boolean
        storagePDLSupported:
          description: |2
            If all hosts in the cluster support the reaction of VM Component Protection
            to storage Permanent Device Loss
            (@link vim.host.MountInfo.InaccessibleReason#PermanentDeviceLoss}
          type: boolean
      required:
        - storageAPDSupported
        - storagePDLSupported
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfClusterDasAdvancedRuntimeInfoVmcpCapabilityInfo:
      type: object
      description: |2
        A boxed array of *ClusterDasAdvancedRuntimeInfoVmcpCapabilityInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ClusterDasAdvancedRuntimeInfoVmcpCapabilityInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ClusterDasConfigInfo:
      type: object
      description: |2
        The *ClusterDasConfigInfo* data object contains configuration data
        about the HA service on a cluster.
        
        All fields are optional. If you set the <code>modify</code>
        parameter to <code>true</code> when you call
        *ComputeResource.ReconfigureComputeResource_Task*, an unset property has no effect
        on the existing property value in the cluster configuration on the Server.
        If you set the <code>modify</code> parameter to <code>false</code> when you
        reconfigure a cluster, the cluster configuration is reverted to the default
        values, then the new configuration values are applied.
      properties:
        enabled:
          description: |2
            Flag to indicate whether or not vSphere HA feature is enabled.
          type: boolean
        vmMonitoring:
          description: |2
            Level of HA Virtual Machine Health Monitoring Service.
            
            You can monitor both guest and application heartbeats, guest heartbeats only,
            or you can disable the service. See *ClusterDasConfigInfoVmMonitoringState_enum*.
            The default value is *vmMonitoringDisabled*.
            
            The Service level specified for the cluster determines
            the possible monitoring settings that you can use for individual virtual machines.
            See *ClusterVmToolsMonitoringSettings*.*ClusterVmToolsMonitoringSettings.vmMonitoring*.
          type: string
        hostMonitoring:
          description: |2
            Determines whether HA restarts virtual machines after a host fails.
            
            The default value is
            *ClusterDasConfigInfoServiceState_enum*.*enabled*.
            This property is meaningful only when
            *ClusterDasConfigInfo*.*ClusterDasConfigInfo.enabled* is <code>true</code>.
            
            When <code>hostMonitoring</code> is
            *enabled*, HA restarts virtual machines
            after a host fails.
            
            When <code>hostMonitoring</code> is
            *disabled*, HA does not restart
            virtual machines after a host fails.
            The status of Host Monitoring does not affect other services such
            as virtual machine Health Monitoring or Fault Tolerance.
            The rest of the cluster operations follow normal processing.
            No configuration information is lost and re-enabling the service
            is a quick operation.
          type: string
        vmComponentProtecting:
          description: |2
            This property indicates if vSphere HA VM Component Protection service
            is enabled.
            
            The default value is *disabled*.
            
            When <code>vmComponentProtecting</code> is set to
            *disabled*, reaction to all types of VM
            component failures is disabled.
            
            When <code>vmComponentProtecting</code> is set to
            *enabled*, VM Component Protection service
            will detect and react to component failures. The actual reaction is determined
            by *ClusterVmComponentProtectionSettings* which is referenced by both cluster
            level configuration (*ClusterDasConfigInfo.defaultVmSettings*) and per-VM
            override *ClusterConfigInfoEx.dasVmConfig*.
          type: string
        failoverLevel:
          deprecated: true
          description: |2
            Deprecated as of vSphere API 4.0, use
            *ClusterFailoverLevelAdmissionControlPolicy* to set
            *ClusterDasConfigInfo.admissionControlPolicy*.
            
            Configured failover level.
            
            This is the number of physical host failures
            that can be tolerated without impacting the ability to satisfy the
            minimums for all running virtual machines. Acceptable values range from one to
            four.
          type: integer
          format: int32
        admissionControlPolicy:
          description: |2
            Virtual machine admission control policy for vSphere HA.
            
            The policies specify resource availability for failover support.
            - Failover host admission policy
              *ClusterFailoverHostAdmissionControlPolicy* -
              specify one or more dedicated failover hosts.
            - Failover level policy
              *ClusterFailoverLevelAdmissionControlPolicy* -
              the limit of host failures for which resources are reserved.
              When you use the failover level policy,
              HA partitions resources into slots. A slot represents the minimum
              CPU and memory resources that are required to support
              any powered on virtual machine in the cluster.
              To retrieve information about partitioned resources, use the
              *ClusterComputeResource.RetrieveDasAdvancedRuntimeInfo*
              method.
            - Resources admission policy
              *ClusterFailoverResourcesAdmissionControlPolicy* -
              CPU and memory resources reserved for failover support.
              When you use the resources policy, you can reserve
              a percentage of the aggregate cluster resource for failover.
          $ref: '#/components/schemas/ClusterDasAdmissionControlPolicy'
        admissionControlEnabled:
          description: |2
            Flag that determines whether strict admission control is enabled.
            
            When you use admission control, the following operations are
            prevented, if doing so would violate the *ClusterDasConfigInfo.admissionControlPolicy*.
            - Powering on a virtual machine in the cluster.
            - Migrating a virtual machine into the cluster.
            - Increasing the CPU or memory reservation of powered-on
              virtual machines in the cluster.
              
            With admission control disabled, there is no assurance that
            all virtual machines in the HA cluster can be restarted after
            a host failure. VMware recommends that you do not disable
            admission control, but you might need to do so temporarily,
            for the following reasons:
            - If you need to violate the failover constraints when there
              are not enough resources to support them (for example,
              if you are placing hosts in standby mode to test them
              for use with DPM).
            - If an automated process needs to take actions that might
              temporarily violate the failover constraints (for example,
              as part of an upgrade directed by VMware Update Manager).
            - If you need to perform testing or maintenance operations.
          type: boolean
        defaultVmSettings:
          description: |2
            Cluster-wide defaults for virtual machine HA settings.
            
            When a virtual machine has no HA configuration
            (*ClusterDasVmConfigSpec*), it uses the values
            specified here.
          $ref: '#/components/schemas/ClusterDasVmSettings'
        option:
          description: |2
            Advanced settings.
          type: array
          items:
            $ref: '#/components/schemas/OptionValue'
        heartbeatDatastore:
          description: |2
            The list of preferred datastores to use for storage heartbeating.
            
            Each of the specified datastores should be active and mounted
            by more than one host. There is no limit on the number of specified
            datastores and no priority among them.
            The specified datastores will replace those previously specified and
            an empty list will delete all such earlier specified ones.
            
            vCenter Server chooses the heartbeat datastores for a host from the
            set specified by *ClusterDasConfigInfo.hBDatastoreCandidatePolicy*.
            The choice is made based on datastore connectivity and storage array
            redundancy (in case of VMFS).
            
            The final set of selected heartbeat datastores is reported via
            *ClusterDasAdvancedRuntimeInfo.heartbeatDatastoreInfo*.
            
            Refers instances of *Datastore*.
          type: array
          items:
            $ref: '#/components/schemas/ManagedObjectReference'
        hBDatastoreCandidatePolicy:
          description: |2
            The policy on what datastores will be used by vCenter Server to choose
            heartbeat datastores.
            
            See *ClusterDasConfigInfoHBDatastoreCandidate_enum* for all options.
            The default value is
            *allFeasibleDsWithUserPreference*.
          type: string
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfClusterDasConfigInfo:
      type: object
      description: |2
        A boxed array of *ClusterDasConfigInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ClusterDasConfigInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ClusterDasData:
      type: object
      description: |2
        Base class for DAS data for high availability service for a cluster.
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfClusterDasData:
      type: object
      description: |2
        A boxed array of *ClusterDasData*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ClusterDasData'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ClusterDasDataSummary:
      type: object
      description: |2
        This class contains the summary of the data that DAS needs/uses.
        
        The actual data is available in *ClusterDasDataDetails* and can be retrieved
        using the *ClusterComputeResource.RetrieveDasData* method.
        This class is meant for VMware internal use only.
      properties:
        hostListVersion:
          description: |2
            The version corresponding to the hostList
          type: integer
          format: int64
        clusterConfigVersion:
          description: |2
            The version corresponding to the clusterConfig
          type: integer
          format: int64
        compatListVersion:
          description: |2
            The version corresponding to the compatList
          type: integer
          format: int64
      required:
        - hostListVersion
        - clusterConfigVersion
        - compatListVersion
      allOf:
        - $ref: '#/components/schemas/ClusterDasData'

    ArrayOfClusterDasDataSummary:
      type: object
      description: |2
        A boxed array of *ClusterDasDataSummary*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ClusterDasDataSummary'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ClusterDasFailoverLevelAdvancedRuntimeInfo:
      type: object
      description: |2
        Advanced runtime information related to the high availability service
        for a cluster that has been configured with a failover level admission control
        policy.
        
        See *ClusterFailoverLevelAdmissionControlPolicy*.
      properties:
        slotInfo:
          description: |2
            Slot information for this cluster.
          $ref: '#/components/schemas/ClusterDasFailoverLevelAdvancedRuntimeInfoSlotInfo'
        totalSlots:
          description: |2
            The total number of slots available in the cluster.
            
            See also *ClusterDasFailoverLevelAdvancedRuntimeInfoSlotInfo*.
          type: integer
          format: int32
        usedSlots:
          description: |2
            The number of slots currently being used.
            
            See also *ClusterDasFailoverLevelAdvancedRuntimeInfoSlotInfo*.
          type: integer
          format: int32
        unreservedSlots:
          description: |2
            The number of slots that are not used by currently powered on virtual machines
            and not reserved to satisfy the configured failover level.
            
            This number gives
            an indication of how many additional virtual machines can be powered on in
            this cluster without violating the failover level (assuming the new virtual
            machine's reservations are satisfied by the current slot size).
            This value is computed as follows (where m is the configured failover level):
            Remove the m largest hosts (ie. the ones with the most slots) from the list
            of "good" hosts (see *ClusterDasFailoverLevelAdvancedRuntimeInfo.totalGoodHosts*). Sum up the number of slots on
            the remaining hosts and deduct the number of currently used slots
            (see *ClusterDasFailoverLevelAdvancedRuntimeInfo.usedSlots*). If this number is negative, use zero instead.
            
            See also *ClusterDasFailoverLevelAdvancedRuntimeInfoSlotInfo*.
          type: integer
          format: int32
        totalVms:
          description: |2
            The total number of powered on vms in the cluster.
          type: integer
          format: int32
        totalHosts:
          description: |2
            The total number of hosts in the cluster.
          type: integer
          format: int32
        totalGoodHosts:
          description: |2
            The total number of connected hosts that are not in maintance mode and that
            do not have any DAS-related config issues on them.
          type: integer
          format: int32
        hostSlots:
          type: array
          items:
            $ref: '#/components/schemas/ClusterDasFailoverLevelAdvancedRuntimeInfoHostSlots'
        vmsRequiringMultipleSlots:
          description: |2
            The list of virtual machines whose reservations and memory overhead are not
            satisfied by a single slot.
          type: array
          items:
            $ref: '#/components/schemas/ClusterDasFailoverLevelAdvancedRuntimeInfoVmSlots'
      required:
        - slotInfo
        - totalSlots
        - usedSlots
        - unreservedSlots
        - totalVms
        - totalHosts
        - totalGoodHosts
      allOf:
        - $ref: '#/components/schemas/ClusterDasAdvancedRuntimeInfo'

    ArrayOfClusterDasFailoverLevelAdvancedRuntimeInfo:
      type: object
      description: |2
        A boxed array of *ClusterDasFailoverLevelAdvancedRuntimeInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ClusterDasFailoverLevelAdvancedRuntimeInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ClusterDasFailoverLevelAdvancedRuntimeInfoHostSlots:
      type: object
      properties:
        host:
          description: |2
            The reference to the host.
            
            Refers instance of *HostSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
        slots:
          description: |2
            The number of slots in this host.
          type: integer
          format: int32
      required:
        - host
        - slots
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfClusterDasFailoverLevelAdvancedRuntimeInfoHostSlots:
      type: object
      description: |2
        A boxed array of *ClusterDasFailoverLevelAdvancedRuntimeInfoHostSlots*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ClusterDasFailoverLevelAdvancedRuntimeInfoHostSlots'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ClusterDasFailoverLevelAdvancedRuntimeInfoSlotInfo:
      type: object
      description: |2
        A slot represents an amount of memory and cpu resources on a physical host for use
        by a virtual machine.
        
        It is used in computing the resources to be reserved for
        failover.
      properties:
        numVcpus:
          deprecated: true
          description: |2
            Deprecated as of vSphere API 5.0, the number of vcpus is no longer used
            for slot calculations.
            
            The number of virtual cpus of a slot is defined as the maximum number of
            virtual cpus any powered on virtual machine has.
          type: integer
          format: int32
        cpuMHz:
          description: |2
            The cpu speed of a slot is defined as the maximum cpu reservation of any
            powered on virtual machine in the cluster, or any otherwise defined minimum,
            whichever is larger.
          type: integer
          format: int32
        memoryMB:
          description: |2
            The memory size of a slot is defined as the maximum memory reservation plus
            memory overhead of any powered on virtual machine in the cluster, or any
            otherwise defined minimum, whichever is larger.
          type: integer
          format: int32
      required:
        - numVcpus
        - cpuMHz
        - memoryMB
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfClusterDasFailoverLevelAdvancedRuntimeInfoSlotInfo:
      type: object
      description: |2
        A boxed array of *ClusterDasFailoverLevelAdvancedRuntimeInfoSlotInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ClusterDasFailoverLevelAdvancedRuntimeInfoSlotInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ClusterDasFailoverLevelAdvancedRuntimeInfoVmSlots:
      type: object
      properties:
        vm:
          description: |2
            The reference to the virtual machine
            
            Refers instance of *VirtualMachine*.
          $ref: '#/components/schemas/ManagedObjectReference'
        slots:
          description: |2
            The number of slots required by this virtual machine
          type: integer
          format: int32
      required:
        - vm
        - slots
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfClusterDasFailoverLevelAdvancedRuntimeInfoVmSlots:
      type: object
      description: |2
        A boxed array of *ClusterDasFailoverLevelAdvancedRuntimeInfoVmSlots*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ClusterDasFailoverLevelAdvancedRuntimeInfoVmSlots'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ClusterDasFdmHostState:
      type: object
      description: |2
        The *ClusterDasFdmHostState* data object
        describes the availability state of each active host in a
        vSphere HA enabled cluster.
        
        In a vSphere HA cluster, the active hosts form a fault domain.
        A host is inactive if it is in standby or maintenance mode, or
        it has been disconnected from vCenter Server. A vSphere HA
        agent, called the Fault Domain Manager (FDM), runs on each host in the
        fault domain.
        
        One FDM serves as the master and the remaining FDMs as its slaves.
        The master is responsible for monitoring the availability of the hosts
        and VMs in the cluster, and restarting any VMs that fail due to a
        host failure or non-user-initiated power offs. The master is also
        responsible for reporting fault-domain state to vCenter Server.
        
        The master FDM is determined through election by the FDMs that are
        alive at the time. An election occurs in the following circumstances:
        - When the vSphere HA feature is enabled for the cluster.
        - When the master's host fails.
        - When the management network is partitioned. In a network partition
          there will be a master for each partition. However, only one master
          will be responsible for a given VM. When the partition is
          resolved, all but one of the masters will abdicate.
        - After a host in a vSphere HA cluster powers back up following a failure
          that caused all hosts in the cluster to power off.
          
        The slaves are responsible for reporting state updates to the master and
        restarting VMs as required. All FDMs provide the VM/Application Health
        Monitoring Service.
      properties:
        state:
          description: |2
            The Availability State of a host based on information
            reported by the entity given by the
            *ClusterDasFdmHostState.stateReporter* property.
            
            See
            *ClusterDasFdmAvailabilityState_enum* for the set of
            states.
          type: string
        stateReporter:
          description: |2
            The entity reporting the state of the host.
            
            If the reporter is a host,
            the property reports which host, whereas if the reporter is vCenter Server,
            the property is unset.
            
            Refers instance of *HostSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - state
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfClusterDasFdmHostState:
      type: object
      description: |2
        A boxed array of *ClusterDasFdmHostState*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ClusterDasFdmHostState'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ClusterDasHostInfo:
      type: object
      description: |2
        HA specific advanced information pertaining to the hosts in the cluster.
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfClusterDasHostInfo:
      type: object
      description: |2
        A boxed array of *ClusterDasHostInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ClusterDasHostInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ClusterDasHostRecommendation:
      type: object
      description: |2
        A host recommendation for a virtual machine managed by the VMware
        HA Service.
      properties:
        host:
          description: |2
            The recommended host.
            
            Refers instance of *HostSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
        drsRating:
          description: |2
            Rating as computed by DRS for a DRS-enabled cluster.
            
            Rating
            range from 1 to 5, and the higher the rating, the stronger DRS
            suggests this host is picked for the operation.
          type: integer
          format: int32
      required:
        - host
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfClusterDasHostRecommendation:
      type: object
      description: |2
        A boxed array of *ClusterDasHostRecommendation*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ClusterDasHostRecommendation'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ClusterDasVmConfigInfo:
      type: object
      description: |2
        The *ClusterDasVmConfigInfo* data object contains
        the HA configuration for a single virtual machine.
        
        All fields are optional. If you set the <code>modify</code>
        parameter to <code>true</code> when you call
        *ComputeResource.ReconfigureComputeResource_Task*, an unset property has no effect
        on the existing property value in the cluster configuration on the Server.
        If you set the <code>modify</code> parameter to <code>false</code> when you
        reconfigure a cluster, the cluster configuration is reverted to the default
        values, then the new configuration values are applied.
      properties:
        key:
          description: |2
            Reference to the virtual machine.
            
            Refers instance of *VirtualMachine*.
          $ref: '#/components/schemas/ManagedObjectReference'
        restartPriority:
          deprecated: true
          description: |2
            Deprecated as of VI API 2.5, use
            *ClusterDasVmConfigInfo.dasSettings*.*ClusterDasVmSettings.restartPriority*.
            If you specify *ClusterDasVmConfigInfo.restartPriority* here and in
            *ClusterDasVmSettings*, the value in *ClusterDasVmSettings*
            has precedence.
            
            Restart priority for a virtual machine.
            
            If there is nothing specified here, then the defaults are picked up from
            *ClusterDasConfigInfo.defaultVmSettings*.
          $ref: '#/components/schemas/DasVmPriority_enum'
        powerOffOnIsolation:
          deprecated: true
          description: |2
            Deprecated as of VI API 2.5, use
            *ClusterDasVmConfigInfo.dasSettings*.*ClusterDasVmSettings.isolationResponse*.
            If you specify both *ClusterDasVmConfigInfo.powerOffOnIsolation* and
            *ClusterDasVmSettings.isolationResponse*, the value in
            *ClusterDasVmSettings.isolationResponse* has precedence.
            
            Flag to indicate whether or not the virtual machine should be powered off if a
            host determines that it is isolated from the rest of the compute resource.
            
            If there is nothing specified here, then the defaults are picked up from
            *ClusterDasConfigInfo.defaultVmSettings*.
          type: boolean
        dasSettings:
          description: |2
            HA settings that apply to this virtual machine.
            
            Values specified in this object override the cluster-wide
            defaults for virtual machines (*ClusterDasConfigInfo.defaultVmSettings*).
          $ref: '#/components/schemas/ClusterDasVmSettings'
      required:
        - key
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfClusterDasVmConfigInfo:
      type: object
      description: |2
        A boxed array of *ClusterDasVmConfigInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ClusterDasVmConfigInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ClusterDasVmConfigSpec:
      type: object
      description: |2
        An incremental update to the per-virtual-machine vSphere HA configuration.
      properties:
        info:
          $ref: '#/components/schemas/ClusterDasVmConfigInfo'
      allOf:
        - $ref: '#/components/schemas/ArrayUpdateSpec'

    ArrayOfClusterDasVmConfigSpec:
      type: object
      description: |2
        A boxed array of *ClusterDasVmConfigSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ClusterDasVmConfigSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ClusterDasVmSettings:
      type: object
      description: |2
        The *ClusterDasVmSettings* data object contains the HA configuration
        settings specified for a single virtual machine (identified by
        *ClusterDasVmConfigInfo*.*ClusterDasVmConfigInfo.key*)
        or as cluster-wide defaults
        *ClusterDasConfigInfo*.*ClusterDasConfigInfo.defaultVmSettings*
        
        All fields are optional. If you set the <code>modify</code> parameter to
        <code>true</code> when you call *ComputeResource.ReconfigureComputeResource_Task*,
        an unset property has no effect on the existing property value in the
        cluster configuration on the Server. If you set the <code>modify</code>
        parameter to <code>false</code> when you reconfigure a cluster, the cluster
        configuration is reverted to the default values, then the new configuration
        values are applied.
      properties:
        restartPriority:
          description: |2
            Restart priority for a virtual machine.
            
            If not specified at either the cluster level or
            the virtual machine level, this will default to <code>medium</code>.
            
            See also *ClusterDasVmSettingsRestartPriority_enum*.
          type: string
        restartPriorityTimeout:
          description: |2
            This setting is used to specify a maximum time the lower priority VMs
            should wait for the higher priority VMs to be ready.
            
            If the higher
            priority Vms are not ready by this time, then the lower priority VMs
            are restarted irrespective of the VM ready state. This timeout can be
            used to prevent the failover of lower priority VMs to be stuck
            infinitely.
            
            This timeout is not used if ready condition is
            *none*
            
            Timeout specified in seconds. To use cluster setting for a VM override,
            set to -1 in per-VM.
            setting.
          type: integer
          format: int32
        isolationResponse:
          description: |2
            Indicates whether or not the virtual machine should be powered off if a
            host determines that it is isolated from the rest of the compute
            resource.
            
            If not specified at either the cluster level or
            the virtual machine level, this will default to <code>powerOff</code>.
            
            See also *ClusterDasVmSettingsIsolationResponse_enum*.
          type: string
        vmToolsMonitoringSettings:
          description: |2
            Configuration for the VM Health Monitoring Service.
          $ref: '#/components/schemas/ClusterVmToolsMonitoringSettings'
        vmComponentProtectionSettings:
          description: |2
            Configuration for the VM Component Protection Service.
          $ref: '#/components/schemas/ClusterVmComponentProtectionSettings'
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfClusterDasVmSettings:
      type: object
      description: |2
        A boxed array of *ClusterDasVmSettings*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ClusterDasVmSettings'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ClusterDatastoreUpdateSpec:
      type: object
      description: |2
        An incremental update to a Datastore list.
        
        ***Since:*** vSphere API Release 7.0.3.0
      properties:
        datastore:
          description: |2
            Refers instance of *Datastore*.
          $ref: '#/components/schemas/ManagedObjectReference'
      allOf:
        - $ref: '#/components/schemas/ArrayUpdateSpec'

    ArrayOfClusterDatastoreUpdateSpec:
      type: object
      description: |2
        A boxed array of *ClusterDatastoreUpdateSpec*. To be used in *Any* placeholders.
        
        ***Since:*** vSphere API Release 7.0.3.0
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ClusterDatastoreUpdateSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ClusterDependencyRuleInfo:
      type: object
      description: |2
        The *ClusterDependencyRuleInfo* data object indentifies VM-to-VM
        dependencies.
        
        A VM-VM Dependency rule identifies the following groups.
        - A virtual machine group - *ClusterDependencyRuleInfo.vmGroup*
        - A "depends on" virtual machine group - *ClusterDependencyRuleInfo.dependsOnVmGroup*.
          
        The VMs in *ClusterDependencyRuleInfo.vmGroup* depends on the list of VMs specified in *ClusterDependencyRuleInfo.dependsOnVmGroup*.
        
        For example, this rule is used during vSphere HA VM recovery
        orchestration. vSphere HA will not restart the VMs in *ClusterDependencyRuleInfo.vmGroup*
        until all the VMs in *ClusterDependencyRuleInfo.dependsOnVmGroup* are deemded "ready" (See
        *ClusterVmReadiness*).
        
        All the virtual machines referenced by this rule must be in
        the same cluster.
      properties:
        vmGroup:
          description: |2
            Virtual group name.
            
            The virtual group may contain one or more virtual
            machines.
            *ClusterVmGroup*.*ClusterGroupInfo.name*
          type: string
        dependsOnVmGroup:
          description: |2
            Depdendency virtual group name
            (*ClusterVmGroup*.*ClusterGroupInfo.name*).
            
            The virtual group may contain one or more virtual machines.
          type: string
      required:
        - vmGroup
        - dependsOnVmGroup
      allOf:
        - $ref: '#/components/schemas/ClusterRuleInfo'

    ArrayOfClusterDependencyRuleInfo:
      type: object
      description: |2
        A boxed array of *ClusterDependencyRuleInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ClusterDependencyRuleInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ClusterDpmConfigInfo:
      type: object
      description: |2
        Configuration of the VMware DPM service.
        
        All fields are defined as optional. In case of a reconfiguration,
        unset fields are not changed.
      properties:
        enabled:
          description: |2
            Flag indicating whether or not the service is enabled.
            
            This
            service can not be enabled, unless DRS is enabled as well.
          type: boolean
        defaultDpmBehavior:
          description: |2
            Specifies the default VMware DPM behavior for
            hosts.
            
            This default behavior can be overridden on a per host
            basis using the *ClusterDpmHostConfigInfo* object.
          $ref: '#/components/schemas/DpmBehavior_enum'
        hostPowerActionRate:
          description: |2
            DPM generates only those recommendations that are above the
            specified rating.
            
            Ratings vary from 1 to 5. This setting applies
            to both manual and automated (@link DpmBehavior) DPM clusters.
          type: integer
          format: int32
        option:
          deprecated: true
          description: |2
            Deprecated as of vSphere API 4.1, use
            *ClusterDrsConfigInfo.option*.
            
            Advanced settings.
          type: array
          items:
            $ref: '#/components/schemas/OptionValue'
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfClusterDpmConfigInfo:
      type: object
      description: |2
        A boxed array of *ClusterDpmConfigInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ClusterDpmConfigInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ClusterDpmHostConfigInfo:
      type: object
      description: |2
        DPM configuration for a single host.
        
        This makes
        it possible to override the default behavior for an individual
        host.
      properties:
        key:
          description: |2
            Reference to the host.
            
            Refers instance of *HostSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
        enabled:
          description: |2
            Flag to indicate whether or not VirtualCenter is allowed to perform any
            power related operations or recommendations for this host.
            
            If this flag is false, the host is effectively excluded from
            DPM service.
            
            If no individual DPM specification exists for a host,
            this property defaults to true.
          type: boolean
        behavior:
          description: |2
            Specifies the particular DPM behavior for this host.
            
            See also *ClusterDpmConfigInfo*.
          $ref: '#/components/schemas/DpmBehavior_enum'
      required:
        - key
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfClusterDpmHostConfigInfo:
      type: object
      description: |2
        A boxed array of *ClusterDpmHostConfigInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ClusterDpmHostConfigInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ClusterDpmHostConfigSpec:
      type: object
      description: |2
        The *ClusterDpmHostConfigSpec* data object provides information
        that the Server uses to update the DPM configuration for a
        single host (identified by the
        *ClusterDpmHostConfigInfo.key* property).
        
        The host DPM configuration overrides the cluster
        default DPM setting
        (*ClusterConfigSpecEx*.*ClusterConfigSpecEx.dpmConfig*).
        
        The vSphere API defines three update operations
        (*ArrayUpdateSpec*.*ArrayUpdateSpec.operation*).
        - add: Define DPM behavior for a host. If the cluster
          configuration already includes a DPM behavior override
          for the specified host, this operation
          removes the existing override and adds the new one.
          The new DPM override will use the cluster default value
          if you do not specify the behavior property
          (*ClusterDpmConfigInfo.defaultDpmBehavior*).
        - edit: Perform an incremental update to an existing
          DPM configuration entry for a host.
          The reconfigure method changes only the properties
          that you set in the data object. The entry must exist
          in the
          *ClusterConfigSpecEx*.*ClusterConfigSpecEx.dpmHostConfigSpec* array.
        - remove: Remove the DPM override for the specified
          host. To identify the host to delete, use the
          *ArrayUpdateSpec.removeKey* property
          to specify the *ClusterDpmHostConfigInfo.key*
          in the host override.
          
        Use the *ComputeResource.ReconfigureComputeResource_Task* method
        to update the DPM configuration. If you set the modify parameter
        to true, you can use any of the three operations (add, edit, or remove).
        If you set the modify parameter to false, you can use only the
        add operation.
      properties:
        info:
          $ref: '#/components/schemas/ClusterDpmHostConfigInfo'
      allOf:
        - $ref: '#/components/schemas/ArrayUpdateSpec'

    ArrayOfClusterDpmHostConfigSpec:
      type: object
      description: |2
        A boxed array of *ClusterDpmHostConfigSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ClusterDpmHostConfigSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ClusterDrsConfigInfo:
      type: object
      description: |2
        The *ClusterDrsConfigInfo* data object contains configuration information
        for the VMware DRS service.
        
        All fields are optional. If you set the <code>modify</code>
        parameter to <code>true</code> when you call
        *ComputeResource.ReconfigureComputeResource_Task*, an unset property has no effect
        on the existing property value in the cluster configuration on the Server.
        If you set the <code>modify</code> parameter to <code>false</code> when you
        reconfigure a cluster, the cluster configuration is reverted to the default
        values, then the new configuration values are applied.
      properties:
        enabled:
          deprecated: true
          description: |2
            Deprecated as of vSphere API 7.0.
            To disable DRS load balancing, please use the lowest DRS aggressiveness
            level, setting *ClusterDrsConfigInfo.vmotionRate* to 5, and/or
            setting *ClusterDrsConfigInfo.defaultVmBehavior* to manual.
            The former only generates manadatory move recommendations, not load
            balancing recommendations. The latter only generates recommendations,
            without executing them.
            To remove all the child resource pools, please find the root resource
            pool *ComputeResource.resourcePool*, and destroy all its
            children *ResourcePool.DestroyChildren*.
            Vice versa.
            
            Flag indicating whether or not DRS service is enabled.
          type: boolean
        enableVmBehaviorOverrides:
          description: |2
            Flag that dictates whether DRS Behavior overrides for individual
            virtual machines (*ClusterDrsVmConfigInfo*) are enabled.
            
            The default
            value is <code>true</code>.
            
            When this flag is <code>true</code>, the
            *ClusterConfigSpecEx*.*ClusterConfigSpecEx.drsVmConfigSpec*
            values override the *ClusterDrsConfigInfo.defaultVmBehavior*.
            
            When this flag is <code>false</code>, the
            *ClusterDrsConfigInfo.defaultVmBehavior* value applies to all virtual
            machines, with the following exception: in a cluster that has EVC disabled,
            you cannot override the virtual machine setting
            (*ClusterConfigSpecEx.drsVmConfigSpec*)
            for Fault Tolerance virtual machines.
          type: boolean
        defaultVmBehavior:
          description: |2
            Specifies the cluster-wide default DRS behavior for virtual machines.
            
            You can override the default behavior for a virtual machine
            by using the *ClusterDrsVmConfigInfo* object.
          $ref: '#/components/schemas/DrsBehavior_enum'
        vmotionRate:
          description: |2
            Threshold for generated *ClusterRecommendation*s.
            
            DRS generates only those recommendations that are above the
            specified vmotionRate. Ratings vary from 1 to 5. This setting applies
            to manual, partiallyAutomated, and fullyAutomated
            DRS clusters. See *DrsBehavior_enum*.
          type: integer
          format: int32
        scaleDescendantsShares:
          description: |2
            Specifies the scaling behavior of the shares of all resource pools
            in the cluster.
            
            See *ResourceConfigSpecScaleSharesBehavior_enum*
            for possible values. If any scaling behavior other than
            *disabled* is specified,
            the system will scale the CPU and memory shares allocated to each
            resource pool with the total shares of all powered on virtual machines
            under each respective pool. The system will also use the
            *SharesInfo* set on each resource pool as a multiplier for the
            scale. Setting the
            *ClusterDrsConfigInfo.scaleDescendantsShares* on the cluster
            is equivalent to setting the
            *ResourceConfigSpec.scaleDescendantsShares* on the root
            resource pool.
          type: string
        option:
          description: |2
            Advanced settings.
          type: array
          items:
            $ref: '#/components/schemas/OptionValue'
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfClusterDrsConfigInfo:
      type: object
      description: |2
        A boxed array of *ClusterDrsConfigInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ClusterDrsConfigInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ClusterDrsFaults:
      type: object
      description: |2
        The faults generated by DRS when it tries to make recommendations
        for rule enforcement, power management, etc., and indexed in a tree
        structure with reason for recommendations and VM to migrate (optional)
        as the index keys.
      properties:
        reason:
          description: |2
            A reason code explaining why this set of recommendations were attempted
            by DRS when it generated the faults.
          type: string
        faultsByVm:
          description: |2
            The faults grouped by VMs that DRS was trying to migrate.
          type: array
          items:
            $ref: '#/components/schemas/ClusterDrsFaultsFaultsByVm'
      required:
        - reason
        - faultsByVm
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfClusterDrsFaults:
      type: object
      description: |2
        A boxed array of *ClusterDrsFaults*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ClusterDrsFaults'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ClusterDrsFaultsFaultsByVirtualDisk:
      type: object
      description: |2
        The faults generated by storage DRS when it tries to move a virtual disk.
      properties:
        disk:
          description: |2
            The virtual disk that storage DRS was trying to migrate when it
            generated the faults.
            
            If this property is NULL, the fault is not
            associated with a particular virtual disk.
          $ref: '#/components/schemas/VirtualDiskId'
      allOf:
        - $ref: '#/components/schemas/ClusterDrsFaultsFaultsByVm'

    ArrayOfClusterDrsFaultsFaultsByVirtualDisk:
      type: object
      description: |2
        A boxed array of *ClusterDrsFaultsFaultsByVirtualDisk*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ClusterDrsFaultsFaultsByVirtualDisk'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ClusterDrsFaultsFaultsByVm:
      type: object
      description: |2
        FaultsByVm is the faults generated by DRS when it tries to
        move a VM.
      properties:
        vm:
          description: |2
            The VM that DRS was trying to migrate when it generated the faults.
            
            If this property is NULL, the fault is not associated with a particular VM.
            
            Refers instance of *VirtualMachine*.
          $ref: '#/components/schemas/ManagedObjectReference'
        fault:
          description: |2
            The faults generated by DRS when it was trying to move the given VM.
          type: array
          items:
            $ref: '#/components/schemas/MethodFault'
      required:
        - fault
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfClusterDrsFaultsFaultsByVm:
      type: object
      description: |2
        A boxed array of *ClusterDrsFaultsFaultsByVm*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ClusterDrsFaultsFaultsByVm'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ClusterDrsMigration:
      type: object
      description: |2
        Describes a single virtual machine migration.
      properties:
        key:
          description: |2
            A unique key that identifies this recommendation.
            
            This
            is used as an argument to
            ComputeResource.applyRecommendation.
          type: string
        time:
          description: |2
            The time this recommendation was computed.
          type: string
          format: date-time
        vm:
          description: |2
            The virtual machine selected for migration.
            
            Refers instance of *VirtualMachine*.
          $ref: '#/components/schemas/ManagedObjectReference'
        cpuLoad:
          description: |2
            Current CPU load for the virtual machine, in MHz.
            
            This property is only populated for recommendations.
          type: integer
          format: int32
        memoryLoad:
          description: |2
            Current memory load for the virtual machine, in bytes.
            
            This field is only populated for recommendations.
          type: integer
          format: int64
        source:
          description: |2
            Source host.
            
            Refers instance of *HostSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
        sourceCpuLoad:
          description: |2
            Current CPU load on the source host, in MHz.
          type: integer
          format: int32
        sourceMemoryLoad:
          description: |2
            Current memory usage on the source host, in bytes.
          type: integer
          format: int64
        destination:
          description: |2
            Destination host.
            
            Refers instance of *HostSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
        destinationCpuLoad:
          description: |2
            Current CPU load on the destination host, in MHz.
          type: integer
          format: int32
        destinationMemoryLoad:
          description: |2
            Current memory usage on the destination host, in bytes.
          type: integer
          format: int64
      required:
        - key
        - time
        - vm
        - source
        - destination
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfClusterDrsMigration:
      type: object
      description: |2
        A boxed array of *ClusterDrsMigration*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ClusterDrsMigration'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ClusterDrsRecommendation:
      type: object
      deprecated: true
      description: |2
        Deprecated as of VI API 2.5 use *ClusterRecommendation*.
        
        DrsRecommendation describes a recommendation to migrate
        one or more virtual machines.
      properties:
        key:
          description: |2
            Key to identify the recommendation when calling applyRecommendation.
          type: string
        rating:
          description: |2
            A rating of the recommendation.
            
            Valid values range from 1 (lowest confidence) to 5 (highest confidence).
          type: integer
          format: int32
        reason:
          description: |2
            A reason code explaining why this set of migrations is being suggested.
          type: string
        reasonText:
          description: |2
            Text that provides more information about the reason code for the suggested
            set of migrations.
          type: string
        migrationList:
          deprecated: true
          description: |2
            Deprecated a more general *recommendation* list should be used. This recommendation type
            and the migrationList is kept for backward compatibility.
            
            List of migrations in this recommendation and all the parent
            recommendations on which this recommendation depends.
            
            All the
            migrations in this list can be constructed from *ClusterRecommendation.prerequisite* and *ClusterRecommendation.action*.
          type: array
          items:
            $ref: '#/components/schemas/ClusterDrsMigration'
      required:
        - key
        - rating
        - reason
        - reasonText
        - migrationList
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfClusterDrsRecommendation:
      type: object
      description: |2
        A boxed array of *ClusterDrsRecommendation*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ClusterDrsRecommendation'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ClusterDrsVmConfigInfo:
      type: object
      description: |2
        DRS configuration for a single virtual machine.
        
        This makes it possible
        to override the default behavior for an individual virtual machine.
      properties:
        key:
          description: |2
            Reference to the virtual machine.
            
            Refers instance of *VirtualMachine*.
          $ref: '#/components/schemas/ManagedObjectReference'
        enabled:
          description: |2
            Flag to indicate whether or not VirtualCenter is allowed to perform any
            DRS migration or initial placement recommendations for this virtual
            machine.
            
            If this flag is false, the virtual machine is effectively excluded from
            DRS.
            
            If no individual DRS specification exists for a virtual machine,
            this property defaults to true.
          type: boolean
        behavior:
          description: |2
            Specifies the particular DRS behavior for this virtual machine.
            
            See also *ClusterDrsConfigInfo*.
          $ref: '#/components/schemas/DrsBehavior_enum'
      required:
        - key
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfClusterDrsVmConfigInfo:
      type: object
      description: |2
        A boxed array of *ClusterDrsVmConfigInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ClusterDrsVmConfigInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ClusterDrsVmConfigSpec:
      type: object
      description: |2
        Updates the per-virtual-machine DRS configuration.
        
        To update the DRS configuration of a virtual machine, a copy of this object
        is included in the *ClusterConfigSpecEx* object passed to the method
        *ComputeResource.ReconfigureComputeResource_Task*.
        
        If _reconfigureEx_ is used to
        incrementally update the cluster configuration (i.e., the parameter **modify** is true),
        then three operations are provided for updating the DRS configuration for a virtual machine.
        These operations are listed below (see *ArrayUpdateSpec* for more
        information on these operations).
        - add: add a configuration for the virtual machine, overwritting the existing
          configuration if one exists
        - edit: incrmentally update the existing configuration; an existing configuration
          must exist
        - remove: remove the existing configuration; an existing configuration must exist
          
        If, instead, this method is used to overwrite the cluster configuration (i.e., the parameter
        **modify** is false) thereby creating a new configuration, only the add operation is allowed.
        In this case, _add_ creates a DRS configuration for a virtual machine in the new cluster
        configuration.
      properties:
        info:
          $ref: '#/components/schemas/ClusterDrsVmConfigInfo'
      allOf:
        - $ref: '#/components/schemas/ArrayUpdateSpec'

    ArrayOfClusterDrsVmConfigSpec:
      type: object
      description: |2
        A boxed array of *ClusterDrsVmConfigSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ClusterDrsVmConfigSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ClusterEVCManagerCheckResult:
      type: object
      properties:
        evcModeKey:
          description: |2
            The EVC mode being tested for legal application.
          type: string
        error:
          description: |2
            A problem that would prevent applying the desired EVC mode.
          $ref: '#/components/schemas/MethodFault'
        host:
          description: |2
            The set of hosts which would generate the fault described by the
            *ClusterEVCManagerCheckResult.error* property when the desired EVC mode is applied.
            
            Refers instances of *HostSystem*.
          type: array
          items:
            $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - evcModeKey
        - error
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfClusterEVCManagerCheckResult:
      type: object
      description: |2
        A boxed array of *ClusterEVCManagerCheckResult*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ClusterEVCManagerCheckResult'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ClusterEVCManagerEVCState:
      type: object
      properties:
        supportedEVCMode:
          description: |2
            All supported EVC modes.
            
            Identical to
            *Capability.supportedEVCMode*.
          type: array
          items:
            $ref: '#/components/schemas/EVCMode'
        currentEVCModeKey:
          description: |2
            If unset, then EVC is disabled.
            
            If set, then EVC is enabled, and the
            value references an EVC mode described in one of the elements of the
            *ClusterEVCManagerEVCState.supportedEVCMode* array property. The EVC mode determines the
            set of guaranteed clusterwide CPU features. While EVC is enabled, CPU
            compatibility issues will not block any VMotion within the cluster
            (unless some VM is specifically configured to do different CPUID
            overrides).
          type: string
        guaranteedCPUFeatures:
          deprecated: true
          description: |2
            Deprecated as of vSphere API 6.5 use *ClusterEVCManagerEVCState.featureCapability*.
            
            When EVC is enabled, this array contains the CPU feature bits that are
            guaranteed (by EVC) to be the same among all hosts in the cluster.
            
            This property has the same value as the guaranteedCPUFeatures property
            of the configured EVC mode. On any host in the EVC cluster, the CPU
            features either naturally match these values because of the CPU
            hardware, or else CPU feature override is used to mask out differences
            and enforce a match. This array is empty when EVC is disabled.
          type: array
          items:
            $ref: '#/components/schemas/HostCpuIdInfo'
        featureCapability:
          description: |2
            When EVC is enabled, this array contains the feature capabilities that
            are guaranteed (by EVC) to be the same among all hosts in the cluster.
            
            This property has the same value as the featureCapability property
            of the configured EVC mode. On any host in the EVC cluster, the feature
            capabilities either naturally match these values because of the CPU
            hardware, or else feature masks are used to mask out differences and
            enforce a match. This array is empty when EVC is disabled.
          type: array
          items:
            $ref: '#/components/schemas/HostFeatureCapability'
        featureMask:
          description: |2
            The masks (modifications to a host's feature capabilities) that limit a
            host's capabilities to that of the EVC mode baseline.
          type: array
          items:
            $ref: '#/components/schemas/HostFeatureMask'
        featureRequirement:
          description: |2
            The conditions that must be true of a host's feature capabilities in order
            for the host to meet the minimum requirements of the EVC mode baseline.
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineFeatureRequirement'
      required:
        - supportedEVCMode
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfClusterEVCManagerEVCState:
      type: object
      description: |2
        A boxed array of *ClusterEVCManagerEVCState*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ClusterEVCManagerEVCState'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ClusterEnterMaintenanceResult:
      type: object
      description: |2
        EnterMaintenanceResult is the base class of the result returned to the
        *ClusterComputeResource.ClusterEnterMaintenanceMode* method.
      properties:
        recommendations:
          description: |2
            The list of recommendations for hosts that Virtual Center will
            be able to evacuate.
            
            Each recommendation consists of a host
            maintenance action *ClusterAction* for a host, along
            with zero or more vmotions for evacuation. Application of the
            recommendations is not supported currently. The client will have
            to put the hosts into maintenance mode by calling the separate
            method *HostSystem.EnterMaintenanceMode_Task*.
          type: array
          items:
            $ref: '#/components/schemas/ClusterRecommendation'
        fault:
          description: |2
            The faults that explain why the Virtual Center cannot evacuate
            some hosts.
          $ref: '#/components/schemas/ClusterDrsFaults'
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfClusterEnterMaintenanceResult:
      type: object
      description: |2
        A boxed array of *ClusterEnterMaintenanceResult*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ClusterEnterMaintenanceResult'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ClusterFailoverHostAdmissionControlInfo:
      type: object
      description: |2
        The current admission control related information if the cluster was configured
        with a FailoverHostAdmissionControlPolicy.
      properties:
        hostStatus:
          description: |2
            Status of the failover hosts in the cluster.
          type: array
          items:
            $ref: '#/components/schemas/ClusterFailoverHostAdmissionControlInfoHostStatus'
      allOf:
        - $ref: '#/components/schemas/ClusterDasAdmissionControlInfo'

    ArrayOfClusterFailoverHostAdmissionControlInfo:
      type: object
      description: |2
        A boxed array of *ClusterFailoverHostAdmissionControlInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ClusterFailoverHostAdmissionControlInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ClusterFailoverHostAdmissionControlInfoHostStatus:
      type: object
      description: |2
        Data object containing the status of a failover host.
      properties:
        host:
          description: |2
            The failover host.
            
            Refers instance of *HostSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
        status:
          description: |2
            The status of the failover host.
            
            The status is green for a connected host with no vSphere HA errors and
            no virtual machines running on it.
            The status is yellow for a connected host with no vSphere HA errors and
            some virtual machines running on it.
            The status red for a disconnected or not responding host, a host that
            is in maintenance or standby mode or that has a vSphere HA error on it.
          $ref: '#/components/schemas/ManagedEntityStatus_enum'
      required:
        - host
        - status
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfClusterFailoverHostAdmissionControlInfoHostStatus:
      type: object
      description: |2
        A boxed array of *ClusterFailoverHostAdmissionControlInfoHostStatus*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ClusterFailoverHostAdmissionControlInfoHostStatus'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ClusterFailoverHostAdmissionControlPolicy:
      type: object
      description: |2
        The *ClusterFailoverHostAdmissionControlPolicy* dedicates
        one or more hosts for use during failover.
        
        When a host fails with this policy in place, vSphere HA attempts
        to restart its virtual machines on a dedicated failover host.
        If this is not possible, for example the failover host itself has failed
        or it has insufficient resources, HA attempts to restart those virtual
        machines on another host in the cluster.
        
        To support the availabilty of a failover host,
        the vCenter Server will prevent users from powering on virtual machines
        on that host, or from using vMotion to migrate virtual machines to the host.
        Also, DRS does not use the failover host for load balancing.
        
        To obtain the status of a failover host, use the
        *ClusterFailoverHostAdmissionControlInfo.hostStatus*
        property
        (*ClusterComputeResourceSummary*.*ClusterComputeResourceSummary.admissionControlInfo*.*ClusterFailoverHostAdmissionControlInfo.hostStatus*).
      properties:
        failoverHosts:
          description: |2
            List of managed object references to failover hosts.
            
            Refers instances of *HostSystem*.
          type: array
          items:
            $ref: '#/components/schemas/ManagedObjectReference'
        failoverLevel:
          description: |2
            Number of host failures that should be tolerated, still guaranteeing
            sufficient resources to restart virtual machines on available hosts.
            
            If not set, we assume 1.
          type: integer
          format: int32
      allOf:
        - $ref: '#/components/schemas/ClusterDasAdmissionControlPolicy'

    ArrayOfClusterFailoverHostAdmissionControlPolicy:
      type: object
      description: |2
        A boxed array of *ClusterFailoverHostAdmissionControlPolicy*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ClusterFailoverHostAdmissionControlPolicy'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ClusterFailoverLevelAdmissionControlInfo:
      type: object
      description: |2
        The current admission control related information if the cluster was
        configured with a FailoverLevelAdmissionControlPolicy.
      properties:
        currentFailoverLevel:
          description: |2
            Current failover level.
            
            This is the number of physical host failures that
            can be tolerated without impacting the ability to satisfy the minimums for
            all running virtual machines. This represents the current value, as
            opposed to desired value configured by the user.
          type: integer
          format: int32
      required:
        - currentFailoverLevel
      allOf:
        - $ref: '#/components/schemas/ClusterDasAdmissionControlInfo'

    ArrayOfClusterFailoverLevelAdmissionControlInfo:
      type: object
      description: |2
        A boxed array of *ClusterFailoverLevelAdmissionControlInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ClusterFailoverLevelAdmissionControlInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ClusterFailoverLevelAdmissionControlPolicy:
      type: object
      description: |2
        The *ClusterFailoverLevelAdmissionControlPolicy*
        defines the number of host failures that should be tolerated and still
        guarantee enough unfragmented resources to failover all powered on virtual
        machines on those failed hosts.
        
        When you use the failover level policy, vSphere HA partitions resources
        into slots. A slot represents the minimum CPU and memory resources
        that are required to support any powered-on virtual machine in the cluster.
        
        With the failover level policy in place, HA uses the following slot
        calculations to control virtual machine migration within the cluster:
        1. Calculate the slot size from CPU and memory reservations.
           The CPU value is the largest CPU reservation for all powered-on
           virtual machines in the cluster. The memory value is the largest
           memory reservation (plus memory overhead).
           
           If your cluster contains any virtual machines that have much larger
           reservations than the others, they will distort slot size calculation.
           To avoid this, you can specify an upper bound for slot sizes;
           use the configuration editor in the vSphere Client to set the
           das.slotCpuInMHz and das.slotMemInMB attributes. When you use these
           attributes, there is a risk that resource fragmentation will cause
           virtual machines with resource requirements larger than the slot size
           to be assigned multiple slots. In a cluster that is close to capacity,
           there might be enough slots in aggregate for HA to successfully
           failover a virtual machine. However, if those slots are located
           on multiple hosts, a virtual machine assigned multiple slots cannot
           use them because a virtual machine can run on only a single host
           at a time.
        2. Determine how many slots each host in the cluster can hold.
           HA uses the CPU and memory resources in a host's root resource pool
           to determine host slot capacity, not the total physical resources
           of the host. Resources used for virtualization purposes are not
           included. HA uses connected hosts that are not in maintenance mode
           and that do not have any HA errors.
           
           The CPU slot resource is the host CPU resource amount divided
           by the CPU component of the slot size; the result is rounded down.
           HA makes the same calculation for host memory resource amount.
           HA compares the results; the lower of the two numbers is the
           host slot capacity.
        3. Determine the current failover capacity of the cluster. This is the
           number of hosts (starting from the largest) that can fail and still
           leave enough slots to satisfy all of the powered-on virtual machines.
        4. Compare the current failover capacity to the configured
           *ClusterFailoverLevelAdmissionControlPolicy.failoverLevel*.
           If the current failover capacity is less than the configured
           failover level, HA disallows the operation.
      properties:
        failoverLevel:
          description: |2
            Number of host failures that should be tolerated, still guaranteeing
            sufficient resources to restart virtual machines on available hosts.
          type: integer
          format: int32
        slotPolicy:
          description: |2
            A policy for how to compute the slot size.
            
            If left unset, the slot is
            computed using the maximum reservations and memory overhead of any
            powered on virtual machine in the cluster.
          $ref: '#/components/schemas/ClusterSlotPolicy'
      required:
        - failoverLevel
      allOf:
        - $ref: '#/components/schemas/ClusterDasAdmissionControlPolicy'

    ArrayOfClusterFailoverLevelAdmissionControlPolicy:
      type: object
      description: |2
        A boxed array of *ClusterFailoverLevelAdmissionControlPolicy*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ClusterFailoverLevelAdmissionControlPolicy'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ClusterFailoverResourcesAdmissionControlInfo:
      type: object
      description: |2
        The current admission control related information if the cluster was configured
        with a FailoverResourcesAdmissionControlPolicy.
      properties:
        currentCpuFailoverResourcesPercent:
          description: |2
            The percentage of cpu resources in the cluster available for failover.
          type: integer
          format: int32
        currentMemoryFailoverResourcesPercent:
          description: |2
            The percentage of memory resources in the cluster available for failover.
          type: integer
          format: int32
        currentPMemFailoverResourcesPercent:
          description: |2
            The percentage of persistent memory resources in the cluster available
            for failover.
            
            ***Since:*** vSphere API Release 7.0.2.0
          type: integer
          format: int32
      required:
        - currentCpuFailoverResourcesPercent
        - currentMemoryFailoverResourcesPercent
      allOf:
        - $ref: '#/components/schemas/ClusterDasAdmissionControlInfo'

    ArrayOfClusterFailoverResourcesAdmissionControlInfo:
      type: object
      description: |2
        A boxed array of *ClusterFailoverResourcesAdmissionControlInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ClusterFailoverResourcesAdmissionControlInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ClusterFailoverResourcesAdmissionControlPolicy:
      type: object
      description: |2
        The *ClusterFailoverResourcesAdmissionControlPolicy*
        reserves a specified percentage of aggregate cluster resources for failover.
        
        With the resources failover policy in place, vSphere HA uses the following
        calculations to control virtual machine migration in the cluster.
        1. Calculate the total resource requirements for all powered-on
           virtual machines in the cluster.
        2. Calculate the total host resources available for virtual machines.
        3. Calculate the Current CPU failover capacity, memory failover
           capacity and optionally, persistent memory failover capacity
           for the cluster.
        4. Compare the current CPU failover capacity and current memory failover
           capacity with the configured resource percentages
           (*ClusterFailoverResourcesAdmissionControlPolicy.cpuFailoverResourcesPercent*
           and
           *ClusterFailoverResourcesAdmissionControlPolicy.memoryFailoverResourcesPercent*).
           If either current capacity is less than the corresponding configured
           capacity, HA does not allow the operation.
           
        HA uses the actual reservations of the virtual machines. If a virtual machine
        does not have reservations, meaning that the reservation is 0, a default
        of 0MB memory and 256MHz CPU is applied. This is controlled by the same
        HA advanced options used for the failover level policy
        (*ClusterFailoverLevelAdmissionControlPolicy*).
      properties:
        cpuFailoverResourcesPercent:
          description: |2
            Percentage of CPU resources in the cluster to reserve for failover.
            
            You can specify up to 100% of CPU resources for failover.
          type: integer
          format: int32
        memoryFailoverResourcesPercent:
          description: |2
            Percentage of memory resources in the cluster to reserve for failover.
            
            You can specify up to 100% of memory resources for failover.
          type: integer
          format: int32
        failoverLevel:
          description: |2
            Number of host failures that should be tolerated, still guaranteeing
            sufficient resources to restart virtual machines on available hosts.
            
            If not set, we assume 1.
          type: integer
          format: int32
        autoComputePercentages:
          description: |2
            Flag to enable user input values for
            *ClusterFailoverResourcesAdmissionControlPolicy.cpuFailoverResourcesPercent*
            and
            *ClusterFailoverResourcesAdmissionControlPolicy.memoryFailoverResourcesPercent*
            By default, this is true and the default calculation is using the
            *ClusterFailoverResourcesAdmissionControlPolicy.failoverLevel*
            hosts' resources.
            
            If users want to override the percentage values,
            they must disable the auto-compute by setting this field to false.
          type: boolean
        pMemFailoverResourcesPercent:
          description: |2
            Percentage of persistent memory resources in the cluster to reserve for
            the failover.
            
            You can specify up to 100% of persistent memory resources for failover.
            
            ***Since:*** vSphere API Release 7.0.2.0
          type: integer
          format: int32
        autoComputePMemFailoverResourcesPercent:
          description: |2
            Flag to enable user input values for
            *ClusterFailoverResourcesAdmissionControlPolicy.pMemFailoverResourcesPercent*
            By default, this is true and the default calculation is done using the
            *ClusterFailoverResourcesAdmissionControlPolicy.failoverLevel* hosts' resources.
            
            If a user wants to override the percentage values, they
            must disable the auto-compute by setting this field to false.
            
            ***Since:*** vSphere API Release 7.0.2.0
          type: boolean
      required:
        - cpuFailoverResourcesPercent
        - memoryFailoverResourcesPercent
      allOf:
        - $ref: '#/components/schemas/ClusterDasAdmissionControlPolicy'

    ArrayOfClusterFailoverResourcesAdmissionControlPolicy:
      type: object
      description: |2
        A boxed array of *ClusterFailoverResourcesAdmissionControlPolicy*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ClusterFailoverResourcesAdmissionControlPolicy'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ClusterFixedSizeSlotPolicy:
      type: object
      description: |2
        This policy allows setting a fixed slot size
      properties:
        cpu:
          description: |2
            The cpu component of the slot size (in MHz)
          type: integer
          format: int32
        memory:
          description: |2
            The memory component of the slot size (in megabytes)
          type: integer
          format: int32
      required:
        - cpu
        - memory
      allOf:
        - $ref: '#/components/schemas/ClusterSlotPolicy'

    ArrayOfClusterFixedSizeSlotPolicy:
      type: object
      description: |2
        A boxed array of *ClusterFixedSizeSlotPolicy*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ClusterFixedSizeSlotPolicy'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ClusterFtVmHostRuleInfo:
      type: object
      description: |2
        An *ClusterFtVmHostRuleInfo* object provides control of the
        placement of virtual machines across two host groups. The virtual machines
        and hosts referenced by an FT VM-Host rule must be in the same cluster.
        
        An FT VM-Host rule identifies the following groups.
        - A virtual machine group name (*ClusterVmGroup*).
        - An array of two host groups (*ClusterHostGroup*).
          
        *ClusterFtVmHostRuleInfo* stores only the names of the relevant
        virtual machine and host groups. The group contents are stored in
        the virtual machine and host group objects.
        
        When employing this rule, take care to ensure that the specified
        host groups have sufficient resources to support the requirements
        of all VMs specified.
        
        ***Since:*** vSphere API Release 8.0.3.0
      properties:
        vmGroupName:
          description: |2
            Virtual machine group name
            (*ClusterVmGroup*.*ClusterGroupInfo.name*).
            
            The named virtual machine group may have zero or more VMs.
            A virtual machine in this group may be a normal virtual machine
            or a fault tolerant primary virtual machine; it cannot
            be a fault tolerant secondary virtual machine.
            
            Control of FT secondary virtual machines is implied by the presence
            of the primary FT virtual machine.
            
            A virtual machine in this group should not be referenced in any other
            FT VM-Host rule or VM-Host rule *ClusterVmHostRuleInfo*.
          type: string
        hostGroupName:
          description: |2
            Array of two Host Groups (*ClusterHostGroup*).
            
            The hostGroup array must have two host groups. Each host group in the
            hostGroup array will have a set of hosts. For each Fault Tolerance primary
            VM that is part of VmGroup, the primary and secondary VMs would be placed
            on hosts that are not part of the same host group.
            
            The members of each host group should be disjoint from the members
            of all other host group specified.
          type: array
          items:
            type: string
      required:
        - vmGroupName
      allOf:
        - $ref: '#/components/schemas/ClusterRuleInfo'

    ArrayOfClusterFtVmHostRuleInfo:
      type: object
      description: |2
        A boxed array of *ClusterFtVmHostRuleInfo*. To be used in *Any* placeholders.
        
        ***Since:*** vSphere API Release 8.0.3.0
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ClusterFtVmHostRuleInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ClusterGroupInfo:
      type: object
      description: |2
        *ClusterGroupInfo* is the base type for all virtual machine
        and host groups.
        
        All virtual machines and hosts that are part of a group
        must be part of the same cluster.
      properties:
        name:
          description: |2
            Unique name of the group.
          type: string
        userCreated:
          description: |2
            Flag to indicate whether the group is created by the user or the system.
          type: boolean
        uniqueID:
          description: |2
            Unique ID for the group.
            
            uniqueID is unique within a cluster.
            Groups residing in different clusters might share a uniqueID.
          type: string
      required:
        - name
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfClusterGroupInfo:
      type: object
      description: |2
        A boxed array of *ClusterGroupInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ClusterGroupInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ClusterGroupSpec:
      type: object
      description: |2
        An incremental update to the cluster-wide groups.
      properties:
        info:
          $ref: '#/components/schemas/ClusterGroupInfo'
      allOf:
        - $ref: '#/components/schemas/ArrayUpdateSpec'

    ArrayOfClusterGroupSpec:
      type: object
      description: |2
        A boxed array of *ClusterGroupSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ClusterGroupSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ClusterHostGroup:
      type: object
      description: |2
        The *ClusterHostGroup* data object identifies hosts for VM-Host rules.
        
        VM-Host rules determine placement of virtual machines on hosts in a cluster.
        The logic specified in a *ClusterVmHostRuleInfo* object
        determines where virtual machines can be powered-on.
      properties:
        host:
          description: |2
            List of hosts that are part of this group.
            
            A host group can contain zero or more hosts.
            
            Refers instances of *HostSystem*.
          type: array
          items:
            $ref: '#/components/schemas/ManagedObjectReference'
      allOf:
        - $ref: '#/components/schemas/ClusterGroupInfo'

    ArrayOfClusterHostGroup:
      type: object
      description: |2
        A boxed array of *ClusterHostGroup*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ClusterHostGroup'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ClusterHostInfraUpdateHaModeAction:
      type: object
      description: |2
        Describes a HostSystem's quarantine or maintenance mode change action.
      properties:
        operationType:
          description: |2
            Specify the action type.
            
            Values are of type
            *OperationType*.
          type: string
      required:
        - operationType
      allOf:
        - $ref: '#/components/schemas/ClusterAction'

    ArrayOfClusterHostInfraUpdateHaModeAction:
      type: object
      description: |2
        A boxed array of *ClusterHostInfraUpdateHaModeAction*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ClusterHostInfraUpdateHaModeAction'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ClusterHostPowerAction:
      type: object
      description: |2
        Describes a single host power action.
      properties:
        operationType:
          description: |2
            Specify whether the action is power on or power off
          $ref: '#/components/schemas/HostPowerOperationType_enum'
        powerConsumptionWatt:
          description: |2
            Estimated power consumption of the host.
            
            In case of power-on,
            this is the projected increase in the cluster's power
            consumption. In case of power off, this is the projected
            decrease in the cluster's power consumption
          type: integer
          format: int32
        cpuCapacityMHz:
          description: |2
            CPU capacity of the host in units of MHz.
            
            In case of power-on
            action, this is the projected increase in the cluster's CPU
            capacity. In case of power off, this is the projected decrease
            in the cluster's CPU capacity.
          type: integer
          format: int32
        memCapacityMB:
          description: |2
            Memory capacity of the host in units of MM.
            
            In case of power-on
            action, this is the projected increase in the cluster's memory
            capacity. In case of power off, this is the projected decrease
            in the cluster's memory capacity.
          type: integer
          format: int32
      required:
        - operationType
      allOf:
        - $ref: '#/components/schemas/ClusterAction'

    ArrayOfClusterHostPowerAction:
      type: object
      description: |2
        A boxed array of *ClusterHostPowerAction*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ClusterHostPowerAction'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ClusterHostRecommendation:
      type: object
      description: |2
        A DRS recommended host for either powering on, resuming or
        reverting a virtual machine, or migrating a virtual machine from
        outside the cluster.
      properties:
        host:
          description: |2
            The recommended host.
            
            Refers instance of *HostSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
        rating:
          description: |2
            Rating for the recommendation.
            
            Ratings range from 1 to 5, and
            the higher the rating, the stronger DRS suggests this host is
            picked for the operation.
          type: integer
          format: int32
      required:
        - host
        - rating
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfClusterHostRecommendation:
      type: object
      description: |2
        A boxed array of *ClusterHostRecommendation*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ClusterHostRecommendation'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ClusterInfraUpdateHaConfigInfo:
      type: object
      description: |2
        Configuration of the vSphere InfraUpdateHA service.
        
        All fields are defined as optional. In case of a reconfiguration,
        unset fields are not changed.
      properties:
        enabled:
          description: |2
            Flag indicating whether or not the service is enabled.
            
            InfraUpdateHA
            will not be active, unless DRS is enabled as well.
          type: boolean
        behavior:
          description: |2
            Configured behavior.
            
            Values are of type
            *BehaviorType*.
          type: string
        moderateRemediation:
          description: |2
            Configured remediation for moderately degraded hosts.
            
            Values are of type
            *RemediationType*.
            Configuring MaintenanceMode for moderateRemedation and QuarantineMode for
            severeRemediation is not supported and will throw InvalidArgument.
          type: string
        severeRemediation:
          description: |2
            Configured remediation for severely degraded hosts.
            
            Values are of type
            *RemediationType*.
          type: string
        providers:
          description: |2
            The list of health update providers configured for this cluster.
            
            Providers are identified by their id.
            
            When reconfiguring the cluster, a list with a single element {""} will
            clear the list of providers.
            
            If the provider list is empty, InfraUpdateHA will not be active.
          type: array
          items:
            type: string
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfClusterInfraUpdateHaConfigInfo:
      type: object
      description: |2
        A boxed array of *ClusterInfraUpdateHaConfigInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ClusterInfraUpdateHaConfigInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ClusterInitialPlacementAction:
      type: object
      description: |2
        Describes an initial placement of a single virtual machine
      properties:
        targetHost:
          description: |2
            The host where the virtual machine should be initially placed.
            
            Refers instance of *HostSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
        pool:
          description: |2
            The resource pool to place the virtual machine into in case this
            action is for migrating from outside cluster.
            
            Refers instance of *ResourcePool*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - targetHost
      allOf:
        - $ref: '#/components/schemas/ClusterAction'

    ArrayOfClusterInitialPlacementAction:
      type: object
      description: |2
        A boxed array of *ClusterInitialPlacementAction*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ClusterInitialPlacementAction'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ClusterMigrationAction:
      type: object
      description: |2
        Describes a single VM migration action.
      properties:
        drsMigration:
          description: |2
            The details of the migration action
          $ref: '#/components/schemas/ClusterDrsMigration'
      allOf:
        - $ref: '#/components/schemas/ClusterAction'

    ArrayOfClusterMigrationAction:
      type: object
      description: |2
        A boxed array of *ClusterMigrationAction*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ClusterMigrationAction'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ClusterNotAttemptedVmInfo:
      type: object
      description: |2
        This data class reports one virtual machine powerOn failure.
      properties:
        vm:
          description: |2
            The virtual machine that can not be powered on.
            
            Refers instance of *VirtualMachine*.
          $ref: '#/components/schemas/ManagedObjectReference'
        fault:
          description: |2
            The exception returned.
          $ref: '#/components/schemas/MethodFault'
      required:
        - vm
        - fault
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfClusterNotAttemptedVmInfo:
      type: object
      description: |2
        A boxed array of *ClusterNotAttemptedVmInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ClusterNotAttemptedVmInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ClusterOrchestrationInfo:
      type: object
      description: |2
        vSphere cluster VM orchestration settings.
        
        Used by vSphere HA when restarting failed VMs. For example, if a host
        fails, vSphere HA identifies the list of VMs to be restarted. The order in
        which the failed VMs to be restarted is determined by:
        - VM restart priority setting (*ClusterDasVmSettings.restartPriority*).
          Lower priority VMs are restarted only after higher priority VMs are
          restarted and ready (*ClusterVmReadiness*).
        - VM dependency rule (*ClusterDependencyRuleInfo*). If a VM
          depends on other VMs, then it will be restarted only after all the VMs in
          its dependency list are ready. Cyclic dependency is not permitted across
          VMs. Also, higher priority VMs cannot depend on lower priority VMs.
      properties:
        defaultVmReadiness:
          description: |2
            Cluster-wide defaults for virtual machine readiness
          $ref: '#/components/schemas/ClusterVmReadiness'
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfClusterOrchestrationInfo:
      type: object
      description: |2
        A boxed array of *ClusterOrchestrationInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ClusterOrchestrationInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PlacementAction:
      type: object
      description: |2
        Describes a placement action of a single virtual machine.
        
        One or more of such actions can be included in a placement recommendation,
        and such recommendations can be generated by the
        *ClusterComputeResource.PlaceVm* method.
      properties:
        vm:
          description: |2
            Virtual machine reference.
            
            Unset if the VM has not been created.
            
            Refers instance of *VirtualMachine*.
          $ref: '#/components/schemas/ManagedObjectReference'
        targetHost:
          description: |2
            The host where the virtual machine should be placed.
            
            Unset if no host recommendation is provided.
            
            Refers instance of *HostSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
        relocateSpec:
          description: |2
            Specification for placing the configuration files and the virtual
            disks of the virtual machine on one or more datastores.
            
            Unset if no datastore recommendation is provided.
          $ref: '#/components/schemas/VirtualMachineRelocateSpec'
      allOf:
        - $ref: '#/components/schemas/ClusterAction'

    ArrayOfPlacementAction:
      type: object
      description: |2
        A boxed array of *PlacementAction*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PlacementAction'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PlacementResult:
      type: object
      description: |2
        *ClusterComputeResource.PlaceVm* method can invoke DRS
        for recommendations for target hosts and datastores for placing a
        virtual machine and its virtual disks using xVMotion.
        
        PlacementResult is the class of the result returned by that method.
      properties:
        recommendations:
          description: |2
            The list of recommendations for where to place the virtual machine
            and its virtual disks.
          type: array
          items:
            $ref: '#/components/schemas/ClusterRecommendation'
        drsFault:
          description: |2
            Information about any fault in case DRS fails to make a recommendation.
          $ref: '#/components/schemas/ClusterDrsFaults'
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfPlacementResult:
      type: object
      description: |2
        A boxed array of *PlacementResult*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PlacementResult'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PlacementSpec:
      type: object
      description: |2
        PlacementSpec encapsulates all of the information passed to the
        *ClusterComputeResource.PlaceVm* method, which asks
        DRS for recommendations for target hosts and datastores for placing
        a virtual machine and its virtual disks in a cluster using
        unified VMotion.
      properties:
        priority:
          description: |2
            Priority of the migration operation.
            
            The default value is defaultPriority.
          $ref: '#/components/schemas/VirtualMachineMovePriority_enum'
        vm:
          description: |2
            The virtual machine to be placed.
            
            For an intra-vCenter migration, this argument is required.
            For a cross-vCenter migration, this argument should be unset,
            and the caller is responsible for applying the DRS-recommended
            placement to the correct vm.
            
            Refers instance of *VirtualMachine*.
          $ref: '#/components/schemas/ManagedObjectReference'
        configSpec:
          description: |2
            Configuration information for the virtual machine.
            
            For an intra-vCenter migration, this argument should be unset.
            For a cross-vCenter migration, this argument is required.
            In the latter case, the following elements of the configSpec
            will be expected: version, cpuAllocation, memoryAllocation, numCPUs,
            memoryMB, files, swapPlacement; in addition, the configSpec.deviceChange
            should contain all the virtual disks of the virtual machine to be migrated.
            If configSpec.deviceChange is empty, the vm will be treated as a
            diskless vm.
            If a storage profile is specified for a virtual disk or vm configuration,
            only datastores that match this profile will be considered for that
            virtual disk or vm configuration.
          $ref: '#/components/schemas/VirtualMachineConfigSpec'
        relocateSpec:
          description: |2
            Specification for relocating a virtual machine.
            
            Can be used to optionally specify a target host, a target datastore,
            or a target resource pool. If a target host is specified, this host
            becomes the recommended host; if a target datastore is specified,
            this datastore becomes the recommended datastore; if no resource
            pool is specified, the virtual machine will be attached to the
            cluster root resource pool; if the target resource pool specified
            is a VirtualApp, an InvalidArgument fault will be thrown.
            If a storage profile is specified for a virtual disk or vm configuration,
            only datastores that match this profile will be considered for that
            virtual disk or vm configuration.
            For cross-vCenter migration, the caller
            should set the service and the folder arguments properly either in
            the input relocateSpec or in the output relocateSpec in the placement
            recommendation before passing the relocateSpec to the RelocateVM API.
          $ref: '#/components/schemas/VirtualMachineRelocateSpec'
        hosts:
          description: |2
            A list of compatible hosts for the virtual machine.
            
            This list is ignored if relocateSpec.host is set.
            For both intra-vCenter and cross-vCenter migrations, this list is required
            if relocateSpec.host is unset.
            If neither relocateSpec.host nor a list of compatible hosts are specified,
            all hosts in the cluster will be considered, in which case, the selected
            hosts in the PlacementResult are not guaranteed to be compatible with the
            incoming virtual machine.
            
            Refers instances of *HostSystem*.
          type: array
          items:
            $ref: '#/components/schemas/ManagedObjectReference'
        datastores:
          description: |2
            A list of compatible datastores for the virtual machine.
            
            This list is ignored if relocateSpec.datastore is set.
            For both intra-vCenter and cross-vCenter migrations, this list is required
            if relocateSpec.datastore is unset.
            If neither relocateSpec.datastore nor a list of compatible datastores are
            specified, all datastores connected to hosts in the cluster will be
            considered, in which case, the selected datastores in the PlacementResult
            are not guaranteed to be compatible with the incoming virtual machine.
            
            Refers instances of *Datastore*.
          type: array
          items:
            $ref: '#/components/schemas/ManagedObjectReference'
        storagePods:
          description: |2
            A list of compatible datastore clusters for the virtual machine.
            
            This list is ignored if relocateSpec.datastore is set.
            For both intra-vCenter and cross-vCenter migrations, this list can be
            empty, in which case, the user should set either RelocateSpec.datastore
            or PlacementSpec.datastores as the target datastore or the list of
            compatible datastores.
            
            Refers instances of *StoragePod*.
          type: array
          items:
            $ref: '#/components/schemas/ManagedObjectReference'
        disallowPrerequisiteMoves:
          description: |2
            Specification for whether to disable pre-requisite vmotions or storage
            vmotions for virtual machine placement.
            
            The default value is true,
            that is, to disallow such prerequisite moves.
          type: boolean
        rules:
          description: |2
            A list of rules to respect while placing the virtual machine on
            target cluster.
            
            If the list is empty, rules will not be considered during placement,
            in case of cross-cluster placement within a VC and cross VC
            placement across VCs.
          type: array
          items:
            $ref: '#/components/schemas/ClusterRuleInfo'
        key:
          description: |2
            Client generated identifier as a reference to the placement request
          type: string
        placementType:
          description: |2
            Type of the placement.
            
            The set of possible values are described in
            *PlacementSpecPlacementType_enum*
          type: string
        cloneSpec:
          description: |2
            Specification for a virtual machine clone operation
          $ref: '#/components/schemas/VirtualMachineCloneSpec'
        cloneName:
          description: |2
            Name for the cloned virtual machine, if the operation type is a clone
          type: string
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfPlacementSpec:
      type: object
      description: |2
        A boxed array of *PlacementSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PlacementSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ClusterPowerOnVmResult:
      type: object
      description: |2
        PowerOnVmResult is the base class of the result returned to the
        *Datacenter.PowerOnMultiVM_Task* method.
      properties:
        attempted:
          description: |2
            The list of virtual machines the Virtual Center has attempted to power on.
            
            For a virtual machine not managed by DRS, a task ID is also returned.
          type: array
          items:
            $ref: '#/components/schemas/ClusterAttemptedVmInfo'
        notAttempted:
          description: |2
            The list of virtual machines DRS can not find suitable hosts for powering on.
            
            There is one fault associated with each virtual machine.
          type: array
          items:
            $ref: '#/components/schemas/ClusterNotAttemptedVmInfo'
        recommendations:
          description: |2
            The list of recommendations that need the client to approve manually.
          type: array
          items:
            $ref: '#/components/schemas/ClusterRecommendation'
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfClusterPowerOnVmResult:
      type: object
      description: |2
        A boxed array of *ClusterPowerOnVmResult*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ClusterPowerOnVmResult'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ClusterPreemptibleVmPairInfo:
      type: object
      description: |2
        The *ClusterPreemptibleVmPairInfo* data object contains the monitored and the
        preemptible VM pair in a HA-enabled cluster.
        
        Monitored virtual machine is a desired protected virtual machine in
        HA-enabled cluster when it is powered on. Any failures of this VM will
        continue to be handled by HA based on the VM's settings in cluster.
        
        Preemptible virtual machine is the desired protected virtual machine in HA
        when it is powered on. The lowest restart priority "disabled"
        *ClusterDasVmSettingsRestartPriority_enum* will be enforced for the
        *ClusterPreemptibleVmPairInfo.preemptibleVm*. A virtual machine can be marked as preemptible
        irrespective of its *powerState* but its
        extra configuration should identify it as preemptible.
        
        In case of failure of *ClusterPreemptibleVmPairInfo.monitoredVm*, the *ClusterPreemptibleVmPairInfo.preemptibleVm* will
        be terminated. This will free up any resources associated with
        *ClusterPreemptibleVmPairInfo.preemptibleVm*.
        
        In case of insufficient resources for failover of any VM in the cluster, the
        *ClusterPreemptibleVmPairInfo.preemptibleVm* will be terminated to free up resources.
        
        This data object is intended for VMware use and other usage is not
        supported. This data object will be removed in a future release.
        
        ***Since:*** vSphere API Release 8.0.0.1
      properties:
        id:
          description: |2
            Server-assigned unique ID for pairs.
            
            When adding a new pair, do not
            specify this property. The server will assign the key and any assigned
            value will be ignored.
          type: integer
          format: int32
        monitoredVm:
          description: |2
            The virtual machine whose failure will cause the virtual machine specified
            by *ClusterPreemptibleVmPairInfo.preemptibleVm* to be terminated.
            
            Refers instance of *VirtualMachine*.
          $ref: '#/components/schemas/ManagedObjectReference'
        preemptibleVm:
          description: |2
            The preemptible virtual machine associated with the virtual machine
            specified as *ClusterPreemptibleVmPairInfo.monitoredVm*.
            
            Refers instance of *VirtualMachine*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - monitoredVm
        - preemptibleVm
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfClusterPreemptibleVmPairInfo:
      type: object
      description: |2
        A boxed array of *ClusterPreemptibleVmPairInfo*. To be used in *Any* placeholders.
        
        ***Since:*** vSphere API Release 8.0.0.1
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ClusterPreemptibleVmPairInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ClusterPreemptibleVmPairSpec:
      type: object
      description: |2
        Provides monitored and preemptible VM pair along with any of the operations
        (add, edit or remove) to append, modify or remove this pair info from
        *ClusterPreemptibleVmPairInfo* list.
        
        This data object is intended for VMware use and other usage is not supported.
        This data object will be removed in a future release.
        
        ***Since:*** vSphere API Release 8.0.0.1
      properties:
        info:
          $ref: '#/components/schemas/ClusterPreemptibleVmPairInfo'
      allOf:
        - $ref: '#/components/schemas/ArrayUpdateSpec'

    ArrayOfClusterPreemptibleVmPairSpec:
      type: object
      description: |2
        A boxed array of *ClusterPreemptibleVmPairSpec*. To be used in *Any* placeholders.
        
        ***Since:*** vSphere API Release 8.0.0.1
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ClusterPreemptibleVmPairSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ClusterProactiveDrsConfigInfo:
      type: object
      properties:
        enabled:
          description: |2
            Flag indicating whether or not the service is enabled.
          type: boolean
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfClusterProactiveDrsConfigInfo:
      type: object
      description: |2
        A boxed array of *ClusterProactiveDrsConfigInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ClusterProactiveDrsConfigInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ClusterRecommendation:
      type: object
      description: |2
        Recommendation is the base class for any packaged group of
        actions that are intended to take the system from one
        state to another one.
      properties:
        key:
          description: |2
            Key to identify the recommendation when calling applyRecommendation.
          type: string
        type:
          description: |2
            Type of the recommendation.
            
            This differentiates between various
            of recommendations aimed at achieving different goals.
          type: string
        time:
          description: |2
            The time this recommendation was computed.
          type: string
          format: date-time
        rating:
          description: |2
            A rating of the recommendation.
            
            Valid values range from 1 (lowest confidence) to 5 (highest confidence).
          type: integer
          format: int32
        reason:
          description: |2
            A reason code explaining why this set of migrations is being suggested.
          type: string
        reasonText:
          description: |2
            Text that provides more information about the reason code for the suggested
            set of migrations.
          type: string
        warningText:
          description: |2
            Text that provides warnings about potential adverse implications of
            applying this recommendation
          type: string
        warningDetails:
          description: |2
            Warning about potential adverse implications of applying a recommendation
          $ref: '#/components/schemas/LocalizableMessage'
        prerequisite:
          description: |2
            This recommendation may depend on some other recommendations.
            
            The prerequisite recommendations are listed by their keys.
          type: array
          items:
            type: string
        action:
          description: |2
            List of actions that are executed as part of this recommendation
          type: array
          items:
            $ref: '#/components/schemas/ClusterAction'
        target:
          description: |2
            The target object of this recommendation.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - key
        - type
        - time
        - rating
        - reason
        - reasonText
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfClusterRecommendation:
      type: object
      description: |2
        A boxed array of *ClusterRecommendation*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ClusterRecommendation'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ClusterResourceUsageSummary:
      type: object
      description: |2
        This class contains cpu, memory and storage usage information at cluster
        level.
      properties:
        cpuUsedMHz:
          type: integer
          format: int32
        cpuCapacityMHz:
          type: integer
          format: int32
        memUsedMB:
          type: integer
          format: int32
        memCapacityMB:
          type: integer
          format: int32
        pMemAvailableMB:
          type: integer
          format: int64
        pMemCapacityMB:
          type: integer
          format: int64
        storageUsedMB:
          type: integer
          format: int64
        storageCapacityMB:
          type: integer
          format: int64
      required:
        - cpuUsedMHz
        - cpuCapacityMHz
        - memUsedMB
        - memCapacityMB
        - storageUsedMB
        - storageCapacityMB
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfClusterResourceUsageSummary:
      type: object
      description: |2
        A boxed array of *ClusterResourceUsageSummary*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ClusterResourceUsageSummary'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ClusterRuleInfo:
      type: object
      description: |2
        The *ClusterRuleInfo* data object is the base type for affinity
        and anti-affinity rules.
        
        The affinity and anti-affinity rules
        are DRS (Distributed Resource Scheduling) rules that affect the placement
        of virtual machines in a cluster. Hosts and virtual machines referenced
        in a DRS rule must be in the same cluster.
        
        Note: DRS rules are different than an individual host's CPU affinity rules
        (*VirtualMachineAffinityInfo*).
        
        The Server uses DRS rule objects to describe the current rule configuration
        (*ClusterConfigInfoEx*.*ClusterConfigInfoEx.rule*).
        Your client application uses rule objects to configure the affinity and
        anti-affinity rules
        (*ClusterConfigSpecEx*.*ClusterConfigSpecEx.rulesSpec*).
        
        You can create the following types of rules:
        - An affinity rule defines a set of virtual machines that should run
          on the same host.
          The *ClusterAffinityRuleSpec* object describes a rule that
          identifies virtual machines, but does not identify any specific host.
        - An anti-affinity rule defines a set of virtual machines that should run
          on different hosts.
          The *ClusterAntiAffinityRuleSpec* object describes a rule that
          identifies virtual machines, but does not identify any specific host.
        - A VM-Host rule defines affinity and anti-affinity relationships between
          virtual machines and hosts.
          The *ClusterVmHostRuleInfo* object describes a rule that identifies
          a virtual machine group (*ClusterVmGroup*) and affinity and
          anti-affinity host groups (*ClusterHostGroup*).
          
        Rule configuration is a dynamic process. When you create or modify a DRS rule,
        the Server applies the rule to the cluster. If the existing cluster configuration
        violates the rule, the Server attempts to correct the situation. If that is not
        possible, the Server generates a fault and produces a log event.
        DRS rules do not have precedence; all rules are applied equally.
        DRS does not validate one rule against another. If you create conflicting
        rules, the older rule takes precedence and DRS disables the newer rule.
        
        Improperly used, DRS rules can fragment the cluster and inhibit the proper
        functioning of DRS, HA, and DPM services. vSphere services never
        take any actions that would result in the violation of mandatory DRS rules.
        An operation that violates a mandatory rule would produce the following
        consequences.
        - DRS does not evacuate virtual machines to place a host in maintenance
          mode.
        - DRS does not place virtual machines for power-on or load balance virtual
          machines.
        - HA does not perform failovers.
        - DPM does not optimize power management by placing hosts into standby
          mode.
          
        To avoid these situations, exercise caution when creating more than one
        mandatory rule, or consider using only optional rules. Make sure that
        the number of hosts with which a virtual machine is related by affinity rule
        is large enough that losing a host does not prevent the virtual machine
        from running.
        
        For manual and partially automated DRS clusters, the Server produces migration
        recommendations to satisfy the DRS rules. You are not required to act on the
        recommendations, but the Server maintains the recommendations until the rules
        are satisfied.
      properties:
        key:
          description: |2
            Unique ID for rules.
            
            When adding a new rule, do not specify this property.
            The Server will assign the key.
          type: integer
          format: int32
        status:
          description: |2
            Flag to indicate whether or not the rule is currently satisfied.
          $ref: '#/components/schemas/ManagedEntityStatus_enum'
        enabled:
          description: |2
            Flag to indicate whether or not the rule is enabled.
            
            Set this property
            when you configure the rule. The default value is false (disabled).
            If there is a rule conflict, the Server can override the setting to disable
            a rule.
          type: boolean
        name:
          description: |2
            Name of the rule.
          type: string
        mandatory:
          description: |2
            Flag to indicate whether compliance with this rule is mandatory or optional.
            
            The default value is false (optional).
            - A mandatory rule will prevent a virtual machine from being powered on
              or migrated to a host that does not satisfy the rule.
            - An optional rule specifies a preference. DRS takes an optional rule
              into consideration when it places a virtual machine in the cluster.
              DRS will act on an optional rule as long as it does not impact
              the ability of the host to satisfy current CPU or memory requirements
              for virtual machines on the system. (As long as the operation does not
              cause any host to be more than 100% utilized.)
          type: boolean
        userCreated:
          description: |2
            Flag to indicate whether the rule is created by the user or the system.
          type: boolean
        inCompliance:
          description: |2
            Flag to indicate whether or not the placement of Virtual Machines is currently
            in compliance with this rule.
            
            The Server does not currently use this property.
          type: boolean
        ruleUuid:
          description: |2
            UUID for the rule.
            
            When adding a new rule, do not specify this
            property. The Server will assign the key.
          type: string
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfClusterRuleInfo:
      type: object
      description: |2
        A boxed array of *ClusterRuleInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ClusterRuleInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ClusterRuleSpec:
      type: object
      description: |2
        An incremental update to the cluster rules.
      properties:
        info:
          $ref: '#/components/schemas/ClusterRuleInfo'
      allOf:
        - $ref: '#/components/schemas/ArrayUpdateSpec'

    ArrayOfClusterRuleSpec:
      type: object
      description: |2
        A boxed array of *ClusterRuleSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ClusterRuleSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ClusterSlotPolicy:
      type: object
      description: |2
        The base class *ClusterSlotPolicy* is used for specifying how
        the slot size is to be computed for the failover level HA admission control
        policy.
        
        By default, vSphere HA defines the slot size using the largest memory
        and cpu reservations of any powered on virtual machine in the cluster.
        Subclasses of this class define various policies to modify how the slot size
        is chosen to prevent outlier virtual machines (i.e. those with much larger
        reservations than the average) from skewing the slot size. If such a policy is chosen,
        outlier virtual machines will use multiple slots. Using such a policy introduces
        a risk that vSphere HA will be unable to failover these virtual machines because
        of resource fragmentation.
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfClusterSlotPolicy:
      type: object
      description: |2
        A boxed array of *ClusterSlotPolicy*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ClusterSlotPolicy'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ClusterSystemVMsConfigInfo:
      type: object
      description: |2
        Configuration for System VMs deployment.
        
        ***Since:*** vSphere API Release 7.0.3.0
      properties:
        allowedDatastores:
          description: |2
            The only datastores which can be used for System VMs deployment.
            
            Refers instances of *Datastore*.
          type: array
          items:
            $ref: '#/components/schemas/ManagedObjectReference'
        notAllowedDatastores:
          description: |2
            Datastores which cannot be used for System VMs deployment.
            
            Refers instances of *Datastore*.
          type: array
          items:
            $ref: '#/components/schemas/ManagedObjectReference'
        dsTagCategoriesToExclude:
          description: |2
            Tag categories identifying datastores, which cannot be used for System VMs
            deployment.
          type: array
          items:
            type: string
        deploymentMode:
          description: |2
            The System VM deployment mode for vSphere clusters.
            
            Supported values are enumerated by the
            *DeploymentMode*
            type.
            An unset value implies SYSTEM\_MANAGED,
            unless the cluster is put in "Retreat Mode".
            
            ***Since:*** vSphere API Release 8.0.2.0
          type: string
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfClusterSystemVMsConfigInfo:
      type: object
      description: |2
        A boxed array of *ClusterSystemVMsConfigInfo*. To be used in *Any* placeholders.
        
        ***Since:*** vSphere API Release 7.0.3.0
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ClusterSystemVMsConfigInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ClusterSystemVMsConfigSpec:
      type: object
      description: |2
        Configuration for System VMs deployment.
        
        ***Since:*** vSphere API Release 7.0.3.0
      properties:
        allowedDatastores:
          description: |2
            The only datastores which can be used for System VMs deployment.
          type: array
          items:
            $ref: '#/components/schemas/ClusterDatastoreUpdateSpec'
        notAllowedDatastores:
          description: |2
            Datastores which cannot be used for System VMs deployment.
          type: array
          items:
            $ref: '#/components/schemas/ClusterDatastoreUpdateSpec'
        dsTagCategoriesToExclude:
          description: |2
            Tag categories identifying datastores, which cannot be used for System VMs
            deployment.
          type: array
          items:
            $ref: '#/components/schemas/ClusterTagCategoryUpdateSpec'
        deploymentMode:
          description: |2
            The System VM deployment mode for vSphere clusters.
            
            Supported values are enumerated by the
            *DeploymentMode*
            type.
            Providing an unset value does not modify deploymentMode.
            
            ***Since:*** vSphere API Release 8.0.2.0
          type: string
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfClusterSystemVMsConfigSpec:
      type: object
      description: |2
        A boxed array of *ClusterSystemVMsConfigSpec*. To be used in *Any* placeholders.
        
        ***Since:*** vSphere API Release 7.0.3.0
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ClusterSystemVMsConfigSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ClusterTagCategoryUpdateSpec:
      type: object
      description: |2
        An incremental update to a TagCategory list.
        
        ***Since:*** vSphere API Release 7.0.3.0
      properties:
        category:
          type: string
      allOf:
        - $ref: '#/components/schemas/ArrayUpdateSpec'

    ArrayOfClusterTagCategoryUpdateSpec:
      type: object
      description: |2
        A boxed array of *ClusterTagCategoryUpdateSpec*. To be used in *Any* placeholders.
        
        ***Since:*** vSphere API Release 7.0.3.0
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ClusterTagCategoryUpdateSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ClusterUsageSummary:
      type: object
      description: |2
        This class contains cluster usage summary that is populated
        by DRS and used by Cloud Placement Engine in VCD.
      properties:
        totalCpuCapacityMhz:
          description: |2
            Total CPU capacity of the cluster.
          type: integer
          format: int32
        totalMemCapacityMB:
          description: |2
            Total memory capacity of the cluster.
          type: integer
          format: int32
        cpuReservationMhz:
          description: |2
            Sum of CPU reservation of all the Resource Pools and powered-on VMs in the cluster.
          type: integer
          format: int32
        memReservationMB:
          description: |2
            Sum of memory reservation of all the Resource Pools and powered-on VMs in the cluster.
          type: integer
          format: int32
        poweredOffCpuReservationMhz:
          description: |2
            Sum of CPU reservation of all the powered-off VMs in the cluster.
          type: integer
          format: int32
        poweredOffMemReservationMB:
          description: |2
            Sum of memory reservation of all the powered-off VMs in the cluster.
          type: integer
          format: int32
        cpuDemandMhz:
          description: |2
            Sum of CPU demand of all the powered-on VMs in the cluster.
          type: integer
          format: int32
        memDemandMB:
          description: |2
            Sum of memory demand of all the powered-on VMs in the cluster.
          type: integer
          format: int32
        statsGenNumber:
          description: |2
            Generation number of the usage stats.
            
            Updated during every DRS load
            balancing call.
          type: integer
          format: int64
        cpuEntitledMhz:
          description: |2
            This is the current CPU entitlement across the cluster
          type: integer
          format: int32
        memEntitledMB:
          description: |2
            This is the current memory entitlement across the cluster
          type: integer
          format: int32
        poweredOffVmCount:
          description: |2
            The number of powered off VMs in the cluster
          type: integer
          format: int32
        totalVmCount:
          description: |2
            The number of VMs in the cluster
          type: integer
          format: int32
      required:
        - totalCpuCapacityMhz
        - totalMemCapacityMB
        - cpuReservationMhz
        - memReservationMB
        - cpuDemandMhz
        - memDemandMB
        - statsGenNumber
        - cpuEntitledMhz
        - memEntitledMB
        - poweredOffVmCount
        - totalVmCount
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfClusterUsageSummary:
      type: object
      description: |2
        A boxed array of *ClusterUsageSummary*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ClusterUsageSummary'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ClusterVmComponentProtectionSettings:
      type: object
      description: |2
        vSphere HA Virtual Machine Component Protection Service settings.
        
        vSphere HA Virtual Machine Component Protection Service detects
        and reacts to storage failures that do not necessarily cause a
        virtual machine to go down, but may impact the health or QoS of
        the virtual machine.
        
        All fields are defined as optional. In case of a reconfiguration, fields left unset
        are not changed.
      properties:
        vmStorageProtectionForAPD:
          description: |2
            VM storage protection setting for storage failures categorized as All Paths
            Down (APD).
            
            APD is a condition where a storage has become inaccessible
            for unknown reasons. It only indicates loss of connectivity and does not indicate
            storage device failure or LUN removal (Permenant Device Loss or PDL). The details
            of APD and PDL are described in *HostMountInfoInaccessibleReason_enum*.
            
            This property is meaningful only when vSphere HA is turned on. Valid values are
            specified by *ClusterVmComponentProtectionSettingsStorageVmReaction_enum*. The default value is
            *disabled* for cluster setting and
            *clusterDefault* for per-VM setting.
            
            When an APD condition happens and the host begins timing out I/Os
            (@link vim.host.MountInfo.InaccessibleReason#AllPathsDown\_Timeout}, VM Component
            Protection service will react based on the specific value of this property:
            - ***disabled***, no reaction, i.e., no
              VM failover and no event reporting for the failures.
            - ***warning***, service will issue events,
              alarms and/or config issues for component failures.
            - ***restartConservative***, service will
              terminate the impacted VMs after a preconfigured time interval
              (*ClusterVmComponentProtectionSettings.vmTerminateDelayForAPDSec*) if they are to be restarted.
            - ***restartAggressive***, service might
              terminate the impacted VMs after a preconfigured time interval
              (*ClusterVmComponentProtectionSettings.vmTerminateDelayForAPDSec*). In some cases, a VM is terminated
              even if it may not able to be restarted or lose Fault Tolerance redundancy.
            - ***clusterDefault***, service will implement
              cluster default.
          type: string
        enableAPDTimeoutForHosts:
          description: |2
            This property indicates if APD timeout will be enabled for all the hosts
            in the cluster when vSphere HA is configured.
            
            The details of APD timeout are
            described in *HostMountInfoInaccessibleReason_enum*.
            
            If *ClusterDasConfigInfo.vmComponentProtecting* is *disabled*,
            the property will be ignored. Otherwise, for each host in the cluster,
            APD timeout will be enabled. Note that no change will be made for a host if it
            already had APD timeout enabled.
            
            This property is meaningful only for cluster setting. It is ignored if specified at VM level.
            The default value is false if not specified.
            
            Note that this property is not persisted by vSphere backend. It does not impact any cluster
            reconfiguration or host operation (such as adding a host to a cluster) that might happen later.
          type: boolean
        vmTerminateDelayForAPDSec:
          description: |2
            The time interval after an APD timeout has been declared and before VM Component
            Protection service will terminate the VM.
            
            The value only applies if
            *ClusterVmComponentProtectionSettings.vmStorageProtectionForAPD* is set to *restartConservative* or
            *restartAggressive*.
            
            The default value is 180 seconds if not specified. To use cluster setting for a VM override,
            set to -1 in per-VM setting.
          type: integer
          format: int32
        vmReactionOnAPDCleared:
          description: |2
            Action taken by VM Component Protection service for a powered on VM when APD
            condition clears after APD timeout.
            
            This property is meaningful only when vSphere HA is turned on. Valid values are
            specified by *ClusterVmComponentProtectionSettingsVmReactionOnAPDCleared_enum*. The default value is
            *none* for cluster setting and
            *useClusterDefault* for per-VM setting.
          type: string
        vmStorageProtectionForPDL:
          description: |2
            VM storage protection setting for storage failures categorized as Permenant Device
            Loss (PDL).
            
            PDL indicates storage device failure or LUN removal. In case of PDL,
            the failed datastore or device is unlikely to recover. The details of PDL are
            described in *HostMountInfoInaccessibleReason_enum*.
            
            This property is meaningful only when vSphere HA is turned on. Valid values are
            *disabled*, *warning*,
            *restartAggressive* and *clusterDefault*.
            The default value is *disabled* for cluster setting and
            *clusterDefault* for per-VM setting.
            
            When set to *restartAggressive*, VM Component Protection service
            will immediately terminate the VMs impacted by PDL and will attempt to restart the VMs
            with best effort. When set to the other values, the behavior is the same as described for
            *ClusterVmComponentProtectionSettings.vmStorageProtectionForAPD*.
          type: string
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfClusterVmComponentProtectionSettings:
      type: object
      description: |2
        A boxed array of *ClusterVmComponentProtectionSettings*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ClusterVmComponentProtectionSettings'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ClusterVmGroup:
      type: object
      description: |2
        The *ClusterVmGroup* data object identifies virtual machines
        for VM-Host rules.
        
        VM-Host rules determine placement of virtual machines
        on hosts in a cluster.
        The logic specified in a *ClusterVmHostRuleInfo* object
        determines where virtual machines can be powered-on.
        
        If a virtual machine is removed from the cluster, it loses its DRS group
        affiliation. The Server does not restore any group affiliations if the
        virtual machine is returned to the cluster.
      properties:
        vm:
          description: |2
            List of virtual machines that are part of this group.
            
            A virtual machine group can contain zero or more virtual machines.
            
            Refers instances of *VirtualMachine*.
          type: array
          items:
            $ref: '#/components/schemas/ManagedObjectReference'
      allOf:
        - $ref: '#/components/schemas/ClusterGroupInfo'

    ArrayOfClusterVmGroup:
      type: object
      description: |2
        A boxed array of *ClusterVmGroup*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ClusterVmGroup'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ClusterVmHostRuleInfo:
      type: object
      description: |2
        A *ClusterVmHostRuleInfo* object identifies virtual machines
        and host groups that determine virtual machine placement. The virtual
        machines and hosts referenced by a VM-Host rule must be in the same cluster.
        
        A VM-Host rule identifies the following groups.
        - A virtual machine group (*ClusterVmGroup*).
        - Two host groups - an affine host group and an anti-affine host group
          (*ClusterHostGroup*).
          At least one of the groups must contain one or more hosts.
          
        *ClusterVmHostRuleInfo* stores only the names of the relevant
        virtual machine and host groups. The group contents are stored in
        the virtual machine and host group objects.
        
        When you modify a VM-Host rule, only the fields that are specified are set.
      properties:
        vmGroupName:
          description: |2
            Virtual group name (*ClusterVmGroup*.*ClusterGroupInfo.name*).
            
            The virtual group may contain one or more virtual machines.
          type: string
        affineHostGroupName:
          description: |2
            Name of the affine host group
            (*ClusterHostGroup*.*ClusterGroupInfo.name*).
            
            The affine host group identifies hosts on which
            *ClusterVmHostRuleInfo.vmGroupName* virtual machines can be powered-on.
            The value of the *ClusterRuleInfo.mandatory* property
            determines how the Server interprets the rule.
          type: string
        antiAffineHostGroupName:
          description: |2
            Name of the anti-affine host group
            (*ClusterHostGroup*.*ClusterGroupInfo.name*).
            
            The anti-affine host group identifies hosts on which
            *ClusterVmHostRuleInfo.vmGroupName* virtual machines should not
            be powered-on.
            The value of the *ClusterRuleInfo.mandatory* property
            determines how the Server interprets the rule.
          type: string
      allOf:
        - $ref: '#/components/schemas/ClusterRuleInfo'

    ArrayOfClusterVmHostRuleInfo:
      type: object
      description: |2
        A boxed array of *ClusterVmHostRuleInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ClusterVmHostRuleInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ClusterVmOrchestrationInfo:
      type: object
      description: |2
        The *ClusterVmOrchestrationInfo* data object contains the orchestration
        configuration for a single virtual machine.
        
        This makes it possible to
        override the defaut behavior for an individual virtual machine.
      properties:
        vm:
          description: |2
            Reference to the VM that the ready state is applied to.
            
            Refers instance of *VirtualMachine*.
          $ref: '#/components/schemas/ManagedObjectReference'
        vmReadiness:
          description: |2
            Readiness policy that apply to this virtual machine.
            
            Values specified in this object override the cluster-wide
            defaults for virtual machines.
            *ClusterOrchestrationInfo.defaultVmReadiness*
          $ref: '#/components/schemas/ClusterVmReadiness'
      required:
        - vm
        - vmReadiness
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfClusterVmOrchestrationInfo:
      type: object
      description: |2
        A boxed array of *ClusterVmOrchestrationInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ClusterVmOrchestrationInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ClusterVmOrchestrationSpec:
      type: object
      description: |2
        An incremental update to the per-VM orchestration config.
      properties:
        info:
          $ref: '#/components/schemas/ClusterVmOrchestrationInfo'
      allOf:
        - $ref: '#/components/schemas/ArrayUpdateSpec'

    ArrayOfClusterVmOrchestrationSpec:
      type: object
      description: |2
        A boxed array of *ClusterVmOrchestrationSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ClusterVmOrchestrationSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ClusterVmReadiness:
      type: object
      description: |2
        VM readiness policy specifies when a VM is deemed ready.
        
        This is used in cluster VM orchestration settings. For example, vSphere HA
        restarts lower priority VMs only after higher priority VMs are ready.
      properties:
        readyCondition:
          description: |2
            Ready condition for a virtual machine.
            
            See *ClusterVmReadinessReadyCondition_enum*.
            
            If not specified at either the cluster level or the virtual machine
            level, this will default to *none*.
          type: string
        postReadyDelay:
          description: |2
            Additional delay in seconds after ready condition is met.
            
            A VM is
            considered ready at this point.
            
            If not specified in a VM override, cluster default setting is
            used. Alternatively, set to -1 in per-VM setting to use cluster default
            value.
          type: integer
          format: int32
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfClusterVmReadiness:
      type: object
      description: |2
        A boxed array of *ClusterVmReadiness*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ClusterVmReadiness'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ClusterVmToolsMonitoringSettings:
      type: object
      description: |2
        The *ClusterVmToolsMonitoringSettings* data object contains
        virtual machine monitoring settings that are used by the Virtual Machine Health Monitoring Service.
        
        The Service checks the VMware Tools heartbeat of a virtual machine.
        If heartbeats have not been received within a specified time interval, the Service
        declares the virtual machine as failed and resets the virtual machine.
        
        These settings are applied to individual virtual machines during cluster reconfiguration
        (*ClusterDasVmConfigInfo*.*ClusterDasVmConfigInfo.dasSettings*.*ClusterDasVmSettings.vmToolsMonitoringSettings*). You can also specify them as default values
        (*ClusterDasConfigInfo*.*ClusterDasConfigInfo.defaultVmSettings*).
        
        All fields are optional. In case of a reconfiguration, fields left unset are not changed.
      properties:
        enabled:
          deprecated: true
          description: |2
            Deprecated as of vSphere API 4.1, use *ClusterVmToolsMonitoringSettings.vmMonitoring*.
            
            Flag indicating whether or not the Virtual Machine Health Monitoring
            service is enabled.
            
            The Server does not use this property.
          type: boolean
        vmMonitoring:
          description: |2
            Indicates the type of virtual machine monitoring.
            
            Specify a string value corresponding to one of the
            following *ClusterDasConfigInfoVmMonitoringState_enum* values:
            - <code>vmMonitoringDisabled</code> (the default value)
            - <code>vmMonitoringOnly</code>
            - <code>vmAndAppMonitoring</code>
              
            The individual VMware Tools setting for virtual machine monitoring depends on
            the HA Virtual Machine Health Monitoring Service level that is
            defined for the cluster
            (*ClusterDasConfigInfo*.*ClusterDasConfigInfo.vmMonitoring*).
            The following list indicates the supported VMware Tools <code>vmMonitoring</code> values
            according to the cluster configuration.
            - If the cluster configuration specifies <code>vmMonitoringDisabled</code>,
              the Service is disabled and the HA Service ignores the VMware Tools monitoring setting.
            - If the cluster configuration specifies <code>vmMonitoringOnly</code>,
              the Service supports <code>vmMonitoringOnly</code> or <code>vmMonitoringDisabled</code> only.
            - If the cluster configuration specifies <code>vmAndAppMonitoring</code>,
              you can use any of the *ClusterDasConfigInfoVmMonitoringState_enum* values.
              
            The *ClusterVmToolsMonitoringSettings.clusterSettings* value has no
            effect on the constraint imposed by the HA Virtual Machine Health Monitoring Service
            level that is defined for the cluster
            (*ClusterDasConfigInfo*.*ClusterDasConfigInfo.vmMonitoring*).
            
            Application monitoring events are generated regardless of the
            currently configured type of virtual machine monitoring.
            You can use these events even if monitoring is being disabled
            or set to <code>vmMonitoringOnly</code>.
          type: string
        clusterSettings:
          description: |2
            Flag indicating whether to use the cluster settings or the per VM settings.
            
            The default value is true.
          type: boolean
        failureInterval:
          description: |2
            If no heartbeat has been received for at least the specified number of seconds,
            the virtual machine is declared as failed.
            
            The default value is 30.
          type: integer
          format: int32
        minUpTime:
          description: |2
            The number of seconds for the virtual machine's heartbeats to stabilize
            after the virtual machine has been powered on.
            
            This time should include
            the guest operating system boot-up time. The virtual machine monitoring
            will begin only after this period.
            
            The default value is 120.
          type: integer
          format: int32
        maxFailures:
          description: |2
            Maximum number of failures and automated resets allowed during the time that
            *ClusterVmToolsMonitoringSettings.maxFailureWindow* specifies.
            
            If *ClusterVmToolsMonitoringSettings.maxFailureWindow* is -1
            (no window), this represents the absolute number of failures after which
            automated response is stopped.
            
            If a virtual machine exceeds this threshold, in-depth problem analysis is
            usually needed.
            
            The default value is 3.
          type: integer
          format: int32
        maxFailureWindow:
          description: |2
            The number of seconds for the window during which up to *ClusterVmToolsMonitoringSettings.maxFailures*
            resets can occur before automated responses stop.
            
            If set to -1, no failure window is specified.
            
            The default value is -1.
          type: integer
          format: int32
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfClusterVmToolsMonitoringSettings:
      type: object
      description: |2
        A boxed array of *ClusterVmToolsMonitoringSettings*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ClusterVmToolsMonitoringSettings'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DistributedVirtualPort:
      type: object
      description: |2
        The *DistributedVirtualPort* data object represents a port in a
        *DistributedVirtualSwitch*.
        
        Virtual ports are part of a distributed
        virtual portgroup. Servers create virtual ports according to the portgroup type
        (*DistributedVirtualPortgroup*.*DistributedVirtualPortgroup.config*.*DVPortgroupConfigInfo.type*).
        See *DistributedVirtualPortgroupPortgroupType_enum*.
        - To configure host network access by port, set the distributed virtual port
          in the host virtual NIC specification
          (*HostVirtualNicSpec*.*HostVirtualNicSpec.distributedVirtualPort*.*DistributedVirtualSwitchPortConnection.portKey*).
        - To configure virtual machine network access by port, set the port
          in the virtual Ethernet card backing
          (*VirtualEthernetCard*.*VirtualDevice.backing*.*VirtualEthernetCardDistributedVirtualPortBackingInfo.port*.*DistributedVirtualSwitchPortConnection.portKey*).
      properties:
        key:
          description: |2
            Port key.
          type: string
        config:
          description: |2
            Port configuration, including identifying information, network
            settings, and the set of entities that can connect to the port.
          $ref: '#/components/schemas/DVPortConfigInfo'
        dvsUuid:
          description: |2
            UUID of the *DistributedVirtualSwitch* to which the port belongs.
          type: string
        portgroupKey:
          description: |2
            Key of the portgroup *DistributedVirtualPortgroup* to which
            the port belongs, if any.
          type: string
        proxyHost:
          description: |2
            *HostSystem* that services this port.
            
            Refers instance of *HostSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
        connectee:
          description: |2
            Entity that connects to the port.
          $ref: '#/components/schemas/DistributedVirtualSwitchPortConnectee'
        conflict:
          description: |2
            Specifies whether the port is a conflict port.
            
            A port could be marked
            as conflict if an entity is discovered connecting to a port that is
            already occupied, or if the host creates a port without conferring
            with vCenter Server.
            
            The distributed virtual switch does not persist the runtime state
            of a conflict port. Also, the port cannot move away from the host.
            vCenter Server will not move a virtual machine (VMotion) that is
            using a conflict port.
          type: boolean
        conflictPortKey:
          description: |2
            If the port is marked conflict in the case of two entities connecting to
            the same port (see
            *DistributedVirtualPort.conflict*), this is the
            key of the port which the connected entity is contending for.
          type: string
        state:
          description: |2
            Runtime state of the port.
          $ref: '#/components/schemas/DVPortState'
        connectionCookie:
          description: |2
            Cookie representing the current instance of association between a
            port and a virtual or physical NIC.
            
            See *DistributedVirtualSwitchPortConnection*.
            The same cookie is present in the physical or virtual NIC configuration
            (*DistributedVirtualSwitchPortConnection*.*DistributedVirtualSwitchPortConnection.connectionCookie*)
            so that the Server can verify that the entity is the rightful
            connectee of the port.
          type: integer
          format: int32
        lastStatusChange:
          description: |2
            The last time the
            *DistributedVirtualPort.state*.*DVPortState.runtimeInfo*
            value was changed.
          type: string
          format: date-time
        hostLocalPort:
          description: |2
            Specifies whether the port is a host local port.
            
            A host local port is created
            to resurrect the management network connection on a VMkernel virtual NIC.
            You cannot use vCenter Server to reconfigure this port and you cannot
            reassign the port.
          type: boolean
        externalId:
          description: |2
            Populate the Id assigned to vmknic or vnic by external management plane
            to port, if the port is connected to the nics.
          type: string
        segmentPortId:
          description: |2
            Populate the segmentPortId assigned to LSP.
          type: string
      required:
        - key
        - config
        - dvsUuid
        - conflict
        - lastStatusChange
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfDistributedVirtualPort:
      type: object
      description: |2
        A boxed array of *DistributedVirtualPort*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DistributedVirtualPort'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DVPortConfigInfo:
      type: object
      description: |2
        Management related configuration of a DistributedVirtualPort.
      properties:
        name:
          description: |2
            The name of the port.
          type: string
        scope:
          deprecated: true
          description: |2
            Deprecated as of vSphere API 5.5.
            
            The eligible entities that can connect to the port.
            
            If unset, there
            is no restriction on which entity can connect to the port. If set,
            only the entities in the specified list or their child entities are
            allowed to connect to the port. If scopes are defined at both port
            and portgroup level, they are taken as an "AND" relationship. If such
            a relationship doesn't make sense, the reconfigure operation will
            raise an exception.
            
            Refers instances of *ManagedEntity*.
          type: array
          items:
            $ref: '#/components/schemas/ManagedObjectReference'
        description:
          description: |2
            A description string of the port.
          type: string
        setting:
          description: |2
            The network configuration of the port.
          $ref: '#/components/schemas/DVPortSetting'
        configVersion:
          description: |2
            The version string of the configuration.
          type: string
      required:
        - configVersion
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfDVPortConfigInfo:
      type: object
      description: |2
        A boxed array of *DVPortConfigInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DVPortConfigInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DVPortConfigSpec:
      type: object
      description: |2
        Specification to reconfigure a *DistributedVirtualPort*.
      properties:
        operation:
          description: |2
            The operation to remove or modify the existing ports.
            
            The valid values
            are:
            - *edit*
            - *remove*
          type: string
        key:
          description: |2
            Key of the port to be reconfigured.
          type: string
        name:
          description: |2
            The name of the port.
          type: string
        scope:
          deprecated: true
          description: |2
            Deprecated as of vSphere API 5.5.
            
            The eligible entities that can connect to the port, for detail see
            *DVPortConfigInfo.scope*.
            
            Refers instances of *ManagedEntity*.
          type: array
          items:
            $ref: '#/components/schemas/ManagedObjectReference'
        description:
          description: |2
            The description string of the port.
          type: string
        setting:
          description: |2
            The network setting of the port.
          $ref: '#/components/schemas/DVPortSetting'
        configVersion:
          description: |2
            The version string of the configuration.
          type: string
      required:
        - operation
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfDVPortConfigSpec:
      type: object
      description: |2
        A boxed array of *DVPortConfigSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DVPortConfigSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DvsFilterConfig:
      type: object
      description: |2
        This class defines Network Filter configuration.
        
        ** Supported Qualifier and Actions **
        <table border="1"width="100%">
        <tr>
        <th>Network Filter Config</th>
        <th>Supported classes</th>
        </tr>
        <tr>
        <td>Qualifiers supported</td>
        <td>*SingleIp*, *IpRange*,
        *SingleMac*, *MacRange*,
        *DvsSingleIpPort*,
        *DvsSystemTrafficNetworkRuleQualifier*
        </td>
        </tr>
        <tr>
        <td>Actions Supported</td>
        <td>*DvsDropNetworkRuleAction*,
        *DvsAcceptNetworkRuleAction*,
        *DvsPuntNetworkRuleAction*,
        *DvsCopyNetworkRuleAction*,
        *DvsMacRewriteNetworkRuleAction*,
        *DvsGreEncapNetworkRuleAction*,
        *DvsLogNetworkRuleAction*,
        *DvsUpdateTagNetworkRuleAction*,
        *DvsRateLimitNetworkRuleAction*
        </td>
        </tr>
      properties:
        key:
          description: |2
            The key of Network Filter Config.
          type: string
        agentName:
          description: |2
            The name of the network traffic filter agent.
          type: string
        slotNumber:
          description: |2
            The slot number of the network filter agent.
          type: string
        parameters:
          description: |2
            Network Filter Parameter
          $ref: '#/components/schemas/DvsFilterParameter'
        onFailure:
          description: |2
            This property specifies whether to allow all traffic or to deny all
            traffic when a Network Filter fails to configure.
            
            Please see *DvsFilterOnFailure_enum*
            for more details.
          type: string
      allOf:
        - $ref: '#/components/schemas/InheritablePolicy'

    ArrayOfDvsFilterConfig:
      type: object
      description: |2
        A boxed array of *DvsFilterConfig*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DvsFilterConfig'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DvsFilterConfigSpec:
      type: object
      description: |2
        The specification to reconfigure Network Filter.
        
        This specification allows the user to do fine-grained updates for the
        Filter in the port settings.
        If the operation is *remove*, only the
        *DistributedVirtualPort.key* needs to be specified.
        If other fields are specified, they will be ignored. We cannot remove
        an inherited element. Only when the inherited flag is set to false and
        parent does not have an element with same key this operation succeeds.
        If the operation is *add*, then
        *DistributedVirtualPort.key* should not be specified and
        other fields need to be specified. The inherited flag should be set to
        false.
        If the operation is *edit*, then
        *DistributedVirtualPort.key* needs be specified and
        specify the other properties that need modification. If the inherited
        flag is set to true, a *DvsFilterConfig* object of same
        key must exist at the parent's level. The property values in the spec
        object will be ignored and use the values from the parent's
        *DvsFilterConfig* object instead. If inherited
        flag is set to false, then the new modifications will be applied.
      properties:
        operation:
          description: |2
            Operation type.
            
            See *ConfigSpecOperation_enum* for valid values.
          type: string
      required:
        - operation
      allOf:
        - $ref: '#/components/schemas/DvsFilterConfig'

    ArrayOfDvsFilterConfigSpec:
      type: object
      description: |2
        A boxed array of *DvsFilterConfigSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DvsFilterConfigSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DvsFilterParameter:
      type: object
      description: |2
        This class defines Network Filter parameter.
      properties:
        parameters:
          description: |2
            List of parameters for a Network Filter.
          type: array
          items:
            type: string
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfDvsFilterParameter:
      type: object
      description: |2
        A boxed array of *DvsFilterParameter*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DvsFilterParameter'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DvsFilterPolicy:
      type: object
      description: |2
        This class defines Network Filter Policy.
      properties:
        filterConfig:
          description: |2
            List of Network Filter Configurations.
            
            In an update operation, the array can contain all
            *DvsTrafficFilterConfigSpec* objects
            or all *DvsFilterConfig* and
            *DvsTrafficFilterConfig*
            object, but not mixed of Config and Spec objects. If array of
            *DvsFilterConfigSpec* and *DvsTrafficFilterConfigSpec* is used
            for updating Network Filter then only the Network Filters
            matching *DistributedVirtualPort.key* /
            *DistributedVirtualPort.key*
            is updated.
            If array of *DvsFilterConfig* and
            *DvsTrafficFilterConfig*
            is used for updating port settings, the Network Filter
            settings will be overridden with the new array specified. The
            specified array should only contain *DvsFilterConfig* and
            *DvsTrafficFilterConfig* objects with *InheritablePolicy.inherited* /
            *InheritablePolicy.inherited* set to false.
            *DvsFilterConfig*/*DvsTrafficFilterConfig* objects with
            *InheritablePolicy.inherited*/*InheritablePolicy.inherited* as
            true in the specified array will be ignored. The updated result will
            include *DvsFilterConfig*/*DvsTrafficFilterConfig* objects
            inherited from parent, if any.
          type: array
          items:
            $ref: '#/components/schemas/DvsFilterConfig'
      allOf:
        - $ref: '#/components/schemas/InheritablePolicy'

    ArrayOfDvsFilterPolicy:
      type: object
      description: |2
        A boxed array of *DvsFilterPolicy*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DvsFilterPolicy'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DVSHostLocalPortInfo:
      type: object
      description: |2
        This data object type describes the information about the host local port.
        
        A host local port is created to resurrect the management network connection
        on a VMkernel Virtual NIC.
      properties:
        switchUuid:
          description: |2
            UUID of the vSphere Distributed Switch that management interface is connected to.
          type: string
        portKey:
          description: |2
            Portkey of the DVPort that management interface is now connected to.
          type: string
        setting:
          description: |2
            The configuration of the new host local port.
          $ref: '#/components/schemas/DVPortSetting'
        vnic:
          description: |2
            The Virtual NIC device connected to this port
          type: string
      required:
        - switchUuid
        - portKey
        - setting
        - vnic
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfDVSHostLocalPortInfo:
      type: object
      description: |2
        A boxed array of *DVSHostLocalPortInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DVSHostLocalPortInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DVPortStatus:
      type: object
      description: |2
        The *DVPortStatus* data object
        contains runtime information about a *DistributedVirtualPort*.
      properties:
        linkUp:
          description: |2
            Indicates whether the port is in linkUp status.
          type: boolean
        blocked:
          description: |2
            Indicates whether the port is blocked by switch implementation.
          type: boolean
        vlanIds:
          description: |2
            VLAN ID of the port.
          type: array
          items:
            $ref: '#/components/schemas/NumericRange'
        trunkingMode:
          description: |2
            True if the port VLAN tagging/stripping is disabled.
          type: boolean
        mtu:
          description: |2
            Maximum transmission unit (MTU) of the port.
            
            You can set the MTU only
            at the switch level
            (*VMwareDVSConfigSpec*).
            If you attempt to change it at the portgroup or port level,
            the Server throws an exception.
          type: integer
          format: int32
        linkPeer:
          description: |2
            Name of the connected entity.
          type: string
        macAddress:
          description: |2
            The MAC address that is used at this port.
          type: string
        statusDetail:
          description: |2
            Additional information regarding the current status of the port.
          type: string
        vmDirectPathGen2Active:
          deprecated: true
          description: |2
            Deprecated as of vSphere API 8.0. VMDirectPath Gen 2 is no longer
            supported and there is no replacement.
            
            Indicates whether VMDirectPath Gen 2 is active on this port.
            
            If false, the reason(s) for inactivity will be provided in one or
            more of *DVPortStatus.vmDirectPathGen2InactiveReasonNetwork*,
            *DVPortStatus.vmDirectPathGen2InactiveReasonOther*,
            and *DVPortStatus.vmDirectPathGen2InactiveReasonExtended*.
            
            If the host software is not capable of VMDirectPath Gen 2,
            this property will be unset. See
            *HostCapability*.*HostCapability.vmDirectPathGen2Supported*.
          type: boolean
        vmDirectPathGen2InactiveReasonNetwork:
          deprecated: true
          description: |2
            Deprecated as of vSphere API 8.0. VMDirectPath Gen 2 is no longer
            supported and there is no replacement.
            
            If *DVPortStatus.vmDirectPathGen2Active* is false, this array will be
            populated with reasons for the inactivity that are related to network
            state or configuration.
            
            The reasons are chosen from the
            *DVPortStatusVmDirectPathGen2InactiveReasonNetwork_enum*
            values.
            
            Other reasons for inactivity will be provided in
            *DVPortStatus.vmDirectPathGen2InactiveReasonOther*. If there is a reason
            for inactivity that cannot be described by the available constants,
            *DVPortStatus.vmDirectPathGen2InactiveReasonExtended* will be populated
            with an additional explanation provided by the platform.
            
            Note that this list of reasons is not guaranteed to be exhaustive.
          type: array
          items:
            type: string
        vmDirectPathGen2InactiveReasonOther:
          deprecated: true
          description: |2
            Deprecated as of vSphere API 8.0. VMDirectPath Gen 2 is no longer
            supported and there is no replacement.
            
            If *DVPortStatus.vmDirectPathGen2Active* is false, this array will be
            populated with reasons for the inactivity that are not related to
            network state or configuration.
            
            The reasons are chosen from the
            *DVPortStatusVmDirectPathGen2InactiveReasonOther_enum*
            values.
            
            Network-related reasons for inactivity will be provided in
            *DVPortStatus.vmDirectPathGen2InactiveReasonNetwork*. If there is a reason
            for inactivity that cannot be described by the available constants,
            *DVPortStatus.vmDirectPathGen2InactiveReasonExtended* will be populated
            with an additional explanation provided by the platform.
            
            Note that this list of reasons is not guaranteed to be exhaustive.
            
            See also *HostCapability.vmDirectPathGen2Supported*.
          type: array
          items:
            type: string
        vmDirectPathGen2InactiveReasonExtended:
          deprecated: true
          description: |2
            Deprecated as of vSphere API 8.0. VMDirectPath Gen 2 is no longer
            supported and there is no replacement.
            
            If *DVPortStatus.vmDirectPathGen2Active* is false, this property may
            contain an explanation provided by the platform, beyond the reasons
            (if any) listed in *DVPortStatus.vmDirectPathGen2InactiveReasonNetwork*
            and/or *DVPortStatus.vmDirectPathGen2InactiveReasonOther*.
          type: string
      required:
        - linkUp
        - blocked
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfDVPortStatus:
      type: object
      description: |2
        A boxed array of *DVPortStatus*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DVPortStatus'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DVPortSetting:
      type: object
      description: |2
        The *DVPortSetting* data object
        describes the network configuration of a *DistributedVirtualPort*.
      properties:
        blocked:
          description: |2
            Indicates whether this port is blocked.
            
            If a port is blocked,
            packet forwarding is stopped.
          $ref: '#/components/schemas/BoolPolicy'
        vmDirectPathGen2Allowed:
          deprecated: true
          description: |2
            Deprecated as of vSphere API 8.0. VMDirectPath Gen 2 is no longer supported and
            there is no replacement.
            
            Indicates whether this port is allowed to do VMDirectPath Gen2 network passthrough.
            
            Direct path capability is defined at host, switch, and device levels.
            See the <code>vmDirectPathGen2Supported</code> properties on the
            *DVSFeatureCapability*,
            *HostCapability*, *PhysicalNic*,
            and *VirtualEthernetCardOption* objects.
          $ref: '#/components/schemas/BoolPolicy'
        inShapingPolicy:
          description: |2
            Network shaping policy for controlling throughput of inbound traffic.
          $ref: '#/components/schemas/DVSTrafficShapingPolicy'
        outShapingPolicy:
          description: |2
            Network shaping policy for controlling throughput of outbound traffic.
          $ref: '#/components/schemas/DVSTrafficShapingPolicy'
        vendorSpecificConfig:
          description: |2
            Opaque binary blob that stores vendor specific configuration.
          $ref: '#/components/schemas/DVSVendorSpecificConfig'
        networkResourcePoolKey:
          deprecated: true
          description: |2
            Deprecated as of vSphere API 6.0
            Use *DVPortgroupConfigInfo.vmVnicNetworkResourcePoolKey* instead
            to reference the virtual NIC network resource pool.
            
            The key of user defined network resource pool to be associated with a port.
            
            The default value for this property is "-1", indicating that
            this port is not associated with any network resource pool.
          $ref: '#/components/schemas/StringPolicy'
        filterPolicy:
          description: |2
            Configuration for Network Filter Policy.
          $ref: '#/components/schemas/DvsFilterPolicy'
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfDVPortSetting:
      type: object
      description: |2
        A boxed array of *DVPortSetting*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DVPortSetting'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DVPortState:
      type: object
      description: |2
        The state of a DistributedVirtualPort.
      properties:
        runtimeInfo:
          description: |2
            Run time information of the port.
            
            This property is set only when the port is running.
          $ref: '#/components/schemas/DVPortStatus'
        stats:
          description: |2
            Statistics of the port.
          $ref: '#/components/schemas/DistributedVirtualSwitchPortStatistics'
        vendorSpecificState:
          description: |2
            Opaque binary blob that stores vendor-specific runtime state data.
          type: array
          items:
            $ref: '#/components/schemas/DistributedVirtualSwitchKeyedOpaqueBlob'
      required:
        - stats
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfDVPortState:
      type: object
      description: |2
        A boxed array of *DVPortState*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DVPortState'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DvsTrafficFilterConfig:
      type: object
      description: |2
        This class defines Traffic Filter configuration.
        
        ** Supported Qualifier and Actions **
        <table border="1"width="100%">
        <tr>
        <th>Traffic Filter Config</th>
        <th>Supported classes</th>
        </tr>
        <tr>
        <td>Qualifiers supported</td>
        <td>*SingleIp*, *IpRange*,
        *SingleMac*, *MacRange*,
        *DvsSingleIpPort*,
        *DvsSystemTrafficNetworkRuleQualifier*
        </td>
        </tr>
        <tr>
        <td>Actions Supported</td>
        <td>*DvsDropNetworkRuleAction*,
        *DvsAcceptNetworkRuleAction*,
        *DvsPuntNetworkRuleAction*,
        *DvsCopyNetworkRuleAction*,
        *DvsMacRewriteNetworkRuleAction*,
        *DvsGreEncapNetworkRuleAction*,
        *DvsLogNetworkRuleAction*,
        *DvsUpdateTagNetworkRuleAction*,
        *DvsRateLimitNetworkRuleAction*
        </td>
        </tr>
      properties:
        trafficRuleset:
          description: |2
            Network Traffic Ruleset
          $ref: '#/components/schemas/DvsTrafficRuleset'
      allOf:
        - $ref: '#/components/schemas/DvsFilterConfig'

    ArrayOfDvsTrafficFilterConfig:
      type: object
      description: |2
        A boxed array of *DvsTrafficFilterConfig*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DvsTrafficFilterConfig'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DvsTrafficFilterConfigSpec:
      type: object
      description: |2
        The specification to reconfigure Traffic Filter.
        
        This specification allows the user to do fine-grained updates for the
        Traffic Filter in the port settings.
        If the operation is *remove*, only the
        *DistributedVirtualPort.key* needs to be specified.
        If other fields are specified, they will be ignored. We cannot remove
        an inherited element. Only when the inherited flag is set to false and
        parent does not have an element with same key this operation succeeds.
        If the operation is *add*, then
        *DistributedVirtualPort.key* should not be specified and
        other fields need to be specified. The inherited flag should be set to
        false.
        If the operation is *edit*, then
        *DistributedVirtualPort.key* needs be specified and
        specify the other properties that need modification. If the inherited
        flag is set to true, a *DvsTrafficFilterConfig* object of same
        key must exist at the parent's level. The property values in the spec
        object will be ignored and use the values from the parent's
        *DvsTrafficFilterConfig* object instead. If inherited
        flag is set to false, then the new modifications will be applied.
      properties:
        operation:
          description: |2
            Operation type.
            
            See *ConfigSpecOperation_enum* for valid values.
          type: string
      required:
        - operation
      allOf:
        - $ref: '#/components/schemas/DvsTrafficFilterConfig'

    ArrayOfDvsTrafficFilterConfigSpec:
      type: object
      description: |2
        A boxed array of *DvsTrafficFilterConfigSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DvsTrafficFilterConfigSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DVSTrafficShapingPolicy:
      type: object
      description: |2
        This data object type describes traffic shaping policy.
      properties:
        enabled:
          description: |2
            The flag to indicate whether or not traffic shaper is enabled on
            the port.
          $ref: '#/components/schemas/BoolPolicy'
        averageBandwidth:
          description: |2
            The average bandwidth in bits per second if shaping is enabled on
            the port.
          $ref: '#/components/schemas/LongPolicy'
        peakBandwidth:
          description: |2
            The peak bandwidth during bursts in bits per second if traffic
            shaping is enabled on the port.
          $ref: '#/components/schemas/LongPolicy'
        burstSize:
          description: |2
            The maximum burst size allowed in bytes if shaping is enabled on
            the port.
          $ref: '#/components/schemas/LongPolicy'
      allOf:
        - $ref: '#/components/schemas/InheritablePolicy'

    ArrayOfDVSTrafficShapingPolicy:
      type: object
      description: |2
        A boxed array of *DVSTrafficShapingPolicy*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DVSTrafficShapingPolicy'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DVSVendorSpecificConfig:
      type: object
      description: |2
        This data object type describes vendor specific configuration.
      properties:
        keyValue:
          description: |2
            An opaque binary blob that stores vendor specific configuration.
          type: array
          items:
            $ref: '#/components/schemas/DistributedVirtualSwitchKeyedOpaqueBlob'
      allOf:
        - $ref: '#/components/schemas/InheritablePolicy'

    ArrayOfDVSVendorSpecificConfig:
      type: object
      description: |2
        A boxed array of *DVSVendorSpecificConfig*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DVSVendorSpecificConfig'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DVPortgroupConfigInfo:
      type: object
      description: |2
        The *DVPortgroupConfigInfo* data object defines
        the configuration of a *DistributedVirtualPortgroup*.
      properties:
        key:
          description: |2
            Key of the portgroup.
          type: string
        name:
          description: |2
            Name of the portgroup.
          type: string
        numPorts:
          description: |2
            Number of ports in the portgroup.
          type: integer
          format: int32
        distributedVirtualSwitch:
          description: |2
            Distributed virtual switch that the portgroup is defined on.
            
            This property should always be set unless the user's setting
            does not have System.Read privilege on the object referred to
            by this property.
            
            Refers instance of *DistributedVirtualSwitch*.
          $ref: '#/components/schemas/ManagedObjectReference'
        defaultPortConfig:
          description: |2
            Common network setting for all the ports in the portgroup.
          $ref: '#/components/schemas/DVPortSetting'
        description:
          description: |2
            Description of the portgroup.
          type: string
        type:
          description: |2
            Type of portgroup.
            
            See
            *DistributedVirtualPortgroup*.*DistributedVirtualPortgroupPortgroupType_enum*
            for possible values.
          type: string
        backingType:
          description: |2
            Backing type of portgroup.
            
            See
            *DistributedVirtualPortgroup*.*DistributedVirtualPortgroupBackingType_enum*
            for possible values.
            The default value is "standard"
          type: string
        policy:
          description: |2
            Portgroup policy.
          $ref: '#/components/schemas/DVPortgroupPolicy'
        portNameFormat:
          description: |2
            If set, a name will be automatically generated based on this format
            string for a port when it is created in or moved into the portgroup.
            
            The format string can contain meta tags that will be resolved
            to the corresponding values in generating a name, if applicable for
            the port at the time of name generation.
            
            To insert a meta tag in the format string,
            enclose the names defined as meta tag names inside angle brackets.
            See *DistributedVirtualPortgroupMetaTagName_enum* for a list of
            currently available meta tags. For example,
            "redNetwork-&lt;portIndex&gt;" and "&lt;dvsName&gt;-pnic&lt;portIndex&gt;"
            result in generated port names like "redNetwork-2" and "switch-pnic3".
            
            If a meta tag is recognized, but there is no applicable value, the tag
            will be expanded to empty string. If an arbitrary name appears inside
            a "&lt;&gt;" pair and is not recognized as one of the defined meta tags,
            the substring is treated as-is and appear unchanged in the generated name.
            
            To prevent a meta tag from being expanded, prefix the meta tag with a
            '\\' (backslash). For example, the format string "abc\\&lt;portIndex&gt;def"
            results in the generated port name "abc&lt;portIndex&gt;def".
          type: string
        scope:
          deprecated: true
          description: |2
            Deprecated as of vSphere API 5.5.
            
            Eligible entities that can connect to the portgroup.
            
            If unset,
            there is no restriction on which entity can connect to the portgroup.
            If set, only the entities in the specified list or their child
            entities are allowed to connect to the portgroup. If scopes are
            defined at both port and portgroup level, they are taken as an "AND"
            relationship. If such a relationship doesn't make sense, the
            reconfigure operation will raise an exception.
            
            Refers instances of *ManagedEntity*.
          type: array
          items:
            $ref: '#/components/schemas/ManagedObjectReference'
        vendorSpecificConfig:
          description: |2
            Opaque binary blob that stores vendor specific configuration.
          type: array
          items:
            $ref: '#/components/schemas/DistributedVirtualSwitchKeyedOpaqueBlob'
        configVersion:
          description: |2
            Configuration version number.
          type: string
        autoExpand:
          description: |2
            If set to true, this property ignores the limit on the number of ports in the
            portgroup.
            
            When a Virtual Machine/Host tries to connect to the portgroup and there
            are no free ports available in the portgroup, new ports will be automatically
            added to the portgroup. The flag is currently supported only for static portgroups.
            
            When this property is set to true, the portgroup becomes a potential candidate for
            auto-shrink. Once the portgroup has auto-expanded then its disconnected ports are
            likely to be deleted automatically, as a part of auto-shrink step, if there are more
            than certain number of free ports. If the portgroup never auto-expanded, then it will
            never lose any free ports.
          type: boolean
        vmVnicNetworkResourcePoolKey:
          description: |2
            The key of virtual NIC network resource pool to be associated with a portgroup.
            
            The default value for this property is unset, indicating that
            this portgroup is not associated with any virtual NIC network resource pool.
            To clear the value of this property and revert to unset, set the
            *DVPortgroupConfigSpec.vmVnicNetworkResourcePoolKey*
            to "-1" in an update operation.
          type: string
        uplink:
          description: |2
            Indicates whether the portgroup is an uplink portroup.
          type: boolean
        transportZoneUuid:
          description: |2
            The UUID of transport zone to be associated with a NSX portgroup.
          type: string
        transportZoneName:
          description: |2
            The name of transport zone to be associated with a NSX portgroup.
          type: string
        logicalSwitchUuid:
          description: |2
            The logical switch UUID, which is used by NSX portgroup
          type: string
        segmentId:
          description: |2
            The segment ID of logical switch
          type: string
      required:
        - key
        - name
        - numPorts
        - type
        - policy
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfDVPortgroupConfigInfo:
      type: object
      description: |2
        A boxed array of *DVPortgroupConfigInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DVPortgroupConfigInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DVPortgroupConfigSpec:
      type: object
      description: |2
        The *DVPortgroupConfigSpec*
        data object contains configuration data for a
        *DistributedVirtualPortgroup*.
        
        Use the
        *DistributedVirtualPortgroup.ReconfigureDVPortgroup_Task*
        method to apply the configuration to the portgroup.
      properties:
        dynamicProperty:
          description: |2
            Set of dynamic properties.
            
            This property is optional because only the
            properties of an object that are unknown to a client will be part of this set.
            This property is not readonly just in case we want to send such properties
            from a client in the future.
          type: array
          items:
            $ref: '#/components/schemas/DynamicProperty'
        configVersion:
          description: |2
            Version string of the configuration that this spec is trying to
            change.
            
            This property is required in reconfiguring a portgroup and
            should be set to the same value as the
            *DVPortgroupConfigInfo.configVersion*.
            This property is ignored in creating a portgroup if set.
          type: string
        name:
          description: |2
            Name of the portgroup.
          type: string
        numPorts:
          description: |2
            Number of ports in the portgroup.
            
            Setting this number larger than the
            number of existing ports in the portgroup causes new ports to
            be added to the portgroup to meet the number. Setting this property
            smaller than the number of existing ports deletes the free ports
            from the portgroup. If the number cannot be met by deleting free ports,
            a fault is raised. If new ports are added to the portgroup, they
            are also added to the switch. For portgroups of type ephemeral this
            property is ignored.
          type: integer
          format: int32
        portNameFormat:
          description: |2
            Format of the name of the ports when ports are created in the portgroup.
            
            For details see *DVPortgroupConfigInfo.portNameFormat*.
          type: string
        defaultPortConfig:
          description: |2
            Default network setting for all the ports in the portgroup.
          $ref: '#/components/schemas/DVPortSetting'
        description:
          description: |2
            Description of the portgroup.
          type: string
        type:
          description: |2
            Type of portgroup.
            
            See
            *DistributedVirtualPortgroup*.*DistributedVirtualPortgroupPortgroupType_enum*
            for possible values.
          type: string
        backingType:
          description: |2
            Backing type of portgroup.
            
            See
            *DistributedVirtualPortgroup*.*DistributedVirtualPortgroupBackingType_enum*
            for possible values.
            The default value is "standard"
          type: string
        scope:
          deprecated: true
          description: |2
            Deprecated as of vSphere API 5.5.
            
            Eligible entities that can connect to the port.
            
            See
            *DVPortgroupConfigInfo*.*DVPortgroupConfigInfo.scope*.
            
            Refers instances of *ManagedEntity*.
          type: array
          items:
            $ref: '#/components/schemas/ManagedObjectReference'
        policy:
          description: |2
            Portgroup policy.
          $ref: '#/components/schemas/DVPortgroupPolicy'
        vendorSpecificConfig:
          description: |2
            Opaque binary blob that stores vendor specific configuration.
          type: array
          items:
            $ref: '#/components/schemas/DistributedVirtualSwitchKeyedOpaqueBlob'
        autoExpand:
          description: |2
            If set to true, this property ignores the limit on the number of ports in the
            portgroup.
            
            When a Virtual Machine/Host tries to connect to the portgroup and there
            are no free ports available in the portgroup, new ports will be automatically
            added to the portgroup. The flag is currently supported only for static portgroups.
            
            Setting this property to true makes the portgroup a potential candidate for
            auto-shrink. Once the portgroup has auto-expanded then its disconnected ports are
            likely to be deleted automatically, as a part of auto-shrink step, if there are more
            than certain number of free ports. If the portgroup never auto-expanded, then it will
            never lose any free ports.
          type: boolean
        vmVnicNetworkResourcePoolKey:
          description: |2
            The key of virtual NIC network resource pool to be associated with a portgroup.
            
            Setting this property to "-1", would mean that this portgroup
            is not associated with any virtual NIC network resource pool.
          type: string
        transportZoneUuid:
          description: |2
            The UUID of transport zone to be associated with a NSX portgroup.
          type: string
        transportZoneName:
          description: |2
            The name of transport zone to be associated with a NSX portgroup.
          type: string
        logicalSwitchUuid:
          description: |2
            The logical switch UUID, which is used by NSX portgroup
          type: string
        segmentId:
          description: |2
            The segment ID of logical switch
          type: string
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfDVPortgroupConfigSpec:
      type: object
      description: |2
        A boxed array of *DVPortgroupConfigSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DVPortgroupConfigSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DistributedVirtualPortgroupNsxPortgroupOperationResult:
      type: object
      description: |2
        The *DistributedVirtualPortgroupNsxPortgroupOperationResult*
        data object defines the result of NSX port group operations, including
        create, reconfigure and delete.
      properties:
        portgroups:
          description: |2
            The management object of NSX port group.
            
            For add operation, it indicates the port groups created successfully.
            For reconfigure operation, it indicates the port groups updated
            successfully.
            For delete operation, it indicates the port groups failed deleted.
            
            Refers instances of *DistributedVirtualPortgroup*.
          type: array
          items:
            $ref: '#/components/schemas/ManagedObjectReference'
        problems:
          description: |2
            The failed port group operation details.
          type: array
          items:
            $ref: '#/components/schemas/DistributedVirtualPortgroupProblem'
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfDistributedVirtualPortgroupNsxPortgroupOperationResult:
      type: object
      description: |2
        A boxed array of *DistributedVirtualPortgroupNsxPortgroupOperationResult*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DistributedVirtualPortgroupNsxPortgroupOperationResult'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DVPortgroupPolicy:
      type: object
      description: |2
        The DistributedVirtualPortgroup policies.
        
        This field is not applicable
        when queried directly against an ESX host.
      properties:
        blockOverrideAllowed:
          description: |2
            Allow the *DVPortSetting.blocked* setting
            of an individual port to override the setting in
            *DVPortgroupConfigInfo.defaultPortConfig* of
            a portgroup.
          type: boolean
        shapingOverrideAllowed:
          description: |2
            Allow the *DVPortSetting.inShapingPolicy* or
            *DVPortSetting.outShapingPolicy* settings
            of an individual port to override the setting in
            *DVPortgroupConfigInfo.defaultPortConfig* of
            a portgroup.
          type: boolean
        vendorConfigOverrideAllowed:
          description: |2
            Allow the *DVPortSetting.vendorSpecificConfig*
            setting of an individual port to override the setting in
            *DVPortgroupConfigInfo.defaultPortConfig* of
            a portgroup.
          type: boolean
        livePortMovingAllowed:
          description: |2
            Allow a live port to be moved in and out of the portgroup.
          type: boolean
        portConfigResetAtDisconnect:
          description: |2
            If true, reset the port network setting back to the portgroup setting
            (thus removing the per-port setting) when the port is disconnected from
            the connectee.
          type: boolean
        networkResourcePoolOverrideAllowed:
          description: |2
            Allow the setting of
            *DVPortSetting.networkResourcePoolKey* of an
            individual port to override the setting in
            *DVPortgroupConfigInfo.defaultPortConfig*
            of a portgroup.
          type: boolean
        trafficFilterOverrideAllowed:
          description: |2
            Allow the setting of
            *DVPortSetting.filterPolicy*,
            for an individual port to override the setting in
            *DVPortgroupConfigInfo.defaultPortConfig* of
            a portgroup.
          type: boolean
      required:
        - blockOverrideAllowed
        - shapingOverrideAllowed
        - vendorConfigOverrideAllowed
        - livePortMovingAllowed
        - portConfigResetAtDisconnect
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfDVPortgroupPolicy:
      type: object
      description: |2
        A boxed array of *DVPortgroupPolicy*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DVPortgroupPolicy'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DistributedVirtualPortgroupProblem:
      type: object
      description: |2
        The *DistributedVirtualPortgroupProblem*
        data object defines the error while excuting NSX port group operations.
      properties:
        logicalSwitchUuid:
          description: |2
            The problematic logical switch UUID
          type: string
        fault:
          description: |2
            The failure reason for each problematic logical switch UUID
          $ref: '#/components/schemas/MethodFault'
      required:
        - logicalSwitchUuid
        - fault
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfDistributedVirtualPortgroupProblem:
      type: object
      description: |2
        A boxed array of *DistributedVirtualPortgroupProblem*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DistributedVirtualPortgroupProblem'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DistributedVirtualPortgroupInfo:
      type: object
      description: |2
        This class describes a DistributedVirtualPortgroup that a device backing
        can be attached to.
      properties:
        switchName:
          description: |2
            The name of the switch.
          type: string
        switchUuid:
          description: |2
            The UUID of the switch.
          type: string
        portgroupName:
          description: |2
            The name of the portgroup.
          type: string
        portgroupKey:
          description: |2
            The key of the portgroup.
          type: string
        portgroupType:
          description: |2
            The type of portgroup.
            
            See *DistributedVirtualPortgroupPortgroupType_enum*
          type: string
        uplinkPortgroup:
          description: |2
            Whether this portgroup is an uplink portgroup.
          type: boolean
        portgroup:
          description: |2
            The portgroup.
            
            Refers instance of *DistributedVirtualPortgroup*.
          $ref: '#/components/schemas/ManagedObjectReference'
        networkReservationSupported:
          description: |2
            Indicates whether network bandwidth reservation is supported on
            the portgroup
          type: boolean
        backingType:
          description: |2
            Backing type of portgroup.
            
            See
            *DistributedVirtualPortgroup*.*DistributedVirtualPortgroupBackingType_enum*
            for possible values.
            The default value is "standard".
          type: string
        logicalSwitchUuid:
          description: |2
            The logical switch UUID, which is used by NSX portgroup
          type: string
        segmentId:
          description: |2
            The segment ID of logical switch, which is used by NSX portroup
          type: string
      required:
        - switchName
        - switchUuid
        - portgroupName
        - portgroupKey
        - portgroupType
        - uplinkPortgroup
        - portgroup
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfDistributedVirtualPortgroupInfo:
      type: object
      description: |2
        A boxed array of *DistributedVirtualPortgroupInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DistributedVirtualPortgroupInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DVPortgroupSelection:
      type: object
      description: |2
        Class to specify selection criteria of list of vNetwork Distributed Portgroups.
      properties:
        dvsUuid:
          description: |2
            vSphere Distributed Switch uuid
          type: string
        portgroupKey:
          description: |2
            List of vNetwork Distributed Portgroup keys
          type: array
          items:
            type: string
      required:
        - dvsUuid
        - portgroupKey
      allOf:
        - $ref: '#/components/schemas/SelectionSet'

    ArrayOfDVPortgroupSelection:
      type: object
      description: |2
        A boxed array of *DVPortgroupSelection*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DVPortgroupSelection'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DistributedVirtualSwitchInfo:
      type: object
      description: |2
        This class describes a DistributedVirtualSwitch that a device backing
        can attached to its ports.
      properties:
        switchName:
          description: |2
            The name of the switch.
          type: string
        switchUuid:
          description: |2
            The UUID of the switch.
          type: string
        distributedVirtualSwitch:
          description: |2
            The switch.
            
            Refers instance of *DistributedVirtualSwitch*.
          $ref: '#/components/schemas/ManagedObjectReference'
        networkReservationSupported:
          description: |2
            Indicates whether network bandwidth reservation is supported on
            the switch
          type: boolean
      required:
        - switchName
        - switchUuid
        - distributedVirtualSwitch
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfDistributedVirtualSwitchInfo:
      type: object
      description: |2
        A boxed array of *DistributedVirtualSwitchInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DistributedVirtualSwitchInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DistributedVirtualSwitchManagerCompatibilityResult:
      type: object
      description: |2
        This is the return type for the checkCompatibility method.
        
        This object
        has a host property and optionally a fault which would
        be populated only if that host is not compatible with a given dvsProductSpec.
        If the host is compatible then the error property would be unset.
      properties:
        host:
          description: |2
            The host for which results are annotated.
            
            The whole object will be
            filtered out if the caller did not have view permissions on the
            host entity.
            
            Refers instance of *HostSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
        error:
          description: |2
            This property contains the faults that makes the host not compatible
            with a given DvsProductSpec.
            
            For example, a host might not be compatible
            because it's an older version of ESX that doesn't support DVS.
          type: array
          items:
            $ref: '#/components/schemas/MethodFault'
      required:
        - host
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfDistributedVirtualSwitchManagerCompatibilityResult:
      type: object
      description: |2
        A boxed array of *DistributedVirtualSwitchManagerCompatibilityResult*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DistributedVirtualSwitchManagerCompatibilityResult'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DVSManagerDvsConfigTarget:
      type: object
      description: |2
        Configuration specification for a DistributedVirtualSwitch or
        DistributedVirtualPortgroup.
      properties:
        distributedVirtualPortgroup:
          description: |2
            List of any DistributedVirtualPortgroup available for host Virtual NIC connection.
          type: array
          items:
            $ref: '#/components/schemas/DistributedVirtualPortgroupInfo'
        distributedVirtualSwitch:
          description: |2
            List of any DistributedVirtualSwitch available for host Virtual NIC connection.
          type: array
          items:
            $ref: '#/components/schemas/DistributedVirtualSwitchInfo'
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfDVSManagerDvsConfigTarget:
      type: object
      description: |2
        A boxed array of *DVSManagerDvsConfigTarget*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DVSManagerDvsConfigTarget'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DistributedVirtualSwitchManagerDvsProductSpec:
      type: object
      description: |2
        This class is used to specify ProductSpec for the DVS.
        
        The two properties are
        strictly mutually exclusive. If both properties are set, then
        an InvalidArgument fault would be thrown.
      properties:
        newSwitchProductSpec:
          description: |2
            The ProductSpec for new DVS
          $ref: '#/components/schemas/DistributedVirtualSwitchProductSpec'
        distributedVirtualSwitch:
          description: |2
            Get ProductSpec from the existing DVS
            
            Refers instance of *DistributedVirtualSwitch*.
          $ref: '#/components/schemas/ManagedObjectReference'
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfDistributedVirtualSwitchManagerDvsProductSpec:
      type: object
      description: |2
        A boxed array of *DistributedVirtualSwitchManagerDvsProductSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DistributedVirtualSwitchManagerDvsProductSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DistributedVirtualSwitchManagerHostArrayFilter:
      type: object
      description: |2
        Check host compatibility against all hosts specified in the array.
      properties:
        host:
          description: |2
            List of hosts to consider.
            
            Refers instances of *HostSystem*.
          type: array
          items:
            $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - host
      allOf:
        - $ref: '#/components/schemas/DistributedVirtualSwitchManagerHostDvsFilterSpec'

    ArrayOfDistributedVirtualSwitchManagerHostArrayFilter:
      type: object
      description: |2
        A boxed array of *DistributedVirtualSwitchManagerHostArrayFilter*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DistributedVirtualSwitchManagerHostArrayFilter'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DistributedVirtualSwitchManagerHostContainer:
      type: object
      description: |2
        Check host compatibility for all hosts in the container.
        
        If the recursive
        flag is true, then check hosts at all levels within this container, otherwise
        check only at the container level. In case of container being a *Datacenter*,
        the recursive flag is applied to its HostFolder.
      properties:
        container:
          description: |2
            Check compatibility of hosts in this container.
            
            The supported container
            types are Datacenter, Folder, and ComputeResource.
            
            Refers instance of *ManagedEntity*.
          $ref: '#/components/schemas/ManagedObjectReference'
        recursive:
          description: |2
            If true, include hosts of all levels in the hierarchy with
            container as root of the tree.
            
            In case of container being a *Datacenter*,
            the recursive flag is applied to its HostFolder.
          type: boolean
      required:
        - container
        - recursive
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfDistributedVirtualSwitchManagerHostContainer:
      type: object
      description: |2
        A boxed array of *DistributedVirtualSwitchManagerHostContainer*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DistributedVirtualSwitchManagerHostContainer'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DistributedVirtualSwitchManagerHostContainerFilter:
      type: object
      description: |2
        Check host compatibility against all hosts in this
        *DistributedVirtualSwitchManagerHostContainer*
      properties:
        hostContainer:
          description: |2
            Container of hosts that are part of the filter.
          $ref: '#/components/schemas/DistributedVirtualSwitchManagerHostContainer'
      required:
        - hostContainer
      allOf:
        - $ref: '#/components/schemas/DistributedVirtualSwitchManagerHostDvsFilterSpec'

    ArrayOfDistributedVirtualSwitchManagerHostContainerFilter:
      type: object
      description: |2
        A boxed array of *DistributedVirtualSwitchManagerHostContainerFilter*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DistributedVirtualSwitchManagerHostContainerFilter'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DistributedVirtualSwitchManagerHostDvsFilterSpec:
      type: object
      description: |2
        Base class for filters to check host compatibility.
      properties:
        inclusive:
          description: |2
            If this flag is true, then the filter returns the hosts in the
            *DistributedVirtualSwitchManagerHostContainer*
            that satisfy the criteria specified by this filter, otherwise
            it returns hosts that don't meet the criteria.
          type: boolean
      required:
        - inclusive
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfDistributedVirtualSwitchManagerHostDvsFilterSpec:
      type: object
      description: |2
        A boxed array of *DistributedVirtualSwitchManagerHostDvsFilterSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DistributedVirtualSwitchManagerHostDvsFilterSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DistributedVirtualSwitchManagerHostDvsMembershipFilter:
      type: object
      description: |2
        Check host compatibility against all hosts in the DVS (or not in the DVS if
        inclusive flag in base class is false)
      properties:
        distributedVirtualSwitch:
          description: |2
            Refers instance of *DistributedVirtualSwitch*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - distributedVirtualSwitch
      allOf:
        - $ref: '#/components/schemas/DistributedVirtualSwitchManagerHostDvsFilterSpec'

    ArrayOfDistributedVirtualSwitchManagerHostDvsMembershipFilter:
      type: object
      description: |2
        A boxed array of *DistributedVirtualSwitchManagerHostDvsMembershipFilter*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DistributedVirtualSwitchManagerHostDvsMembershipFilter'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DistributedVirtualSwitchManagerImportResult:
      type: object
      description: |2
        The *DistributedVirtualSwitchManagerImportResult*
        data object represents the results of a
        *DistributedVirtualSwitchManager.DVSManagerImportEntity_Task*
        operation.
        
        It contains lists of the switches and portgroups
        that were created. It also contains a list of faults
        that occurred during the operation.
      properties:
        distributedVirtualSwitch:
          description: |2
            List of distributed virtual switches.
            
            Refers instances of *DistributedVirtualSwitch*.
          type: array
          items:
            $ref: '#/components/schemas/ManagedObjectReference'
        distributedVirtualPortgroup:
          description: |2
            List of distributed virtual portgroups.
            
            Refers instances of *DistributedVirtualPortgroup*.
          type: array
          items:
            $ref: '#/components/schemas/ManagedObjectReference'
        importFault:
          description: |2
            Faults that occurred on the entities during the import operation.
          type: array
          items:
            $ref: '#/components/schemas/ImportOperationBulkFaultFaultOnImport'
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfDistributedVirtualSwitchManagerImportResult:
      type: object
      description: |2
        A boxed array of *DistributedVirtualSwitchManagerImportResult*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DistributedVirtualSwitchManagerImportResult'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DVSManagerPhysicalNicsList:
      type: object
      description: |2
        This class is used to store valid PhysicalNics for a specific host
        
        ***Since:*** vSphere API Release 8.0.0.1
      properties:
        host:
          description: |2
            Refers instance of *HostSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
        physicalNics:
          type: array
          items:
            $ref: '#/components/schemas/PhysicalNic'
      required:
        - host
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfDVSManagerPhysicalNicsList:
      type: object
      description: |2
        A boxed array of *DVSManagerPhysicalNicsList*. To be used in *Any* placeholders.
        
        ***Since:*** vSphere API Release 8.0.0.1
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DVSManagerPhysicalNicsList'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DVSSelection:
      type: object
      description: |2
        Class to specify selection criteria of vSphere Distributed Switch.
      properties:
        dvsUuid:
          description: |2
            vSphere Distributed Switch uuid
          type: string
      required:
        - dvsUuid
      allOf:
        - $ref: '#/components/schemas/SelectionSet'

    ArrayOfDVSSelection:
      type: object
      description: |2
        A boxed array of *DVSSelection*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DVSSelection'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    EntityBackup:
      type: object
      description: |2
        *EntityBackup* is an abstract data object that contains
        the related entity backup and restore elements for virtual distributed
        switches and virtual distributed portgroups.
        
        See the following elements:
        - *EntityBackupConfig*
        - *EntityImportType_enum*
        - *EntityType_enum*
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfEntityBackup:
      type: object
      description: |2
        A boxed array of *EntityBackup*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/EntityBackup'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    EntityBackupConfig:
      type: object
      description: |2
        The *EntityBackupConfig* data object
        contains *VmwareDistributedVirtualSwitch*
        or *DistributedVirtualPortgroup* backup
        configuration data produced by the
        *DistributedVirtualSwitchManager.DVSManagerExportEntity_Task*
        method.
        
        It also contains properties that support
        *DistributedVirtualSwitchManager.DVSManagerImportEntity_Task*
        operations.
        
        A *DistributedVirtualSwitchManager.DVSManagerExportEntity_Task* operation
        sets properties that identify the entity instance
        (*EntityBackupConfig.entityType*,
        *EntityBackupConfig.key*, and
        *EntityBackupConfig.name*) and
        inventory location (*EntityBackupConfig.container*).
        When you import a backup configuration, you can set
        the <code>key</code>, <code>name</code>, and <code>container</code>
        properties in accordance with the <code>importType</code>
        specified in the call to
        *DistributedVirtualSwitchManager.DVSManagerImportEntity_Task*.
        See *EntityImportType_enum*.
      properties:
        entityType:
          description: |2
            Type of the exported entity
            (*DistributedVirtualSwitchManager.DVSManagerExportEntity_Task*).
            
            See *EntityType_enum*
            for valid values.
          type: string
        configBlob:
          description: |2
            Opaque blob that contains the configuration of the entity.
          type: string
          format: byte
        key:
          description: |2
            Unique identifier of the exported entity or the entity to be restored
            through an import operation.
            - If you are importing a virtual distributed switch and the import type is
              *applyToEntitySpecified*,
              set the <code>key</code> to
              *DistributedVirtualSwitch*.*DistributedVirtualSwitch.uuid*.
            - If you are importing a virtual distributed portgroup and the import type is
              *applyToEntitySpecified*,
              set the <code>key</code> to
              *DistributedVirtualPortgroup*.*DistributedVirtualPortgroup.key*.
              
            The Server ignores the key value when the import operation creates a new entity.
          type: string
        name:
          description: |2
            Name of the exported entity or the entity to be restored with the backup configuration.
            
            If you are importing an entity and the import type is
            *applyToEntitySpecified*,
            the Server will use this value to rename the existing entity.
          type: string
        container:
          description: |2
            Container for this entity.
            
            If *EntityBackupConfig.entityType* is "distributedVirtualSwitch",
            the container type is *Folder*. If *EntityBackupConfig.entityType*
            is "distributedVirtualPortgroup", the container type is
            *DistributedVirtualSwitch*.
            
            Refers instance of *ManagedEntity*.
          $ref: '#/components/schemas/ManagedObjectReference'
        configVersion:
          description: |2
            Configuration version.
          type: string
      required:
        - entityType
        - configBlob
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfEntityBackupConfig:
      type: object
      description: |2
        A boxed array of *EntityBackupConfig*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/EntityBackupConfig'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DVSFilterSpecConnecteeSpec:
      type: object
      description: |2
        Base class for connectee filters.
        
        This class serves as a base for different types of connectee filters.
        It has three sub-classes.
        
        ***Since:*** vSphere API Release 8.0.3.0
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfDVSFilterSpecConnecteeSpec:
      type: object
      description: |2
        A boxed array of *DVSFilterSpecConnecteeSpec*. To be used in *Any* placeholders.
        
        ***Since:*** vSphere API Release 8.0.3.0
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DVSFilterSpecConnecteeSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DVSFilterSpecPnicConnecteeSpec:
      type: object
      description: |2
        Sub-class for connectee filters.
        
        This is for the connectee type to be pnic.
        Two filters will apply, which are pnicName and hostName.
        This connectee whole-name will be made up from two names: pnicName and hostName.
        
        ***Since:*** vSphere API Release 8.0.3.0
      properties:
        pnicNameSpec:
          description: |2
            The pnic name to be filtered in the connectee column.
            
            If set, port's connectee type being a pnic whose whole-name including this string are qualified.
          type: string
      allOf:
        - $ref: '#/components/schemas/DVSFilterSpecConnecteeSpec'

    ArrayOfDVSFilterSpecPnicConnecteeSpec:
      type: object
      description: |2
        A boxed array of *DVSFilterSpecPnicConnecteeSpec*. To be used in *Any* placeholders.
        
        ***Since:*** vSphere API Release 8.0.3.0
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DVSFilterSpecPnicConnecteeSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DVSFilterSpecPvlanSpec:
      type: object
      description: |2
        Sub-class for Vlan filters.
        
        This is for the Vlan type to be private Vlan.
        
        ***Since:*** vSphere API Release 8.0.3.0
      properties:
        pvlanId:
          description: |2
            The private VLAN ID for ports.
            
            Possible values:
            A value of 0 specifies that you do not want the port associated
            with a VLAN.
            A value from 1 to 4094 specifies a VLAN ID for the port.
            If set, port private vlans matching are qualified.
          type: integer
          format: int32
      allOf:
        - $ref: '#/components/schemas/DVSFilterSpecVlanSpec'

    ArrayOfDVSFilterSpecPvlanSpec:
      type: object
      description: |2
        A boxed array of *DVSFilterSpecPvlanSpec*. To be used in *Any* placeholders.
        
        ***Since:*** vSphere API Release 8.0.3.0
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DVSFilterSpecPvlanSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DVSFilterSpecTrunkVlanSpec:
      type: object
      description: |2
        Sub-class for Vlan filters.
        
        This is for the Vlan type to be trunking.
        
        ***Since:*** vSphere API Release 8.0.3.0
      properties:
        range:
          description: |2
            The VlanId range for the trunk port.
            
            The valid VlanId range is
            from 0 to 4094. Overlapping ranges are allowed.
            If set, port trunk ranges matching are qualified.
          $ref: '#/components/schemas/NumericRange'
      allOf:
        - $ref: '#/components/schemas/DVSFilterSpecVlanSpec'

    ArrayOfDVSFilterSpecTrunkVlanSpec:
      type: object
      description: |2
        A boxed array of *DVSFilterSpecTrunkVlanSpec*. To be used in *Any* placeholders.
        
        ***Since:*** vSphere API Release 8.0.3.0
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DVSFilterSpecTrunkVlanSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DVSFilterSpecVlanIdSpec:
      type: object
      description: |2
        Sub-class for Vlan filters.
        
        This is for the Vlan type to be Vlan.
        
        ***Since:*** vSphere API Release 8.0.3.0
      properties:
        vlanId:
          description: |2
            The VLAN ID for ports.
            
            Possible values:
            A value of 0 specifies that you do not want the port associated
            with a VLAN.
            A value from 1 to 4094 specifies a VLAN ID for the port.
            If set,port vlans matching are qualified.
          type: integer
          format: int32
      allOf:
        - $ref: '#/components/schemas/DVSFilterSpecVlanSpec'

    ArrayOfDVSFilterSpecVlanIdSpec:
      type: object
      description: |2
        A boxed array of *DVSFilterSpecVlanIdSpec*. To be used in *Any* placeholders.
        
        ***Since:*** vSphere API Release 8.0.3.0
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DVSFilterSpecVlanIdSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DVSFilterSpecVlanSpec:
      type: object
      description: |2
        Base class for VlanSpec filters.
        
        This class serves as a base for different types of VlanSpec filters.
        It has three sub-classes.
        
        ***Since:*** vSphere API Release 8.0.3.0
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfDVSFilterSpecVlanSpec:
      type: object
      description: |2
        A boxed array of *DVSFilterSpecVlanSpec*. To be used in *Any* placeholders.
        
        ***Since:*** vSphere API Release 8.0.3.0
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DVSFilterSpecVlanSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DVSFilterSpecVmConnecteeSpec:
      type: object
      description: |2
        Sub-class for connectee filters.
        
        This is for the connectee type to be vm.
        Only one filter will apply, whici is vmName.
        
        ***Since:*** vSphere API Release 8.0.3.0
      properties:
        vmNameSpec:
          description: |2
            The vm name to be filtered in the connectee column.
            
            If set, port's connectee type being a vm whose name including this string are qualified.
          type: string
      allOf:
        - $ref: '#/components/schemas/DVSFilterSpecConnecteeSpec'

    ArrayOfDVSFilterSpecVmConnecteeSpec:
      type: object
      description: |2
        A boxed array of *DVSFilterSpecVmConnecteeSpec*. To be used in *Any* placeholders.
        
        ***Since:*** vSphere API Release 8.0.3.0
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DVSFilterSpecVmConnecteeSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DVSFilterSpecVmknicConnecteeSpec:
      type: object
      description: |2
        Sub-class for connectee filters.
        
        This is for the connectee type to be vmknic.
        Two filters will apply, which are vmknicName and hostName.
        This connectee whole-name will be made up from two names: vmknicName and hostName.
        
        ***Since:*** vSphere API Release 8.0.3.0
      properties:
        vmknicNameSpec:
          description: |2
            The vmknic name to be filtered in the connectee column.
            
            If set, port's connectee type being a vmknic whose whole-name including this string are qualified.
          type: string
      allOf:
        - $ref: '#/components/schemas/DVSFilterSpecConnecteeSpec'

    ArrayOfDVSFilterSpecVmknicConnecteeSpec:
      type: object
      description: |2
        A boxed array of *DVSFilterSpecVmknicConnecteeSpec*. To be used in *Any* placeholders.
        
        ***Since:*** vSphere API Release 8.0.3.0
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DVSFilterSpecVmknicConnecteeSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DistributedVirtualSwitchHostMember:
      type: object
      description: |2
        The *DistributedVirtualSwitchHostMember* data object represents an ESXi host that
        is a member of a distributed virtual switch.
        
        When you add a host to a switch
        (*DistributedVirtualSwitchHostMemberConfigSpec*.*DistributedVirtualSwitchHostMemberConfigSpec.host*),
        the Server creates a proxy switch (*HostProxySwitch*).
        The host member object contains information about the configuration
        and state of the proxy.
      properties:
        dynamicProperty:
          description: |2
            Set of dynamic properties.
            
            This property is optional because only the
            properties of an object that are unknown to a client will be part of this set.
            This property is not readonly just in case we want to send such properties
            from a client in the future.
          type: array
          items:
            $ref: '#/components/schemas/DynamicProperty'
        runtimeState:
          description: |2
            Host member runtime state.
          $ref: '#/components/schemas/DistributedVirtualSwitchHostMemberRuntimeState'
        config:
          description: |2
            Host member configuration.
          $ref: '#/components/schemas/DistributedVirtualSwitchHostMemberConfigInfo'
        productInfo:
          description: |2
            Vendor, product and version information for the proxy switch
            module.
          $ref: '#/components/schemas/DistributedVirtualSwitchProductSpec'
        uplinkPortKey:
          description: |2
            Port keys of the uplink ports created for the host member.
            
            These ports
            will be deleted after the host leaves the switch.
          type: array
          items:
            type: string
        status:
          deprecated: true
          description: |2
            Deprecated as of vSphere API 5.1, use
            *HostMemberRuntimeInfo*.*HostMemberRuntimeInfo.status* instead.
            
            The host DistributedVirtualSwitch component status.
            
            See
            *HostComponentState* for valid values.
          type: string
        statusDetail:
          deprecated: true
          description: |2
            Deprecated as of vSphere API 5.1, use
            *HostMemberRuntimeInfo*.*HostMemberRuntimeInfo.statusDetail* instead.
            
            Additional information regarding the host's current status.
          type: string
      required:
        - config
        - status
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfDistributedVirtualSwitchHostMember:
      type: object
      description: |2
        A boxed array of *DistributedVirtualSwitchHostMember*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DistributedVirtualSwitchHostMember'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DistributedVirtualSwitchHostMemberBacking:
      type: object
      description: |2
        Base class.
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfDistributedVirtualSwitchHostMemberBacking:
      type: object
      description: |2
        A boxed array of *DistributedVirtualSwitchHostMemberBacking*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DistributedVirtualSwitchHostMemberBacking'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DistributedVirtualSwitchHostMemberConfigInfo:
      type: object
      description: |2
        The *DistributedVirtualSwitchHostMemberConfigInfo* data object
        contains membership configuration information for the ESXi host.
      properties:
        host:
          description: |2
            ESXi host.
            
            This property should always be set unless the user's setting
            does not have System.Read privilege on the object referred to
            by this property.
            
            Refers instance of *HostSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
        maxProxySwitchPorts:
          description: |2
            Maximum number of ports than can be created in the proxy switch.
            
            _ESXi 5.0 and earlier hosts_:
            If you change the maximum number of ports, you must reboot
            the host for the new value to take effect.
          type: integer
          format: int32
        vendorSpecificConfig:
          description: |2
            Opaque binary blob that stores vendor specific configuration.
          type: array
          items:
            $ref: '#/components/schemas/DistributedVirtualSwitchKeyedOpaqueBlob'
        backing:
          description: |2
            Host membership backing, specifying physical NIC, portgroup, and port
            bindings for the proxy switch.
          $ref: '#/components/schemas/DistributedVirtualSwitchHostMemberBacking'
        nsxSwitch:
          description: |2
            Indicate whether the proxy switch is used by NSX on this particular
            host member of the VDS.
          type: boolean
        ensEnabled:
          description: |2
            Indicate if ENS is enabled for this particular host member of
            the VDS.
            
            It is read only.
          type: boolean
        ensInterruptEnabled:
          description: |2
            Indicate if ENS interrupt mode is enabled for this particular host
            member of the VDS.
            
            It is read only.
          type: boolean
        transportZones:
          description: |2
            Indicate which transport zones this host joins by this VDS.
          type: array
          items:
            $ref: '#/components/schemas/DistributedVirtualSwitchHostMemberTransportZoneInfo'
        nsxtUsedUplinkNames:
          description: |2
            Indicate which uplink ports are used by NSX-T.
          type: array
          items:
            type: string
        networkOffloadingEnabled:
          description: |2
            Indicate if network offloading is enabled for this particular host
            member of the VDS.
            
            Unset implies that network offloading is disabled.
            
            ***Since:*** vSphere API Release 8.0.0.1
          type: boolean
      required:
        - maxProxySwitchPorts
        - backing
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfDistributedVirtualSwitchHostMemberConfigInfo:
      type: object
      description: |2
        A boxed array of *DistributedVirtualSwitchHostMemberConfigInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DistributedVirtualSwitchHostMemberConfigInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DistributedVirtualSwitchHostMemberConfigSpec:
      type: object
      description: |2
        Specification to create or reconfigure ESXi host membership
        in a *DistributedVirtualSwitch*.
      properties:
        dynamicProperty:
          description: |2
            Set of dynamic properties.
            
            This property is optional because only the
            properties of an object that are unknown to a client will be part of this set.
            This property is not readonly just in case we want to send such properties
            from a client in the future.
          type: array
          items:
            $ref: '#/components/schemas/DynamicProperty'
        operation:
          description: |2
            Host member operation type.
            
            See
            *ConfigSpecOperation_enum* for valid values.
          type: string
        host:
          description: |2
            Identifies a host member of a *DistributedVirtualSwitch*
            for a *Folder.CreateDVS_Task* or
            *DistributedVirtualSwitch*.*DistributedVirtualSwitch.ReconfigureDvs_Task* operation.
            
            Refers instance of *HostSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
        backing:
          description: |2
            Specifies the physical NICs to use as backing for the proxy switch
            on the host.
          $ref: '#/components/schemas/DistributedVirtualSwitchHostMemberBacking'
        maxProxySwitchPorts:
          description: |2
            Maximum number of ports allowed in the *HostProxySwitch*.
            
            _ESXi 5.0 and earlier hosts_: If you are reconfiguring an existing
            host membership, that is, the proxy switch already exists, you must reboot
            the host for the new setting to take effect.
          type: integer
          format: int32
        vendorSpecificConfig:
          description: |2
            Opaque binary blob that stores vendor specific configuration.
          type: array
          items:
            $ref: '#/components/schemas/DistributedVirtualSwitchKeyedOpaqueBlob'
      required:
        - operation
        - host
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfDistributedVirtualSwitchHostMemberConfigSpec:
      type: object
      description: |2
        A boxed array of *DistributedVirtualSwitchHostMemberConfigSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DistributedVirtualSwitchHostMemberConfigSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostMemberHealthCheckResult:
      type: object
      description: |2
        This class defines healthcheck result of the vSphere Distributed Switch.
      properties:
        summary:
          description: |2
            The summary of health check result.
          type: string
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostMemberHealthCheckResult:
      type: object
      description: |2
        A boxed array of *HostMemberHealthCheckResult*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostMemberHealthCheckResult'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DistributedVirtualSwitchHostMemberHostUplinkState:
      type: object
      description: |2
        The runtime state of uplink on the host.
        
        ***Since:*** vSphere API Release 8.0.3.0
      properties:
        uplinkName:
          description: |2
            Name of the uplink.
          type: string
        state:
          description: |2
            The runtime state of the uplink.
            
            See *DistributedVirtualSwitchHostMemberHostUplinkStateState_enum* for supported values.
          type: string
      required:
        - uplinkName
        - state
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfDistributedVirtualSwitchHostMemberHostUplinkState:
      type: object
      description: |2
        A boxed array of *DistributedVirtualSwitchHostMemberHostUplinkState*. To be used in *Any* placeholders.
        
        ***Since:*** vSphere API Release 8.0.3.0
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DistributedVirtualSwitchHostMemberHostUplinkState'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DistributedVirtualSwitchHostMemberPnicBacking:
      type: object
      description: |2
        The *DistributedVirtualSwitchHostMemberPnicBacking* data object
        specifies a set of physical NICs to use for a proxy switch.
        
        When you add a host to a distributed virtual switch
        (*DistributedVirtualSwitchHostMemberConfigSpec*.*DistributedVirtualSwitchHostMemberConfigSpec.host*),
        the host creates a proxy switch that will use the pNICs as uplinks.
      properties:
        pnicSpec:
          description: |2
            List of physical NIC specifications.
            
            Each entry identifies
            a pNIC to the proxy switch and optionally specifies uplink
            portgroup and port connections for the pNIC.
          type: array
          items:
            $ref: '#/components/schemas/DistributedVirtualSwitchHostMemberPnicSpec'
      allOf:
        - $ref: '#/components/schemas/DistributedVirtualSwitchHostMemberBacking'

    ArrayOfDistributedVirtualSwitchHostMemberPnicBacking:
      type: object
      description: |2
        A boxed array of *DistributedVirtualSwitchHostMemberPnicBacking*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DistributedVirtualSwitchHostMemberPnicBacking'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DistributedVirtualSwitchHostMemberPnicSpec:
      type: object
      description: |2
        Specification for an individual physical NIC.
      properties:
        pnicDevice:
          description: |2
            Name of the physical NIC to be added to the proxy switch.
            
            See *PhysicalNic*.*PhysicalNic.device*.
          type: string
        uplinkPortKey:
          description: |2
            Key of the port to be connected to the physical NIC.
          type: string
        uplinkPortgroupKey:
          description: |2
            Key of the portgroup to be connected to the physical NIC.
          type: string
        connectionCookie:
          description: |2
            Cookie that represents this *DistributedVirtualSwitchPortConnection*
            instance for the port.
            
            The cookie value is generated by the
            Server. The Server ignores any value set by an SDK client.
            
            The same cookie is present in the distributed virtual port configuration
            (*DistributedVirtualPort*.*DistributedVirtualPort.connectionCookie*)
            so that the Server can verify that the entity is the rightful
            connectee of the port.
          type: integer
          format: int32
      required:
        - pnicDevice
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfDistributedVirtualSwitchHostMemberPnicSpec:
      type: object
      description: |2
        A boxed array of *DistributedVirtualSwitchHostMemberPnicSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DistributedVirtualSwitchHostMemberPnicSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostMemberRuntimeInfo:
      type: object
      description: |2
        The *HostMemberRuntimeInfo* data object
        contains healthcheck and status information about a host
        member of a distributed virtual switch.
      properties:
        host:
          description: |2
            The host.
            
            Refers instance of *HostSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
        status:
          description: |2
            Host proxy switch status.
            
            See
            *HostComponentState* for valid values.
            This property replaces the deprecated
            *DistributedVirtualSwitchHostMember*.*DistributedVirtualSwitchHostMember.status*.
          type: string
        statusDetail:
          description: |2
            Additional information regarding the current membership status of the host.
            
            This property replaces the deprecated
            *DistributedVirtualSwitchHostMember*.*DistributedVirtualSwitchHostMember.statusDetail*.
          type: string
        nsxtStatus:
          description: |2
            NSX-T component status.
          type: string
        nsxtStatusDetail:
          description: |2
            Additional information regarding the NSX-T component status.
          type: string
        healthCheckResult:
          description: |2
            Health check result for the host that joined the distributed virtual switch.
          type: array
          items:
            $ref: '#/components/schemas/HostMemberHealthCheckResult'
        hostUplinkState:
          description: |2
            Indicate the runtime state of uplink on the host.
            
            It is only applicable when *DistributedVirtualSwitchHostMemberConfigInfo.networkOffloadingEnabled*
            is true.
            
            ***Since:*** vSphere API Release 8.0.3.0
          type: array
          items:
            $ref: '#/components/schemas/DistributedVirtualSwitchHostMemberHostUplinkState'
      required:
        - host
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostMemberRuntimeInfo:
      type: object
      description: |2
        A boxed array of *HostMemberRuntimeInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostMemberRuntimeInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DistributedVirtualSwitchHostMemberRuntimeState:
      type: object
      description: |2
        Runtime state of a host member.
      properties:
        currentMaxProxySwitchPorts:
          description: |2
            Current maximum number of ports allowed to be created in the
            proxy switch.
          type: integer
          format: int32
      required:
        - currentMaxProxySwitchPorts
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfDistributedVirtualSwitchHostMemberRuntimeState:
      type: object
      description: |2
        A boxed array of *DistributedVirtualSwitchHostMemberRuntimeState*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DistributedVirtualSwitchHostMemberRuntimeState'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DistributedVirtualSwitchHostMemberTransportZoneInfo:
      type: object
      description: |2
        Transport zone information.
      properties:
        uuid:
          description: |2
            The UUID of transport zone.
          type: string
        type:
          description: |2
            The type of transport zone.
            
            See *DistributedVirtualSwitchHostMemberTransportZoneType_enum* for valid values.
          type: string
      required:
        - uuid
        - type
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfDistributedVirtualSwitchHostMemberTransportZoneInfo:
      type: object
      description: |2
        A boxed array of *DistributedVirtualSwitchHostMemberTransportZoneInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DistributedVirtualSwitchHostMemberTransportZoneInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostMemberUplinkHealthCheckResult:
      type: object
      description: |2
        This class defines healthcheck result of a specified Uplink port
        in vSphere Distributed Switch.
      properties:
        uplinkPortKey:
          description: |2
            The uplink port key.
          type: string
      required:
        - uplinkPortKey
      allOf:
        - $ref: '#/components/schemas/HostMemberHealthCheckResult'

    ArrayOfHostMemberUplinkHealthCheckResult:
      type: object
      description: |2
        A boxed array of *HostMemberUplinkHealthCheckResult*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostMemberUplinkHealthCheckResult'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DistributedVirtualSwitchHostProductSpec:
      type: object
      description: |2
        This data object type is a subset of *AboutInfo*.
        
        An object of
        this type can be used to describe the specification for a host.
      properties:
        productLineId:
          description: |2
            The product-line name.
          type: string
        version:
          description: |2
            Dot-separated version string.
            
            For example, "1.2".
          type: string
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfDistributedVirtualSwitchHostProductSpec:
      type: object
      description: |2
        A boxed array of *DistributedVirtualSwitchHostProductSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DistributedVirtualSwitchHostProductSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DistributedVirtualSwitchKeyedOpaqueBlob:
      type: object
      description: |2
        This class defines a data structure to hold opaque binary data
        identified by a key.
      properties:
        key:
          description: |2
            A key that identifies the opaque binary blob.
          type: string
        opaqueData:
          description: |2
            The opaque data.
            
            It is recommended that base64 encoding be used for binary
            data.
          type: string
      required:
        - key
        - opaqueData
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfDistributedVirtualSwitchKeyedOpaqueBlob:
      type: object
      description: |2
        A boxed array of *DistributedVirtualSwitchKeyedOpaqueBlob*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DistributedVirtualSwitchKeyedOpaqueBlob'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DistributedVirtualSwitchNetworkOffloadSpec:
      type: object
      description: |2
        Describe the network offload specification of a
        *VmwareDistributedVirtualSwitch*.
        
        ***Since:*** vSphere API Release 8.0.0.1
      properties:
        id:
          description: |2
            Identifier of the specification.
          type: string
        name:
          description: |2
            Name of the specification.
          type: string
        types:
          description: |2
            DPU types supported in the specification.
          type: array
          items:
            type: string
      required:
        - id
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfDistributedVirtualSwitchNetworkOffloadSpec:
      type: object
      description: |2
        A boxed array of *DistributedVirtualSwitchNetworkOffloadSpec*. To be used in *Any* placeholders.
        
        ***Since:*** vSphere API Release 8.0.0.1
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DistributedVirtualSwitchNetworkOffloadSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DVSNetworkResourcePool:
      type: object
      deprecated: true
      description: |2
        Deprecated as of vSphere API 6.0
        Use *DvsHostInfrastructureTrafficResource*
        to manage resource allocation for host infrastructure traffic.
        Use *DVSVmVnicNetworkResourcePool* to manage
        resource allocation for user defined pools.
        
        The *DVSNetworkResourcePool* data object
        describes the resource configuration and management
        of network resource pools.
      properties:
        key:
          description: |2
            Key of the network resource pool.
          type: string
        name:
          description: |2
            Name of the network resource pool.
          type: string
        description:
          description: |2
            Description of the network resource pool.
          type: string
        configVersion:
          description: |2
            Configuration version for the network resource pool.
          type: string
        allocationInfo:
          description: |2
            Resource settings of the resource pool.
          $ref: '#/components/schemas/DVSNetworkResourcePoolAllocationInfo'
      required:
        - key
        - configVersion
        - allocationInfo
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfDVSNetworkResourcePool:
      type: object
      description: |2
        A boxed array of *DVSNetworkResourcePool*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DVSNetworkResourcePool'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DVSNetworkResourcePoolAllocationInfo:
      type: object
      description: |2
        Resource allocation information for a network resource pool.
      properties:
        limit:
          description: |2
            Maximum allowed usage for network clients belonging to
            this resource pool per host.
            
            The utilization of network clients belonging to this resource pool
            will not exceed the specified limit even if there are available
            network resources. If set to -1, then there is no limit on the network
            resource usage for clients belonging to this resource pool. Units are
            in Mbits/sec. When setting the allocation of a particular resource
            pool, if the property is unset, it is treated as no change and the
            property is not updated. An unset limit value while reading back the
            allocation information of a network resource pool indicates that
            there is no limit on the network resource usage for the clients
            belonging to this resource group.
          type: integer
          format: int64
        shares:
          description: |2
            Share settings associated with the network resource pool to
            facilitate proportional sharing of the physical network resources.
            
            If the property is unset when setting the allocation of a particular
            resource pool, it is treated as unset and the property is not updated.
            The property is always set when reading back the allocation
            information of a network resource pool.
          $ref: '#/components/schemas/SharesInfo'
        priorityTag:
          description: |2
            802.1p tag to be used for this resource pool.
            
            The tag is a priority value
            in the range 0..7 for Quality of Service operations on network traffic.
          type: integer
          format: int32
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfDVSNetworkResourcePoolAllocationInfo:
      type: object
      description: |2
        A boxed array of *DVSNetworkResourcePoolAllocationInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DVSNetworkResourcePoolAllocationInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DVSNetworkResourcePoolConfigSpec:
      type: object
      description: |2
        The *DVSNetworkResourcePoolConfigSpec* data object
        contains properties to create or update a network resource pool
        for a distributed virtual switch.
      properties:
        dynamicProperty:
          description: |2
            Set of dynamic properties.
            
            This property is optional because only the
            properties of an object that are unknown to a client will be part of this set.
            This property is not readonly just in case we want to send such properties
            from a client in the future.
          type: array
          items:
            $ref: '#/components/schemas/DynamicProperty'
        key:
          description: |2
            Key of the network resource pool.
            
            The property is ignored for
            *DistributedVirtualSwitch*.*DistributedVirtualSwitch.AddNetworkResourcePool*
            operations.
          type: string
        configVersion:
          description: |2
            Unique identifier for a given version
            of the configuration.
            
            Each change to the configuration will
            update this value. This is typically implemented as a
            non-decreasing count or a time-stamp. However, a client should
            always treat this as an opaque string.
            
            If you specify the configuration version when you update
            the resource configuration, the Server will apply the changes
            only if the specified identifier matches the current
            *DVSNetworkResourcePool*.*DVSNetworkResourcePool.configVersion*
            value. You can use this field to guard against updates
            that may have occurred between the time when the client
            reads *DVSNetworkResourcePool.configVersion*
            and when the configuration is applied.
          type: string
        allocationInfo:
          description: |2
            Network resource allocation for the network resource pool.
          $ref: '#/components/schemas/DVSNetworkResourcePoolAllocationInfo'
        name:
          description: |2
            User defined name for the resource pool.
            
            The property is required for
            *DistributedVirtualSwitch*.*DistributedVirtualSwitch.AddNetworkResourcePool*
            operations.
          type: string
        description:
          description: |2
            User-defined description for the resource pool.
          type: string
      required:
        - key
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfDVSNetworkResourcePoolConfigSpec:
      type: object
      description: |2
        A boxed array of *DVSNetworkResourcePoolConfigSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DVSNetworkResourcePoolConfigSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DistributedVirtualSwitchPortConnectee:
      type: object
      description: |2
        Information about the entity that connects to a DistributedVirtualPort.
      properties:
        connectedEntity:
          description: |2
            The connected entity.
            
            This property should always be set unless the user's setting
            does not have System.Read privilege on the object referred to
            by this property.
            
            Refers instance of *ManagedEntity*.
          $ref: '#/components/schemas/ManagedObjectReference'
        nicKey:
          description: |2
            The key of the virtual NIC that connects to this port.
          type: string
        type:
          description: |2
            The type of the connectee.
            
            See *ConnecteeType* for valid values.
          type: string
        addressHint:
          description: |2
            A hint on address information of the NIC that connects to this port.
          type: string
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfDistributedVirtualSwitchPortConnectee:
      type: object
      description: |2
        A boxed array of *DistributedVirtualSwitchPortConnectee*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DistributedVirtualSwitchPortConnectee'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DistributedVirtualSwitchPortConnection:
      type: object
      description: |2
        The *DistributedVirtualSwitchPortConnection* data object represents a connection
        or association between a *DistributedVirtualPortgroup* or a
        *DistributedVirtualPort* and one of the following entities:
        - Virtual machine virtual NIC
          (*VirtualEthernetCardDistributedVirtualPortBackingInfo*)
        - Host virtual NIC (*HostVirtualNic*)
        - Physical NIC (*HostNetworkInfo*.*HostNetworkInfo.pnic*)
      properties:
        switchUuid:
          description: |2
            UUID of the switch (*DistributedVirtualSwitch*.*DistributedVirtualSwitch.uuid*).
          type: string
        portgroupKey:
          description: |2
            Key of the portgroup.
            
            If specified, the connection object represents a connection
            or an association between a *DistributedVirtualPortgroup*
            and a Virtual NIC or physical NIC.
            In this case, setting the *DistributedVirtualSwitchPortConnection.portKey* is not necessary for a
            early-binding portgroup and is not allowed for a late-binding portgroup.
            The *DistributedVirtualSwitchPortConnection.portKey* property will be populated by the implementation
            at the time of port binding.
          type: string
        portKey:
          description: |2
            Key of the port.
            
            If specified, this object represents a connection
            or an association between an individual *DistributedVirtualPort*
            and a Virtual NIC or physical NIC. See *DistributedVirtualSwitchPortConnection.portgroupKey* for more information on populating
            this property.
          type: string
        connectionCookie:
          description: |2
            Cookie that represents this *DistributedVirtualSwitchPortConnection*
            instance for the port.
            
            The cookie value is generated by the
            Server. The Server ignores any value set by an SDK client.
            
            The same cookie is present in the distributed virtual port configuration
            (*DistributedVirtualPort*.*DistributedVirtualPort.connectionCookie*)
            so that the Server can verify that the entity is the rightful
            connectee of the port.
          type: integer
          format: int32
      required:
        - switchUuid
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfDistributedVirtualSwitchPortConnection:
      type: object
      description: |2
        A boxed array of *DistributedVirtualSwitchPortConnection*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DistributedVirtualSwitchPortConnection'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DistributedVirtualSwitchPortCriteria:
      type: object
      description: |2
        The criteria specification for selecting ports.
      properties:
        dynamicProperty:
          description: |2
            Set of dynamic properties.
            
            This property is optional because only the
            properties of an object that are unknown to a client will be part of this set.
            This property is not readonly just in case we want to send such properties
            from a client in the future.
          type: array
          items:
            $ref: '#/components/schemas/DynamicProperty'
        connected:
          description: |2
            If set, only the connected ports are qualified.
          type: boolean
        active:
          description: |2
            If set, only the active ports are qualified.
          type: boolean
        uplinkPort:
          description: |2
            If set to true, only the uplink ports are qualified.
            
            If set to false, only
            non-uplink ports are qualified.
          type: boolean
        nsxPort:
          description: |2
            If set to true, only the NSX ports are qualified.
            
            If set to false, only
            non-NSX ports are qualified.
            NSX ports are ports of NSX port group.
          type: boolean
        scope:
          deprecated: true
          description: |2
            Deprecated as of vSphere API 5.5.
            
            If set, only the ports of which the scope covers the entity are
            qualified.
            
            Refers instance of *ManagedEntity*.
          $ref: '#/components/schemas/ManagedObjectReference'
        portgroupKey:
          description: |2
            The keys of the portgroup that is used for the scope of *DistributedVirtualSwitchPortCriteria.inside*.
            
            If this property is unset, it means any portgroup. If *DistributedVirtualSwitchPortCriteria.inside*
            is unset, this property is ignored.
          type: array
          items:
            type: string
        inside:
          description: |2
            If unset, all ports in the switch are qualified.
            
            If set to true, only ports inside *DistributedVirtualSwitchPortCriteria.portgroupKey* or any
            portgroup, if not set, are qualified.
            If set to false, only ports outside *DistributedVirtualSwitchPortCriteria.portgroupKey* or any
            portgroup, if not set, are qualified.
          type: boolean
        portKey:
          description: |2
            If set, only the ports of which the key is in the array are
            qualified.
          type: array
          items:
            type: string
        host:
          description: |2
            If set, only the ports that are present in one of the host are qualified.
            
            Refers instances of *HostSystem*.
          type: array
          items:
            $ref: '#/components/schemas/ManagedObjectReference'
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfDistributedVirtualSwitchPortCriteria:
      type: object
      description: |2
        A boxed array of *DistributedVirtualSwitchPortCriteria*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DistributedVirtualSwitchPortCriteria'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DistributedVirtualSwitchPortStatistics:
      type: object
      description: |2
        Statistic data of a DistributedVirtualPort.
      properties:
        packetsInMulticast:
          description: |2
            The number of multicast packets received.
          type: integer
          format: int64
        packetsOutMulticast:
          description: |2
            The number of multicast packets forwarded.
          type: integer
          format: int64
        bytesInMulticast:
          description: |2
            The number of bytes received from multicast packets.
          type: integer
          format: int64
        bytesOutMulticast:
          description: |2
            The number of bytes forwarded from multicast packets.
          type: integer
          format: int64
        packetsInUnicast:
          description: |2
            The number of unicast packets received.
          type: integer
          format: int64
        packetsOutUnicast:
          description: |2
            The number of unicast packets forwarded.
          type: integer
          format: int64
        bytesInUnicast:
          description: |2
            The number of bytes received from unicast packets.
          type: integer
          format: int64
        bytesOutUnicast:
          description: |2
            The number of bytes forwarded from unicast packets.
          type: integer
          format: int64
        packetsInBroadcast:
          description: |2
            The number of broadcast packets received.
          type: integer
          format: int64
        packetsOutBroadcast:
          description: |2
            The number of broadcast packets forwarded.
          type: integer
          format: int64
        bytesInBroadcast:
          description: |2
            The number of bytes received from broadcast packets.
          type: integer
          format: int64
        bytesOutBroadcast:
          description: |2
            The number of bytes forwarded from broadcast packets.
          type: integer
          format: int64
        packetsInDropped:
          description: |2
            The number of received packets dropped.
          type: integer
          format: int64
        packetsOutDropped:
          description: |2
            The number of packets to be forwarded dropped.
          type: integer
          format: int64
        packetsInException:
          description: |2
            The number of packets received that cause an exception.
          type: integer
          format: int64
        packetsOutException:
          description: |2
            The number of packets to be forwarded that cause an exception.
          type: integer
          format: int64
        bytesInFromPnic:
          description: |2
            The number of bytes received at a pnic on the behalf of a port's
            connectee (inter-host rx).
          type: integer
          format: int64
        bytesOutToPnic:
          description: |2
            The number of bytes transmitted at a pnic on the behalf of a port's
            connectee (inter-host tx).
          type: integer
          format: int64
      required:
        - packetsInMulticast
        - packetsOutMulticast
        - bytesInMulticast
        - bytesOutMulticast
        - packetsInUnicast
        - packetsOutUnicast
        - bytesInUnicast
        - bytesOutUnicast
        - packetsInBroadcast
        - packetsOutBroadcast
        - bytesInBroadcast
        - bytesOutBroadcast
        - packetsInDropped
        - packetsOutDropped
        - packetsInException
        - packetsOutException
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfDistributedVirtualSwitchPortStatistics:
      type: object
      description: |2
        A boxed array of *DistributedVirtualSwitchPortStatistics*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DistributedVirtualSwitchPortStatistics'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DistributedVirtualSwitchProductSpec:
      type: object
      description: |2
        This data object type is a subset of *AboutInfo*.
        
        An object of
        this type can be used to describe the specification for a proxy switch module
        of a *DistributedVirtualSwitch*.
      properties:
        name:
          description: |2
            Short form of the product name.
          type: string
        vendor:
          description: |2
            Name of the vendor of this product.
          type: string
        version:
          description: |2
            Dot-separated version string.
            
            For example, "1.2".
          type: string
        build:
          description: |2
            Build string for the server on which this call is made.
            
            For example, x.y.z-num.
            This string does not apply to the API.
          type: string
        forwardingClass:
          description: |2
            Forwarding class of the distributed virtual switch.
          type: string
        bundleId:
          description: |2
            The ID of the bundle if a host component bundle needs to be installed on
            the host members to support the functionality of the switch.
          type: string
        bundleUrl:
          description: |2
            The URL of the bundle that VMware Update Manager will use to install
            the bundle on the host members, if *DistributedVirtualSwitchProductSpec.bundleId* is set.
          type: string
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfDistributedVirtualSwitchProductSpec:
      type: object
      description: |2
        A boxed array of *DistributedVirtualSwitchProductSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DistributedVirtualSwitchProductSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DvsTrafficRule:
      type: object
      description: |2
        This class defines a single rule that will be applied to network traffic.
      properties:
        key:
          description: |2
            The key of the rule
          type: string
        description:
          description: |2
            Description of the rule
          type: string
        sequence:
          description: |2
            Sequence of this rule.
            
            i.e, the order in which this rule appears
            in the ruleset.
          type: integer
          format: int32
        qualifier:
          description: |2
            List of Network rule qualifiers.
            
            'AND' of this array of
            network rule qualifiers is applied as one network traffic rule.
            If the TrafficRule belongs to
            *DvsFilterPolicy* :
            There can be a maximum of 1 *DvsIpNetworkRuleQualifier*,
            1 *DvsMacNetworkRuleQualifier* and
            1 *DvsSystemTrafficNetworkRuleQualifier* for a total of
            3 *DvsTrafficRule.qualifier*
          type: array
          items:
            $ref: '#/components/schemas/DvsNetworkRuleQualifier'
        action:
          description: |2
            Action to be applied for this rule.
          $ref: '#/components/schemas/DvsNetworkRuleAction'
        direction:
          description: |2
            Whether this rule needs to be applied to incoming packets,
            to outgoing packets or both.
            
            See *DvsNetworkRuleDirectionType_enum* for valid values.
          type: string
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfDvsTrafficRule:
      type: object
      description: |2
        A boxed array of *DvsTrafficRule*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DvsTrafficRule'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DvsAcceptNetworkRuleAction:
      type: object
      description: |2
        This class defines network rule action to accept packets.
      allOf:
        - $ref: '#/components/schemas/DvsNetworkRuleAction'

    ArrayOfDvsAcceptNetworkRuleAction:
      type: object
      description: |2
        A boxed array of *DvsAcceptNetworkRuleAction*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DvsAcceptNetworkRuleAction'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DvsNetworkRuleAction:
      type: object
      description: |2
        This class is the base class for network rule action.
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfDvsNetworkRuleAction:
      type: object
      description: |2
        A boxed array of *DvsNetworkRuleAction*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DvsNetworkRuleAction'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DvsCopyNetworkRuleAction:
      type: object
      description: |2
        This class defines network rule action to copy the packet to an
        associated slow-path service Virtual Machine and let the original
        frame continue.
      allOf:
        - $ref: '#/components/schemas/DvsNetworkRuleAction'

    ArrayOfDvsCopyNetworkRuleAction:
      type: object
      description: |2
        A boxed array of *DvsCopyNetworkRuleAction*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DvsCopyNetworkRuleAction'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DvsDropNetworkRuleAction:
      type: object
      description: |2
        This class defines network rule action to drop packets.
      allOf:
        - $ref: '#/components/schemas/DvsNetworkRuleAction'

    ArrayOfDvsDropNetworkRuleAction:
      type: object
      description: |2
        A boxed array of *DvsDropNetworkRuleAction*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DvsDropNetworkRuleAction'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DvsGreEncapNetworkRuleAction:
      type: object
      description: |2
        This class defines network rule action to GRE Encapsulate a packet.
      properties:
        encapsulationIp:
          description: |2
            Single IP address.
            
            Only IPv4 is supported for vSphere API 5.5.
          $ref: '#/components/schemas/SingleIp'
      required:
        - encapsulationIp
      allOf:
        - $ref: '#/components/schemas/DvsNetworkRuleAction'

    ArrayOfDvsGreEncapNetworkRuleAction:
      type: object
      description: |2
        A boxed array of *DvsGreEncapNetworkRuleAction*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DvsGreEncapNetworkRuleAction'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DvsIpPort:
      type: object
      description: |2
        Base class for specifying Ports.
        
        Objects of the base class represent any port (single/range/list).
      allOf:
        - $ref: '#/components/schemas/NegatableExpression'

    ArrayOfDvsIpPort:
      type: object
      description: |2
        A boxed array of *DvsIpPort*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DvsIpPort'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DvsIpPortRange:
      type: object
      description: |2
        This class defines a range of Ports.
      properties:
        startPortNumber:
          description: |2
            Starting port number of the ports range.
          type: integer
          format: int32
        endPortNumber:
          description: |2
            Ending port number of the ports range.
          type: integer
          format: int32
      required:
        - startPortNumber
        - endPortNumber
      allOf:
        - $ref: '#/components/schemas/DvsIpPort'

    ArrayOfDvsIpPortRange:
      type: object
      description: |2
        A boxed array of *DvsIpPortRange*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DvsIpPortRange'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DvsIpNetworkRuleQualifier:
      type: object
      description: |2
        This class defines the IP Rule Qualifier.
        
        Here IP addresses of source
        and destination will be used for classifying packets.
      properties:
        sourceAddress:
          description: |2
            IP qualifier for source.
            
            If this property is NULL, it will match "any IPv4 or any IPv6 address".
          $ref: '#/components/schemas/IpAddress'
        destinationAddress:
          description: |2
            IP qualifier for destination.
            
            If this property is NULL, it will match "any IPv4 or any IPv6 address".
          $ref: '#/components/schemas/IpAddress'
        protocol:
          description: |2
            Protocols like TCP, UDP, ICMP etc.
            
            The valid value for a protocol
            is got from IANA assigned value for the protocol. This can be got
            from RFC 5237 and IANA website section related to protocol numbers.
          $ref: '#/components/schemas/IntExpression'
        sourceIpPort:
          description: |2
            Source IP Port.
          $ref: '#/components/schemas/DvsIpPort'
        destinationIpPort:
          description: |2
            Destination IP Port.
          $ref: '#/components/schemas/DvsIpPort'
        tcpFlags:
          description: |2
            TCP flags.
            
            The valid values can be found at RFC 3168.
            TCP flags are not supported by Traffic Filtering
          $ref: '#/components/schemas/IntExpression'
      allOf:
        - $ref: '#/components/schemas/DvsNetworkRuleQualifier'

    ArrayOfDvsIpNetworkRuleQualifier:
      type: object
      description: |2
        A boxed array of *DvsIpNetworkRuleQualifier*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DvsIpNetworkRuleQualifier'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DvsLogNetworkRuleAction:
      type: object
      description: |2
        This class defines network rule action to just log the rule.
      allOf:
        - $ref: '#/components/schemas/DvsNetworkRuleAction'

    ArrayOfDvsLogNetworkRuleAction:
      type: object
      description: |2
        A boxed array of *DvsLogNetworkRuleAction*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DvsLogNetworkRuleAction'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DvsMacNetworkRuleQualifier:
      type: object
      description: |2
        This class defines the MAC Rule Qualifier.
        
        Here MAC addresses of source
        and destination will be used for classifying packets.
      properties:
        sourceAddress:
          description: |2
            MAC address for source.
            
            If this property is NULL, it will match "any MAC address".
          $ref: '#/components/schemas/MacAddress'
        destinationAddress:
          description: |2
            MAC address for destination.
            
            If this property is NULL, it will match "any MAC address".
          $ref: '#/components/schemas/MacAddress'
        protocol:
          description: |2
            Protocol used.
            
            This corresponds to the EtherType field in Ethernet
            frame. The valid values can be found from IEEE list at:
            http://standards.ieee.org/regauth/ as mentioned in RFC 5342.
          $ref: '#/components/schemas/IntExpression'
        vlanId:
          description: |2
            vlan id.
          $ref: '#/components/schemas/IntExpression'
      allOf:
        - $ref: '#/components/schemas/DvsNetworkRuleQualifier'

    ArrayOfDvsMacNetworkRuleQualifier:
      type: object
      description: |2
        A boxed array of *DvsMacNetworkRuleQualifier*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DvsMacNetworkRuleQualifier'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DvsMacRewriteNetworkRuleAction:
      type: object
      description: |2
        This class defines network rule action to MAC Rewrite.
      properties:
        rewriteMac:
          description: |2
            Rewrite Destination MAC with this MAC address.
          type: string
      required:
        - rewriteMac
      allOf:
        - $ref: '#/components/schemas/DvsNetworkRuleAction'

    ArrayOfDvsMacRewriteNetworkRuleAction:
      type: object
      description: |2
        A boxed array of *DvsMacRewriteNetworkRuleAction*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DvsMacRewriteNetworkRuleAction'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DvsPuntNetworkRuleAction:
      type: object
      description: |2
        This class defines network rule action to punt.
        
        i.e, forward packets
        to an associated slow-path service Virtual Machine.
      allOf:
        - $ref: '#/components/schemas/DvsNetworkRuleAction'

    ArrayOfDvsPuntNetworkRuleAction:
      type: object
      description: |2
        A boxed array of *DvsPuntNetworkRuleAction*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DvsPuntNetworkRuleAction'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DvsNetworkRuleQualifier:
      type: object
      description: |2
        This class is the base class for identifying network traffic.
      properties:
        key:
          description: |2
            The key of the Qualifier
          type: string
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfDvsNetworkRuleQualifier:
      type: object
      description: |2
        A boxed array of *DvsNetworkRuleQualifier*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DvsNetworkRuleQualifier'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DvsRateLimitNetworkRuleAction:
      type: object
      description: |2
        This class defines network rule action to ratelimit packets.
      properties:
        packetsPerSecond:
          description: |2
            Rate limit value specified in packets per second.
          type: integer
          format: int32
      required:
        - packetsPerSecond
      allOf:
        - $ref: '#/components/schemas/DvsNetworkRuleAction'

    ArrayOfDvsRateLimitNetworkRuleAction:
      type: object
      description: |2
        A boxed array of *DvsRateLimitNetworkRuleAction*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DvsRateLimitNetworkRuleAction'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DvsSingleIpPort:
      type: object
      description: |2
        This class defines a Single Port
      properties:
        portNumber:
          description: |2
            The IP port number.
          type: integer
          format: int32
      required:
        - portNumber
      allOf:
        - $ref: '#/components/schemas/DvsIpPort'

    ArrayOfDvsSingleIpPort:
      type: object
      description: |2
        A boxed array of *DvsSingleIpPort*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DvsSingleIpPort'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DvsSystemTrafficNetworkRuleQualifier:
      type: object
      description: |2
        This class defines the System Traffic Qualifier.
        
        Here the type of
        traffic will be used for classifying packets.
      properties:
        typeOfSystemTraffic:
          description: |2
            Type of system traffic.
            
            See *DistributedVirtualSwitchHostInfrastructureTrafficClass_enum*
            for valid values.
          $ref: '#/components/schemas/StringExpression'
      allOf:
        - $ref: '#/components/schemas/DvsNetworkRuleQualifier'

    ArrayOfDvsSystemTrafficNetworkRuleQualifier:
      type: object
      description: |2
        A boxed array of *DvsSystemTrafficNetworkRuleQualifier*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DvsSystemTrafficNetworkRuleQualifier'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DvsUpdateTagNetworkRuleAction:
      type: object
      description: |2
        This class defines network rule action to tag packets(qos,dscp) or
        clear tags(clear qos, dscp tags) on packets.
        
        One or both of qos and dscp may be specified.
      properties:
        qosTag:
          description: |2
            QOS tag.
            
            IEEE 802.1p supports 3 bit Priority Code Point (PCP).
            The valid values are between 0-7. Please refer the IEEE 802.1p
            documentation for more details about what each value represents.
            If qosTag is set to 0 then the tag on the packets will be cleared.
          type: integer
          format: int32
        dscpTag:
          description: |2
            DSCP tag.
            
            The valid values for DSCP tag can be found in
            'Differentiated Services Field Codepoints' section of IANA website.
            The information can also be got from reading all of the below RFC:
            RFC 2474, RFC 2597, RFC 3246, RFC 5865.
            If the dscpTag is set to 0 then the dscp tag on packets will be cleared.
          type: integer
          format: int32
      allOf:
        - $ref: '#/components/schemas/DvsNetworkRuleAction'

    ArrayOfDvsUpdateTagNetworkRuleAction:
      type: object
      description: |2
        A boxed array of *DvsUpdateTagNetworkRuleAction*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DvsUpdateTagNetworkRuleAction'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DvsTrafficRuleset:
      type: object
      description: |2
        This class defines a ruleset(set of rules) that will be
        applied to network traffic.
      properties:
        key:
          description: |2
            The key of the ruleset.
          type: string
        enabled:
          description: |2
            Whether ruleset is enabled or not.
          type: boolean
        precedence:
          description: |2
            Precedence of the ruleset.
            
            Rulesets for a port will be executed
            in the order of their precedence.
          type: integer
          format: int32
        rules:
          description: |2
            List of rules belonging to this ruleset.
          type: array
          items:
            $ref: '#/components/schemas/DvsTrafficRule'
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfDvsTrafficRuleset:
      type: object
      description: |2
        A boxed array of *DvsTrafficRuleset*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DvsTrafficRuleset'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DVSVmVnicNetworkResourcePool:
      type: object
      description: |2
        DataObject describing the resource configuration and management of
        virtual NIC network resource pools.
      properties:
        key:
          description: |2
            The key of the virtual NIC network resource pool.
          type: string
        name:
          description: |2
            The name of the virtual NIC network resource pool.
          type: string
        description:
          description: |2
            The description of the virtual NIC network resource pool.
          type: string
        configVersion:
          description: |2
            The config version for the virtual NIC network resource pool.
          type: string
        allocationInfo:
          description: |2
            The resource settings of the virtual NIC network resource pool.
          $ref: '#/components/schemas/DvsVmVnicResourceAllocation'
      required:
        - key
        - configVersion
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfDVSVmVnicNetworkResourcePool:
      type: object
      description: |2
        A boxed array of *DVSVmVnicNetworkResourcePool*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DVSVmVnicNetworkResourcePool'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DvsVmVnicResourcePoolConfigSpec:
      type: object
      description: |2
        The configuration specification data object to update the resource configuration
        for a virtual NIC network resource pool.
      properties:
        operation:
          description: |2
            The type of operation on the virtual NIC network resource pool
            Possible value can be of
            *ConfigSpecOperation_enum*
          type: string
        key:
          description: |2
            The key of the network resource pool.
            
            The property is ignored for add
            operations.
          type: string
        configVersion:
          description: |2
            The configVersion is a unique identifier for a given version
            of the configuration.
            
            Each change to the configuration will
            update this value. This is typically implemented as a
            non-decreasing count or a time-stamp. However, a client should
            always treat this as an opaque string.
            
            If specified when updating the resource configuration, the
            changes will only be applied if the current configVersion matches the
            specified configVersion. This field can be used to guard against
            updates that that may have occurred between the time when configVersion
            was read and when it is applied.
          type: string
        allocationInfo:
          description: |2
            The resource allocation for the virtual NIC network resource pool.
          $ref: '#/components/schemas/DvsVmVnicResourceAllocation'
        name:
          description: |2
            The name for the virtual NIC network resource pool.
            
            The property is required for Add operations.
          type: string
        description:
          description: |2
            The description for the virtual NIC network resource pool.
          type: string
      required:
        - operation
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfDvsVmVnicResourcePoolConfigSpec:
      type: object
      description: |2
        A boxed array of *DvsVmVnicResourcePoolConfigSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DvsVmVnicResourcePoolConfigSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DvsVmVnicResourceAllocation:
      type: object
      description: |2
        Resource allocation information for a virtual NIC network resource pool.
      properties:
        reservationQuota:
          description: |2
            Quota for the total amount of virtual machine nic reservation in this pool.
            
            Unit in Mbits/sec.
          type: integer
          format: int64
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfDvsVmVnicResourceAllocation:
      type: object
      description: |2
        A boxed array of *DvsVmVnicResourceAllocation*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DvsVmVnicResourceAllocation'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DvsVmVnicNetworkResourcePoolRuntimeInfo:
      type: object
      description: |2
        This class defines the runtime information for the
        virtual NIC network resource pool
      properties:
        key:
          description: |2
            The key of the virtual NIC network resource pool
          type: string
        name:
          description: |2
            The name of the virtual NIC network resource pool
          type: string
        capacity:
          description: |2
            Capacity: Reservation allocated for this Network Resource Pool.
            
            Units in Mbits/s.
          type: integer
          format: int32
        usage:
          description: |2
            usage: Reservation taken by all *VirtualEthernetCard* for which the
            backing is associdated with this *DVSVmVnicNetworkResourcePool*.
            
            Units in Mbits/s.
          type: integer
          format: int32
        available:
          description: |2
            Available: Current available resource for reservation (capacity - usage).
            
            Units in Mbits/s.
          type: integer
          format: int32
        status:
          description: |2
            The status of the virtual NIC network resource pool
            See *ManagedEntityStatus_enum* for possible values
            
            *red* indicates that the
            reservations used by all the virtual network adapters belonging
            to this resource pool exceeds the total reservation quota allocated to the
            resource pool. This can happen due to failure of one or more uplink
            or if the user bypasses VirtualCenter and powers on VMs directly on host.
            The reservation of one or more virtual network adapters cannot be guaranteed
            and corrective action needs to be taken by the user.
            
            *green* indicates that the resource pool
            is in good state. The reservations for all virtual network adapters can
            be fulfilled.
          type: string
        allocatedResource:
          description: |2
            The virtual network adapaters that
            are currently associated with the resource pool
          type: array
          items:
            $ref: '#/components/schemas/DvsVnicAllocatedResource'
      required:
        - key
        - status
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfDvsVmVnicNetworkResourcePoolRuntimeInfo:
      type: object
      description: |2
        A boxed array of *DvsVmVnicNetworkResourcePoolRuntimeInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DvsVmVnicNetworkResourcePoolRuntimeInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DvsVnicAllocatedResource:
      type: object
      description: |2
        This class defines the allocated resource information on a virtual NIC
      properties:
        vm:
          description: |2
            The virtual machine
            
            Refers instance of *VirtualMachine*.
          $ref: '#/components/schemas/ManagedObjectReference'
        vnicKey:
          description: |2
            The virtual NIC key
          type: string
        reservation:
          description: |2
            The reservation specification on the virtual NIC.
            
            Units in Mbits/s
          type: integer
          format: int64
      required:
        - vm
        - vnicKey
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfDvsVnicAllocatedResource:
      type: object
      description: |2
        A boxed array of *DvsVnicAllocatedResource*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DvsVnicAllocatedResource'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VMwareDVSConfigInfo:
      type: object
      description: |2
        This class defines the VMware specific configuration for
        DistributedVirtualSwitch.
      properties:
        vspanSession:
          description: |2
            The Distributed Port Mirroring sessions in the switch.
          type: array
          items:
            $ref: '#/components/schemas/VMwareVspanSession'
        pvlanConfig:
          description: |2
            The PVLAN configured in the switch.
          type: array
          items:
            $ref: '#/components/schemas/VMwareDVSPvlanMapEntry'
        maxMtu:
          description: |2
            The maximum MTU in the switch.
          type: integer
          format: int32
        linkDiscoveryProtocolConfig:
          description: |2
            See *LinkDiscoveryProtocolConfig*.
          $ref: '#/components/schemas/LinkDiscoveryProtocolConfig'
        ipfixConfig:
          description: |2
            Configuration for ipfix monitoring of the switch traffic.
            
            This must be
            set before ipfix monitoring can be enabled for the switch, or for any
            portgroup or port of the switch.
            
            See also *VMwareDVSPortSetting.ipfixEnabled*.
          $ref: '#/components/schemas/VMwareIpfixConfig'
        lacpGroupConfig:
          description: |2
            The Link Aggregation Control Protocol groups in the switch.
          type: array
          items:
            $ref: '#/components/schemas/VMwareDvsLacpGroupConfig'
        lacpApiVersion:
          description: |2
            The Link Aggregation Control Protocol group version in the switch.
            
            See *VMwareDvsLacpApiVersion_enum* for valid values.
          type: string
        multicastFilteringMode:
          description: |2
            The Multicast Filtering mode in the switch.
            
            See *VMwareDvsMulticastFilteringMode_enum* for valid values.
          type: string
        networkOffloadSpecId:
          description: |2
            Indicate the ID of NetworkOffloadSpec used in the switch.
            
            ID "None" means that network offload is not allowed in the switch.
            
            ***Since:*** vSphere API Release 8.0.0.1
          type: string
        networkOffloadConfig:
          description: |2
            The network offload specific configuration of the switch.
            
            It is only set when network offload is allowed
            (*VMwareDVSConfigInfo.networkOffloadSpecId*
            is not "None").
            
            ***Since:*** vSphere API Release 8.0.3.0
          $ref: '#/components/schemas/VmwareDistributedVirtualSwitchNetworkOffloadConfig'
      required:
        - maxMtu
      allOf:
        - $ref: '#/components/schemas/DVSConfigInfo'

    ArrayOfVMwareDVSConfigInfo:
      type: object
      description: |2
        A boxed array of *VMwareDVSConfigInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VMwareDVSConfigInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VMwareDVSConfigSpec:
      type: object
      description: |2
        This class defines the VMware specific configuration for
        DistributedVirtualSwitch.
      properties:
        pvlanConfigSpec:
          description: |2
            The PVLAN configuration specification.
            
            A *VMwareDVSPvlanMapEntry*
            that has the same value for
            *VMwareDVSPvlanMapEntry.primaryVlanId* and
            *VMwareDVSPvlanMapEntry.secondaryVlanId*
            is referred to as a primary PVLAN entry.
            Otherwise, the *VMwareDVSPvlanMapEntry*
            is referred to as a secondary PVLAN entry.
            
            The *VMwareDVSPvlanMapEntry.pvlanType*
            of a primary PVLAN entry must be
            *promiscuous*.
            A secondary PVLAN entry can have a
            *VMwareDVSPvlanMapEntry.pvlanType*
            of either
            *community* or
            *isolated*.
            
            Primary PVLAN entries must be explicitly added.
            If there is no primary PVLAN entry corresponding to the
            *VMwareDVSPvlanMapEntry.primaryVlanId*
            of a secondary PVLAN entry, a fault is thrown.
            
            While deleting a primary PVLAN entry, any associated secondary PVLAN
            entries must be explicitly deleted.
          type: array
          items:
            $ref: '#/components/schemas/VMwareDVSPvlanConfigSpec'
        vspanConfigSpec:
          description: |2
            The Distributed Port Mirroring configuration specification.
            
            The VSPAN
            sessions in the array cannot be of the same key.
          type: array
          items:
            $ref: '#/components/schemas/VMwareDVSVspanConfigSpec'
        maxMtu:
          description: |2
            The maximum MTU in the switch.
          type: integer
          format: int32
        linkDiscoveryProtocolConfig:
          description: |2
            See *LinkDiscoveryProtocolConfig*.
          $ref: '#/components/schemas/LinkDiscoveryProtocolConfig'
        ipfixConfig:
          description: |2
            Configuration for ipfix monitoring of the switch traffic.
            
            This must be
            set before ipfix monitoring can be enabled for the switch, or for any
            portgroup or port of the switch.
            
            See also *VMwareDVSPortSetting.ipfixEnabled*.
          $ref: '#/components/schemas/VMwareIpfixConfig'
        lacpApiVersion:
          description: |2
            The Link Aggregation Control Protocol group version in the switch.
            
            See *VMwareDvsLacpApiVersion_enum* for valid values.
          type: string
        multicastFilteringMode:
          description: |2
            The Multicast Filtering mode in the switch.
            
            See *VMwareDvsMulticastFilteringMode_enum* for valid values.
          type: string
        networkOffloadSpecId:
          description: |2
            Indicate the ID of NetworkOffloadSpec used in the switch.
            
            Unset it when network offload is not allowed when creating a switch.
            Use ID "None" to change network offload from allowed to not allowed.
            
            ***Since:*** vSphere API Release 8.0.0.1
          type: string
        networkOffloadConfig:
          description: |2
            The network offload specific configuration of the switch.
            
            This can be set only when network offload is allowed
            (*VMwareDVSConfigInfo.networkOffloadSpecId*
            is not "None").
            
            ***Since:*** vSphere API Release 8.0.3.0
          $ref: '#/components/schemas/VmwareDistributedVirtualSwitchNetworkOffloadConfig'
      allOf:
        - $ref: '#/components/schemas/DVSConfigSpec'

    ArrayOfVMwareDVSConfigSpec:
      type: object
      description: |2
        A boxed array of *VMwareDVSConfigSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VMwareDVSConfigSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmwareDistributedVirtualSwitchDpuFailoverPolicy:
      type: object
      description: |2
        This data structure defines the failover policy for a distributed
        virtual switch when network offload is enabled, specifically
        related to the Data Processing Unit(DPU).
        
        The active and standby uplinks are expected to be backed by different
        DPUs to provide redundancy. If DPU backing active uplinks fails, then
        the standby DPU takes over to ensure uninterrupted network connectivity.
        
        ***Since:*** vSphere API Release 8.0.3.0
      properties:
        activeUplink:
          description: |2
            The name of the active uplink(s).
            
            These uplink(s) must be backed
            by vmnic(s) from a single DPU.
          type: array
          items:
            type: string
        standbyUplink:
          description: |2
            The name of the standby uplink(s).
            
            These uplink(s) must be backed
            by vmnic(s) from a different DPU than the active uplink(s).
            An empty standbyUplink indicates that no failover action will be
            taken after the active DPU fails.
          type: array
          items:
            type: string
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVmwareDistributedVirtualSwitchDpuFailoverPolicy:
      type: object
      description: |2
        A boxed array of *VmwareDistributedVirtualSwitchDpuFailoverPolicy*. To be used in *Any* placeholders.
        
        ***Since:*** vSphere API Release 8.0.3.0
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmwareDistributedVirtualSwitchDpuFailoverPolicy'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VMwareDvsDpuCapability:
      type: object
      description: |2
        The feature capabilities of Dpu Features supported by the
        vSphere Distributed Switch.
        
        ***Since:*** vSphere API Release 8.0.0.1
      properties:
        networkOffloadSupported:
          description: |2
            Flag to indicate whether network offloading is supported on the
            vSphere Distributed Switch.
          type: boolean
        activeStandbyModeSupported:
          description: |2
            Flag to indicate whether the vSphere Distributed Switch supports
            connecting two DPUs to an offloading VDS and operating in an
            active-standby mode.
            
            If not set, the feature is not supported.
            
            ***Since:*** vSphere API Release 8.0.3.0
          type: boolean
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVMwareDvsDpuCapability:
      type: object
      description: |2
        A boxed array of *VMwareDvsDpuCapability*. To be used in *Any* placeholders.
        
        ***Since:*** vSphere API Release 8.0.0.1
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VMwareDvsDpuCapability'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DVSFailureCriteria:
      type: object
      description: |2
        This data object type describes the network adapter failover
        detection algorithm for a network adapter team.
      properties:
        checkSpeed:
          description: |2
            To use link speed as the criteria, _checkSpeed_ must be one of
            the following values:
            - **exact**: Use exact speed to detect link failure.
              **speed** is the configured exact speed in megabits per second.
            - **minimum**: Use minimum speed to detect failure.
              **speed** is the configured minimum speed in megabits per second.
            - **empty string**: Do not use link speed to detect failure.
              **speed** is unused in this case.
          $ref: '#/components/schemas/StringPolicy'
        speed:
          description: |2
            See also *DVSFailureCriteria.checkSpeed*.
          $ref: '#/components/schemas/IntPolicy'
        checkDuplex:
          description: |2
            The flag to indicate whether or not to use the link duplex reported
            by the driver as link selection criteria.
            
            If **checkDuplex** is true, then fullDuplex is the configured
            duplex mode. The link is considered bad if the link duplex reported
            by driver is not the same as fullDuplex.
            
            If **checkDuplex** is false, then fullDuplex is unused, and
            link duplexity is not used as a detection method.
          $ref: '#/components/schemas/BoolPolicy'
        fullDuplex:
          description: |2
            See also *DVSFailureCriteria.checkDuplex*.
          $ref: '#/components/schemas/BoolPolicy'
        checkErrorPercent:
          description: |2
            The flag to indicate whether or not to use link error percentage
            to detect failure.
            
            If **checkErrorPercent** is true, then percentage is the configured
            error percentage that is tolerated. The link is considered bad
            if error rate exceeds percentage.
            
            If **checkErrorPercent** is false, percentage is unused, and
            error percentage is not used as a detection method.
          $ref: '#/components/schemas/BoolPolicy'
        percentage:
          description: |2
            See also *DVSFailureCriteria.checkErrorPercent*.
          $ref: '#/components/schemas/IntPolicy'
        checkBeacon:
          description: |2
            The flag to indicate whether or not to enable this property to
            enable beacon probing as a method to validate
            the link status of a physical network adapter.
            
            **checkBeacon** can be enabled only if the VirtualSwitch has been
            configured to use the beacon. Attempting to set **checkBeacon**
            on a PortGroup or VirtualSwitch that does not have beacon probing
            configured for the applicable VirtualSwitch results in an error.
          $ref: '#/components/schemas/BoolPolicy'
      allOf:
        - $ref: '#/components/schemas/InheritablePolicy'

    ArrayOfDVSFailureCriteria:
      type: object
      description: |2
        A boxed array of *DVSFailureCriteria*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DVSFailureCriteria'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VMwareDVSFeatureCapability:
      type: object
      description: |2
        Indicators of support for version-specific DVS features that are only
        available on a VMware-class switch.
      properties:
        vspanSupported:
          description: |2
            Flag to indicate whether vspan(DVMirror) is supported on the
            vSphere Distributed Switch.
            
            Distributed Port Mirroring is supported in vSphere Distributed Switch Version 5.0 or later.
          type: boolean
        lldpSupported:
          description: |2
            Flag to indicate whether LLDP(Link Layer Discovery Protocol) is supported on the
            vSphere Distributed Switch.
            
            LLDP is supported in vSphere Distributed Switch Version 5.0 or later.
          type: boolean
        ipfixSupported:
          deprecated: true
          description: |2
            Deprecated as of vSphere API 6.0, use *VMwareDvsIpfixCapability*.
            
            Flag to indicate whether IPFIX(NetFlow) is supported on the
            vSphere Distributed Switch.
            
            IPFIX is supported in vSphere Distributed Switch Version 5.0 or later.
          type: boolean
        ipfixCapability:
          description: |2
            The support for version-specific IPFIX(NetFlow).
          $ref: '#/components/schemas/VMwareDvsIpfixCapability'
        multicastSnoopingSupported:
          description: |2
            Flag to indicate whether multicast snooping(IGMP/MLD Snooping)
            is supported on the vSphere Distributed Switch.
            
            IGMP/MLD Snooping is supported in vSphere Distributed Switch Version 6.0 or later.
          type: boolean
        vspanCapability:
          description: |2
            The support for version-specific Distributed Port Mirroring sessions.
          $ref: '#/components/schemas/VMwareDVSVspanCapability'
        lacpCapability:
          description: |2
            The support for version-specific Link Aggregation Control Protocol.
          $ref: '#/components/schemas/VMwareDvsLacpCapability'
        dpuCapability:
          description: |2
            The support for version-specific DPU(SmartNic).
            
            ***Since:*** vSphere API Release 8.0.0.1
          $ref: '#/components/schemas/VMwareDvsDpuCapability'
        nsxSupported:
          description: |2
            Flag to indicate whether NSX is supported on the
            vSphere Distributed Switch.
            
            NSX is supported in vSphere Distributed Switch Version 7.0 or later.
          type: boolean
        mtuCapability:
          description: |2
            The support for version-specific supported MTU.
            
            ***Since:*** vSphere API Release 7.0.2.0
          $ref: '#/components/schemas/VMwareDvsMtuCapability'
      allOf:
        - $ref: '#/components/schemas/DVSFeatureCapability'

    ArrayOfVMwareDVSFeatureCapability:
      type: object
      description: |2
        A boxed array of *VMwareDVSFeatureCapability*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VMwareDVSFeatureCapability'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VMwareIpfixConfig:
      type: object
      description: |2
        Configuration for IPFIX monitoring of distributed virtual switch traffic.
        
        IPFIX monitoring must be enabled to use this capability. See
        *VMwareDVSPortSetting*.*VMwareDVSPortSetting.ipfixEnabled*.
      properties:
        collectorIpAddress:
          description: |2
            IP address for the ipfix collector, using IPv4 or IPv6.
            
            IPv6 is supported in vSphere Distributed Switch Version 6.0 or later.
            This must be set before ipfix monitoring can be enabled for the
            switch, or for any portgroup or port of the switch.
          type: string
        collectorPort:
          description: |2
            Port for the ipfix collector.
            
            This must be set before ipfix monitoring
            can be enabled for the switch, or for any portgroup or port of the
            switch. Legal value range is 0-65535.
          type: integer
          format: int32
        observationDomainId:
          description: |2
            Observation Domain Id for the ipfix collector.
            
            Observation Domain Id is supported
            in vSphere Distributed Switch Version 6.0 or later.
            Legal value range is 0-((2^32)-1)
          type: integer
          format: int64
        activeFlowTimeout:
          description: |2
            The number of seconds after which "active" flows are forced to be
            exported to the collector.
            
            Legal value range is 60-3600. Default: 60.
          type: integer
          format: int32
        idleFlowTimeout:
          description: |2
            The number of seconds after which "idle" flows are forced to be
            exported to the collector.
            
            Legal value range is 10-600. Default: 15.
          type: integer
          format: int32
        samplingRate:
          description: |2
            The ratio of total number of packets to the number of packets
            analyzed.
            
            Set to 0 to disable sampling. Legal value range is 0-16384.
            Default: 4096.
          type: integer
          format: int32
        internalFlowsOnly:
          description: |2
            Whether to limit analysis to traffic that has both source and
            destination served by the same host.
            
            Default: false.
          type: boolean
      required:
        - activeFlowTimeout
        - idleFlowTimeout
        - samplingRate
        - internalFlowsOnly
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVMwareIpfixConfig:
      type: object
      description: |2
        A boxed array of *VMwareIpfixConfig*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VMwareIpfixConfig'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VMwareDvsIpfixCapability:
      type: object
      description: |2
        The feature capabilities of Ipfix supported by the vSphere Distributed Switch.
      properties:
        ipfixSupported:
          description: |2
            Flag to indicate whether IPFIX(NetFlow) is supported on the
            vSphere Distributed Switch.
            
            IPFIX is supported in vSphere Distributed Switch Version 5.0 or later.
          type: boolean
        ipv6ForIpfixSupported:
          description: |2
            Flag to indicate whether IPv6 for IPFIX(NetFlow) is supported on the
            vSphere Distributed Switch.
            
            IPv6 for IPFIX is supported in vSphere Distributed Switch Version 6.0 or later.
          type: boolean
        observationDomainIdSupported:
          description: |2
            Flag to indicate whether Observation Domain Id for IPFIX is supported
            on the vSphere Distributed Switch.
            
            Observation Domain Id is supported in vSphere Distributed Switch Version 6.0 or later.
          type: boolean
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVMwareDvsIpfixCapability:
      type: object
      description: |2
        A boxed array of *VMwareDvsIpfixCapability*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VMwareDvsIpfixCapability'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VMwareDvsLacpCapability:
      type: object
      description: |2
        The feature capabilities of Link Aggregation Control Protocol supported by the
        vSphere Distributed Switch.
      properties:
        lacpSupported:
          description: |2
            Flag to indicate whether Link Aggregation Control Protocol is supported on the
            vSphere Distributed Switch.
          type: boolean
        multiLacpGroupSupported:
          description: |2
            Flag to indicate whether the vSphere Distributed Switch supports more
            than one Link Aggregation Control Protocol group to be configured.
            
            It is suppported in vSphere Distributed Switch Version 5.5 or later.
          type: boolean
        lacpFastModeSupported:
          description: |2
            Flag to indicate whether LACP Fast Mode is supported on the
            vSphere Distributed Switch.
            
            LACP Fast Mode is supported in vSphere Distributed Switch Version 7.0 or later.
            
            ***Since:*** vSphere API Release 7.0.2.0
          type: boolean
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVMwareDvsLacpCapability:
      type: object
      description: |2
        A boxed array of *VMwareDvsLacpCapability*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VMwareDvsLacpCapability'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VMwareDvsLacpGroupConfig:
      type: object
      description: |2
        This class defines VMware specific multiple IEEE 802.3ad
        Dynamic Link Aggregation Control Protocol groups.
      properties:
        key:
          description: |2
            The generated key as the identifier for the Link Aggregation group.
          type: string
        name:
          description: |2
            The display name.
          type: string
        mode:
          description: |2
            The mode of Link Aggregation Control Protocol.
            
            See *VMwareUplinkLacpMode_enum* for valid values.
          type: string
        uplinkNum:
          description: |2
            The number of uplink ports.
          type: integer
          format: int32
        loadbalanceAlgorithm:
          description: |2
            Load balance policy.
            
            See *VMwareDvsLacpLoadBalanceAlgorithm_enum* for valid values.
          type: string
        vlan:
          description: |2
            The VLAN Specification of the Uplink Ports in the Link Aggregation group.
          $ref: '#/components/schemas/VMwareDvsLagVlanConfig'
        ipfix:
          description: |2
            Ipfix configuration of the Link Aggregation
            Control Protocol group.
          $ref: '#/components/schemas/VMwareDvsLagIpfixConfig'
        uplinkName:
          description: |2
            Names for the Uplink Ports in the group.
            
            This property is ignored in an update operation.
          type: array
          items:
            type: string
        uplinkPortKey:
          description: |2
            Keys for the Uplink Ports in the group.
            
            This property is ignored in an update operation.
          type: array
          items:
            type: string
        timeoutMode:
          description: |2
            The timeout mode of LACP group.
            
            See *VMwareUplinkLacpTimeoutMode_enum* for valid values.
            
            ***Since:*** vSphere API Release 7.0.2.0
          type: string
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVMwareDvsLacpGroupConfig:
      type: object
      description: |2
        A boxed array of *VMwareDvsLacpGroupConfig*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VMwareDvsLacpGroupConfig'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VMwareDvsLacpGroupSpec:
      type: object
      description: |2
        This class defines the configuration of a Link Aggregation
        Control Protocol group.
      properties:
        lacpGroupConfig:
          description: |2
            The Link Aggregation Control Protocol group to be configured.
          $ref: '#/components/schemas/VMwareDvsLacpGroupConfig'
        operation:
          description: |2
            Operation type, see
            *ConfigSpecOperation_enum* for valid values.
          type: string
      required:
        - lacpGroupConfig
        - operation
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVMwareDvsLacpGroupSpec:
      type: object
      description: |2
        A boxed array of *VMwareDvsLacpGroupSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VMwareDvsLacpGroupSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VMwareDvsLagIpfixConfig:
      type: object
      description: |2
        This class defines the ipfix configuration of the Link Aggregation
        Control Protocol group.
      properties:
        ipfixEnabled:
          description: |2
            True if ipfix monitoring is enabled in the Link Aggregation Control Protocol group.
            
            If set, this property will override the ipfix configuration of Uplink Ports
            in the Link Aggregation Control Protocol group.
            Thus they are no longer inheriting ipfix configuration from their Uplink Port Group.
            Setting this property would require
            *VMwareDVSPortgroupPolicy.ipfixOverrideAllowed*
            of all the Uplink Port Groups to be true,
            otherwise ConflictingConfiguration fault will be raised.
          type: boolean
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVMwareDvsLagIpfixConfig:
      type: object
      description: |2
        A boxed array of *VMwareDvsLagIpfixConfig*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VMwareDvsLagIpfixConfig'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VMwareDvsLagVlanConfig:
      type: object
      description: |2
        This class defines the vlan configuration of the Link Aggregation
        Control Protocol group.
      properties:
        vlanId:
          description: |2
            The VlanId range for the Uplink Ports in the Link Aggregation
            Control Protocol group.
            
            The valid VlanId range is from 0 to 4094. Overlapping ranges are allowed.
            If set, this property will override the VLAN configuration of Uplink Ports
            in the Link Aggregation Control Protocol group.
            Thus they are no longer inheriting VLAN configuration from their Uplink Port Group.
            Setting this property would require
            *VMwareDVSPortgroupPolicy.vlanOverrideAllowed*
            of all the Uplink Port Groups to be true,
            otherwise ConflictingConfiguration fault will be raised.
          type: array
          items:
            $ref: '#/components/schemas/NumericRange'
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVMwareDvsLagVlanConfig:
      type: object
      description: |2
        A boxed array of *VMwareDvsLagVlanConfig*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VMwareDvsLagVlanConfig'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DVSMacLearningPolicy:
      type: object
      description: |2
        This data object type describes MAC learning policy of a port.
      properties:
        enabled:
          description: |2
            The flag to indicate if source MAC address learning is allowed.
          type: boolean
        allowUnicastFlooding:
          description: |2
            The flag to allow flooding of unlearned MAC for ingress traffic.
          type: boolean
        limit:
          description: |2
            The maximum number of MAC addresses that can be learned.
          type: integer
          format: int32
        limitPolicy:
          description: |2
            The default switching policy after MAC limit is exceeded.
            
            See *DVSMacLimitPolicyType_enum*
            for valid values.
          type: string
      required:
        - enabled
      allOf:
        - $ref: '#/components/schemas/InheritablePolicy'

    ArrayOfDVSMacLearningPolicy:
      type: object
      description: |2
        A boxed array of *DVSMacLearningPolicy*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DVSMacLearningPolicy'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DVSMacManagementPolicy:
      type: object
      description: |2
        This data object type describes MAC management policy of a port.
      properties:
        allowPromiscuous:
          description: |2
            The flag to indicate whether or not all traffic is seen
            on the port.
          type: boolean
        macChanges:
          description: |2
            The flag to indicate whether or not the Media Access
            Control (MAC) address can be changed.
          type: boolean
        forgedTransmits:
          description: |2
            The flag to indicate whether or not the virtual network adapter
            should be allowed to send network traffic with a different MAC
            address than that of the virtual network adapter.
          type: boolean
        macLearningPolicy:
          description: |2
            The MAC learning policy.
          $ref: '#/components/schemas/DVSMacLearningPolicy'
      allOf:
        - $ref: '#/components/schemas/InheritablePolicy'

    ArrayOfDVSMacManagementPolicy:
      type: object
      description: |2
        A boxed array of *DVSMacManagementPolicy*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DVSMacManagementPolicy'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VMwareDvsMtuCapability:
      type: object
      description: |2
        Indicators of support for version-specific supported MTU.
        
        ***Since:*** vSphere API Release 7.0.2.0
      properties:
        minMtuSupported:
          description: |2
            Minimum supported MTU on VDS.
          type: integer
          format: int32
        maxMtuSupported:
          description: |2
            Maximum supported MTU on VDS.
          type: integer
          format: int32
      required:
        - minMtuSupported
        - maxMtuSupported
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVMwareDvsMtuCapability:
      type: object
      description: |2
        A boxed array of *VMwareDvsMtuCapability*. To be used in *Any* placeholders.
        
        ***Since:*** vSphere API Release 7.0.2.0
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VMwareDvsMtuCapability'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VMwareDVSMtuHealthCheckResult:
      type: object
      description: |2
        This class defines MTU health check result of an uplink port
        in the VMware vSphered Distributed Switch.
      properties:
        mtuMismatch:
          description: |2
            True if the MTU configured in the vSphere Distributed Switch is different from
            the value configured in the Physical NIC, else false.
            
            If it is true,
            MTU health check is stopped. In this case, *VMwareDVSMtuHealthCheckResult.vlanSupportSwitchMtu* and
            *VMwareDVSMtuHealthCheckResult.vlanNotSupportSwitchMtu* will not have values.
          type: boolean
        vlanSupportSwitchMtu:
          description: |2
            The vlan's MTU setting on physical switch allows vSphere Distributed Switch
            max MTU size packets passing.
            
            If the vlan is not a range, but a single Id,
            both start and end have the same value with the single vlan Id.
          type: array
          items:
            $ref: '#/components/schemas/NumericRange'
        vlanNotSupportSwitchMtu:
          description: |2
            The vlan's MTU setting on physical switch does not allow
            vSphere Distributed Switch max MTU size packets passing.
            
            If the vlan is not a range, but a single Id,
            both start and end have the same value with the single vlan Id.
          type: array
          items:
            $ref: '#/components/schemas/NumericRange'
      required:
        - mtuMismatch
      allOf:
        - $ref: '#/components/schemas/HostMemberUplinkHealthCheckResult'

    ArrayOfVMwareDVSMtuHealthCheckResult:
      type: object
      description: |2
        A boxed array of *VMwareDVSMtuHealthCheckResult*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VMwareDVSMtuHealthCheckResult'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmwareDistributedVirtualSwitchNetworkOffloadConfig:
      type: object
      description: |2
        This data structure defines the network offoad specific configuration of
        a distributed virtual switch.
        
        ***Since:*** vSphere API Release 8.0.3.0
      properties:
        dpuFailoverPolicy:
          description: |2
            The DPU failover policy of the switch.
            
            If this property is not set, all uplink ports are active uplinks.
          $ref: '#/components/schemas/VmwareDistributedVirtualSwitchDpuFailoverPolicy'
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVmwareDistributedVirtualSwitchNetworkOffloadConfig:
      type: object
      description: |2
        A boxed array of *VmwareDistributedVirtualSwitchNetworkOffloadConfig*. To be used in *Any* placeholders.
        
        ***Since:*** vSphere API Release 8.0.3.0
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmwareDistributedVirtualSwitchNetworkOffloadConfig'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VMwareDVSPvlanConfigSpec:
      type: object
      description: |2
        This class defines the configuration of a PVLAN map entry
      properties:
        pvlanEntry:
          description: |2
            The PVLAN entry to be added or removed.
          $ref: '#/components/schemas/VMwareDVSPvlanMapEntry'
        operation:
          description: |2
            Operation type.
            
            See
            *ConfigSpecOperation_enum* for valid values,
            except for the "edit" value, which is not supported.
          type: string
      required:
        - pvlanEntry
        - operation
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVMwareDVSPvlanConfigSpec:
      type: object
      description: |2
        A boxed array of *VMwareDVSPvlanConfigSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VMwareDVSPvlanConfigSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VMwareDVSPvlanMapEntry:
      type: object
      description: |2
        The class represents a PVLAN id.
      properties:
        primaryVlanId:
          description: |2
            The primary VLAN ID.
            
            The VLAN IDs of 0 and 4095 are reserved
            and cannot be used in this property.
          type: integer
          format: int32
        secondaryVlanId:
          description: |2
            The secondary VLAN ID.
            
            The VLAN IDs of 0 and 4095 are reserved
            and cannot be used in this property.
          type: integer
          format: int32
        pvlanType:
          description: |2
            The type of PVLAN.
            
            See *VmwareDistributedVirtualSwitchPvlanPortType_enum*
            for valid values.
          type: string
      required:
        - primaryVlanId
        - secondaryVlanId
        - pvlanType
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVMwareDVSPvlanMapEntry:
      type: object
      description: |2
        A boxed array of *VMwareDVSPvlanMapEntry*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VMwareDVSPvlanMapEntry'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmwareDistributedVirtualSwitchPvlanSpec:
      type: object
      description: |2
        This data type defines the configuration when PVLAN id is to be
        used for the ports.
      properties:
        pvlanId:
          description: |2
            The *VMwareDVSPvlanMapEntry.secondaryVlanId*.
          type: integer
          format: int32
      required:
        - pvlanId
      allOf:
        - $ref: '#/components/schemas/VmwareDistributedVirtualSwitchVlanSpec'

    ArrayOfVmwareDistributedVirtualSwitchPvlanSpec:
      type: object
      description: |2
        A boxed array of *VmwareDistributedVirtualSwitchPvlanSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmwareDistributedVirtualSwitchPvlanSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DVSSecurityPolicy:
      type: object
      description: |2
        This data object type describes security policy governing ports.
      properties:
        allowPromiscuous:
          description: |2
            The flag to indicate whether or not all traffic is seen
            on the port.
          $ref: '#/components/schemas/BoolPolicy'
        macChanges:
          description: |2
            The flag to indicate whether or not the Media Access
            Control (MAC) address can be changed.
          $ref: '#/components/schemas/BoolPolicy'
        forgedTransmits:
          description: |2
            The flag to indicate whether or not the virtual network adapter
            should be allowed to send network traffic with a different MAC
            address than that of the virtual network adapter.
          $ref: '#/components/schemas/BoolPolicy'
      allOf:
        - $ref: '#/components/schemas/InheritablePolicy'

    ArrayOfDVSSecurityPolicy:
      type: object
      description: |2
        A boxed array of *DVSSecurityPolicy*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DVSSecurityPolicy'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VMwareDVSTeamingHealthCheckConfig:
      type: object
      description: |2
        This class defines the teaming health check configuration.
        
        Teaming health check is used to check whether the teaming policy configuration
        of the vSphere Distributed Switch matches the physical switch.
      allOf:
        - $ref: '#/components/schemas/VMwareDVSHealthCheckConfig'

    ArrayOfVMwareDVSTeamingHealthCheckConfig:
      type: object
      description: |2
        A boxed array of *VMwareDVSTeamingHealthCheckConfig*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VMwareDVSTeamingHealthCheckConfig'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VMwareDVSTeamingHealthCheckResult:
      type: object
      description: |2
        This class defines teaming health check result of a host that
        joined the VMware vSphered Distributed Switch.
      properties:
        teamingStatus:
          description: |2
            Teaming check status.
            
            See *VMwareDVSTeamingMatchStatus_enum*
            for valid values.
          type: string
      required:
        - teamingStatus
      allOf:
        - $ref: '#/components/schemas/HostMemberHealthCheckResult'

    ArrayOfVMwareDVSTeamingHealthCheckResult:
      type: object
      description: |2
        A boxed array of *VMwareDVSTeamingHealthCheckResult*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VMwareDVSTeamingHealthCheckResult'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmwareDistributedVirtualSwitchTrunkVlanSpec:
      type: object
      description: |2
        This data type specifies that the port uses trunk mode,
        which allows the guest operating system to manage its own VLAN tags.
      properties:
        vlanId:
          description: |2
            The VlanId range for the trunk port.
            
            The valid VlanId range is
            from 0 to 4094. Overlapping ranges are allowed.
          type: array
          items:
            $ref: '#/components/schemas/NumericRange'
      allOf:
        - $ref: '#/components/schemas/VmwareDistributedVirtualSwitchVlanSpec'

    ArrayOfVmwareDistributedVirtualSwitchTrunkVlanSpec:
      type: object
      description: |2
        A boxed array of *VmwareDistributedVirtualSwitchTrunkVlanSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmwareDistributedVirtualSwitchTrunkVlanSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VMwareUplinkLacpPolicy:
      type: object
      deprecated: true
      description: |2
        Deprecated as of vSphere API 5.5.
        
        This class defines VMware specific Link Aggregation Control Protocol
        policy.
      properties:
        enable:
          description: |2
            The flag to indicate whether or not
            Link Aggregation Control Protocol is enabled.
            
            It can be set to true if the value of
            *VMwareDVSConfigInfo.lacpApiVersion*
            is *singleLag*,
            else an exception ConflictingConfiguration will be thrown.
          $ref: '#/components/schemas/BoolPolicy'
        mode:
          description: |2
            The mode of Link Aggregation Control Protocol.
            
            See *VMwareUplinkLacpMode_enum* for valid values.
          $ref: '#/components/schemas/StringPolicy'
      allOf:
        - $ref: '#/components/schemas/InheritablePolicy'

    ArrayOfVMwareUplinkLacpPolicy:
      type: object
      description: |2
        A boxed array of *VMwareUplinkLacpPolicy*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VMwareUplinkLacpPolicy'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VMwareUplinkPortOrderPolicy:
      type: object
      description: |2
        This data object type describes uplink port ordering policy for a
        distributed virtual port.
        
        A uplink port can be in the active
        list, the standby list, or neither. It cannot be in both lists.
      properties:
        activeUplinkPort:
          description: |2
            List of active uplink ports used for load balancing.
          type: array
          items:
            type: string
        standbyUplinkPort:
          description: |2
            Standby uplink ports used for failover.
          type: array
          items:
            type: string
      allOf:
        - $ref: '#/components/schemas/InheritablePolicy'

    ArrayOfVMwareUplinkPortOrderPolicy:
      type: object
      description: |2
        A boxed array of *VMwareUplinkPortOrderPolicy*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VMwareUplinkPortOrderPolicy'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmwareUplinkPortTeamingPolicy:
      type: object
      description: |2
        Policy for a uplink port team.
      properties:
        policy:
          description: |2
            Network adapter teaming policy.
            
            The policy defines the way traffic
            from the clients of the team is routed through the different uplinks
            in the team. The policies supported on the VDS platform is one of
            *nicTeamingPolicy*.
          $ref: '#/components/schemas/StringPolicy'
        reversePolicy:
          description: |2
            The flag to indicate whether or not the teaming policy is applied
            to inbound frames as well.
            
            Also see *HostNicTeamingPolicy.reversePolicy*
          $ref: '#/components/schemas/BoolPolicy'
        notifySwitches:
          description: |2
            Flag to specify whether or not to notify the physical switch
            if a link fails.
            
            Also see *HostNicTeamingPolicy.notifySwitches*
          $ref: '#/components/schemas/BoolPolicy'
        rollingOrder:
          description: |2
            The flag to indicate whether or not to use a rolling policy when
            restoring links.
            
            Also see *HostNicTeamingPolicy.rollingOrder*
          $ref: '#/components/schemas/BoolPolicy'
        failureCriteria:
          description: |2
            Failover detection policy for the uplink port team.
          $ref: '#/components/schemas/DVSFailureCriteria'
        uplinkPortOrder:
          description: |2
            Failover order policy for uplink ports on the hosts.
          $ref: '#/components/schemas/VMwareUplinkPortOrderPolicy'
      allOf:
        - $ref: '#/components/schemas/InheritablePolicy'

    ArrayOfVmwareUplinkPortTeamingPolicy:
      type: object
      description: |2
        A boxed array of *VmwareUplinkPortTeamingPolicy*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmwareUplinkPortTeamingPolicy'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VMwareDVSPortgroupPolicy:
      type: object
      description: |2
        This class defines the VMware specific configuration for
        DistributedVirtualPort.
      properties:
        vlanOverrideAllowed:
          description: |2
            Allow the setting of
            *VmwareDistributedVirtualSwitchVlanIdSpec.vlanId*, trunk
            *VmwareDistributedVirtualSwitchTrunkVlanSpec.vlanId*, or
            *VmwareDistributedVirtualSwitchPvlanSpec.pvlanId*
            for an individual port to override the setting in
            *DVPortgroupConfigInfo.defaultPortConfig* of
            a portgroup.
          type: boolean
        uplinkTeamingOverrideAllowed:
          description: |2
            Allow the setting of
            *VMwareDVSPortSetting.uplinkTeamingPolicy*
            for an individual port to override the setting in
            *DVPortgroupConfigInfo.defaultPortConfig* of
            a portgroup.
          type: boolean
        securityPolicyOverrideAllowed:
          deprecated: true
          description: |2
            Deprecated as of vSphere API 6.7.1, use
            *VMwareDVSPortgroupPolicy.macManagementOverrideAllowed* instead.
            
            Allow the setting of
            *VMwareDVSPortSetting.securityPolicy*
            for an individual port to override the setting in
            *DVPortgroupConfigInfo.defaultPortConfig* of
            a portgroup.
          type: boolean
        ipfixOverrideAllowed:
          description: |2
            Allow the setting of
            *VMwareDVSPortSetting.ipfixEnabled*
            for an individual port to override the setting in
            *DVPortgroupConfigInfo.defaultPortConfig* of
            a portgroup.
          type: boolean
        macManagementOverrideAllowed:
          description: |2
            Allow the setting of
            *VMwareDVSPortSetting.macManagementPolicy*
            for an individual port to override the setting in
            *DVPortgroupConfigInfo.defaultPortConfig* of
            a portgroup.
          type: boolean
      required:
        - vlanOverrideAllowed
        - uplinkTeamingOverrideAllowed
        - securityPolicyOverrideAllowed
      allOf:
        - $ref: '#/components/schemas/DVPortgroupPolicy'

    ArrayOfVMwareDVSPortgroupPolicy:
      type: object
      description: |2
        A boxed array of *VMwareDVSPortgroupPolicy*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VMwareDVSPortgroupPolicy'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VMwareDVSVlanHealthCheckResult:
      type: object
      description: |2
        This class defines Vlan health check result of an uplink port
        in the VMware vSphered Distributed Switch.
      properties:
        trunkedVlan:
          description: |2
            The vlans which are trunked by the physical switch connected to the uplink port.
            
            If the vlan is not a range, but a single Id,
            both start and end have the same value with the single vlan Id.
          type: array
          items:
            $ref: '#/components/schemas/NumericRange'
        untrunkedVlan:
          description: |2
            The vlans which are not trunked by the physical switch connected to the uplink port.
            
            If the vlan is not a range, but a single Id,
            both start and end have the same value with the single vlan Id.
          type: array
          items:
            $ref: '#/components/schemas/NumericRange'
      allOf:
        - $ref: '#/components/schemas/HostMemberUplinkHealthCheckResult'

    ArrayOfVMwareDVSVlanHealthCheckResult:
      type: object
      description: |2
        A boxed array of *VMwareDVSVlanHealthCheckResult*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VMwareDVSVlanHealthCheckResult'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmwareDistributedVirtualSwitchVlanIdSpec:
      type: object
      description: |2
        This data type defines the configuration when single vlanId is used for
        the port.
      properties:
        vlanId:
          description: |2
            The VLAN ID for ports.
            
            Possible values:
            - A value of 0 specifies that you do not want the port associated
              with a VLAN.
            - A value from 1 to 4094 specifies a VLAN ID for the port.
          type: integer
          format: int32
      required:
        - vlanId
      allOf:
        - $ref: '#/components/schemas/VmwareDistributedVirtualSwitchVlanSpec'

    ArrayOfVmwareDistributedVirtualSwitchVlanIdSpec:
      type: object
      description: |2
        A boxed array of *VmwareDistributedVirtualSwitchVlanIdSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmwareDistributedVirtualSwitchVlanIdSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VMwareDVSVlanMtuHealthCheckConfig:
      type: object
      description: |2
        This class defines the vlan and mtu health check configuration.
        
        Vlan health check is used to check whether vlans are trunked by the physical
        switch connected to the uplink ports.
        MTU health check is used to verify current MTU setting workable on all uplink ports of
        the vSphere Distributed Switch.
      allOf:
        - $ref: '#/components/schemas/VMwareDVSHealthCheckConfig'

    ArrayOfVMwareDVSVlanMtuHealthCheckConfig:
      type: object
      description: |2
        A boxed array of *VMwareDVSVlanMtuHealthCheckConfig*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VMwareDVSVlanMtuHealthCheckConfig'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmwareDistributedVirtualSwitchVlanSpec:
      type: object
      description: |2
        Base class for Vlan Specifiation for ports.
      allOf:
        - $ref: '#/components/schemas/InheritablePolicy'

    ArrayOfVmwareDistributedVirtualSwitchVlanSpec:
      type: object
      description: |2
        A boxed array of *VmwareDistributedVirtualSwitchVlanSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmwareDistributedVirtualSwitchVlanSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VMwareDVSHealthCheckConfig:
      type: object
      description: |2
        This class defines health check configuration for
        VMware vSphere Distributed Switch.
      allOf:
        - $ref: '#/components/schemas/DVSHealthCheckConfig'

    ArrayOfVMwareDVSHealthCheckConfig:
      type: object
      description: |2
        A boxed array of *VMwareDVSHealthCheckConfig*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VMwareDVSHealthCheckConfig'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VMwareDVSHealthCheckCapability:
      type: object
      description: |2
        The feature capabilities of health check supported by the
        vSphere Distributed Switch
      properties:
        vlanMtuSupported:
          description: |2
            Flag to indicate whether vlan/mtu health check is supported on the
            vSphere Distributed Switch.
          type: boolean
        teamingSupported:
          description: |2
            Flag to indicate whether teaming health check is supported on the
            vSphere Distributed Switch.
          type: boolean
      required:
        - vlanMtuSupported
        - teamingSupported
      allOf:
        - $ref: '#/components/schemas/DVSHealthCheckCapability'

    ArrayOfVMwareDVSHealthCheckCapability:
      type: object
      description: |2
        A boxed array of *VMwareDVSHealthCheckCapability*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VMwareDVSHealthCheckCapability'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VMwareDVSPortSetting:
      type: object
      description: |2
        This class defines the VMware specific configuration for
        DistributedVirtualPort.
      properties:
        vlan:
          description: |2
            The VLAN Specification of the port.
          $ref: '#/components/schemas/VmwareDistributedVirtualSwitchVlanSpec'
        qosTag:
          deprecated: true
          description: |2
            Deprecated as of vSphere API 5.0.
            
            The Quality Of Service tagging of the port.
          $ref: '#/components/schemas/IntPolicy'
        uplinkTeamingPolicy:
          description: |2
            The uplink teaming policy.
            
            This property is ignored for uplink
            ports.
          $ref: '#/components/schemas/VmwareUplinkPortTeamingPolicy'
        securityPolicy:
          deprecated: true
          description: |2
            Deprecated as of vSphere API 6.7, use
            *DVSMacManagementPolicy*
            instead to specify the security policy.
            
            The security policy.
          $ref: '#/components/schemas/DVSSecurityPolicy'
        ipfixEnabled:
          description: |2
            True if ipfix monitoring is enabled.
            
            To successfully enable ipfix
            monitoring, the switch must have an assigned
            *IP address*
            and an appropriately populated
            *ipfix configuration*
            that specifies a collector IP address and port.
          $ref: '#/components/schemas/BoolPolicy'
        txUplink:
          description: |2
            If true, a copy of packets sent to the switch will always be forwarded to
            an uplink in addition to the regular packet forwarded done by the switch.
          $ref: '#/components/schemas/BoolPolicy'
        lacpPolicy:
          deprecated: true
          description: |2
            Deprecated as of vSphere API 5.5, use
            *VmwareDistributedVirtualSwitch.UpdateDVSLacpGroupConfig_Task* and
            *VMwareDVSConfigInfo.lacpGroupConfig*
            instead.
            
            Link Aggregation Control Protocol policy.
            
            This policy is ignored on non-uplink portgroups.
            Setting this policy at port level is not supported.
          $ref: '#/components/schemas/VMwareUplinkLacpPolicy'
        macManagementPolicy:
          description: |2
            The MAC learning policy.
          $ref: '#/components/schemas/DVSMacManagementPolicy'
        VNI:
          description: |2
            The VNI number of overlay logical switch, which is used by
            NSX portgroup.
          $ref: '#/components/schemas/IntPolicy'
      allOf:
        - $ref: '#/components/schemas/DVPortSetting'

    ArrayOfVMwareDVSPortSetting:
      type: object
      description: |2
        A boxed array of *VMwareDVSPortSetting*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VMwareDVSPortSetting'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VMwareDVSVspanConfigSpec:
      type: object
      description: |2
        This class defines the configuration of a Distributed Port Mirroring session.
        
        A Distributed Port Mirroring session
      properties:
        vspanSession:
          description: |2
            The Distributed Port Mirroring session to be reconfigured.
          $ref: '#/components/schemas/VMwareVspanSession'
        operation:
          description: |2
            Operation type, see
            *ConfigSpecOperation_enum* for valid values.
          type: string
      required:
        - vspanSession
        - operation
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVMwareDVSVspanConfigSpec:
      type: object
      description: |2
        A boxed array of *VMwareDVSVspanConfigSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VMwareDVSVspanConfigSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VMwareDVSVspanCapability:
      type: object
      description: |2
        Indicators of support for version-specific Distributed Port Mirroring sessions.
      properties:
        mixedDestSupported:
          description: |2
            Flag to indicate whether mixed dest mirror session is supported on the
            vSphere Distributed Switch.
          type: boolean
        dvportSupported:
          description: |2
            Flag to indicate whether dvport mirror session is supported on the
            vSphere Distributed Switch.
          type: boolean
        remoteSourceSupported:
          description: |2
            Flag to indicate whether remote mirror source session is supported on the
            vSphere Distributed Switch.
          type: boolean
        remoteDestSupported:
          description: |2
            Flag to indicate whether remote mirror destination session is supported on the
            vSphere Distributed Switch.
          type: boolean
        encapRemoteSourceSupported:
          description: |2
            Flag to indicate whether encapsulated remote mirror source session is supported on the
            vSphere Distributed Switch.
          type: boolean
        erspanProtocolSupported:
          description: |2
            Flag to indicate whether ERSPAN protocol encapsulation is supported
            on the vSphere Distributed Switch.
          type: boolean
        mirrorNetstackSupported:
          description: |2
            Flag to indicate whether dvport mirror can be configured to use a
            dedicated network stack instance.
          type: boolean
      required:
        - mixedDestSupported
        - dvportSupported
        - remoteSourceSupported
        - remoteDestSupported
        - encapRemoteSourceSupported
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVMwareDVSVspanCapability:
      type: object
      description: |2
        A boxed array of *VMwareDVSVspanCapability*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VMwareDVSVspanCapability'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VMwareVspanPort:
      type: object
      description: |2
        This class defines the ports, uplink ports name, vlans and IP addresses participating in a
        Distributed Port Mirroring session.
        
        See *VMwareVspanSession*.
      properties:
        portKey:
          description: |2
            Individual ports to participate in the Distributed Port Mirroring session.
          type: array
          items:
            type: string
        uplinkPortName:
          description: |2
            Uplink ports used as destination ports to participate in the Distributed Port Mirroring session.
            
            A fault will be raised if uplinkPortName is used as source ports
            in any Distributed Port Mirroring session.
          type: array
          items:
            type: string
        wildcardPortConnecteeType:
          description: |2
            Wild card specification for source ports participating in the Distributed Port Mirroring session.
            
            See *DistributedVirtualSwitchPortConnecteeConnecteeType_enum* for valid values.
            Any port that has a connectee of the specified type has its receive traffic
            mirrored. A fault will be raised if wildcards are specified as destination
            ports or source ports mirroring traffic on the transmit side.
            It is to be not used.
          type: array
          items:
            type: string
        vlans:
          description: |2
            Vlan Ids for ingress source of Remote Mirror destination
            session.
          type: array
          items:
            type: integer
            format: int32
        ipAddress:
          description: |2
            IP address for the destination of encapsulated remote mirror source session,
            IPv4 address is specified using dotted decimal notation.
            
            For example, "192.0.2.1".
            IPv6 addresses are 128-bit addresses represented as eight fields
            of up to four hexadecimal digits.
            A colon separates each field (:). For example,
            2001:DB8:101::230:6eff:fe04:d9ff.
          type: array
          items:
            type: string
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVMwareVspanPort:
      type: object
      description: |2
        A boxed array of *VMwareVspanPort*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VMwareVspanPort'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VMwareVspanSession:
      type: object
      description: |2
        The *VMwareVspanSession* data object
        defines the configuration of a VLAN Services and Protocols for Advanced Networks
        (VSPAN) session.
        
        You use a VSPAN session for the following operations:
        - To mirror network traffic (inbound/outbound) from a set of source
          entities to a set of destination entities.
        - To assist in troubleshooting.
        - As input for security and other network analysis appliances.
          
        The type of entities that you can specify as source or destination is determined
        by the session type. You can use uplink distributed virtual ports only for
        mixed destination mirror VSPAN sessions (mixedDestMirror).
        For all sessions except mixedDestMirror sessions, you cannot
        use uplink distributed virtual ports as destination ports.
        sessionType is required for vSphere Distributed Switch 5.1 and later,
        ignored for prior version if set.
        <table>
        <thead>
        <tr>
        <th>Session Type</th>
        <th>Source</th>
        <th>Destination </th>
        </tr>
        </thead>
        <tbody>
        <tr>
        <td>mixedDestMirror</td>
        <td>Distributed Ports</td>
        <td>Distributed Ports + Uplink Ports Name</td>
        </tr>
        <tr>
        <td>dvPortMirror</td>
        <td>Distributed Ports</td>
        <td>Distributed Ports</td>
        </tr>
        <tr>
        <td>remoteMirrorSource</td>
        <td>Distributed Ports</td>
        <td>Uplink Ports Name</td>
        </tr>
        <tr>
        <td>remoteMirrorDest</td>
        <td>VLAN</td>
        <td>Distributed Ports</td>
        </tr>
        <tr>
        <td>encapRemoteMirrorSource</td>
        <td>Distributed Ports</td>
        <td>IP address</td>
        </tr>
        </tbody>
        </table>
      properties:
        key:
          description: |2
            The generated key as the identifier for the session.
          type: string
        name:
          description: |2
            The display name.
          type: string
        description:
          description: |2
            The description for the session.
          type: string
        enabled:
          description: |2
            Whether the session is enabled.
          type: boolean
        sourcePortTransmitted:
          description: |2
            Source ports for which transmitted packets are mirrored.
          $ref: '#/components/schemas/VMwareVspanPort'
        sourcePortReceived:
          description: |2
            Source ports for which received packets are mirrored.
          $ref: '#/components/schemas/VMwareVspanPort'
        destinationPort:
          description: |2
            Destination ports that received the mirrored packets.
            
            You cannot use wild card ports as destination ports. If *VMwareVspanPort.wildcardPortConnecteeType*
            is set in the value, the reconfigure
            operation will raise a fault. Also any port designated in the value of
            this property can not match the wild card source port in any of the
            Distributed Port Mirroring session.
          $ref: '#/components/schemas/VMwareVspanPort'
        encapsulationVlanId:
          description: |2
            VLAN ID used to encapsulate the mirrored traffic.
          type: integer
          format: int32
        stripOriginalVlan:
          description: |2
            Whether to strip the original VLAN tag.
            
            if false, the original VLAN tag
            will be preserved on the mirrored traffic. If *VMwareVspanSession.encapsulationVlanId*
            has been set and this property is false, the frames will be double tagged
            with the original VLAN ID as the inner tag.
          type: boolean
        mirroredPacketLength:
          description: |2
            An integer that describes how much of each frame to mirror.
            
            If unset, all
            of the frame would be mirrored. Setting this property to a smaller value
            is useful when the consumer will look only at the headers.
            The value cannot be less than 60.
          type: integer
          format: int32
        normalTrafficAllowed:
          description: |2
            Whether or not destination ports can send and receive "normal" traffic.
            
            Setting this to false will make mirror ports be used solely for mirroring
            and not double as normal access ports.
          type: boolean
        sessionType:
          description: |2
            Type of the session.
            
            See
            *VMwareDVSVspanSessionType_enum*
            for valid values.
            Default value is mixedDestMirror if unspecified in a VSPAN create operation.
          type: string
        samplingRate:
          description: |2
            Sampling rate of the session.
            
            If its value is n, one of every n
            packets is mirrored.
            Valid values are between 1 to 65535, and default value is 1.
          type: integer
          format: int32
        encapType:
          description: |2
            Encapsulation type of the session.
            
            See
            *VMwareDVSVspanSessionEncapType_enum*
            for valid values.
            Default value is encapProtocolGRE if unspecified in a
            VSPAN create operation.
          type: string
        erspanId:
          description: |2
            ERSPAN ID of the session.
            
            Valid values are between 0 to 0x3ff, and default value is 0.
            This value is applicable only if encaptType is
            *erspan2* or
            *erspan3*
          type: integer
          format: int32
        erspanCOS:
          description: |2
            Class of Service of the monitored frame.
            
            Valid values are between 0 to 7, and default value is 0.
            This value is applicable only if encaptType is
            *erspan2* or
            *erspan3*
          type: integer
          format: int32
        erspanGraNanosec:
          description: |2
            Timestamp Granularity.
            
            If the value is false, timestamp-granularity will be microsecond.
            Otherwise the timestamp-granularity will be nanosecond
            This value is applicable only if encaptType is
            *erspan3*
          type: boolean
        netstack:
          description: |2
            Netstack instance of the session.
          type: string
      required:
        - enabled
        - stripOriginalVlan
        - normalTrafficAllowed
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVMwareVspanSession:
      type: object
      description: |2
        A boxed array of *VMwareVspanSession*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VMwareVspanSession'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    CryptoKeyId:
      type: object
      description: |2
        Data Object representing a cryptographic key.
      properties:
        keyId:
          description: |2
            Unique key ID.
            
            When creating a key may be replaced with the ID generated by the KMS
            server.
            An empty string must be used when encrypting with a Trusted Key Provider,
            because the key is generated at the time of encryption.
          type: string
        providerId:
          description: |2
            The provider holding the key data.
            
            May be ignored if the key is known to be stored in another provider.
          $ref: '#/components/schemas/KeyProviderId'
      required:
        - keyId
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfCryptoKeyId:
      type: object
      description: |2
        A boxed array of *CryptoKeyId*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/CryptoKeyId'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    CryptoKeyPlain:
      type: object
      description: |2
        Data Object representing a plain text cryptographic key.
      properties:
        keyId:
          $ref: '#/components/schemas/CryptoKeyId'
        algorithm:
          type: string
        keyData:
          type: string
          format: password
      required:
        - keyId
        - algorithm
        - keyData
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfCryptoKeyPlain:
      type: object
      description: |2
        A boxed array of *CryptoKeyPlain*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/CryptoKeyPlain'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    CryptoKeyResult:
      type: object
      description: |2
        CryptoKeyResult.java --
        Data Object representing a cryptographic key operation result.
      properties:
        keyId:
          $ref: '#/components/schemas/CryptoKeyId'
        success:
          type: boolean
        reason:
          type: string
        fault:
          description: |2
            Fault which includes details about the error.
            
            ***Since:*** vSphere API Release 7.0.1.0
          $ref: '#/components/schemas/MethodFault'
      required:
        - keyId
        - success
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfCryptoKeyResult:
      type: object
      description: |2
        A boxed array of *CryptoKeyResult*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/CryptoKeyResult'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    CryptoManagerHostKeyStatus:
      type: object
      description: |2
        Status of a Crypto key on host.
        
        ***Since:*** vSphere API Release 8.0.1.0
      properties:
        keyId:
          description: |2
            Crypto key Id.
          $ref: '#/components/schemas/CryptoKeyId'
        present:
          description: |2
            Whether the key is present in key cache for crypto operation.
          type: boolean
        managementType:
          description: |2
            Key management type.
            
            See *CryptoManagerHostKeyManagementType_enum* for valid values.
          type: string
        accessGranted:
          description: |2
            Whether the provider of the key has been granted access.
            
            ***Since:*** vSphere API Release 8.0.3.0
          type: boolean
      required:
        - keyId
        - present
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfCryptoManagerHostKeyStatus:
      type: object
      description: |2
        A boxed array of *CryptoManagerHostKeyStatus*. To be used in *Any* placeholders.
        
        ***Since:*** vSphere API Release 8.0.1.0
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/CryptoManagerHostKeyStatus'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    CryptoManagerKmipCertSignRequest:
      type: object
      description: |2
        ***Since:*** vSphere API Release 8.0.1.0
      properties:
        commonName:
          description: |2
            Common name for the certificate sign request.
            
            This is fully qualified domain name that you wish to secure.
          type: string
        organization:
          description: |2
            Organization name for the certificate sign request.
            
            Usually the legal name of a company or entity and
            should include any suffixes such as Ltd., Inc., or Corp.
          type: string
        organizationUnit:
          description: |2
            Organizational unit name for the certificate sign request.
            
            Internal organization department/division name.
          type: string
        locality:
          description: |2
            Locality name for the certificate sign request.
            
            Town, city, village, etc.
          type: string
        state:
          description: |2
            State name for the certificate sign request.
            
            Province, region, county or state.
          type: string
        country:
          description: |2
            Country Name for the certificate sign request.
            
            The two-letter ISO code for the country where your
            organization is located.
          type: string
        email:
          description: |2
            Email address for the certificate sign request.
            
            The organization contact, usually of the certificate
            administrator or IT department.
          type: string
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfCryptoManagerKmipCertSignRequest:
      type: object
      description: |2
        A boxed array of *CryptoManagerKmipCertSignRequest*. To be used in *Any* placeholders.
        
        ***Since:*** vSphere API Release 8.0.1.0
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/CryptoManagerKmipCertSignRequest'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    CryptoManagerKmipCertificateInfo:
      type: object
      description: |2
        Basic information of a certificate.
      properties:
        subject:
          description: |2
            Subject identifies whom the certificate is issued to.
          type: string
        issuer:
          description: |2
            Issuer identifies the party that issued this certificate.
          type: string
        serialNumber:
          description: |2
            The unique serial number of the certificate given by issuer.
          type: string
        notBefore:
          description: |2
            The beginning time of the period of validity.
          type: string
          format: date-time
        notAfter:
          description: |2
            The ending time of the period of validity.
          type: string
          format: date-time
        fingerprint:
          description: |2
            The SSL SHA1 fingerprint of the certificate.
          type: string
        checkTime:
          description: |2
            The timestamp when the state of the certificate is checked.
          type: string
          format: date-time
        secondsSinceValid:
          description: |2
            Total seconds since this certificate has entered valid state.
            
            It is the time difference between "now" and "notBefore".
            If it is negative value, that means the certificate will become
            valid in a future time.
          type: integer
          format: int32
        secondsBeforeExpire:
          description: |2
            Total seconds before this certificate expires.
            
            It is the time difference between "notAfter" and "now".
            If it is negative value, that means the certificate has already
            expired.
          type: integer
          format: int32
      required:
        - subject
        - issuer
        - serialNumber
        - notBefore
        - notAfter
        - fingerprint
        - checkTime
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfCryptoManagerKmipCertificateInfo:
      type: object
      description: |2
        A boxed array of *CryptoManagerKmipCertificateInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/CryptoManagerKmipCertificateInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    CryptoManagerKmipClusterStatus:
      type: object
      description: |2
        Status of a KMIP cluster.
      properties:
        clusterId:
          description: |2
            The ID of the KMIP cluster.
          $ref: '#/components/schemas/KeyProviderId'
        overallStatus:
          description: |2
            KMS cluster overall status.
          $ref: '#/components/schemas/ManagedEntityStatus_enum'
        managementType:
          description: |2
            Key provider management type.
            
            See *KmipClusterInfoKmsManagementType_enum* for valid values.
          type: string
        servers:
          description: |2
            Status of the KMIP servers in this cluster.
          type: array
          items:
            $ref: '#/components/schemas/CryptoManagerKmipServerStatus'
        clientCertInfo:
          description: |2
            The basic information about the client's certificate.
          $ref: '#/components/schemas/CryptoManagerKmipCertificateInfo'
      required:
        - clusterId
        - servers
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfCryptoManagerKmipClusterStatus:
      type: object
      description: |2
        A boxed array of *CryptoManagerKmipClusterStatus*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/CryptoManagerKmipClusterStatus'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    CryptoManagerKmipCryptoKeyStatus:
      type: object
      description: |2
        Status of a Crypto key
      properties:
        keyId:
          description: |2
            Crypto key Id
          $ref: '#/components/schemas/CryptoKeyId'
        keyAvailable:
          description: |2
            If the key is available for crypto operation
          type: boolean
        reason:
          description: |2
            The reason for key not available, valid when keyAvailable is false.
            
            *CryptoManagerKmipCryptoKeyStatusKeyUnavailableReason_enum* lists the set of supported values.
          type: string
        encryptedVMs:
          description: |2
            The list of VMs which use that key
            
            Refers instances of *VirtualMachine*.
          type: array
          items:
            $ref: '#/components/schemas/ManagedObjectReference'
        affectedHosts:
          description: |2
            The lists of hosts which use that key as host key
            
            Refers instances of *HostSystem*.
          type: array
          items:
            $ref: '#/components/schemas/ManagedObjectReference'
        referencedByTags:
          description: |2
            The identifier list for the 3rd party who are using the key
          type: array
          items:
            type: string
      required:
        - keyId
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfCryptoManagerKmipCryptoKeyStatus:
      type: object
      description: |2
        A boxed array of *CryptoManagerKmipCryptoKeyStatus*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/CryptoManagerKmipCryptoKeyStatus'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    CryptoManagerKmipCustomAttributeSpec:
      type: object
      description: |2
        Crypto key custom attribute spec
        
        ***Since:*** vSphere API Release 8.0.1.0
      properties:
        attributes:
          description: |2
            Crypto key custom attributes
          type: array
          items:
            $ref: '#/components/schemas/KeyValue'
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfCryptoManagerKmipCustomAttributeSpec:
      type: object
      description: |2
        A boxed array of *CryptoManagerKmipCustomAttributeSpec*. To be used in *Any* placeholders.
        
        ***Since:*** vSphere API Release 8.0.1.0
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/CryptoManagerKmipCustomAttributeSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    CryptoManagerKmipServerCertInfo:
      type: object
      description: |2
        Information about the KMIP server certificate.
      properties:
        certificate:
          description: |2
            The server certificate.
          type: string
        certInfo:
          description: |2
            The basic information about server's certificate.
          $ref: '#/components/schemas/CryptoManagerKmipCertificateInfo'
        clientTrustServer:
          description: |2
            Whether this KMS server is trusted by local Kmip client.
          type: boolean
      required:
        - certificate
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfCryptoManagerKmipServerCertInfo:
      type: object
      description: |2
        A boxed array of *CryptoManagerKmipServerCertInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/CryptoManagerKmipServerCertInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    CryptoManagerKmipServerStatus:
      type: object
      description: |2
        Status of a KMIP server.
      properties:
        name:
          description: |2
            Name of the KMIP server.
          type: string
        status:
          description: |2
            KMIP server status.
          $ref: '#/components/schemas/ManagedEntityStatus_enum'
        connectionStatus:
          description: |2
            KMIP server connection status description.
          type: string
        certInfo:
          description: |2
            The basic information about the KMIP server's certificate.
          $ref: '#/components/schemas/CryptoManagerKmipCertificateInfo'
        clientTrustServer:
          description: |2
            Whether this KMS server is trusted by local Kmip client.
          type: boolean
        serverTrustClient:
          description: |2
            Whether this KMS server trusts the local Kmip client.
          type: boolean
      required:
        - name
        - status
        - connectionStatus
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfCryptoManagerKmipServerStatus:
      type: object
      description: |2
        A boxed array of *CryptoManagerKmipServerStatus*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/CryptoManagerKmipServerStatus'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    CryptoSpec:
      type: object
      description: |2
        This data object type encapsulates virtual machine or disk encryption
        settings.
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfCryptoSpec:
      type: object
      description: |2
        A boxed array of *CryptoSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/CryptoSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    CryptoSpecDecrypt:
      type: object
      description: |2
        This data object type encapsulates virtual machine or disk encryption
        settings for decryption operation.
      allOf:
        - $ref: '#/components/schemas/CryptoSpec'

    ArrayOfCryptoSpecDecrypt:
      type: object
      description: |2
        A boxed array of *CryptoSpecDecrypt*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/CryptoSpecDecrypt'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    CryptoSpecDeepRecrypt:
      type: object
      description: |2
        This data object type encapsulates virtual machine or disk cryptographic
        settings for deep reencryption operation.
      properties:
        newKeyId:
          $ref: '#/components/schemas/CryptoKeyId'
      required:
        - newKeyId
      allOf:
        - $ref: '#/components/schemas/CryptoSpec'

    ArrayOfCryptoSpecDeepRecrypt:
      type: object
      description: |2
        A boxed array of *CryptoSpecDeepRecrypt*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/CryptoSpecDeepRecrypt'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    CryptoSpecEncrypt:
      type: object
      description: |2
        This data object type encapsulates virtual machine or disk cryptohraphic
        settings for encryption operation.
      properties:
        cryptoKeyId:
          $ref: '#/components/schemas/CryptoKeyId'
      required:
        - cryptoKeyId
      allOf:
        - $ref: '#/components/schemas/CryptoSpec'

    ArrayOfCryptoSpecEncrypt:
      type: object
      description: |2
        A boxed array of *CryptoSpecEncrypt*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/CryptoSpecEncrypt'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    CryptoSpecNoOp:
      type: object
      description: |2
        This data object type indicates that the encryption settings of the
        virtual machine or disk should not be modified by the operation.
      allOf:
        - $ref: '#/components/schemas/CryptoSpec'

    ArrayOfCryptoSpecNoOp:
      type: object
      description: |2
        A boxed array of *CryptoSpecNoOp*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/CryptoSpecNoOp'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    CryptoSpecRegister:
      type: object
      description: |2
        This data object type indicates that the operation requires keys to be sent
        but the encryption settings of the virtual machine or disk
        should not be modified by the operation.
      properties:
        cryptoKeyId:
          description: |2
            The key the VM/disk is already encrypted with.
          $ref: '#/components/schemas/CryptoKeyId'
      required:
        - cryptoKeyId
      allOf:
        - $ref: '#/components/schemas/CryptoSpecNoOp'

    ArrayOfCryptoSpecRegister:
      type: object
      description: |2
        A boxed array of *CryptoSpecRegister*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/CryptoSpecRegister'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    CryptoSpecShallowRecrypt:
      type: object
      description: |2
        This data object type encapsulates virtual machine or disk cryptographic
        settings for shallow reencryption operation.
      properties:
        newKeyId:
          $ref: '#/components/schemas/CryptoKeyId'
      required:
        - newKeyId
      allOf:
        - $ref: '#/components/schemas/CryptoSpec'

    ArrayOfCryptoSpecShallowRecrypt:
      type: object
      description: |2
        A boxed array of *CryptoSpecShallowRecrypt*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/CryptoSpecShallowRecrypt'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    KeyProviderId:
      type: object
      description: |2
        Data Object representing a crypto key provider's unique identifier.
      properties:
        id:
          description: |2
            Globally unique ID for the crypto key provider.
            
            Servers with the same ID must provide the same keys.
            Cannot be empty.
          type: string
      required:
        - id
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfKeyProviderId:
      type: object
      description: |2
        A boxed array of *KeyProviderId*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/KeyProviderId'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    KmipClusterInfo:
      type: object
      description: |2
        Data Object representing a cluster of KMIP servers.
        
        All servers in a cluster must provide the same keys.
      properties:
        clusterId:
          description: |2
            Globally unique ID for the servers providing the same keys.
            
            All KMIP servers with the same clusterId are in a cluster and all must
            provide the same keys for redundancy.
          $ref: '#/components/schemas/KeyProviderId'
        servers:
          description: |2
            Servers in this cluster.
          type: array
          items:
            $ref: '#/components/schemas/KmipServerInfo'
        useAsDefault:
          description: |2
            Use this cluster as default for system wide,
            when the optional CryptoKeyId.providerId is not set.
          type: boolean
        managementType:
          description: |2
            Key provider management type.
            
            See *KmipClusterInfoKmsManagementType_enum* for valid values.
          type: string
        useAsEntityDefault:
          description: |2
            Use this cluster as default for the managed entities,
            when the optional CryptoKeyId.providerId is not set.
            
            See *CryptoManagerKmip.SetDefaultKmsCluster* for
            supported managed entity type.
            
            Refers instances of *ManagedEntity*.
          type: array
          items:
            $ref: '#/components/schemas/ManagedObjectReference'
        hasBackup:
          description: |2
            ***Since:*** vSphere API Release 7.0.2.0
          type: boolean
        tpmRequired:
          description: |2
            ***Since:*** vSphere API Release 7.0.2.0
          type: boolean
        keyId:
          description: |2
            ***Since:*** vSphere API Release 7.0.2.0
          type: string
      required:
        - clusterId
        - useAsDefault
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfKmipClusterInfo:
      type: object
      description: |2
        A boxed array of *KmipClusterInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/KmipClusterInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    KmipServerInfo:
      type: object
      description: |2
        Data Object representing a KMIP server connection information.
      properties:
        name:
          description: |2
            Name for the KMIP server.
          type: string
        address:
          description: |2
            Address of the KMIP server.
          type: string
        port:
          description: |2
            Port of the KMIP server.
          type: integer
          format: int32
        proxyAddress:
          description: |2
            Address of the proxy server.
            
            Set value to empty string to delete the entry.
          type: string
        proxyPort:
          description: |2
            Port of the proxy server.
            
            Set value "-1" to delete the entry.
          type: integer
          format: int32
        reconnect:
          description: |2
            Should auto-reconnect be done.
            
            Set value "-1" to delete the entry.
          type: integer
          format: int32
        protocol:
          description: |2
            KMIP library protocol handler, e.g.
            
            KMIP1.
            Set value to empty string to delete the entry.
          type: string
        nbio:
          description: |2
            Non-blocking I/O required.
            
            Set value "-1" to delete the entry.
          type: integer
          format: int32
        timeout:
          description: |2
            I/O timeout in seconds (-1=none,0=infinite).
            
            Set value "-1" to delete the entry.
          type: integer
          format: int32
        userName:
          description: |2
            Username to authenticate to the KMIP server.
            
            Set value to empty string to delete the entry.
          type: string
      required:
        - name
        - address
        - port
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfKmipServerInfo:
      type: object
      description: |2
        A boxed array of *KmipServerInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/KmipServerInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    KmipServerSpec:
      type: object
      description: |2
        Data Object representing a KMIP server connection spec.
      properties:
        clusterId:
          description: |2
            The ID of the KMIP cluster.
            
            KMIP servers with the same clusterId are in
            one cluster and provide the same keys for redundancy.
          $ref: '#/components/schemas/KeyProviderId'
        info:
          description: |2
            Connection information for the KMIP server.
          $ref: '#/components/schemas/KmipServerInfo'
        password:
          description: |2
            Password to authenticate to the KMIP server.
            
            Set value to empty string to delete the entry.
          type: string
          format: password
      required:
        - clusterId
        - info
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfKmipServerSpec:
      type: object
      description: |2
        A boxed array of *KmipServerSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/KmipServerSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    KmipServerStatus:
      type: object
      description: |2
        Data Object representing a KMIP server status.
      properties:
        clusterId:
          description: |2
            The ID of the KMIP cluster.
          $ref: '#/components/schemas/KeyProviderId'
        name:
          description: |2
            Name for the KMIP server.
          type: string
        status:
          description: |2
            KMIP server status.
          $ref: '#/components/schemas/ManagedEntityStatus_enum'
        description:
          description: |2
            KMIP server status description.
          type: string
      required:
        - clusterId
        - name
        - status
        - description
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfKmipServerStatus:
      type: object
      description: |2
        A boxed array of *KmipServerStatus*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/KmipServerStatus'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    AccountCreatedEvent:
      type: object
      description: |2
        This event records that an account was created on a host.
      properties:
        spec:
          $ref: '#/components/schemas/HostAccountSpec'
        group:
          type: boolean
      required:
        - spec
        - group
      allOf:
        - $ref: '#/components/schemas/HostEvent'

    ArrayOfAccountCreatedEvent:
      type: object
      description: |2
        A boxed array of *AccountCreatedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/AccountCreatedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    AccountRemovedEvent:
      type: object
      description: |2
        This event records that an account was removed from a host.
      properties:
        account:
          type: string
        group:
          type: boolean
      required:
        - account
        - group
      allOf:
        - $ref: '#/components/schemas/HostEvent'

    ArrayOfAccountRemovedEvent:
      type: object
      description: |2
        A boxed array of *AccountRemovedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/AccountRemovedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    AccountUpdatedEvent:
      type: object
      description: |2
        This event records that an account was updated on a host.
      properties:
        spec:
          $ref: '#/components/schemas/HostAccountSpec'
        group:
          type: boolean
        prevDescription:
          description: |2
            The previous account description
          type: string
      required:
        - spec
        - group
      allOf:
        - $ref: '#/components/schemas/HostEvent'

    ArrayOfAccountUpdatedEvent:
      type: object
      description: |2
        A boxed array of *AccountUpdatedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/AccountUpdatedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    AdminPasswordNotChangedEvent:
      type: object
      description: |2
        Default password for the Admin user on the host has not been changed.
      allOf:
        - $ref: '#/components/schemas/HostEvent'

    ArrayOfAdminPasswordNotChangedEvent:
      type: object
      description: |2
        A boxed array of *AdminPasswordNotChangedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/AdminPasswordNotChangedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    AlarmAcknowledgedEvent:
      type: object
      description: |2
        This event records the acknowledgement of an Alarm
      properties:
        source:
          description: |2
            The entity that triggered the alarm.
          $ref: '#/components/schemas/ManagedEntityEventArgument'
        entity:
          description: |2
            The entity with which the alarm is registered.
          $ref: '#/components/schemas/ManagedEntityEventArgument'
      required:
        - source
        - entity
      allOf:
        - $ref: '#/components/schemas/AlarmEvent'

    ArrayOfAlarmAcknowledgedEvent:
      type: object
      description: |2
        A boxed array of *AlarmAcknowledgedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/AlarmAcknowledgedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    AlarmActionTriggeredEvent:
      type: object
      description: |2
        This event records that an alarm was triggered.
      properties:
        source:
          description: |2
            The entity that triggered the alarm.
          $ref: '#/components/schemas/ManagedEntityEventArgument'
        entity:
          description: |2
            The entity with which the alarm is registered.
          $ref: '#/components/schemas/ManagedEntityEventArgument'
      required:
        - source
        - entity
      allOf:
        - $ref: '#/components/schemas/AlarmEvent'

    ArrayOfAlarmActionTriggeredEvent:
      type: object
      description: |2
        A boxed array of *AlarmActionTriggeredEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/AlarmActionTriggeredEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    AlarmClearedEvent:
      type: object
      description: |2
        This event records the manual clearing of an Alarm
      properties:
        source:
          description: |2
            The entity that triggered the alarm.
          $ref: '#/components/schemas/ManagedEntityEventArgument'
        entity:
          description: |2
            The entity with which the alarm is registered.
          $ref: '#/components/schemas/ManagedEntityEventArgument'
        from:
          description: |2
            The original alarm status from which it was cleared
          type: string
      required:
        - source
        - entity
        - from
      allOf:
        - $ref: '#/components/schemas/AlarmEvent'

    ArrayOfAlarmClearedEvent:
      type: object
      description: |2
        A boxed array of *AlarmClearedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/AlarmClearedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    AlarmCreatedEvent:
      type: object
      description: |2
        This event records the creation of an alarm.
      properties:
        entity:
          description: |2
            The entity with which the alarm is registered.
          $ref: '#/components/schemas/ManagedEntityEventArgument'
      required:
        - entity
      allOf:
        - $ref: '#/components/schemas/AlarmEvent'

    ArrayOfAlarmCreatedEvent:
      type: object
      description: |2
        A boxed array of *AlarmCreatedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/AlarmCreatedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    AlarmEmailCompletedEvent:
      type: object
      description: |2
        This event records the completion of an alarm email notification.
      properties:
        entity:
          description: |2
            The entity with which the alarm is registered.
          $ref: '#/components/schemas/ManagedEntityEventArgument'
        to:
          description: |2
            The destination email address.
          type: string
      required:
        - entity
        - to
      allOf:
        - $ref: '#/components/schemas/AlarmEvent'

    ArrayOfAlarmEmailCompletedEvent:
      type: object
      description: |2
        A boxed array of *AlarmEmailCompletedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/AlarmEmailCompletedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    AlarmEmailFailedEvent:
      type: object
      description: |2
        This event records a failure to complete an alarm email notification.
      properties:
        entity:
          description: |2
            The entity with which the alarm is registered.
          $ref: '#/components/schemas/ManagedEntityEventArgument'
        to:
          description: |2
            The destination email address.
          type: string
        reason:
          description: |2
            The reason for the failure.
          $ref: '#/components/schemas/MethodFault'
      required:
        - entity
        - to
        - reason
      allOf:
        - $ref: '#/components/schemas/AlarmEvent'

    ArrayOfAlarmEmailFailedEvent:
      type: object
      description: |2
        A boxed array of *AlarmEmailFailedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/AlarmEmailFailedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    AlarmEvent:
      type: object
      description: |2
        This event is an alarm events.
      properties:
        alarm:
          description: |2
            The associated alarm object.
          $ref: '#/components/schemas/AlarmEventArgument'
      required:
        - alarm
      allOf:
        - $ref: '#/components/schemas/Event'

    ArrayOfAlarmEvent:
      type: object
      description: |2
        A boxed array of *AlarmEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/AlarmEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    AlarmEventArgument:
      type: object
      description: |2
        The event argument is an Alarm object.
      properties:
        alarm:
          description: |2
            The Alarm object.
            
            Refers instance of *Alarm*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - alarm
      allOf:
        - $ref: '#/components/schemas/EntityEventArgument'

    ArrayOfAlarmEventArgument:
      type: object
      description: |2
        A boxed array of *AlarmEventArgument*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/AlarmEventArgument'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    AlarmReconfiguredEvent:
      type: object
      description: |2
        This event records the reconfiguration of an alarm.
      properties:
        entity:
          description: |2
            The entity with which the alarm is registered.
          $ref: '#/components/schemas/ManagedEntityEventArgument'
        configChanges:
          description: |2
            The configuration values changed during the reconfiguration.
          $ref: '#/components/schemas/ChangesInfoEventArgument'
      required:
        - entity
      allOf:
        - $ref: '#/components/schemas/AlarmEvent'

    ArrayOfAlarmReconfiguredEvent:
      type: object
      description: |2
        A boxed array of *AlarmReconfiguredEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/AlarmReconfiguredEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    AlarmRemovedEvent:
      type: object
      description: |2
        This event records the removal of an alarm.
      properties:
        entity:
          description: |2
            The entity with which the alarm is registered.
          $ref: '#/components/schemas/ManagedEntityEventArgument'
      required:
        - entity
      allOf:
        - $ref: '#/components/schemas/AlarmEvent'

    ArrayOfAlarmRemovedEvent:
      type: object
      description: |2
        A boxed array of *AlarmRemovedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/AlarmRemovedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    AlarmScriptCompleteEvent:
      type: object
      description: |2
        This event records the completion of an alarm-triggered script.
      properties:
        entity:
          description: |2
            The entity with which the alarm is registered.
          $ref: '#/components/schemas/ManagedEntityEventArgument'
        script:
          description: |2
            The script triggered by the alarm.
          type: string
      required:
        - entity
        - script
      allOf:
        - $ref: '#/components/schemas/AlarmEvent'

    ArrayOfAlarmScriptCompleteEvent:
      type: object
      description: |2
        A boxed array of *AlarmScriptCompleteEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/AlarmScriptCompleteEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    AlarmScriptFailedEvent:
      type: object
      description: |2
        This event records a failure to complete an alarm-triggered script.
      properties:
        entity:
          description: |2
            The entity with which the alarm is registered.
          $ref: '#/components/schemas/ManagedEntityEventArgument'
        script:
          description: |2
            The script triggered by the alarm.
          type: string
        reason:
          description: |2
            The reason for the failure.
          $ref: '#/components/schemas/MethodFault'
      required:
        - entity
        - script
        - reason
      allOf:
        - $ref: '#/components/schemas/AlarmEvent'

    ArrayOfAlarmScriptFailedEvent:
      type: object
      description: |2
        A boxed array of *AlarmScriptFailedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/AlarmScriptFailedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    AlarmSnmpCompletedEvent:
      type: object
      description: |2
        This event records the completion of an alarm SNMP notification.
      properties:
        entity:
          description: |2
            The entity with which the alarm is registered.
          $ref: '#/components/schemas/ManagedEntityEventArgument'
      required:
        - entity
      allOf:
        - $ref: '#/components/schemas/AlarmEvent'

    ArrayOfAlarmSnmpCompletedEvent:
      type: object
      description: |2
        A boxed array of *AlarmSnmpCompletedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/AlarmSnmpCompletedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    AlarmSnmpFailedEvent:
      type: object
      description: |2
        This event records a failure to complete an alarm SNMP notification.
      properties:
        entity:
          description: |2
            The entity with which the alarm is registered.
          $ref: '#/components/schemas/ManagedEntityEventArgument'
        reason:
          description: |2
            The reason for the failure.
          $ref: '#/components/schemas/MethodFault'
      required:
        - entity
        - reason
      allOf:
        - $ref: '#/components/schemas/AlarmEvent'

    ArrayOfAlarmSnmpFailedEvent:
      type: object
      description: |2
        A boxed array of *AlarmSnmpFailedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/AlarmSnmpFailedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    AlarmStatusChangedEvent:
      type: object
      description: |2
        This event records a status change for an alarm.
      properties:
        source:
          description: |2
            The entity for which the alarm status has been changed.
          $ref: '#/components/schemas/ManagedEntityEventArgument'
        entity:
          description: |2
            The entity with which the alarm is registered.
          $ref: '#/components/schemas/ManagedEntityEventArgument'
        from:
          description: |2
            The original alarm status.
          type: string
        to:
          description: |2
            The new alarm status.
          type: string
      required:
        - source
        - entity
        - from
        - to
      allOf:
        - $ref: '#/components/schemas/AlarmEvent'

    ArrayOfAlarmStatusChangedEvent:
      type: object
      description: |2
        A boxed array of *AlarmStatusChangedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/AlarmStatusChangedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    AllVirtualMachinesLicensedEvent:
      type: object
      description: |2
        This event records that the previously unlicensed virtual machines on
        the specified host are now licensed.
        
        After this event is entered into
        the event log, we expect to see that the (@link
        vim.event.Event.UnlicensedVirtualMachinesEvent
        UnlicensedVirtualMachinesEvent) (@link vim.ManagedEntity.configIssue
        configIssue) is removed from the host.
      allOf:
        - $ref: '#/components/schemas/LicenseEvent'

    ArrayOfAllVirtualMachinesLicensedEvent:
      type: object
      description: |2
        A boxed array of *AllVirtualMachinesLicensedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/AllVirtualMachinesLicensedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    AlreadyAuthenticatedSessionEvent:
      type: object
      description: |2
        This event records a failed user logon due to the user already being logged on.
      allOf:
        - $ref: '#/components/schemas/SessionEvent'

    ArrayOfAlreadyAuthenticatedSessionEvent:
      type: object
      description: |2
        A boxed array of *AlreadyAuthenticatedSessionEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/AlreadyAuthenticatedSessionEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    AuthorizationEvent:
      type: object
      description: |2
        These events indicate authorization events.
      allOf:
        - $ref: '#/components/schemas/Event'

    ArrayOfAuthorizationEvent:
      type: object
      description: |2
        A boxed array of *AuthorizationEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/AuthorizationEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    BadUsernameSessionEvent:
      type: object
      description: |2
        This event records a failed user logon.
        
        Failed logons are due to no match existing
        between the provided user name and password combination and the combinations
        stored for authentication.
      properties:
        ipAddress:
          description: |2
            The IP address of the peer that initiated the connection.
            
            This may
            be the client that originated the session, or it may be an intervening
            proxy if the binding uses a protocol that supports proxies, such as HTTP.
          type: string
      required:
        - ipAddress
      allOf:
        - $ref: '#/components/schemas/SessionEvent'

    ArrayOfBadUsernameSessionEvent:
      type: object
      description: |2
        A boxed array of *BadUsernameSessionEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/BadUsernameSessionEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    CanceledHostOperationEvent:
      type: object
      description: |2
        An operation performed on the host was canceled.
        
        Typically,
        a previous event in the sequence of events contains more
        information about the cause of this cancellation.
      allOf:
        - $ref: '#/components/schemas/HostEvent'

    ArrayOfCanceledHostOperationEvent:
      type: object
      description: |2
        A boxed array of *CanceledHostOperationEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/CanceledHostOperationEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ChangesInfoEventArgument:
      type: object
      description: |2
        The event argument contains changes.
      properties:
        modified:
          description: |2
            Modified properties.
          type: string
        added:
          description: |2
            Added properties.
          type: string
        deleted:
          description: |2
            Deleted properties.
          type: string
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfChangesInfoEventArgument:
      type: object
      description: |2
        A boxed array of *ChangesInfoEventArgument*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ChangesInfoEventArgument'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ClusterComplianceCheckedEvent:
      type: object
      description: |2
        This event records that a compliance check was triggered
        on the cluster.
      properties:
        profile:
          $ref: '#/components/schemas/ProfileEventArgument'
      required:
        - profile
      allOf:
        - $ref: '#/components/schemas/ClusterEvent'

    ArrayOfClusterComplianceCheckedEvent:
      type: object
      description: |2
        A boxed array of *ClusterComplianceCheckedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ClusterComplianceCheckedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ClusterCreatedEvent:
      type: object
      description: |2
        This event records when a cluster is created.
      properties:
        parent:
          description: |2
            The folder where the cluster is created.
          $ref: '#/components/schemas/FolderEventArgument'
      required:
        - parent
      allOf:
        - $ref: '#/components/schemas/ClusterEvent'

    ArrayOfClusterCreatedEvent:
      type: object
      description: |2
        A boxed array of *ClusterCreatedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ClusterCreatedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ClusterDestroyedEvent:
      type: object
      description: |2
        This event records when a cluster is destroyed.
      allOf:
        - $ref: '#/components/schemas/ClusterEvent'

    ArrayOfClusterDestroyedEvent:
      type: object
      description: |2
        A boxed array of *ClusterDestroyedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ClusterDestroyedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ClusterEvent:
      type: object
      description: |2
        These are cluster events.
      allOf:
        - $ref: '#/components/schemas/Event'

    ArrayOfClusterEvent:
      type: object
      description: |2
        A boxed array of *ClusterEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ClusterEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ClusterOvercommittedEvent:
      type: object
      description: |2
        This event records when a cluster's host capacity cannot satisfy resource
        configuration constraints.
      allOf:
        - $ref: '#/components/schemas/ClusterEvent'

    ArrayOfClusterOvercommittedEvent:
      type: object
      description: |2
        A boxed array of *ClusterOvercommittedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ClusterOvercommittedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ClusterReconfiguredEvent:
      type: object
      description: |2
        This event records when a cluster is reconfigured.
      properties:
        configChanges:
          description: |2
            The configuration values changed during the reconfiguration.
          $ref: '#/components/schemas/ChangesInfoEventArgument'
      allOf:
        - $ref: '#/components/schemas/ClusterEvent'

    ArrayOfClusterReconfiguredEvent:
      type: object
      description: |2
        A boxed array of *ClusterReconfiguredEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ClusterReconfiguredEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ClusterStatusChangedEvent:
      type: object
      description: |2
        This event records when a cluster's overall status changed.
      properties:
        oldStatus:
          description: |2
            The old (*status*).
          type: string
        newStatus:
          description: |2
            The new (*status*).
          type: string
      required:
        - oldStatus
        - newStatus
      allOf:
        - $ref: '#/components/schemas/ClusterEvent'

    ArrayOfClusterStatusChangedEvent:
      type: object
      description: |2
        A boxed array of *ClusterStatusChangedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ClusterStatusChangedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ComputeResourceEventArgument:
      type: object
      description: |2
        The event argument is a ComputeResource object.
      properties:
        computeResource:
          description: |2
            The ComputeResource object.
            
            Refers instance of *ComputeResource*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - computeResource
      allOf:
        - $ref: '#/components/schemas/EntityEventArgument'

    ArrayOfComputeResourceEventArgument:
      type: object
      description: |2
        A boxed array of *ComputeResourceEventArgument*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ComputeResourceEventArgument'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    CustomFieldDefAddedEvent:
      type: object
      description: |2
        This event records the addition of a custom field definition.
      allOf:
        - $ref: '#/components/schemas/CustomFieldDefEvent'

    ArrayOfCustomFieldDefAddedEvent:
      type: object
      description: |2
        A boxed array of *CustomFieldDefAddedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/CustomFieldDefAddedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    CustomFieldDefEvent:
      type: object
      description: |2
        This event records a custom field definition event.
      properties:
        fieldKey:
          description: |2
            The unique identifier of the custom field definition.
          type: integer
          format: int32
        name:
          description: |2
            The name of the custom field.
          type: string
      required:
        - fieldKey
        - name
      allOf:
        - $ref: '#/components/schemas/CustomFieldEvent'

    ArrayOfCustomFieldDefEvent:
      type: object
      description: |2
        A boxed array of *CustomFieldDefEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/CustomFieldDefEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    CustomFieldDefRemovedEvent:
      type: object
      description: |2
        This event records the removal of a custom field definition.
      allOf:
        - $ref: '#/components/schemas/CustomFieldDefEvent'

    ArrayOfCustomFieldDefRemovedEvent:
      type: object
      description: |2
        A boxed array of *CustomFieldDefRemovedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/CustomFieldDefRemovedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    CustomFieldDefRenamedEvent:
      type: object
      description: |2
        This event records the renaming of a custom field definition.
      properties:
        newName:
          type: string
      required:
        - newName
      allOf:
        - $ref: '#/components/schemas/CustomFieldDefEvent'

    ArrayOfCustomFieldDefRenamedEvent:
      type: object
      description: |2
        A boxed array of *CustomFieldDefRenamedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/CustomFieldDefRenamedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    CustomFieldEvent:
      type: object
      description: |2
        These are custom field events.
      allOf:
        - $ref: '#/components/schemas/Event'

    ArrayOfCustomFieldEvent:
      type: object
      description: |2
        A boxed array of *CustomFieldEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/CustomFieldEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    CustomFieldValueChangedEvent:
      type: object
      description: |2
        This event records a change to a custom field value for a particular entity.
      properties:
        entity:
          description: |2
            The entity on which the field value was changed.
          $ref: '#/components/schemas/ManagedEntityEventArgument'
        fieldKey:
          description: |2
            The custom field whose value was changed for the entity.
          type: integer
          format: int32
        name:
          description: |2
            The name of the custom field at the time the value was changed.
          type: string
        value:
          description: |2
            The new value that was set.
          type: string
        prevState:
          description: |2
            The previous service state.
          type: string
      required:
        - entity
        - fieldKey
        - name
        - value
      allOf:
        - $ref: '#/components/schemas/CustomFieldEvent'

    ArrayOfCustomFieldValueChangedEvent:
      type: object
      description: |2
        A boxed array of *CustomFieldValueChangedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/CustomFieldValueChangedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    CustomizationEvent:
      type: object
      description: |2
        Base for customization events.
      properties:
        logLocation:
          description: |2
            The location of the in-guest customization log which will contain
            details of the customization operation.
          type: string
      allOf:
        - $ref: '#/components/schemas/VmEvent'

    ArrayOfCustomizationEvent:
      type: object
      description: |2
        A boxed array of *CustomizationEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/CustomizationEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    CustomizationFailed:
      type: object
      description: |2
        The customization sequence in the guest failed.
      properties:
        reason:
          description: |2
            Reason why the customization failed @see CustomizationFailed.ReasonCode .
          type: string
      allOf:
        - $ref: '#/components/schemas/CustomizationEvent'

    ArrayOfCustomizationFailed:
      type: object
      description: |2
        A boxed array of *CustomizationFailed*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/CustomizationFailed'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    CustomizationLinuxIdentityFailed:
      type: object
      description: |2
        Failed to set Linux identity.
      allOf:
        - $ref: '#/components/schemas/CustomizationFailed'

    ArrayOfCustomizationLinuxIdentityFailed:
      type: object
      description: |2
        A boxed array of *CustomizationLinuxIdentityFailed*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/CustomizationLinuxIdentityFailed'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    CustomizationNetworkSetupFailed:
      type: object
      description: |2
        Network setup failed in the guest during customization.
      allOf:
        - $ref: '#/components/schemas/CustomizationFailed'

    ArrayOfCustomizationNetworkSetupFailed:
      type: object
      description: |2
        A boxed array of *CustomizationNetworkSetupFailed*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/CustomizationNetworkSetupFailed'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    CustomizationStartedEvent:
      type: object
      description: |2
        The customization sequence has started in the VM guest.
      allOf:
        - $ref: '#/components/schemas/CustomizationEvent'

    ArrayOfCustomizationStartedEvent:
      type: object
      description: |2
        A boxed array of *CustomizationStartedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/CustomizationStartedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    CustomizationSucceeded:
      type: object
      description: |2
        The customization sequence completed successfully in the guest.
      allOf:
        - $ref: '#/components/schemas/CustomizationEvent'

    ArrayOfCustomizationSucceeded:
      type: object
      description: |2
        A boxed array of *CustomizationSucceeded*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/CustomizationSucceeded'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    CustomizationSysprepFailed:
      type: object
      description: |2
        Sysprep failed to run in the guest during customization.
        
        This will most like
        have been caused by the fact that the wrong sysprep was used for the guest,
        so we include the version information in the event.
      properties:
        sysprepVersion:
          description: |2
            The version string for the sysprep files that were included in the
            customization package.
          type: string
        systemVersion:
          description: |2
            The version string for the system
          type: string
      required:
        - sysprepVersion
        - systemVersion
      allOf:
        - $ref: '#/components/schemas/CustomizationFailed'

    ArrayOfCustomizationSysprepFailed:
      type: object
      description: |2
        A boxed array of *CustomizationSysprepFailed*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/CustomizationSysprepFailed'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    CustomizationUnknownFailure:
      type: object
      description: |2
        The customization sequence failed unexpectedly in the guest.
      allOf:
        - $ref: '#/components/schemas/CustomizationFailed'

    ArrayOfCustomizationUnknownFailure:
      type: object
      description: |2
        A boxed array of *CustomizationUnknownFailure*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/CustomizationUnknownFailure'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DVPortgroupCreatedEvent:
      type: object
      description: |2
        Two distributed virtual portgroup was created.
      allOf:
        - $ref: '#/components/schemas/DVPortgroupEvent'

    ArrayOfDVPortgroupCreatedEvent:
      type: object
      description: |2
        A boxed array of *DVPortgroupCreatedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DVPortgroupCreatedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DVPortgroupDestroyedEvent:
      type: object
      description: |2
        Two distributed virtual portgroup was destroyed.
      allOf:
        - $ref: '#/components/schemas/DVPortgroupEvent'

    ArrayOfDVPortgroupDestroyedEvent:
      type: object
      description: |2
        A boxed array of *DVPortgroupDestroyedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DVPortgroupDestroyedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DVPortgroupEvent:
      type: object
      description: |2
        DVPortgroup related events.
      allOf:
        - $ref: '#/components/schemas/Event'

    ArrayOfDVPortgroupEvent:
      type: object
      description: |2
        A boxed array of *DVPortgroupEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DVPortgroupEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DVPortgroupReconfiguredEvent:
      type: object
      description: |2
        Two distributed virtual portgroup was reconfigured.
      properties:
        configSpec:
          description: |2
            The reconfiguration spec.
          $ref: '#/components/schemas/DVPortgroupConfigSpec'
        configChanges:
          description: |2
            The configuration values changed during the reconfiguration.
          $ref: '#/components/schemas/ChangesInfoEventArgument'
      required:
        - configSpec
      allOf:
        - $ref: '#/components/schemas/DVPortgroupEvent'

    ArrayOfDVPortgroupReconfiguredEvent:
      type: object
      description: |2
        A boxed array of *DVPortgroupReconfiguredEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DVPortgroupReconfiguredEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DVPortgroupRenamedEvent:
      type: object
      description: |2
        Two distributed virtual portgroup was renamed.
      properties:
        oldName:
          description: |2
            The old portgroup name.
          type: string
        newName:
          description: |2
            The new portgroup name.
          type: string
      required:
        - oldName
        - newName
      allOf:
        - $ref: '#/components/schemas/DVPortgroupEvent'

    ArrayOfDVPortgroupRenamedEvent:
      type: object
      description: |2
        A boxed array of *DVPortgroupRenamedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DVPortgroupRenamedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DasAdmissionControlDisabledEvent:
      type: object
      description: |2
        This event records when admission control checks have been disabled in a HA
        cluster.
      allOf:
        - $ref: '#/components/schemas/ClusterEvent'

    ArrayOfDasAdmissionControlDisabledEvent:
      type: object
      description: |2
        A boxed array of *DasAdmissionControlDisabledEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DasAdmissionControlDisabledEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DasAdmissionControlEnabledEvent:
      type: object
      description: |2
        This event records when admission control checks have been enabled in a HA cluster.
      allOf:
        - $ref: '#/components/schemas/ClusterEvent'

    ArrayOfDasAdmissionControlEnabledEvent:
      type: object
      description: |2
        A boxed array of *DasAdmissionControlEnabledEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DasAdmissionControlEnabledEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DasAgentFoundEvent:
      type: object
      deprecated: true
      description: |2
        Deprecated as of vSphere API 5.0, the event is no longer relevant.
        
        This event records that VirtualCenter has re-established contact with a
        primary host in this HA cluster.
      allOf:
        - $ref: '#/components/schemas/ClusterEvent'

    ArrayOfDasAgentFoundEvent:
      type: object
      description: |2
        A boxed array of *DasAgentFoundEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DasAgentFoundEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DasAgentUnavailableEvent:
      type: object
      deprecated: true
      description: |2
        Deprecated as of vSphere API 5.0, the event is no longer relevant.
        
        This event records that VirtualCenter cannot contact any primary host
        in this HA cluster.
        
        HA designates some hosts as primary hosts in the HA
        cluster. When adding a new host to an existing cluster, HA needs to
        contact one of the primary hosts to finish the configuration. VirtualCenter
        has lost contact with all primary nodes in the connected state. Attempts
        to configure HA on a host in this cluster will fail until a
        DasAgentFoundEvent is logged or unless this is the first node to be
        configured. For example, if all the other hosts are disconnected first.
      allOf:
        - $ref: '#/components/schemas/ClusterEvent'

    ArrayOfDasAgentUnavailableEvent:
      type: object
      description: |2
        A boxed array of *DasAgentUnavailableEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DasAgentUnavailableEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DasClusterIsolatedEvent:
      type: object
      description: |2
        This event records that all hosts have been isolated from the network in a
        HA cluster.
      allOf:
        - $ref: '#/components/schemas/ClusterEvent'

    ArrayOfDasClusterIsolatedEvent:
      type: object
      description: |2
        A boxed array of *DasClusterIsolatedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DasClusterIsolatedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DasDisabledEvent:
      type: object
      description: |2
        This event records when a cluster has been disabled for HA.
      allOf:
        - $ref: '#/components/schemas/ClusterEvent'

    ArrayOfDasDisabledEvent:
      type: object
      description: |2
        A boxed array of *DasDisabledEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DasDisabledEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DasEnabledEvent:
      type: object
      description: |2
        This event records when a cluster has been enabled for HA.
      allOf:
        - $ref: '#/components/schemas/ClusterEvent'

    ArrayOfDasEnabledEvent:
      type: object
      description: |2
        A boxed array of *DasEnabledEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DasEnabledEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DasHostFailedEvent:
      type: object
      description: |2
        This event records when a host failure has been detected by HA.
      properties:
        failedHost:
          description: |2
            The host that failed.
          $ref: '#/components/schemas/HostEventArgument'
      required:
        - failedHost
      allOf:
        - $ref: '#/components/schemas/ClusterEvent'

    ArrayOfDasHostFailedEvent:
      type: object
      description: |2
        A boxed array of *DasHostFailedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DasHostFailedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DasHostIsolatedEvent:
      type: object
      description: |2
        This event records that a host has been isolated from the network in a
        HA cluster.
        
        Since an isolated host cannot be distinguished from a failed
        host except by the isolated host itself, this event is logged when the
        isolated host regains network connectivity.
      properties:
        isolatedHost:
          description: |2
            The host that was isolated.
          $ref: '#/components/schemas/HostEventArgument'
      required:
        - isolatedHost
      allOf:
        - $ref: '#/components/schemas/ClusterEvent'

    ArrayOfDasHostIsolatedEvent:
      type: object
      description: |2
        A boxed array of *DasHostIsolatedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DasHostIsolatedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DatacenterCreatedEvent:
      type: object
      properties:
        parent:
          description: |2
            The folder where the datacenter is created.
          $ref: '#/components/schemas/FolderEventArgument'
      required:
        - parent
      allOf:
        - $ref: '#/components/schemas/DatacenterEvent'

    ArrayOfDatacenterCreatedEvent:
      type: object
      description: |2
        A boxed array of *DatacenterCreatedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DatacenterCreatedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DatacenterEvent:
      type: object
      description: |2
        These are datacenter events.
      allOf:
        - $ref: '#/components/schemas/Event'

    ArrayOfDatacenterEvent:
      type: object
      description: |2
        A boxed array of *DatacenterEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DatacenterEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DatacenterEventArgument:
      type: object
      description: |2
        The event argument is a Datacenter object.
      properties:
        datacenter:
          description: |2
            The Datacenter object.
            
            Refers instance of *Datacenter*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - datacenter
      allOf:
        - $ref: '#/components/schemas/EntityEventArgument'

    ArrayOfDatacenterEventArgument:
      type: object
      description: |2
        A boxed array of *DatacenterEventArgument*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DatacenterEventArgument'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DatacenterRenamedEvent:
      type: object
      properties:
        oldName:
          description: |2
            The old datacenter name.
          type: string
        newName:
          description: |2
            The new datacenter name.
          type: string
      required:
        - oldName
        - newName
      allOf:
        - $ref: '#/components/schemas/DatacenterEvent'

    ArrayOfDatacenterRenamedEvent:
      type: object
      description: |2
        A boxed array of *DatacenterRenamedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DatacenterRenamedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DatastoreCapacityIncreasedEvent:
      type: object
      description: |2
        This event records when increase in a datastore's capacity is observed.
        
        It may happen due to different reasons, like extending or expanding a
        datastore.
      properties:
        oldCapacity:
          description: |2
            The old datastore capacity.
          type: integer
          format: int64
        newCapacity:
          description: |2
            The new datastore capacity.
          type: integer
          format: int64
      required:
        - oldCapacity
        - newCapacity
      allOf:
        - $ref: '#/components/schemas/DatastoreEvent'

    ArrayOfDatastoreCapacityIncreasedEvent:
      type: object
      description: |2
        A boxed array of *DatastoreCapacityIncreasedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DatastoreCapacityIncreasedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DatastoreDestroyedEvent:
      type: object
      description: |2
        This event records when a datastore is removed from VirtualCenter.
      allOf:
        - $ref: '#/components/schemas/DatastoreEvent'

    ArrayOfDatastoreDestroyedEvent:
      type: object
      description: |2
        A boxed array of *DatastoreDestroyedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DatastoreDestroyedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DatastoreDiscoveredEvent:
      type: object
      description: |2
        This event records when a host is added to VirtualCenter
        and datastores are discovered.
      properties:
        datastore:
          description: |2
            The associated datastore.
          $ref: '#/components/schemas/DatastoreEventArgument'
      required:
        - datastore
      allOf:
        - $ref: '#/components/schemas/HostEvent'

    ArrayOfDatastoreDiscoveredEvent:
      type: object
      description: |2
        A boxed array of *DatastoreDiscoveredEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DatastoreDiscoveredEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DatastoreDuplicatedEvent:
      type: object
      description: |2
        This event records when a duplicate datastore name is found.
        
        This event is used in VirtualCenter 1.x and is included for
        backward compatibility.
      allOf:
        - $ref: '#/components/schemas/DatastoreEvent'

    ArrayOfDatastoreDuplicatedEvent:
      type: object
      description: |2
        A boxed array of *DatastoreDuplicatedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DatastoreDuplicatedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DatastoreEvent:
      type: object
      description: |2
        These are datastore events.
      properties:
        datastore:
          description: |2
            The associated datastore.
          $ref: '#/components/schemas/DatastoreEventArgument'
      allOf:
        - $ref: '#/components/schemas/Event'

    ArrayOfDatastoreEvent:
      type: object
      description: |2
        A boxed array of *DatastoreEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DatastoreEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DatastoreEventArgument:
      type: object
      description: |2
        The event argument is a Datastore object.
      properties:
        datastore:
          description: |2
            The Datastore object.
            
            Refers instance of *Datastore*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - datastore
      allOf:
        - $ref: '#/components/schemas/EntityEventArgument'

    ArrayOfDatastoreEventArgument:
      type: object
      description: |2
        A boxed array of *DatastoreEventArgument*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DatastoreEventArgument'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DatastoreFileCopiedEvent:
      type: object
      description: |2
        This event records copy of a file or directory.
      properties:
        sourceDatastore:
          description: |2
            Source datastore.
          $ref: '#/components/schemas/DatastoreEventArgument'
        sourceFile:
          description: |2
            Datastore path of the source file or directory.
          type: string
      required:
        - sourceDatastore
        - sourceFile
      allOf:
        - $ref: '#/components/schemas/DatastoreFileEvent'

    ArrayOfDatastoreFileCopiedEvent:
      type: object
      description: |2
        A boxed array of *DatastoreFileCopiedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DatastoreFileCopiedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DatastoreFileDeletedEvent:
      type: object
      description: |2
        This event records deletion of a file or directory.
      allOf:
        - $ref: '#/components/schemas/DatastoreFileEvent'

    ArrayOfDatastoreFileDeletedEvent:
      type: object
      description: |2
        A boxed array of *DatastoreFileDeletedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DatastoreFileDeletedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DatastoreFileEvent:
      type: object
      description: |2
        Base class for events related to datastore file and directory
        operations.
        
        Property _datastore_ inherited from DatastoreEvent refers
        to the destination datastore in case there is more than datastore
        involved in the operation.
      properties:
        targetFile:
          description: |2
            Datastore path of the target file or directory.
          type: string
        sourceOfOperation:
          description: |2
            Identifier of the initiator of the file operation.
          type: string
        succeeded:
          description: |2
            Indicator whether the datastore file operation succeeded.
          type: boolean
      required:
        - targetFile
      allOf:
        - $ref: '#/components/schemas/DatastoreEvent'

    ArrayOfDatastoreFileEvent:
      type: object
      description: |2
        A boxed array of *DatastoreFileEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DatastoreFileEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DatastoreFileMovedEvent:
      type: object
      description: |2
        This event records move of a file or directory.
      properties:
        sourceDatastore:
          description: |2
            Source datastore.
          $ref: '#/components/schemas/DatastoreEventArgument'
        sourceFile:
          description: |2
            Datastore path of the source file or directory.
          type: string
      required:
        - sourceDatastore
        - sourceFile
      allOf:
        - $ref: '#/components/schemas/DatastoreFileEvent'

    ArrayOfDatastoreFileMovedEvent:
      type: object
      description: |2
        A boxed array of *DatastoreFileMovedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DatastoreFileMovedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DatastoreIORMReconfiguredEvent:
      type: object
      description: |2
        This event records that the configuration of storage I/O
        resource management for a datastore has changed.
      allOf:
        - $ref: '#/components/schemas/DatastoreEvent'

    ArrayOfDatastoreIORMReconfiguredEvent:
      type: object
      description: |2
        A boxed array of *DatastoreIORMReconfiguredEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DatastoreIORMReconfiguredEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DatastorePrincipalConfigured:
      type: object
      description: |2
        This event records that a datastore principal was configured on a host.
      properties:
        datastorePrincipal:
          type: string
      required:
        - datastorePrincipal
      allOf:
        - $ref: '#/components/schemas/HostEvent'

    ArrayOfDatastorePrincipalConfigured:
      type: object
      description: |2
        A boxed array of *DatastorePrincipalConfigured*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DatastorePrincipalConfigured'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DatastoreRemovedOnHostEvent:
      type: object
      description: |2
        This event records when a datastore is removed from a host
        but not from VirtualCenter.
      properties:
        datastore:
          description: |2
            The associated datastore.
          $ref: '#/components/schemas/DatastoreEventArgument'
      required:
        - datastore
      allOf:
        - $ref: '#/components/schemas/HostEvent'

    ArrayOfDatastoreRemovedOnHostEvent:
      type: object
      description: |2
        A boxed array of *DatastoreRemovedOnHostEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DatastoreRemovedOnHostEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DatastoreRenamedEvent:
      type: object
      description: |2
        This event records the renaming of a datastore.
      properties:
        oldName:
          description: |2
            The old datastore name.
          type: string
        newName:
          description: |2
            The new datastore name.
          type: string
      required:
        - oldName
        - newName
      allOf:
        - $ref: '#/components/schemas/DatastoreEvent'

    ArrayOfDatastoreRenamedEvent:
      type: object
      description: |2
        A boxed array of *DatastoreRenamedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DatastoreRenamedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DatastoreRenamedOnHostEvent:
      type: object
      description: |2
        This event records when a datastore is added to VirtualCenter
        and is renamed by VirtualCenter because this datastore already
        exists in VirtualCenter with a different name, or because the
        name conflicts with another datastore in VirtualCenter.
      properties:
        oldName:
          description: |2
            The old datastore name.
          type: string
        newName:
          description: |2
            The new datastore name.
          type: string
      required:
        - oldName
        - newName
      allOf:
        - $ref: '#/components/schemas/HostEvent'

    ArrayOfDatastoreRenamedOnHostEvent:
      type: object
      description: |2
        A boxed array of *DatastoreRenamedOnHostEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DatastoreRenamedOnHostEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DrsDisabledEvent:
      type: object
      description: |2
        This event records when DRS is disabled on a cluster.
      allOf:
        - $ref: '#/components/schemas/ClusterEvent'

    ArrayOfDrsDisabledEvent:
      type: object
      description: |2
        A boxed array of *DrsDisabledEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DrsDisabledEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DrsEnabledEvent:
      type: object
      description: |2
        This event records when DRS is enabled on a cluster.
      properties:
        behavior:
          description: |2
            The DRS automation level in (*DrsBehavior*)
          type: string
      required:
        - behavior
      allOf:
        - $ref: '#/components/schemas/ClusterEvent'

    ArrayOfDrsEnabledEvent:
      type: object
      description: |2
        A boxed array of *DrsEnabledEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DrsEnabledEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DrsEnteredStandbyModeEvent:
      type: object
      description: |2
        This event records that the host has successfully entered standby mode initiated by
        Distributed Power Management.
        
        A host in this mode has no running virtual
        machines and no provisioning operations are occurring.
      allOf:
        - $ref: '#/components/schemas/EnteredStandbyModeEvent'

    ArrayOfDrsEnteredStandbyModeEvent:
      type: object
      description: |2
        A boxed array of *DrsEnteredStandbyModeEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DrsEnteredStandbyModeEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DrsEnteringStandbyModeEvent:
      type: object
      description: |2
        This event records that a host has begun the process of
        entering standby mode initiated by Distributed Power Management.
      allOf:
        - $ref: '#/components/schemas/EnteringStandbyModeEvent'

    ArrayOfDrsEnteringStandbyModeEvent:
      type: object
      description: |2
        A boxed array of *DrsEnteringStandbyModeEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DrsEnteringStandbyModeEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DrsExitStandbyModeFailedEvent:
      type: object
      description: |2
        This event records that Distributed Power Management tried to bring a host out
        from standby mode, but the host failed to exit standby mode.
      allOf:
        - $ref: '#/components/schemas/ExitStandbyModeFailedEvent'

    ArrayOfDrsExitStandbyModeFailedEvent:
      type: object
      description: |2
        A boxed array of *DrsExitStandbyModeFailedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DrsExitStandbyModeFailedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DrsExitedStandbyModeEvent:
      type: object
      description: |2
        This event records that Distributed Power Management brings this host
        out from standby mode.
      allOf:
        - $ref: '#/components/schemas/ExitedStandbyModeEvent'

    ArrayOfDrsExitedStandbyModeEvent:
      type: object
      description: |2
        A boxed array of *DrsExitedStandbyModeEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DrsExitedStandbyModeEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DrsExitingStandbyModeEvent:
      type: object
      description: |2
        This event records that a host has begun the process of
        exiting standby mode initiated by Distributed Power Management.
      allOf:
        - $ref: '#/components/schemas/ExitingStandbyModeEvent'

    ArrayOfDrsExitingStandbyModeEvent:
      type: object
      description: |2
        A boxed array of *DrsExitingStandbyModeEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DrsExitingStandbyModeEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DrsInvocationFailedEvent:
      type: object
      description: |2
        This event records DRS invocation failure.
      allOf:
        - $ref: '#/components/schemas/ClusterEvent'

    ArrayOfDrsInvocationFailedEvent:
      type: object
      description: |2
        A boxed array of *DrsInvocationFailedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DrsInvocationFailedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DrsRecoveredFromFailureEvent:
      type: object
      description: |2
        This event records that DRS has recovered from failure.
        
        It is triggered by a successful DRS invocation after repeated failure.
      allOf:
        - $ref: '#/components/schemas/ClusterEvent'

    ArrayOfDrsRecoveredFromFailureEvent:
      type: object
      description: |2
        A boxed array of *DrsRecoveredFromFailureEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DrsRecoveredFromFailureEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DrsResourceConfigureFailedEvent:
      type: object
      description: |2
        This event records when resource configuration
        specification synchronization fails on a host.
      properties:
        reason:
          description: |2
            The reason for the failure.
          $ref: '#/components/schemas/MethodFault'
      required:
        - reason
      allOf:
        - $ref: '#/components/schemas/HostEvent'

    ArrayOfDrsResourceConfigureFailedEvent:
      type: object
      description: |2
        A boxed array of *DrsResourceConfigureFailedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DrsResourceConfigureFailedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DrsResourceConfigureSyncedEvent:
      type: object
      description: |2
        This event records when resource configuration
        specification returns to synchronized from previous failure.
      allOf:
        - $ref: '#/components/schemas/HostEvent'

    ArrayOfDrsResourceConfigureSyncedEvent:
      type: object
      description: |2
        A boxed array of *DrsResourceConfigureSyncedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DrsResourceConfigureSyncedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DrsRuleComplianceEvent:
      type: object
      description: |2
        This event records when a virtual machine comes into compliance with DRS rules.
      allOf:
        - $ref: '#/components/schemas/VmEvent'

    ArrayOfDrsRuleComplianceEvent:
      type: object
      description: |2
        A boxed array of *DrsRuleComplianceEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DrsRuleComplianceEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DrsRuleViolationEvent:
      type: object
      description: |2
        This event records when a virtual machine violates a DRS VM-Host rule.
      allOf:
        - $ref: '#/components/schemas/VmEvent'

    ArrayOfDrsRuleViolationEvent:
      type: object
      description: |2
        A boxed array of *DrsRuleViolationEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DrsRuleViolationEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DrsSoftRuleViolationEvent:
      type: object
      description: |2
        This event records when a virtual machine violates a soft VM-Host rule.
      allOf:
        - $ref: '#/components/schemas/VmEvent'

    ArrayOfDrsSoftRuleViolationEvent:
      type: object
      description: |2
        A boxed array of *DrsSoftRuleViolationEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DrsSoftRuleViolationEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DrsVmMigratedEvent:
      type: object
      description: |2
        This event records a virtual machine migration that was recommended by DRS.
      allOf:
        - $ref: '#/components/schemas/VmMigratedEvent'

    ArrayOfDrsVmMigratedEvent:
      type: object
      description: |2
        A boxed array of *DrsVmMigratedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DrsVmMigratedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DrsVmPoweredOnEvent:
      type: object
      description: |2
        This event records when a virtual machine is powered on by DRS.
      allOf:
        - $ref: '#/components/schemas/VmPoweredOnEvent'

    ArrayOfDrsVmPoweredOnEvent:
      type: object
      description: |2
        A boxed array of *DrsVmPoweredOnEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DrsVmPoweredOnEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DuplicateIpDetectedEvent:
      type: object
      description: |2
        This event records that a duplicate IP address has been observed in
        conflict with the vmotion or IP storage interface configured on the
        host.
      properties:
        duplicateIP:
          description: |2
            The Duplicate IP address detected.
          type: string
        macAddress:
          description: |2
            The MAC associated with duplicate IP.
          type: string
      required:
        - duplicateIP
        - macAddress
      allOf:
        - $ref: '#/components/schemas/HostEvent'

    ArrayOfDuplicateIpDetectedEvent:
      type: object
      description: |2
        A boxed array of *DuplicateIpDetectedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DuplicateIpDetectedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DvpgImportEvent:
      type: object
      description: |2
        This event is generated when an import operation is
        performed on a distributed virtual portgroup
      properties:
        importType:
          description: |2
            The type of restore operation.
            
            See *EntityImportType_enum* for valid values
          type: string
      required:
        - importType
      allOf:
        - $ref: '#/components/schemas/DVPortgroupEvent'

    ArrayOfDvpgImportEvent:
      type: object
      description: |2
        A boxed array of *DvpgImportEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DvpgImportEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DvpgRestoreEvent:
      type: object
      description: |2
        This event is generated when a restore operation is
        performed on a distributed virtual portgroup
      allOf:
        - $ref: '#/components/schemas/DVPortgroupEvent'

    ArrayOfDvpgRestoreEvent:
      type: object
      description: |2
        A boxed array of *DvpgRestoreEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DvpgRestoreEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DvsCreatedEvent:
      type: object
      description: |2
        A distributed virtual switch was created.
      properties:
        parent:
          description: |2
            The folder where the DistributedVirtualSwitch is created.
          $ref: '#/components/schemas/FolderEventArgument'
      required:
        - parent
      allOf:
        - $ref: '#/components/schemas/DvsEvent'

    ArrayOfDvsCreatedEvent:
      type: object
      description: |2
        A boxed array of *DvsCreatedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DvsCreatedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DvsDestroyedEvent:
      type: object
      description: |2
        A distributed virtual switch was destroyed.
      allOf:
        - $ref: '#/components/schemas/DvsEvent'

    ArrayOfDvsDestroyedEvent:
      type: object
      description: |2
        A boxed array of *DvsDestroyedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DvsDestroyedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DvsEvent:
      type: object
      description: |2
        These are dvs-related events.
      allOf:
        - $ref: '#/components/schemas/Event'

    ArrayOfDvsEvent:
      type: object
      description: |2
        A boxed array of *DvsEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DvsEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DvsEventArgument:
      type: object
      description: |2
        The event argument is a Host object.
      properties:
        dvs:
          description: |2
            The distributed virtual switch object.
            
            Refers instance of *DistributedVirtualSwitch*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - dvs
      allOf:
        - $ref: '#/components/schemas/EntityEventArgument'

    ArrayOfDvsEventArgument:
      type: object
      description: |2
        A boxed array of *DvsEventArgument*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DvsEventArgument'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DvsHealthStatusChangeEvent:
      type: object
      description: |2
        Health check status of an switch is changed.
      properties:
        switchUuid:
          description: |2
            UUID of the DVS the host is connected to.
          type: string
        healthResult:
          description: |2
            Health check status.
          $ref: '#/components/schemas/HostMemberHealthCheckResult'
      required:
        - switchUuid
      allOf:
        - $ref: '#/components/schemas/HostEvent'

    ArrayOfDvsHealthStatusChangeEvent:
      type: object
      description: |2
        A boxed array of *DvsHealthStatusChangeEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DvsHealthStatusChangeEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DvsHostBackInSyncEvent:
      type: object
      description: |2
        The DVS configuration on the host was synchronized with that of
        the Virtual Center Server and the configuration is the same on
        the host and Virtual Center Server.
      properties:
        hostBackInSync:
          description: |2
            The host that was synchronized.
          $ref: '#/components/schemas/HostEventArgument'
      required:
        - hostBackInSync
      allOf:
        - $ref: '#/components/schemas/DvsEvent'

    ArrayOfDvsHostBackInSyncEvent:
      type: object
      description: |2
        A boxed array of *DvsHostBackInSyncEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DvsHostBackInSyncEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DvsHostJoinedEvent:
      type: object
      description: |2
        A host joined the distributed virtual switch.
      properties:
        hostJoined:
          description: |2
            The host that joined DVS.
          $ref: '#/components/schemas/HostEventArgument'
      required:
        - hostJoined
      allOf:
        - $ref: '#/components/schemas/DvsEvent'

    ArrayOfDvsHostJoinedEvent:
      type: object
      description: |2
        A boxed array of *DvsHostJoinedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DvsHostJoinedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DvsHostLeftEvent:
      type: object
      description: |2
        A host left the distributed virtual switch.
      properties:
        hostLeft:
          description: |2
            The host that left DVS.
          $ref: '#/components/schemas/HostEventArgument'
      required:
        - hostLeft
      allOf:
        - $ref: '#/components/schemas/DvsEvent'

    ArrayOfDvsHostLeftEvent:
      type: object
      description: |2
        A boxed array of *DvsHostLeftEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DvsHostLeftEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DvsHostStatusUpdated:
      type: object
      description: |2
        A host has it's status or statusDetail updated.
      properties:
        hostMember:
          description: |2
            The host.
          $ref: '#/components/schemas/HostEventArgument'
        oldStatus:
          description: |2
            Host's old status.
          type: string
        newStatus:
          description: |2
            Host's new status.
          type: string
        oldStatusDetail:
          description: |2
            Comments regarding host's old status.
          type: string
        newStatusDetail:
          description: |2
            Comments regarding host's new status.
          type: string
      required:
        - hostMember
      allOf:
        - $ref: '#/components/schemas/DvsEvent'

    ArrayOfDvsHostStatusUpdated:
      type: object
      description: |2
        A boxed array of *DvsHostStatusUpdated*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DvsHostStatusUpdated'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DvsHostWentOutOfSyncEvent:
      type: object
      description: |2
        The DVS configuration on the host diverged from that of
        the Virtual Center Server.
      properties:
        hostOutOfSync:
          description: |2
            The host that went out of sync.
          $ref: '#/components/schemas/DvsOutOfSyncHostArgument'
      required:
        - hostOutOfSync
      allOf:
        - $ref: '#/components/schemas/DvsEvent'

    ArrayOfDvsHostWentOutOfSyncEvent:
      type: object
      description: |2
        A boxed array of *DvsHostWentOutOfSyncEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DvsHostWentOutOfSyncEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DvsImportEvent:
      type: object
      description: |2
        This event is generated when a import operation is
        performed on a distributed virtual switch
      properties:
        importType:
          description: |2
            The type of restore operation.
            
            See *EntityImportType_enum* for valid values
          type: string
      required:
        - importType
      allOf:
        - $ref: '#/components/schemas/DvsEvent'

    ArrayOfDvsImportEvent:
      type: object
      description: |2
        A boxed array of *DvsImportEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DvsImportEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DvsMergedEvent:
      type: object
      description: |2
        Two distributed virtual switches was merged.
      properties:
        sourceDvs:
          description: |2
            The source DVS.
          $ref: '#/components/schemas/DvsEventArgument'
        destinationDvs:
          description: |2
            The destination DVS.
          $ref: '#/components/schemas/DvsEventArgument'
      required:
        - sourceDvs
        - destinationDvs
      allOf:
        - $ref: '#/components/schemas/DvsEvent'

    ArrayOfDvsMergedEvent:
      type: object
      description: |2
        A boxed array of *DvsMergedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DvsMergedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DvsOutOfSyncHostArgument:
      type: object
      description: |2
        The host on which the DVS configuration is different from that
        of Virtual Center server.
      properties:
        outOfSyncHost:
          description: |2
            The host.
          $ref: '#/components/schemas/HostEventArgument'
        configParamters:
          description: |2
            The DVS configuration parameters that are different between
            Virtual Center server and the host.
          type: array
          items:
            type: string
      required:
        - outOfSyncHost
        - configParamters
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfDvsOutOfSyncHostArgument:
      type: object
      description: |2
        A boxed array of *DvsOutOfSyncHostArgument*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DvsOutOfSyncHostArgument'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DvsPortBlockedEvent:
      type: object
      description: |2
        A port is blocked in the distributed virtual switch.
      properties:
        portKey:
          description: |2
            The port key.
          type: string
        statusDetail:
          description: |2
            Reason for port's current status
          type: string
        runtimeInfo:
          description: |2
            The port runtime information.
          $ref: '#/components/schemas/DVPortStatus'
        prevBlockState:
          description: |2
            Previous state of the DvsPort.
            
            See *DvsEventPortBlockState_enum*
          type: string
      required:
        - portKey
      allOf:
        - $ref: '#/components/schemas/DvsEvent'

    ArrayOfDvsPortBlockedEvent:
      type: object
      description: |2
        A boxed array of *DvsPortBlockedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DvsPortBlockedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DvsPortConnectedEvent:
      type: object
      description: |2
        A port is connected in the distributed virtual switch.
      properties:
        portKey:
          description: |2
            The port key.
          type: string
        connectee:
          description: |2
            The port's connectee.
          $ref: '#/components/schemas/DistributedVirtualSwitchPortConnectee'
      required:
        - portKey
      allOf:
        - $ref: '#/components/schemas/DvsEvent'

    ArrayOfDvsPortConnectedEvent:
      type: object
      description: |2
        A boxed array of *DvsPortConnectedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DvsPortConnectedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DvsPortCreatedEvent:
      type: object
      description: |2
        New ports are created in the distributed virtual switch.
      properties:
        portKey:
          description: |2
            The key of the ports that are created.
          type: array
          items:
            type: string
      required:
        - portKey
      allOf:
        - $ref: '#/components/schemas/DvsEvent'

    ArrayOfDvsPortCreatedEvent:
      type: object
      description: |2
        A boxed array of *DvsPortCreatedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DvsPortCreatedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DvsPortDeletedEvent:
      type: object
      description: |2
        Existing ports are deleted in the distributed virtual switch.
      properties:
        portKey:
          description: |2
            The key of the ports that are deleted.
          type: array
          items:
            type: string
      required:
        - portKey
      allOf:
        - $ref: '#/components/schemas/DvsEvent'

    ArrayOfDvsPortDeletedEvent:
      type: object
      description: |2
        A boxed array of *DvsPortDeletedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DvsPortDeletedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DvsPortDisconnectedEvent:
      type: object
      description: |2
        A port is disconnected in the distributed virtual switch.
      properties:
        portKey:
          description: |2
            The port key.
          type: string
        connectee:
          description: |2
            The port's formal connectee.
          $ref: '#/components/schemas/DistributedVirtualSwitchPortConnectee'
      required:
        - portKey
      allOf:
        - $ref: '#/components/schemas/DvsEvent'

    ArrayOfDvsPortDisconnectedEvent:
      type: object
      description: |2
        A boxed array of *DvsPortDisconnectedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DvsPortDisconnectedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DvsPortEnteredPassthruEvent:
      type: object
      description: |2
        A port has entered passthrough mode on the distributed virtual switch.
      properties:
        portKey:
          description: |2
            The port key.
          type: string
        runtimeInfo:
          description: |2
            The port runtime information.
          $ref: '#/components/schemas/DVPortStatus'
      required:
        - portKey
      allOf:
        - $ref: '#/components/schemas/DvsEvent'

    ArrayOfDvsPortEnteredPassthruEvent:
      type: object
      description: |2
        A boxed array of *DvsPortEnteredPassthruEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DvsPortEnteredPassthruEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DvsPortExitedPassthruEvent:
      type: object
      description: |2
        A port has exited passthrough mode on the distributed virtual switch.
      properties:
        portKey:
          description: |2
            The port key.
          type: string
        runtimeInfo:
          description: |2
            The port runtime information.
          $ref: '#/components/schemas/DVPortStatus'
      required:
        - portKey
      allOf:
        - $ref: '#/components/schemas/DvsEvent'

    ArrayOfDvsPortExitedPassthruEvent:
      type: object
      description: |2
        A boxed array of *DvsPortExitedPassthruEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DvsPortExitedPassthruEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DvsPortJoinPortgroupEvent:
      type: object
      description: |2
        A port was moved into the distributed virtual portgroup.
      properties:
        portKey:
          description: |2
            The port key.
          type: string
        portgroupKey:
          description: |2
            The portgroup key.
          type: string
        portgroupName:
          description: |2
            The portgroup name.
          type: string
      required:
        - portKey
        - portgroupKey
        - portgroupName
      allOf:
        - $ref: '#/components/schemas/DvsEvent'

    ArrayOfDvsPortJoinPortgroupEvent:
      type: object
      description: |2
        A boxed array of *DvsPortJoinPortgroupEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DvsPortJoinPortgroupEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DvsPortLeavePortgroupEvent:
      type: object
      description: |2
        A port was moved out of the distributed virtual portgroup.
      properties:
        portKey:
          description: |2
            The port key.
          type: string
        portgroupKey:
          description: |2
            The portgroup key.
          type: string
        portgroupName:
          description: |2
            The portgroup name.
          type: string
      required:
        - portKey
        - portgroupKey
        - portgroupName
      allOf:
        - $ref: '#/components/schemas/DvsEvent'

    ArrayOfDvsPortLeavePortgroupEvent:
      type: object
      description: |2
        A boxed array of *DvsPortLeavePortgroupEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DvsPortLeavePortgroupEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DvsPortLinkDownEvent:
      type: object
      description: |2
        A port of which link status is changed to down in the distributed
        virtual switch.
      properties:
        portKey:
          description: |2
            The port key.
          type: string
        runtimeInfo:
          description: |2
            The port runtime information.
          $ref: '#/components/schemas/DVPortStatus'
      required:
        - portKey
      allOf:
        - $ref: '#/components/schemas/DvsEvent'

    ArrayOfDvsPortLinkDownEvent:
      type: object
      description: |2
        A boxed array of *DvsPortLinkDownEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DvsPortLinkDownEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DvsPortLinkUpEvent:
      type: object
      description: |2
        A port of which link status is changed to up in the distributed
        virtual switch.
      properties:
        portKey:
          description: |2
            The port key.
          type: string
        runtimeInfo:
          description: |2
            The port runtime information.
          $ref: '#/components/schemas/DVPortStatus'
      required:
        - portKey
      allOf:
        - $ref: '#/components/schemas/DvsEvent'

    ArrayOfDvsPortLinkUpEvent:
      type: object
      description: |2
        A boxed array of *DvsPortLinkUpEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DvsPortLinkUpEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DvsPortReconfiguredEvent:
      type: object
      description: |2
        Existing ports are reconfigured in the distributed virtual switch.
      properties:
        portKey:
          description: |2
            The key of the ports that are reconfigured.
          type: array
          items:
            type: string
        configChanges:
          description: |2
            The configuration values changed during the reconfiguration.
          type: array
          items:
            $ref: '#/components/schemas/ChangesInfoEventArgument'
      required:
        - portKey
      allOf:
        - $ref: '#/components/schemas/DvsEvent'

    ArrayOfDvsPortReconfiguredEvent:
      type: object
      description: |2
        A boxed array of *DvsPortReconfiguredEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DvsPortReconfiguredEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DvsPortRuntimeChangeEvent:
      type: object
      description: |2
        A port of which runtime information is changed in the vNetwork Distributed
        Switch.
      properties:
        portKey:
          description: |2
            The port key.
          type: string
        runtimeInfo:
          description: |2
            The new port runtime information.
          $ref: '#/components/schemas/DVPortStatus'
      required:
        - portKey
        - runtimeInfo
      allOf:
        - $ref: '#/components/schemas/DvsEvent'

    ArrayOfDvsPortRuntimeChangeEvent:
      type: object
      description: |2
        A boxed array of *DvsPortRuntimeChangeEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DvsPortRuntimeChangeEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DvsPortUnblockedEvent:
      type: object
      description: |2
        A port is unblocked in the distributed virtual switch.
      properties:
        portKey:
          description: |2
            The port key.
          type: string
        runtimeInfo:
          description: |2
            The port runtime information.
          $ref: '#/components/schemas/DVPortStatus'
        prevBlockState:
          description: |2
            Previous state of the DvsPort.
            
            See *DvsEventPortBlockState_enum*
          type: string
      required:
        - portKey
      allOf:
        - $ref: '#/components/schemas/DvsEvent'

    ArrayOfDvsPortUnblockedEvent:
      type: object
      description: |2
        A boxed array of *DvsPortUnblockedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DvsPortUnblockedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DvsPortVendorSpecificStateChangeEvent:
      type: object
      description: |2
        A port of which vendor specific state is changed in the vNetwork Distributed
        Switch.
      properties:
        portKey:
          description: |2
            The port key.
          type: string
      required:
        - portKey
      allOf:
        - $ref: '#/components/schemas/DvsEvent'

    ArrayOfDvsPortVendorSpecificStateChangeEvent:
      type: object
      description: |2
        A boxed array of *DvsPortVendorSpecificStateChangeEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DvsPortVendorSpecificStateChangeEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DvsReconfiguredEvent:
      type: object
      description: |2
        A distributed virtual switch was reconfigured.
      properties:
        configSpec:
          description: |2
            The reconfiguration spec.
          $ref: '#/components/schemas/DVSConfigSpec'
        configChanges:
          description: |2
            The configuration values changed during the reconfiguration.
          $ref: '#/components/schemas/ChangesInfoEventArgument'
      required:
        - configSpec
      allOf:
        - $ref: '#/components/schemas/DvsEvent'

    ArrayOfDvsReconfiguredEvent:
      type: object
      description: |2
        A boxed array of *DvsReconfiguredEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DvsReconfiguredEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DvsRenamedEvent:
      type: object
      description: |2
        A distributed virtual switch was renamed.
      properties:
        oldName:
          description: |2
            The old DistributedVirtualSwitch name.
          type: string
        newName:
          description: |2
            The new DistributedVirtualSwitch name.
          type: string
      required:
        - oldName
        - newName
      allOf:
        - $ref: '#/components/schemas/DvsEvent'

    ArrayOfDvsRenamedEvent:
      type: object
      description: |2
        A boxed array of *DvsRenamedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DvsRenamedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DvsRestoreEvent:
      type: object
      description: |2
        This event is generated when a restore operation is
        performed on a distributed virtual switch
      allOf:
        - $ref: '#/components/schemas/DvsEvent'

    ArrayOfDvsRestoreEvent:
      type: object
      description: |2
        A boxed array of *DvsRestoreEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DvsRestoreEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DvsUpgradeAvailableEvent:
      type: object
      description: |2
        An upgrade for the distributed virtual switch is available.
      properties:
        productInfo:
          description: |2
            The product info of the upgrade.
          $ref: '#/components/schemas/DistributedVirtualSwitchProductSpec'
      required:
        - productInfo
      allOf:
        - $ref: '#/components/schemas/DvsEvent'

    ArrayOfDvsUpgradeAvailableEvent:
      type: object
      description: |2
        A boxed array of *DvsUpgradeAvailableEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DvsUpgradeAvailableEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DvsUpgradeInProgressEvent:
      type: object
      description: |2
        An upgrade for the distributed virtual switch is in progress.
      properties:
        productInfo:
          description: |2
            The product info of the upgrade.
          $ref: '#/components/schemas/DistributedVirtualSwitchProductSpec'
      required:
        - productInfo
      allOf:
        - $ref: '#/components/schemas/DvsEvent'

    ArrayOfDvsUpgradeInProgressEvent:
      type: object
      description: |2
        A boxed array of *DvsUpgradeInProgressEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DvsUpgradeInProgressEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DvsUpgradeRejectedEvent:
      type: object
      description: |2
        An upgrade for the distributed virtual switch is rejected.
      properties:
        productInfo:
          description: |2
            The product info of the upgrade.
          $ref: '#/components/schemas/DistributedVirtualSwitchProductSpec'
      required:
        - productInfo
      allOf:
        - $ref: '#/components/schemas/DvsEvent'

    ArrayOfDvsUpgradeRejectedEvent:
      type: object
      description: |2
        A boxed array of *DvsUpgradeRejectedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DvsUpgradeRejectedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DvsUpgradedEvent:
      type: object
      description: |2
        The distributed virtual switch was upgraded.
      properties:
        productInfo:
          description: |2
            The product info of the upgrade.
          $ref: '#/components/schemas/DistributedVirtualSwitchProductSpec'
      required:
        - productInfo
      allOf:
        - $ref: '#/components/schemas/DvsEvent'

    ArrayOfDvsUpgradedEvent:
      type: object
      description: |2
        A boxed array of *DvsUpgradedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DvsUpgradedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    EnteredMaintenanceModeEvent:
      type: object
      description: |2
        This event records that the host has completely entered
        maintenance mode.
        
        A host in this mode has no running virtual machines and no
        provisioning operations are occurring.
      allOf:
        - $ref: '#/components/schemas/HostEvent'

    ArrayOfEnteredMaintenanceModeEvent:
      type: object
      description: |2
        A boxed array of *EnteredMaintenanceModeEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/EnteredMaintenanceModeEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    EnteredStandbyModeEvent:
      type: object
      description: |2
        This event records that the host has successfully entered
        standby mode.
        
        A host in this mode has no running virtual machines and no
        provisioning operations are occurring.
      allOf:
        - $ref: '#/components/schemas/HostEvent'

    ArrayOfEnteredStandbyModeEvent:
      type: object
      description: |2
        A boxed array of *EnteredStandbyModeEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/EnteredStandbyModeEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    EnteringMaintenanceModeEvent:
      type: object
      description: |2
        This event records that a host has begun the process of entering
        maintenance mode.
        
        All virtual machine operations
        are blocked, except the following:
        - MigrateVM
        - PowerOffVM
        - SuspendVM
        - ShutdownGuest
        - StandbyGuest
      allOf:
        - $ref: '#/components/schemas/HostEvent'

    ArrayOfEnteringMaintenanceModeEvent:
      type: object
      description: |2
        A boxed array of *EnteringMaintenanceModeEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/EnteringMaintenanceModeEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    EnteringStandbyModeEvent:
      type: object
      description: |2
        This event records that a host has begun the process of entering
        standby mode.
        
        All virtual machine operations
        are blocked, except the following:
        - MigrateVM
        - PowerOffVM
        - SuspendVM
        - ShutdownGuest
        - StandbyGuest
      allOf:
        - $ref: '#/components/schemas/HostEvent'

    ArrayOfEnteringStandbyModeEvent:
      type: object
      description: |2
        A boxed array of *EnteringStandbyModeEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/EnteringStandbyModeEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    EntityEventArgument:
      type: object
      description: |2
        The event argument is a managed entity object.
        
        Subclasses of this type distinguish the different managed entities
        referenced in event objects.
      properties:
        name:
          description: |2
            Name of the entity, including its full path from the root of the inventory.
          type: string
      required:
        - name
      allOf:
        - $ref: '#/components/schemas/EventArgument'

    ArrayOfEntityEventArgument:
      type: object
      description: |2
        A boxed array of *EntityEventArgument*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/EntityEventArgument'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ErrorUpgradeEvent:
      type: object
      description: |2
        This event is a general error event from upgrade.
      allOf:
        - $ref: '#/components/schemas/UpgradeEvent'

    ArrayOfErrorUpgradeEvent:
      type: object
      description: |2
        A boxed array of *ErrorUpgradeEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ErrorUpgradeEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    Event:
      type: object
      description: |2
        This event is the base data object type from which all events inherit.
        
        All event
        objects are data structures that describe events. While event data objects are data
        structures that describe events, event data type documentation may describe what the
        event records, rather than the data structure, itself.
      properties:
        key:
          description: |2
            The event ID.
          type: integer
          format: int32
        chainId:
          description: |2
            The parent or group ID.
          type: integer
          format: int32
        createdTime:
          description: |2
            The time the event was created.
          type: string
          format: date-time
        userName:
          description: |2
            The user who caused the event.
          type: string
        datacenter:
          description: |2
            The Datacenter object of the event.
          $ref: '#/components/schemas/DatacenterEventArgument'
        computeResource:
          description: |2
            The ComputeResource object of the event.
          $ref: '#/components/schemas/ComputeResourceEventArgument'
        host:
          description: |2
            The Host object of the event.
          $ref: '#/components/schemas/HostEventArgument'
        vm:
          description: |2
            The VirtualMachine object of the event.
          $ref: '#/components/schemas/VmEventArgument'
        ds:
          description: |2
            The Datastore object of the event.
          $ref: '#/components/schemas/DatastoreEventArgument'
        net:
          description: |2
            The Network object of the event.
          $ref: '#/components/schemas/NetworkEventArgument'
        dvs:
          description: |2
            The DistributedVirtualSwitch object of the event.
          $ref: '#/components/schemas/DvsEventArgument'
        fullFormattedMessage:
          description: |2
            A formatted text message describing the event.
            
            The message may be localized.
          type: string
        changeTag:
          description: |2
            The user entered tag to identify the operations and their side effects
          type: string
      required:
        - key
        - chainId
        - createdTime
        - userName
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfEvent:
      type: object
      description: |2
        A boxed array of *Event*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/Event'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    EventArgument:
      type: object
      description: |2
        This is the base type for event argument types.
        
        Event argument objects, which inherit from a common subtype,
        are used to manage supplementary properties of different kinds
        of event objects.
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfEventArgument:
      type: object
      description: |2
        A boxed array of *EventArgument*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/EventArgument'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    EventDescription:
      type: object
      description: |2
        This data object provides static, locale-specific strings for event objects.
      properties:
        category:
          description: |2
            *Event Category enum*
          type: array
          items:
            $ref: '#/components/schemas/ElementDescription'
        eventInfo:
          description: |2
            The event class description details.
          type: array
          items:
            $ref: '#/components/schemas/EventDescriptionEventDetail'
        enumeratedTypes:
          description: |2
            Localized descriptions of all enumerated types that are used for
            member declarations in event classes.
          type: array
          items:
            $ref: '#/components/schemas/EnumDescription'
      required:
        - category
        - eventInfo
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfEventDescription:
      type: object
      description: |2
        A boxed array of *EventDescription*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/EventDescription'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    EventArgDesc:
      type: object
      description: |2
        Describes an available event argument name for an Event type, which
        can be used in *EventAlarmExpression*.
      properties:
        name:
          description: |2
            The name of the argument
          type: string
        type:
          description: |2
            The type of the argument.
          type: string
        description:
          description: |2
            The localized description of the event argument.
            
            The key holds
            the localization prefix for the argument, which is decided by
            the Event type that it is actually declared in, which may be a
            base type of this event type.
          $ref: '#/components/schemas/ElementDescription'
      required:
        - name
        - type
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfEventArgDesc:
      type: object
      description: |2
        A boxed array of *EventArgDesc*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/EventArgDesc'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    EventDescriptionEventDetail:
      type: object
      description: |2
        Each Event object provides an automatic event message string through
        its *fullFormattedMessage*
        property.
        
        However, you can use the EventDetail object's properties to
        format an event message string that is appropriate when viewed from
        a specific context. The variable information (vm.name, and so on) is
        derived from the Event object's event arguments
        (*VmEventArgument*, and so on).
      properties:
        key:
          description: |2
            Type of event being described.
          type: string
        description:
          description: |2
            A string that is a short human-parseable description of the event.
            
            This is not the full message string (which may contain details
            of the arguments, etc.), but merely a more understandable, and
            localized, description of what the event stands for. It is meant
            for contexts where the _name_ of the event has to be displayed
            to end-users, e.g. when creating Event-based Alarms.
            \` \* 
            
            E.g., for *VmPoweredOnEvent*, the eventDescription
            in English might say "VM Powered On".
          type: string
        category:
          description: |2
            A category of events.
          type: string
        formatOnDatacenter:
          description: |2
            A string that is appropriate in the context of a specific
            Datacenter.
            
            For example, a renaming event in this context produces
            the following string:
            
            "Renamed {vm.name} from {oldName} to {newName}"
            
            where *oldName* and
            *newName* are properties of the
            VmRenamedEvent object.
          type: string
        formatOnComputeResource:
          description: |2
            A string that is appropriate in the context of a specific cluster.
            
            For example, a powering on event in this context produces the
            following string:
            
            "{vm.name} on {host.name} is powered on".
          type: string
        formatOnHost:
          description: |2
            A string that is appropriate in the context
            of a specific Host.
            
            For example, a powering on event in this
            context produces the following string:
            
            "{vm.name} is powered on"
          type: string
        formatOnVm:
          description: |2
            A string that is appropriate for the context of a specific
            virtual machine.
            
            For example, a powering on event in this context
            produces the following string:
            
            "Virtual machine on {host.name} is powered on"
          type: string
        fullFormat:
          description: |2
            A string whose context is not entity-specific.
            
            For example, a
            powering on event produces the following string:
            
            "{vm.name} on {host.name} in {datacenter.name} is powered on"
          type: string
        longDescription:
          description: |2
            A detailed description of the event.
            
            It includes common causes
            and actions to remediate them. It may also include links to kb
            articles and other diagnostic information.
            For example, the BadUserNameSessionEvent may produce the
            following string:
            
                     <EventLongDescription id="vim.event.BadUserNameSessionEvent">
                        <description>
                           The user could not be logged in because of an unknown or invalid
                           user name.
                        </description>
                        <cause>
                           <description>The user name was unknown to the system</description>
                           <action>Use a user name known to the system user directory</action>
                           <action>(On Linux) Check if the user directory is correctly
                                   configured.</action>
                           <action>Check the health of the domain controller (if you are using
                                   Active Directory)</action>
                        </cause>
                        <cause>
                           <description>The user provided an invalid password</description>
                           <action>Supply the correct password</action>
                        </cause>
                     </EventLongDescription>
          type: string
      required:
        - key
        - category
        - formatOnDatacenter
        - formatOnComputeResource
        - formatOnHost
        - formatOnVm
        - fullFormat
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfEventDescriptionEventDetail:
      type: object
      description: |2
        A boxed array of *EventDescriptionEventDetail*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/EventDescriptionEventDetail'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    EventEx:
      type: object
      description: |2
        EventEx is a dynamically typed Event class, whose type is indicated by its
        eventTypeId property.
        
        A collection of eventTypeIds is registered by Extensions, which can now
        pass in optional type information for each eventTypeId which indicates the
        applicable argument names and types, among other properties.
        
        EventEx allows event arguments of any type, though today, the system
        only supports "string" and "moid" (a string which can be interpreted as an
        object ID in the system) as argument types. In the future, the system
        may optionally strongly check the types of the arguments in the event
        against the declared type information, based on how the event type is
        declared.
        
        EventEx also allows arbitrary "event object"s - the object which the
        event refers to. You can put in any object identifier as the objectId,
        but objectType should be filled in only if the object is actually present
        in the VC Server's ManagedEntity inventory.
      properties:
        eventTypeId:
          description: |2
            The type of the event.
          type: string
        severity:
          description: |2
            The severity level of the message: null=&gt;info.
            
            See also *EventEventSeverity_enum*.
          type: string
        message:
          description: |2
            An arbitrary message string, not localized.
          type: string
        arguments:
          description: |2
            The event arguments associated with the event
          type: array
          items:
            $ref: '#/components/schemas/KeyAnyValue'
        objectId:
          description: |2
            The ID of the object (VM, Host, Folder..) which the event pertains to.
            
            Federated or local inventory path.
          type: string
        objectType:
          description: |2
            the type of the object, if known to the VirtualCenter inventory
          type: string
        objectName:
          description: |2
            The name of the object
          type: string
        fault:
          description: |2
            The fault that triggered the event, if any
          $ref: '#/components/schemas/MethodFault'
      required:
        - eventTypeId
      allOf:
        - $ref: '#/components/schemas/Event'

    ArrayOfEventEx:
      type: object
      description: |2
        A boxed array of *EventEx*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/EventEx'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    EventFilterSpec:
      type: object
      description: |2
        Event filter used to query events in the history collector database.
        
        The client creates an event history collector with a filter specification,
        then retrieves the events from the event history collector.
      properties:
        entity:
          description: |2
            The filter specification for retrieving events by managed entity.
            
            If the property is not set, then events attached to all managed entities
            are collected.
          $ref: '#/components/schemas/EventFilterSpecByEntity'
        time:
          description: |2
            The filter specification for retrieving tasks by time.
            
            If the property is not set, then events with any time stamp are collected.
          $ref: '#/components/schemas/EventFilterSpecByTime'
        userName:
          description: |2
            The filter specification for retrieving events by username.
            
            If the property is not set, then events belonging to any user are collected.
          $ref: '#/components/schemas/EventFilterSpecByUsername'
        eventChainId:
          description: |2
            The filter specification for retrieving events by chain ID.
            
            If the property is not set, events with any chain ID are collected.
          type: integer
          format: int32
        alarm:
          description: |2
            This property, if set, limits the set of collected events to those
            associated with the specified alarm.
            
            If the property is not set, events are collected regardless of their
            association with alarms.
            
            Refers instance of *Alarm*.
          $ref: '#/components/schemas/ManagedObjectReference'
        scheduledTask:
          description: |2
            This property, if set, limits the set of collected events to those
            associated with the specified scheduled task.
            
            If the property is not set, events are collected regardless of their
            association with any scheduled task.
            
            Refers instance of *ScheduledTask*.
          $ref: '#/components/schemas/ManagedObjectReference'
        disableFullMessage:
          description: |2
            Flag to specify whether or not to prepare the full formatted message
            for each event.
            
            If the property is not set, the collected events do not include
            the full formatted message.
          type: boolean
        category:
          description: |2
            This property, if set, limits the set of collected events to those
            associated with the specified category.
            
            If the property is not set, events are collected regardless of their
            association with any category.
            "category" here is the same as Event.severity.
          type: array
          items:
            type: string
        type:
          deprecated: true
          description: |2
            Deprecated as of vSphere API 4.0, use *EventFilterSpec.eventTypeId* instead.
            
            This property, if set, limits the set of collected events to those
            specified types.
            
            If the property is not set, events are collected regardless of their
            types.
          type: array
          items:
            type: string
        tag:
          description: |2
            This property, if set, limits the set of filtered events to those that
            have it.
            
            If not set, or the size of it 0, the tag of an event is
            disregarded. A blank string indicates events without tags.
          type: array
          items:
            type: string
        eventTypeId:
          description: |2
            This property, if set, limits the set of collected events to those
            specified types.
            
            Note: if both *EventFilterSpec.eventTypeId* and *EventFilterSpec.type* are specified, an
            exception may be thrown by *EventManager.CreateCollectorForEvents*.
            
            The semantics of how eventTypeId matching is done is as follows:
            - If the event being collected is of type *EventEx*
              or *ExtendedEvent*, then we match against the
              <code>eventTypeId</code> (for <code>EventEx</code>) or
              <code>eventId</code> (for <code>ExtendedEvent</code>) member of the Event.
            - Otherwise, we match against the type of the Event itself.
              
            If neither this property, nor <code>type</code>, is set, events are
            collected regardless of their types.
          type: array
          items:
            type: string
        maxCount:
          description: |2
            This property, if set, specifies the maximum number of returned events.
            
            If unset, the default maximum number will be used.
            Using this property with *EventManager.CreateCollectorForEvents* is more
            efficient than a call to *HistoryCollector.SetCollectorPageSize*.
          type: integer
          format: int32
        delayedInit:
          description: |2
            This property, if set, specifies whether latest page should be populated on Collector creation.
            
            True for delayed population and false for immediate.
            If unset, the latest page is populated immediately.
            
            ***Since:*** vSphere API Release 8.0.3.0
          type: boolean
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfEventFilterSpec:
      type: object
      description: |2
        A boxed array of *EventFilterSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/EventFilterSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    EventFilterSpecByEntity:
      type: object
      description: |2
        This option specifies a managed entity used to filter event history.
        
        If the specified managed entity is a Folder or a ResourcePool, the query
        will actually be performed on the entities contained within that Folder
        or ResourcePool, so you cannot query for events on Folders and
        ResourcePools themselves this way.
      properties:
        entity:
          description: |2
            The managed entity to which the event pertains.
            
            Refers instance of *ManagedEntity*.
          $ref: '#/components/schemas/ManagedObjectReference'
        recursion:
          description: |2
            Specification of related managed entities in the inventory hierarchy.
          $ref: '#/components/schemas/EventFilterSpecRecursionOption_enum'
      required:
        - entity
        - recursion
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfEventFilterSpecByEntity:
      type: object
      description: |2
        A boxed array of *EventFilterSpecByEntity*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/EventFilterSpecByEntity'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    EventFilterSpecByTime:
      type: object
      description: |2
        This option specifies a time range used to filter event history.
      properties:
        beginTime:
          description: |2
            The beginning of the time range.
            
            If this property is not set, then events are collected from
            the earliest time in the database.
          type: string
          format: date-time
        endTime:
          description: |2
            The end of the time range.
            
            If this property is not specified, then events are collected up to
            the latest time in the database.
          type: string
          format: date-time
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfEventFilterSpecByTime:
      type: object
      description: |2
        A boxed array of *EventFilterSpecByTime*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/EventFilterSpecByTime'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    EventFilterSpecByUsername:
      type: object
      description: |2
        This option specifies users used to filter event history.
      properties:
        systemUser:
          description: |2
            filter by system user
            true for system user event
          type: boolean
        userList:
          description: |2
            all interested username list
            If this property is not set, then all regular user events are
            collected
          type: array
          items:
            type: string
      required:
        - systemUser
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfEventFilterSpecByUsername:
      type: object
      description: |2
        A boxed array of *EventFilterSpecByUsername*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/EventFilterSpecByUsername'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ExitMaintenanceModeEvent:
      type: object
      description: |2
        This event records that the host is no longer in
        maintenance mode.
      allOf:
        - $ref: '#/components/schemas/HostEvent'

    ArrayOfExitMaintenanceModeEvent:
      type: object
      description: |2
        A boxed array of *ExitMaintenanceModeEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ExitMaintenanceModeEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ExitStandbyModeFailedEvent:
      type: object
      description: |2
        This event records that the host failed to exit standby mode.
      allOf:
        - $ref: '#/components/schemas/HostEvent'

    ArrayOfExitStandbyModeFailedEvent:
      type: object
      description: |2
        A boxed array of *ExitStandbyModeFailedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ExitStandbyModeFailedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ExitedStandbyModeEvent:
      type: object
      description: |2
        This event records that the host is no longer in
        standby mode.
      allOf:
        - $ref: '#/components/schemas/HostEvent'

    ArrayOfExitedStandbyModeEvent:
      type: object
      description: |2
        A boxed array of *ExitedStandbyModeEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ExitedStandbyModeEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ExitingStandbyModeEvent:
      type: object
      description: |2
        This event records that a host has begun the process of
        exiting standby mode.
      allOf:
        - $ref: '#/components/schemas/HostEvent'

    ArrayOfExitingStandbyModeEvent:
      type: object
      description: |2
        A boxed array of *ExitingStandbyModeEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ExitingStandbyModeEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ExtendedEvent:
      type: object
      description: |2
        This event is the base class for extended events.
      properties:
        eventTypeId:
          description: |2
            The id of the type of extended event.
          type: string
        managedObject:
          description: |2
            The object on which the event was logged.
          $ref: '#/components/schemas/ManagedObjectReference'
        data:
          description: |2
            Key/value pairs associated with event.
          type: array
          items:
            $ref: '#/components/schemas/ExtendedEventPair'
      required:
        - eventTypeId
        - managedObject
      allOf:
        - $ref: '#/components/schemas/GeneralEvent'

    ArrayOfExtendedEvent:
      type: object
      description: |2
        A boxed array of *ExtendedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ExtendedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ExtendedEventPair:
      type: object
      description: |2
        key/value pair
      properties:
        key:
          type: string
        value:
          type: string
      required:
        - key
        - value
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfExtendedEventPair:
      type: object
      description: |2
        A boxed array of *ExtendedEventPair*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ExtendedEventPair'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    FailoverLevelRestored:
      type: object
      description: |2
        This event records that the amount of cluster resources has increased
        and is now sufficient to satisfy the configured HA failover level.
      allOf:
        - $ref: '#/components/schemas/ClusterEvent'

    ArrayOfFailoverLevelRestored:
      type: object
      description: |2
        A boxed array of *FailoverLevelRestored*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/FailoverLevelRestored'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    FolderEventArgument:
      type: object
      description: |2
        The event argument is a Folder object.
      properties:
        folder:
          description: |2
            The Folder object.
            
            Refers instance of *Folder*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - folder
      allOf:
        - $ref: '#/components/schemas/EntityEventArgument'

    ArrayOfFolderEventArgument:
      type: object
      description: |2
        A boxed array of *FolderEventArgument*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/FolderEventArgument'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    GeneralEvent:
      type: object
      description: |2
        These are general events.
      properties:
        message:
          description: |2
            A short form of the message string, not localized.
          type: string
      required:
        - message
      allOf:
        - $ref: '#/components/schemas/Event'

    ArrayOfGeneralEvent:
      type: object
      description: |2
        A boxed array of *GeneralEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/GeneralEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    GeneralHostErrorEvent:
      type: object
      description: |2
        This event is the general error event for a host.
      allOf:
        - $ref: '#/components/schemas/GeneralEvent'

    ArrayOfGeneralHostErrorEvent:
      type: object
      description: |2
        A boxed array of *GeneralHostErrorEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/GeneralHostErrorEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    GeneralHostInfoEvent:
      type: object
      description: |2
        This event is the general information event for a host.
      allOf:
        - $ref: '#/components/schemas/GeneralEvent'

    ArrayOfGeneralHostInfoEvent:
      type: object
      description: |2
        A boxed array of *GeneralHostInfoEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/GeneralHostInfoEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    GeneralHostWarningEvent:
      type: object
      description: |2
        This event is the general warning event for a host.
      allOf:
        - $ref: '#/components/schemas/GeneralEvent'

    ArrayOfGeneralHostWarningEvent:
      type: object
      description: |2
        A boxed array of *GeneralHostWarningEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/GeneralHostWarningEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    GeneralUserEvent:
      type: object
      description: |2
        This event is the general user event type.
      properties:
        entity:
          description: |2
            The entity on which the event was logged.
          $ref: '#/components/schemas/ManagedEntityEventArgument'
      allOf:
        - $ref: '#/components/schemas/GeneralEvent'

    ArrayOfGeneralUserEvent:
      type: object
      description: |2
        A boxed array of *GeneralUserEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/GeneralUserEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    GeneralVmErrorEvent:
      type: object
      description: |2
        This event is the general error event for a virtual machine.
      allOf:
        - $ref: '#/components/schemas/GeneralEvent'

    ArrayOfGeneralVmErrorEvent:
      type: object
      description: |2
        A boxed array of *GeneralVmErrorEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/GeneralVmErrorEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    GeneralVmInfoEvent:
      type: object
      description: |2
        This event is the general information event for a virtual machine.
      allOf:
        - $ref: '#/components/schemas/GeneralEvent'

    ArrayOfGeneralVmInfoEvent:
      type: object
      description: |2
        A boxed array of *GeneralVmInfoEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/GeneralVmInfoEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    GeneralVmWarningEvent:
      type: object
      description: |2
        This event is the general warning event for a virtual machine.
      allOf:
        - $ref: '#/components/schemas/GeneralEvent'

    ArrayOfGeneralVmWarningEvent:
      type: object
      description: |2
        A boxed array of *GeneralVmWarningEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/GeneralVmWarningEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    GhostDvsProxySwitchDetectedEvent:
      type: object
      description: |2
        This event records when Virtual Center server found DVS proxy switches
        on the host that don't match any DVS defined in Virtual Center.
      properties:
        switchUuid:
          description: |2
            The list of ghost DVS proxy switch uuids that were found.
          type: array
          items:
            type: string
      required:
        - switchUuid
      allOf:
        - $ref: '#/components/schemas/HostEvent'

    ArrayOfGhostDvsProxySwitchDetectedEvent:
      type: object
      description: |2
        A boxed array of *GhostDvsProxySwitchDetectedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/GhostDvsProxySwitchDetectedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    GhostDvsProxySwitchRemovedEvent:
      type: object
      description: |2
        This event records when the ghost DVS proxy switches (a.k.a host
        proxy switches that don't match any DVS defined in Virtual Center)
        were removed on the host.
      properties:
        switchUuid:
          description: |2
            The list of ghost DVS proxy switch uuid that were removed.
          type: array
          items:
            type: string
      required:
        - switchUuid
      allOf:
        - $ref: '#/components/schemas/HostEvent'

    ArrayOfGhostDvsProxySwitchRemovedEvent:
      type: object
      description: |2
        A boxed array of *GhostDvsProxySwitchRemovedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/GhostDvsProxySwitchRemovedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    GlobalMessageChangedEvent:
      type: object
      description: |2
        This event records a change to the global message.
      properties:
        message:
          description: |2
            The new message that was set.
          type: string
        prevMessage:
          description: |2
            The previous message that was set.
          type: string
      required:
        - message
      allOf:
        - $ref: '#/components/schemas/SessionEvent'

    ArrayOfGlobalMessageChangedEvent:
      type: object
      description: |2
        A boxed array of *GlobalMessageChangedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/GlobalMessageChangedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HealthStatusChangedEvent:
      type: object
      description: |2
        Event used to report change in health status of VirtualCenter components.
      properties:
        componentId:
          description: |2
            Unique ID of the VirtualCenter component.
          type: string
        oldStatus:
          description: |2
            Previous health status of the component.
          type: string
        newStatus:
          description: |2
            Current health status of the component.
          type: string
        componentName:
          description: |2
            Component name.
          type: string
        serviceId:
          description: |2
            Service Id of component.
          type: string
      required:
        - componentId
        - oldStatus
        - newStatus
        - componentName
      allOf:
        - $ref: '#/components/schemas/Event'

    ArrayOfHealthStatusChangedEvent:
      type: object
      description: |2
        A boxed array of *HealthStatusChangedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HealthStatusChangedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostAddFailedEvent:
      type: object
      description: |2
        This event records that adding a host failed.
      properties:
        hostname:
          type: string
      required:
        - hostname
      allOf:
        - $ref: '#/components/schemas/HostEvent'

    ArrayOfHostAddFailedEvent:
      type: object
      description: |2
        A boxed array of *HostAddFailedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostAddFailedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostAddedEvent:
      type: object
      description: |2
        This event records the addition of a host to VirtualCenter.
      allOf:
        - $ref: '#/components/schemas/HostEvent'

    ArrayOfHostAddedEvent:
      type: object
      description: |2
        A boxed array of *HostAddedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostAddedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostAdminDisableEvent:
      type: object
      description: |2
        This event records that the permission on the host has been changed such
        that only the user account used for VirtualCenter operation will have
        Administrator permission.
      allOf:
        - $ref: '#/components/schemas/HostEvent'

    ArrayOfHostAdminDisableEvent:
      type: object
      description: |2
        A boxed array of *HostAdminDisableEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostAdminDisableEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostAdminEnableEvent:
      type: object
      description: |2
        This event records that the administrator permission has been restored.
      allOf:
        - $ref: '#/components/schemas/HostEvent'

    ArrayOfHostAdminEnableEvent:
      type: object
      description: |2
        A boxed array of *HostAdminEnableEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostAdminEnableEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostCnxFailedAccountFailedEvent:
      type: object
      description: |2
        This event records a failure to connect to a host
        due to a failure to set up a management account.
      allOf:
        - $ref: '#/components/schemas/HostEvent'

    ArrayOfHostCnxFailedAccountFailedEvent:
      type: object
      description: |2
        A boxed array of *HostCnxFailedAccountFailedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostCnxFailedAccountFailedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostCnxFailedAlreadyManagedEvent:
      type: object
      description: |2
        This event records a failure to connect to a host
        due to the host being managed by a different VirtualCenter server.
      properties:
        serverName:
          description: |2
            The name of the VirtualCenter server that manages the host.
          type: string
      required:
        - serverName
      allOf:
        - $ref: '#/components/schemas/HostEvent'

    ArrayOfHostCnxFailedAlreadyManagedEvent:
      type: object
      description: |2
        A boxed array of *HostCnxFailedAlreadyManagedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostCnxFailedAlreadyManagedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostCnxFailedBadCcagentEvent:
      type: object
      description: |2
        This event records a failure to connect to a host
        due to no response being received from the host agent.
      allOf:
        - $ref: '#/components/schemas/HostEvent'

    ArrayOfHostCnxFailedBadCcagentEvent:
      type: object
      description: |2
        A boxed array of *HostCnxFailedBadCcagentEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostCnxFailedBadCcagentEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostCnxFailedBadUsernameEvent:
      type: object
      description: |2
        This event records a failure to connect to a host
        due to an invalid user name and password combination.
      allOf:
        - $ref: '#/components/schemas/HostEvent'

    ArrayOfHostCnxFailedBadUsernameEvent:
      type: object
      description: |2
        A boxed array of *HostCnxFailedBadUsernameEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostCnxFailedBadUsernameEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostCnxFailedBadVersionEvent:
      type: object
      description: |2
        This event records a failure to connect to a host
        due to an incompatible client version.
      allOf:
        - $ref: '#/components/schemas/HostEvent'

    ArrayOfHostCnxFailedBadVersionEvent:
      type: object
      description: |2
        A boxed array of *HostCnxFailedBadVersionEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostCnxFailedBadVersionEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostCnxFailedCcagentUpgradeEvent:
      type: object
      description: |2
        This event records a failure to connect to a host
        due to a conflict with an upgrade or installation of the host agent.
      allOf:
        - $ref: '#/components/schemas/HostEvent'

    ArrayOfHostCnxFailedCcagentUpgradeEvent:
      type: object
      description: |2
        A boxed array of *HostCnxFailedCcagentUpgradeEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostCnxFailedCcagentUpgradeEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostCnxFailedEvent:
      type: object
      description: |2
        This event records a failure to connect to a host
        due to an unspecified condition.
      allOf:
        - $ref: '#/components/schemas/HostEvent'

    ArrayOfHostCnxFailedEvent:
      type: object
      description: |2
        A boxed array of *HostCnxFailedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostCnxFailedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostCnxFailedNetworkErrorEvent:
      type: object
      description: |2
        This event records a failure to connect to a host
        due to a network error.
      allOf:
        - $ref: '#/components/schemas/HostEvent'

    ArrayOfHostCnxFailedNetworkErrorEvent:
      type: object
      description: |2
        A boxed array of *HostCnxFailedNetworkErrorEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostCnxFailedNetworkErrorEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostCnxFailedNoAccessEvent:
      type: object
      description: |2
        This event records a failure to connect to a host
        due to insufficient account privileges.
      allOf:
        - $ref: '#/components/schemas/HostEvent'

    ArrayOfHostCnxFailedNoAccessEvent:
      type: object
      description: |2
        A boxed array of *HostCnxFailedNoAccessEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostCnxFailedNoAccessEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostCnxFailedNoConnectionEvent:
      type: object
      description: |2
        This event records a failure to connect to a host
        due to a host not being present on the network.
      allOf:
        - $ref: '#/components/schemas/HostEvent'

    ArrayOfHostCnxFailedNoConnectionEvent:
      type: object
      description: |2
        A boxed array of *HostCnxFailedNoConnectionEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostCnxFailedNoConnectionEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostCnxFailedNoLicenseEvent:
      type: object
      description: |2
        This event records a failure to connect to a host
        due to a licensing issue.
      allOf:
        - $ref: '#/components/schemas/HostEvent'

    ArrayOfHostCnxFailedNoLicenseEvent:
      type: object
      description: |2
        A boxed array of *HostCnxFailedNoLicenseEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostCnxFailedNoLicenseEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostCnxFailedNotFoundEvent:
      type: object
      description: |2
        This event records a failure to connect to a host
        due to a failure to resolve the host name.
      allOf:
        - $ref: '#/components/schemas/HostEvent'

    ArrayOfHostCnxFailedNotFoundEvent:
      type: object
      description: |2
        A boxed array of *HostCnxFailedNotFoundEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostCnxFailedNotFoundEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostCnxFailedTimeoutEvent:
      type: object
      description: |2
        This event records a failure to connect to a host
        due to a timeout on the connection attempt.
      allOf:
        - $ref: '#/components/schemas/HostEvent'

    ArrayOfHostCnxFailedTimeoutEvent:
      type: object
      description: |2
        A boxed array of *HostCnxFailedTimeoutEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostCnxFailedTimeoutEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostComplianceCheckedEvent:
      type: object
      description: |2
        This event records that a compliance check was triggered
        on the host.
      properties:
        profile:
          $ref: '#/components/schemas/ProfileEventArgument'
      required:
        - profile
      allOf:
        - $ref: '#/components/schemas/HostEvent'

    ArrayOfHostComplianceCheckedEvent:
      type: object
      description: |2
        A boxed array of *HostComplianceCheckedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostComplianceCheckedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostCompliantEvent:
      type: object
      description: |2
        This event records that host is in compliance.
      allOf:
        - $ref: '#/components/schemas/HostEvent'

    ArrayOfHostCompliantEvent:
      type: object
      description: |2
        A boxed array of *HostCompliantEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostCompliantEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostConfigAppliedEvent:
      type: object
      description: |2
        This event records that a configuration was applied on a host
      allOf:
        - $ref: '#/components/schemas/HostEvent'

    ArrayOfHostConfigAppliedEvent:
      type: object
      description: |2
        A boxed array of *HostConfigAppliedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostConfigAppliedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostConnectedEvent:
      type: object
      description: |2
        This event records a successful host connection.
      allOf:
        - $ref: '#/components/schemas/HostEvent'

    ArrayOfHostConnectedEvent:
      type: object
      description: |2
        A boxed array of *HostConnectedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostConnectedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostConnectionLostEvent:
      type: object
      description: |2
        This event records the loss of a host connection.
      allOf:
        - $ref: '#/components/schemas/HostEvent'

    ArrayOfHostConnectionLostEvent:
      type: object
      description: |2
        A boxed array of *HostConnectionLostEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostConnectionLostEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostDasDisabledEvent:
      type: object
      description: |2
        This event records when HA has been disabled on a host.
      allOf:
        - $ref: '#/components/schemas/HostEvent'

    ArrayOfHostDasDisabledEvent:
      type: object
      description: |2
        A boxed array of *HostDasDisabledEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostDasDisabledEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostDasDisablingEvent:
      type: object
      deprecated: true
      description: |2
        Deprecated as of vSphere API 5.0, the event is no longer relevant.
        
        This event records when HA is being disabled on a host.
      allOf:
        - $ref: '#/components/schemas/HostEvent'

    ArrayOfHostDasDisablingEvent:
      type: object
      description: |2
        A boxed array of *HostDasDisablingEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostDasDisablingEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostDasEnabledEvent:
      type: object
      description: |2
        This event records when HA has been enabled on a host.
      allOf:
        - $ref: '#/components/schemas/HostEvent'

    ArrayOfHostDasEnabledEvent:
      type: object
      description: |2
        A boxed array of *HostDasEnabledEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostDasEnabledEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostDasEnablingEvent:
      type: object
      description: |2
        This event records when HA is being enabled on a host.
      allOf:
        - $ref: '#/components/schemas/HostEvent'

    ArrayOfHostDasEnablingEvent:
      type: object
      description: |2
        A boxed array of *HostDasEnablingEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostDasEnablingEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostDasErrorEvent:
      type: object
      deprecated: true
      description: |2
        Deprecated as of vSphere API 5.0, the Server will generate the *EventEx* event
        with the *EventEx.eventTypeId* property set to "com.vmware.vc.HA.HostAgentErrorEvent".
        
        This event records when there is a HA error on a host.
      properties:
        message:
          type: string
        reason:
          description: |2
            The reason for the failure.
          type: string
      allOf:
        - $ref: '#/components/schemas/HostEvent'

    ArrayOfHostDasErrorEvent:
      type: object
      description: |2
        A boxed array of *HostDasErrorEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostDasErrorEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostDasEvent:
      type: object
      description: |2
        Top-level event for host DAS events to extend.
      allOf:
        - $ref: '#/components/schemas/HostEvent'

    ArrayOfHostDasEvent:
      type: object
      description: |2
        A boxed array of *HostDasEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostDasEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostDasOkEvent:
      type: object
      deprecated: true
      description: |2
        Deprecated as of vSphere API 5.0, the event is no longer relevant.
        
        This event records when HA on a host returns to normal after an error.
      allOf:
        - $ref: '#/components/schemas/HostEvent'

    ArrayOfHostDasOkEvent:
      type: object
      description: |2
        A boxed array of *HostDasOkEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostDasOkEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostDisconnectedEvent:
      type: object
      description: |2
        This event records a disconnection from a host.
      properties:
        reason:
          description: |2
            Reason why the host was disconnected.
          type: string
      allOf:
        - $ref: '#/components/schemas/HostEvent'

    ArrayOfHostDisconnectedEvent:
      type: object
      description: |2
        A boxed array of *HostDisconnectedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostDisconnectedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostEnableAdminFailedEvent:
      type: object
      description: |2
        This event records the failure to restore some of the administrator's permissions.
      properties:
        permissions:
          type: array
          items:
            $ref: '#/components/schemas/Permission'
      required:
        - permissions
      allOf:
        - $ref: '#/components/schemas/HostEvent'

    ArrayOfHostEnableAdminFailedEvent:
      type: object
      description: |2
        A boxed array of *HostEnableAdminFailedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostEnableAdminFailedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostEvent:
      type: object
      description: |2
        These are host-related events.
      allOf:
        - $ref: '#/components/schemas/Event'

    ArrayOfHostEvent:
      type: object
      description: |2
        A boxed array of *HostEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostEventArgument:
      type: object
      description: |2
        The event argument is a Host object.
      properties:
        host:
          description: |2
            The host object.
            
            Refers instance of *HostSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - host
      allOf:
        - $ref: '#/components/schemas/EntityEventArgument'

    ArrayOfHostEventArgument:
      type: object
      description: |2
        A boxed array of *HostEventArgument*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostEventArgument'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostExtraNetworksEvent:
      type: object
      deprecated: true
      description: |2
        Deprecated as of vSphere API 5.0, the event is no longer relevant.
        
        This event records the fact that a host has extra networks not used by
        other hosts for HA communication
      properties:
        ips:
          description: |2
            The comma-separated list of extra networks
          type: string
      allOf:
        - $ref: '#/components/schemas/HostDasEvent'

    ArrayOfHostExtraNetworksEvent:
      type: object
      description: |2
        A boxed array of *HostExtraNetworksEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostExtraNetworksEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostGetShortNameFailedEvent:
      type: object
      deprecated: true
      description: |2
        Deprecated as of vSphere API 5.0, the event is no longer relevant.
        
        This event records that hostname -s failed or returned a name containing '.'.
      allOf:
        - $ref: '#/components/schemas/HostEvent'

    ArrayOfHostGetShortNameFailedEvent:
      type: object
      description: |2
        A boxed array of *HostGetShortNameFailedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostGetShortNameFailedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostInAuditModeEvent:
      type: object
      description: |2
        Host is booted in audit mode.
      allOf:
        - $ref: '#/components/schemas/HostEvent'

    ArrayOfHostInAuditModeEvent:
      type: object
      description: |2
        A boxed array of *HostInAuditModeEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostInAuditModeEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostInventoryFullEvent:
      type: object
      description: |2
        This event records if the inventory of hosts has reached capacity.
      properties:
        capacity:
          type: integer
          format: int32
      required:
        - capacity
      allOf:
        - $ref: '#/components/schemas/LicenseEvent'

    ArrayOfHostInventoryFullEvent:
      type: object
      description: |2
        A boxed array of *HostInventoryFullEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostInventoryFullEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostInventoryUnreadableEvent:
      type: object
      description: |2
        Event indicating that the virtual machine inventory
        file on the host is damaged or unreadable.
      allOf:
        - $ref: '#/components/schemas/Event'

    ArrayOfHostInventoryUnreadableEvent:
      type: object
      description: |2
        A boxed array of *HostInventoryUnreadableEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostInventoryUnreadableEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostIpChangedEvent:
      type: object
      description: |2
        This event records a change in host IP address.
      properties:
        oldIP:
          description: |2
            Old IP address of the host.
          type: string
        newIP:
          description: |2
            New IP address of the host.
          type: string
      required:
        - oldIP
        - newIP
      allOf:
        - $ref: '#/components/schemas/HostEvent'

    ArrayOfHostIpChangedEvent:
      type: object
      description: |2
        A boxed array of *HostIpChangedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostIpChangedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostIpInconsistentEvent:
      type: object
      deprecated: true
      description: |2
        Deprecated as of vSphere API 5.0, the event is no longer relevant.
        
        This event records that the IP address resolution returned different
        addresses on the host.
        
        Please check your host's network configuration.
      properties:
        ipAddress:
          type: string
        ipAddress2:
          type: string
      required:
        - ipAddress
        - ipAddress2
      allOf:
        - $ref: '#/components/schemas/HostEvent'

    ArrayOfHostIpInconsistentEvent:
      type: object
      description: |2
        A boxed array of *HostIpInconsistentEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostIpInconsistentEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostIpToShortNameFailedEvent:
      type: object
      deprecated: true
      description: |2
        Deprecated as of vSphere API 5.0, the event is no longer relevant.
        
        This event records that the host's IP address could not be resolved to a short name.
      allOf:
        - $ref: '#/components/schemas/HostEvent'

    ArrayOfHostIpToShortNameFailedEvent:
      type: object
      description: |2
        A boxed array of *HostIpToShortNameFailedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostIpToShortNameFailedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostIsolationIpPingFailedEvent:
      type: object
      description: |2
        This event records that the isolation address could not be pinged.
        
        The default isolation address is the service console's default gateway.
      properties:
        isolationIp:
          type: string
      required:
        - isolationIp
      allOf:
        - $ref: '#/components/schemas/HostDasEvent'

    ArrayOfHostIsolationIpPingFailedEvent:
      type: object
      description: |2
        A boxed array of *HostIsolationIpPingFailedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostIsolationIpPingFailedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostLicenseExpiredEvent:
      type: object
      description: |2
        This event records an expired host license.
      allOf:
        - $ref: '#/components/schemas/LicenseEvent'

    ArrayOfHostLicenseExpiredEvent:
      type: object
      description: |2
        A boxed array of *HostLicenseExpiredEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostLicenseExpiredEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostLocalPortCreatedEvent:
      type: object
      description: |2
        This event records when host local port is created to recover from
        management network connectivity loss.
      properties:
        hostLocalPort:
          description: |2
            The configuration of the new host local port.
          $ref: '#/components/schemas/DVSHostLocalPortInfo'
      required:
        - hostLocalPort
      allOf:
        - $ref: '#/components/schemas/DvsEvent'

    ArrayOfHostLocalPortCreatedEvent:
      type: object
      description: |2
        A boxed array of *HostLocalPortCreatedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostLocalPortCreatedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostMissingNetworksEvent:
      type: object
      deprecated: true
      description: |2
        Deprecated as of vSphere API 5.0, the event is no longer relevant.
        
        This event records the fact that a host is missing networks that
        other hosts are using for HA communication
      properties:
        ips:
          type: string
      allOf:
        - $ref: '#/components/schemas/HostDasEvent'

    ArrayOfHostMissingNetworksEvent:
      type: object
      description: |2
        A boxed array of *HostMissingNetworksEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostMissingNetworksEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostMonitoringStateChangedEvent:
      type: object
      description: |2
        This event records when host monitoring state has changed.
      properties:
        state:
          description: |2
            The service state in
            *ClusterDasConfigInfoServiceState_enum*
          type: string
        prevState:
          description: |2
            The previous service state in
            *ClusterDasConfigInfoServiceState_enum*
          type: string
      required:
        - state
      allOf:
        - $ref: '#/components/schemas/ClusterEvent'

    ArrayOfHostMonitoringStateChangedEvent:
      type: object
      description: |2
        A boxed array of *HostMonitoringStateChangedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostMonitoringStateChangedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostNoAvailableNetworksEvent:
      type: object
      description: |2
        This event records the fact that a host does not have any available networks
        for HA communication
      properties:
        ips:
          description: |2
            The comma-separated list of used networks
          type: string
      allOf:
        - $ref: '#/components/schemas/HostDasEvent'

    ArrayOfHostNoAvailableNetworksEvent:
      type: object
      description: |2
        A boxed array of *HostNoAvailableNetworksEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostNoAvailableNetworksEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostNoHAEnabledPortGroupsEvent:
      type: object
      description: |2
        This event records the fact that a host does not have any HA-enabled port
        groups
      allOf:
        - $ref: '#/components/schemas/HostDasEvent'

    ArrayOfHostNoHAEnabledPortGroupsEvent:
      type: object
      description: |2
        A boxed array of *HostNoHAEnabledPortGroupsEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostNoHAEnabledPortGroupsEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostNoRedundantManagementNetworkEvent:
      type: object
      description: |2
        This event records the fact that a host does not have a redundant
        management network.
        
        It is recommended that host management networks
        be configured with redundancy.
      allOf:
        - $ref: '#/components/schemas/HostDasEvent'

    ArrayOfHostNoRedundantManagementNetworkEvent:
      type: object
      description: |2
        A boxed array of *HostNoRedundantManagementNetworkEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostNoRedundantManagementNetworkEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostNonCompliantEvent:
      type: object
      description: |2
        This event records that host went out of compliance.
      allOf:
        - $ref: '#/components/schemas/HostEvent'

    ArrayOfHostNonCompliantEvent:
      type: object
      description: |2
        A boxed array of *HostNonCompliantEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostNonCompliantEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostNotInClusterEvent:
      type: object
      description: |2
        This event records that the host is not a cluster member.
      allOf:
        - $ref: '#/components/schemas/HostDasEvent'

    ArrayOfHostNotInClusterEvent:
      type: object
      description: |2
        A boxed array of *HostNotInClusterEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostNotInClusterEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostOvercommittedEvent:
      type: object
      description: |2
        This event records when a host's capacity cannot satisfy resource
        configuration constraints.
      allOf:
        - $ref: '#/components/schemas/ClusterOvercommittedEvent'

    ArrayOfHostOvercommittedEvent:
      type: object
      description: |2
        A boxed array of *HostOvercommittedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostOvercommittedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostPrimaryAgentNotShortNameEvent:
      type: object
      deprecated: true
      description: |2
        Deprecated as of vSphere API 5.0, the event is no longer relevant.
        
        This event records that the primary agent specified is not a short name.
        
        The name of the primary agent is usually stored as a short name. You should
        not normally see this error. Please check the network configurations of your
        hosts.
      properties:
        primaryAgent:
          type: string
      required:
        - primaryAgent
      allOf:
        - $ref: '#/components/schemas/HostDasEvent'

    ArrayOfHostPrimaryAgentNotShortNameEvent:
      type: object
      description: |2
        A boxed array of *HostPrimaryAgentNotShortNameEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostPrimaryAgentNotShortNameEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostProfileAppliedEvent:
      type: object
      description: |2
        This event records that a Profile application was done
        on the host
      properties:
        profile:
          description: |2
            Link to the profile which was applied
          $ref: '#/components/schemas/ProfileEventArgument'
      required:
        - profile
      allOf:
        - $ref: '#/components/schemas/HostEvent'

    ArrayOfHostProfileAppliedEvent:
      type: object
      description: |2
        A boxed array of *HostProfileAppliedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostProfileAppliedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostReconnectionFailedEvent:
      type: object
      description: |2
        This event records a failed attempt to re-establish a host connection.
      allOf:
        - $ref: '#/components/schemas/HostEvent'

    ArrayOfHostReconnectionFailedEvent:
      type: object
      description: |2
        A boxed array of *HostReconnectionFailedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostReconnectionFailedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostRemovedEvent:
      type: object
      description: |2
        This event records the removal of a host from VirtualCenter.
      allOf:
        - $ref: '#/components/schemas/HostEvent'

    ArrayOfHostRemovedEvent:
      type: object
      description: |2
        A boxed array of *HostRemovedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostRemovedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostShortNameInconsistentEvent:
      type: object
      deprecated: true
      description: |2
        Deprecated as of vSphere API 5.0, the event is no longer relevant.
        
        This event records that host name resolution returned different names on
        the host.
        
        Please check your host's network configuration and your DNS
        configuration. There may be duplicate entries.
      properties:
        shortName:
          type: string
        shortName2:
          type: string
      required:
        - shortName
        - shortName2
      allOf:
        - $ref: '#/components/schemas/HostDasEvent'

    ArrayOfHostShortNameInconsistentEvent:
      type: object
      description: |2
        A boxed array of *HostShortNameInconsistentEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostShortNameInconsistentEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostShortNameToIpFailedEvent:
      type: object
      deprecated: true
      description: |2
        Deprecated as of vSphere API 5.0, the event is no longer relevant.
        
        This event records that the host's short name could not be resolved to an IP address.
      properties:
        shortName:
          type: string
      required:
        - shortName
      allOf:
        - $ref: '#/components/schemas/HostEvent'

    ArrayOfHostShortNameToIpFailedEvent:
      type: object
      description: |2
        A boxed array of *HostShortNameToIpFailedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostShortNameToIpFailedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostShutdownEvent:
      type: object
      description: |2
        This event records the shutdown of a host.
      properties:
        reason:
          description: |2
            The reason for the host shutdown.
          type: string
      required:
        - reason
      allOf:
        - $ref: '#/components/schemas/HostEvent'

    ArrayOfHostShutdownEvent:
      type: object
      description: |2
        A boxed array of *HostShutdownEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostShutdownEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostSpecificationChangedEvent:
      type: object
      description: |2
        This event records that the host specification was changed.
      allOf:
        - $ref: '#/components/schemas/HostEvent'

    ArrayOfHostSpecificationChangedEvent:
      type: object
      description: |2
        A boxed array of *HostSpecificationChangedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostSpecificationChangedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostSpecificationRequireEvent:
      type: object
      description: |2
        This event is issued to that the host specification should be updated.
      allOf:
        - $ref: '#/components/schemas/HostEvent'

    ArrayOfHostSpecificationRequireEvent:
      type: object
      description: |2
        A boxed array of *HostSpecificationRequireEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostSpecificationRequireEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostSpecificationUpdateEvent:
      type: object
      description: |2
        This event suggests that update the host specification with the
        encapsulated copy.
      properties:
        hostSpec:
          $ref: '#/components/schemas/HostSpecification'
      required:
        - hostSpec
      allOf:
        - $ref: '#/components/schemas/HostEvent'

    ArrayOfHostSpecificationUpdateEvent:
      type: object
      description: |2
        A boxed array of *HostSpecificationUpdateEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostSpecificationUpdateEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostStatusChangedEvent:
      type: object
      description: |2
        This event records when a host's overall status changed.
      allOf:
        - $ref: '#/components/schemas/ClusterStatusChangedEvent'

    ArrayOfHostStatusChangedEvent:
      type: object
      description: |2
        A boxed array of *HostStatusChangedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostStatusChangedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostSubSpecificationDeleteEvent:
      type: object
      description: |2
        This event suggests that delete the host sub specification specified by
        name.
      properties:
        subSpecName:
          type: string
      required:
        - subSpecName
      allOf:
        - $ref: '#/components/schemas/HostEvent'

    ArrayOfHostSubSpecificationDeleteEvent:
      type: object
      description: |2
        A boxed array of *HostSubSpecificationDeleteEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostSubSpecificationDeleteEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostSubSpecificationUpdateEvent:
      type: object
      description: |2
        This event suggests that update the host sub specification with the
        encapsulated copy.
      properties:
        hostSubSpec:
          $ref: '#/components/schemas/HostSubSpecification'
      required:
        - hostSubSpec
      allOf:
        - $ref: '#/components/schemas/HostEvent'

    ArrayOfHostSubSpecificationUpdateEvent:
      type: object
      description: |2
        A boxed array of *HostSubSpecificationUpdateEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostSubSpecificationUpdateEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostSyncFailedEvent:
      type: object
      description: |2
        This event records a failure to sync up with the VirtualCenter agent on the host
      properties:
        reason:
          description: |2
            The reason for the failure.
          $ref: '#/components/schemas/MethodFault'
      required:
        - reason
      allOf:
        - $ref: '#/components/schemas/HostEvent'

    ArrayOfHostSyncFailedEvent:
      type: object
      description: |2
        A boxed array of *HostSyncFailedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostSyncFailedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostUpgradeFailedEvent:
      type: object
      description: |2
        This event records a failure to connect to a host
        due to an installation or upgrade issue.
      allOf:
        - $ref: '#/components/schemas/HostEvent'

    ArrayOfHostUpgradeFailedEvent:
      type: object
      description: |2
        A boxed array of *HostUpgradeFailedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostUpgradeFailedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostUserWorldSwapNotEnabledEvent:
      type: object
      deprecated: true
      description: |2
        Deprecated as of vSphere API 5.0, the event is no longer relevant.
        
        This event records that the userworld swap is not enabled on the host.
        
        HA
        needs userworld swap to be configured on embedded ESX hosts to function.
      allOf:
        - $ref: '#/components/schemas/HostEvent'

    ArrayOfHostUserWorldSwapNotEnabledEvent:
      type: object
      description: |2
        A boxed array of *HostUserWorldSwapNotEnabledEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostUserWorldSwapNotEnabledEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostVnicConnectedToCustomizedDVPortEvent:
      type: object
      description: |2
        This event records when some host Virtual NICs were reconfigured to use
        DVPorts with port level configuration, which might be different
        from the DVportgroup.
      properties:
        vnic:
          description: |2
            Information about the Virtual NIC that is using the DVport.
          $ref: '#/components/schemas/VnicPortArgument'
        prevPortKey:
          description: |2
            Information about the previous Virtual NIC that is using the DVport.
          type: string
      required:
        - vnic
      allOf:
        - $ref: '#/components/schemas/HostEvent'

    ArrayOfHostVnicConnectedToCustomizedDVPortEvent:
      type: object
      description: |2
        A boxed array of *HostVnicConnectedToCustomizedDVPortEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostVnicConnectedToCustomizedDVPortEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostWwnChangedEvent:
      type: object
      description: |2
        This event records a change in a host's WWN (World Wide Name).
      properties:
        oldNodeWwns:
          description: |2
            The old node WWN.
          type: array
          items:
            type: integer
            format: int64
        oldPortWwns:
          description: |2
            The old port WWN.
          type: array
          items:
            type: integer
            format: int64
        newNodeWwns:
          description: |2
            The new node WWN.
          type: array
          items:
            type: integer
            format: int64
        newPortWwns:
          description: |2
            The new port WWN.
          type: array
          items:
            type: integer
            format: int64
      allOf:
        - $ref: '#/components/schemas/HostEvent'

    ArrayOfHostWwnChangedEvent:
      type: object
      description: |2
        A boxed array of *HostWwnChangedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostWwnChangedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostWwnConflictEvent:
      type: object
      description: |2
        This event records a conflict of host WWNs (World Wide Name).
      properties:
        conflictedVms:
          description: |2
            The virtual machine whose WWN conflicts with the
            current host's WWN.
          type: array
          items:
            $ref: '#/components/schemas/VmEventArgument'
        conflictedHosts:
          description: |2
            The host whose physical WWN conflicts with the
            current host's WWN.
          type: array
          items:
            $ref: '#/components/schemas/HostEventArgument'
        wwn:
          description: |2
            The WWN in conflict.
          type: integer
          format: int64
      required:
        - wwn
      allOf:
        - $ref: '#/components/schemas/HostEvent'

    ArrayOfHostWwnConflictEvent:
      type: object
      description: |2
        A boxed array of *HostWwnConflictEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostWwnConflictEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    IncorrectHostInformationEvent:
      type: object
      description: |2
        This event records if the host did not provide the information needed
        to acquire the correct set of licenses.
      allOf:
        - $ref: '#/components/schemas/LicenseEvent'

    ArrayOfIncorrectHostInformationEvent:
      type: object
      description: |2
        A boxed array of *IncorrectHostInformationEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/IncorrectHostInformationEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    InfoUpgradeEvent:
      type: object
      description: |2
        This event is a general information event from upgrade.
      allOf:
        - $ref: '#/components/schemas/UpgradeEvent'

    ArrayOfInfoUpgradeEvent:
      type: object
      description: |2
        A boxed array of *InfoUpgradeEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/InfoUpgradeEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    InsufficientFailoverResourcesEvent:
      type: object
      description: |2
        This event records that the cluster resources are insufficient
        to satisfy the configured HA failover level.
      allOf:
        - $ref: '#/components/schemas/ClusterEvent'

    ArrayOfInsufficientFailoverResourcesEvent:
      type: object
      description: |2
        A boxed array of *InsufficientFailoverResourcesEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/InsufficientFailoverResourcesEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    InvalidEditionEvent:
      type: object
      description: |2
        This event records if the edition is set to an invalid value.
      properties:
        feature:
          type: string
      required:
        - feature
      allOf:
        - $ref: '#/components/schemas/LicenseEvent'

    ArrayOfInvalidEditionEvent:
      type: object
      description: |2
        A boxed array of *InvalidEditionEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/InvalidEditionEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    LicenseEvent:
      type: object
      description: |2
        This is a base licensing event to group all license events.
      allOf:
        - $ref: '#/components/schemas/Event'

    ArrayOfLicenseEvent:
      type: object
      description: |2
        A boxed array of *LicenseEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/LicenseEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    LicenseExpiredEvent:
      type: object
      description: |2
        This event records the expiration of a license.
      properties:
        feature:
          $ref: '#/components/schemas/LicenseFeatureInfo'
      required:
        - feature
      allOf:
        - $ref: '#/components/schemas/Event'

    ArrayOfLicenseExpiredEvent:
      type: object
      description: |2
        A boxed array of *LicenseExpiredEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/LicenseExpiredEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    LicenseNonComplianceEvent:
      type: object
      description: |2
        This event records that the inventory is not license compliant.
      properties:
        url:
          description: |2
            Gives the url at which more details about non-compliance
            can be found.
          type: string
      required:
        - url
      allOf:
        - $ref: '#/components/schemas/LicenseEvent'

    ArrayOfLicenseNonComplianceEvent:
      type: object
      description: |2
        A boxed array of *LicenseNonComplianceEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/LicenseNonComplianceEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    LicenseRestrictedEvent:
      type: object
      description: |2
        This event records if the required licenses could not be reserved because
        of a restriction in the option file.
      allOf:
        - $ref: '#/components/schemas/LicenseEvent'

    ArrayOfLicenseRestrictedEvent:
      type: object
      description: |2
        A boxed array of *LicenseRestrictedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/LicenseRestrictedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    LicenseServerAvailableEvent:
      type: object
      description: |2
        This event is reported if the LicenseServer was previously unreachable
        and is now reachable.
      properties:
        licenseServer:
          type: string
      required:
        - licenseServer
      allOf:
        - $ref: '#/components/schemas/LicenseEvent'

    ArrayOfLicenseServerAvailableEvent:
      type: object
      description: |2
        A boxed array of *LicenseServerAvailableEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/LicenseServerAvailableEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    LicenseServerUnavailableEvent:
      type: object
      description: |2
        This event is reported if the LicenseServer becomes unreachable.
      properties:
        licenseServer:
          type: string
      required:
        - licenseServer
      allOf:
        - $ref: '#/components/schemas/LicenseEvent'

    ArrayOfLicenseServerUnavailableEvent:
      type: object
      description: |2
        A boxed array of *LicenseServerUnavailableEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/LicenseServerUnavailableEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    LocalDatastoreCreatedEvent:
      type: object
      description: |2
        This event records when a local datastore is created.
      properties:
        datastore:
          description: |2
            The associated datastore.
          $ref: '#/components/schemas/DatastoreEventArgument'
        datastoreUrl:
          description: |2
            Url of the associated datastore.
          type: string
      required:
        - datastore
      allOf:
        - $ref: '#/components/schemas/HostEvent'

    ArrayOfLocalDatastoreCreatedEvent:
      type: object
      description: |2
        A boxed array of *LocalDatastoreCreatedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/LocalDatastoreCreatedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    LocalTSMEnabledEvent:
      type: object
      description: |2
        Local Tech Support Mode for the host has been enabled.
      allOf:
        - $ref: '#/components/schemas/HostEvent'

    ArrayOfLocalTSMEnabledEvent:
      type: object
      description: |2
        A boxed array of *LocalTSMEnabledEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/LocalTSMEnabledEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    LockerMisconfiguredEvent:
      type: object
      description: |2
        Locker has not been configured properly.
        
        This event is fired when the datastore configured to back the locker
        does not exist or when connectivity to the datastore is lost.
      properties:
        datastore:
          description: |2
            The datastore that has been configured to back the locker
          $ref: '#/components/schemas/DatastoreEventArgument'
      required:
        - datastore
      allOf:
        - $ref: '#/components/schemas/Event'

    ArrayOfLockerMisconfiguredEvent:
      type: object
      description: |2
        A boxed array of *LockerMisconfiguredEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/LockerMisconfiguredEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    LockerReconfiguredEvent:
      type: object
      description: |2
        Locker was reconfigured to a new location.
      properties:
        oldDatastore:
          description: |2
            The datastore that was previously backing the locker.
            
            This field is not
            set if a datastore was not backing the locker previously.
          $ref: '#/components/schemas/DatastoreEventArgument'
        newDatastore:
          description: |2
            The datastore that is now used to back the locker.
            
            This field is not set if no datastore is currently backing the locker.
          $ref: '#/components/schemas/DatastoreEventArgument'
      allOf:
        - $ref: '#/components/schemas/Event'

    ArrayOfLockerReconfiguredEvent:
      type: object
      description: |2
        A boxed array of *LockerReconfiguredEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/LockerReconfiguredEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ManagedEntityEventArgument:
      type: object
      description: |2
        The general event argument for a managed entity.
      properties:
        entity:
          description: |2
            The managed entity.
            
            Refers instance of *ManagedEntity*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - entity
      allOf:
        - $ref: '#/components/schemas/EntityEventArgument'

    ArrayOfManagedEntityEventArgument:
      type: object
      description: |2
        A boxed array of *ManagedEntityEventArgument*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ManagedEntityEventArgument'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    MigrationErrorEvent:
      type: object
      description: |2
        A migration error.
      allOf:
        - $ref: '#/components/schemas/MigrationEvent'

    ArrayOfMigrationErrorEvent:
      type: object
      description: |2
        A boxed array of *MigrationErrorEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/MigrationErrorEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    MigrationEvent:
      type: object
      description: |2
        These are events used to describe migration warning and errors
      properties:
        fault:
          description: |2
            The fault that describes the migration issue.
            
            This is typically either a
            MigrationFault or a VmConfigFault.
          $ref: '#/components/schemas/MethodFault'
      required:
        - fault
      allOf:
        - $ref: '#/components/schemas/VmEvent'

    ArrayOfMigrationEvent:
      type: object
      description: |2
        A boxed array of *MigrationEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/MigrationEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    MigrationHostErrorEvent:
      type: object
      description: |2
        A migration error that includes the destination host.
      properties:
        dstHost:
          description: |2
            The name of the destination host.
          $ref: '#/components/schemas/HostEventArgument'
      required:
        - dstHost
      allOf:
        - $ref: '#/components/schemas/MigrationEvent'

    ArrayOfMigrationHostErrorEvent:
      type: object
      description: |2
        A boxed array of *MigrationHostErrorEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/MigrationHostErrorEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    MigrationHostWarningEvent:
      type: object
      description: |2
        A migration warning that includes the destination host.
      properties:
        dstHost:
          description: |2
            The name of the destination host.
          $ref: '#/components/schemas/HostEventArgument'
      required:
        - dstHost
      allOf:
        - $ref: '#/components/schemas/MigrationEvent'

    ArrayOfMigrationHostWarningEvent:
      type: object
      description: |2
        A boxed array of *MigrationHostWarningEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/MigrationHostWarningEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    MigrationResourceErrorEvent:
      type: object
      description: |2
        A migration error that includes both the destination host and resource pool.
      properties:
        dstPool:
          description: |2
            The name of the destination resource pool.
          $ref: '#/components/schemas/ResourcePoolEventArgument'
        dstHost:
          description: |2
            The name of the destination host.
          $ref: '#/components/schemas/HostEventArgument'
      required:
        - dstPool
        - dstHost
      allOf:
        - $ref: '#/components/schemas/MigrationEvent'

    ArrayOfMigrationResourceErrorEvent:
      type: object
      description: |2
        A boxed array of *MigrationResourceErrorEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/MigrationResourceErrorEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    MigrationResourceWarningEvent:
      type: object
      description: |2
        A migration warning that includes both the destination host and resource pool.
      properties:
        dstPool:
          description: |2
            The name of the destination resource pool.
          $ref: '#/components/schemas/ResourcePoolEventArgument'
        dstHost:
          description: |2
            The name of the destination host.
          $ref: '#/components/schemas/HostEventArgument'
      required:
        - dstPool
        - dstHost
      allOf:
        - $ref: '#/components/schemas/MigrationEvent'

    ArrayOfMigrationResourceWarningEvent:
      type: object
      description: |2
        A boxed array of *MigrationResourceWarningEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/MigrationResourceWarningEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    MigrationWarningEvent:
      type: object
      description: |2
        A migration warning.
      allOf:
        - $ref: '#/components/schemas/MigrationEvent'

    ArrayOfMigrationWarningEvent:
      type: object
      description: |2
        A boxed array of *MigrationWarningEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/MigrationWarningEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    MtuMatchEvent:
      type: object
      description: |2
        The value of MTU configured in the vSphere Distributed Switch
        matches physical switch.
      allOf:
        - $ref: '#/components/schemas/DvsHealthStatusChangeEvent'

    ArrayOfMtuMatchEvent:
      type: object
      description: |2
        A boxed array of *MtuMatchEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/MtuMatchEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    MtuMismatchEvent:
      type: object
      description: |2
        The value of MTU configured in the vSphere Distributed Switch
        mismatches physical switch.
      allOf:
        - $ref: '#/components/schemas/DvsHealthStatusChangeEvent'

    ArrayOfMtuMismatchEvent:
      type: object
      description: |2
        A boxed array of *MtuMismatchEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/MtuMismatchEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    NASDatastoreCreatedEvent:
      type: object
      description: |2
        This event records when a NAS datastore is created.
      properties:
        datastore:
          description: |2
            The associated datastore.
          $ref: '#/components/schemas/DatastoreEventArgument'
        datastoreUrl:
          description: |2
            Url of the associated datastore.
          type: string
      required:
        - datastore
      allOf:
        - $ref: '#/components/schemas/HostEvent'

    ArrayOfNASDatastoreCreatedEvent:
      type: object
      description: |2
        A boxed array of *NASDatastoreCreatedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/NASDatastoreCreatedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    NetworkEventArgument:
      type: object
      description: |2
        The event argument is a Network object.
      properties:
        network:
          description: |2
            The Network object.
            
            Refers instance of *Network*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - network
      allOf:
        - $ref: '#/components/schemas/EntityEventArgument'

    ArrayOfNetworkEventArgument:
      type: object
      description: |2
        A boxed array of *NetworkEventArgument*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/NetworkEventArgument'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    NetworkRollbackEvent:
      type: object
      description: |2
        This event records when networking configuration on the host
        is rolled back as it disconnects the host from vCenter server.
      properties:
        methodName:
          description: |2
            Method name which caused the disconnect
          type: string
        transactionId:
          description: |2
            Transaction ID for the method call that caused the disconnect
          type: string
      required:
        - methodName
        - transactionId
      allOf:
        - $ref: '#/components/schemas/Event'

    ArrayOfNetworkRollbackEvent:
      type: object
      description: |2
        A boxed array of *NetworkRollbackEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/NetworkRollbackEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    NoAccessUserEvent:
      type: object
      description: |2
        This event records a failed user logon due to insufficient access permission.
      properties:
        ipAddress:
          description: |2
            The IP address of the peer that initiated the connection.
            
            This may
            be the client that originated the session, or it may be an intervening
            proxy if the binding uses a protocol that supports proxies, such as HTTP.
          type: string
      required:
        - ipAddress
      allOf:
        - $ref: '#/components/schemas/SessionEvent'

    ArrayOfNoAccessUserEvent:
      type: object
      description: |2
        A boxed array of *NoAccessUserEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/NoAccessUserEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    NoDatastoresConfiguredEvent:
      type: object
      description: |2
        No datastores have been configured on the host.
      allOf:
        - $ref: '#/components/schemas/HostEvent'

    ArrayOfNoDatastoresConfiguredEvent:
      type: object
      description: |2
        A boxed array of *NoDatastoresConfiguredEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/NoDatastoresConfiguredEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    NoLicenseEvent:
      type: object
      description: |2
        These are events reported by License Manager.
        
        A NoLicenseEvent is reported if the required licenses could not be
        reserved. Each feature that is not fully licensed is reported.
      properties:
        feature:
          $ref: '#/components/schemas/LicenseFeatureInfo'
      required:
        - feature
      allOf:
        - $ref: '#/components/schemas/LicenseEvent'

    ArrayOfNoLicenseEvent:
      type: object
      description: |2
        A boxed array of *NoLicenseEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/NoLicenseEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    NoMaintenanceModeDrsRecommendationForVM:
      type: object
      description: |2
        This event records that DRS did not recommend a migration for a
        powered on virtual machine, even though its host is going
        into maintenance mode.
        
        DRS may not be able to recommend a migration for a virtual machine
        for reasons, include but not limited to:
        - No other connected host is compatible with this virtual machine.
        - None of the other compatible hosts have sufficient resources
          to satisfy the reservation requirements of this virtual machine.
        - Moving to any other host would violate a DRS rule. For example, all
          other compatible hosts have some incompatible virtual machines
          running.
        - DRS is disabled on this virtual machine.
        - This virtual machine was still in the process of migrating
          into the host going into maintenance mode and was not
          considered by DRS.
        - This virtual machine was in the process of migrating to another
          host when the host tried to enter maintenance mode.
      allOf:
        - $ref: '#/components/schemas/VmEvent'

    ArrayOfNoMaintenanceModeDrsRecommendationForVM:
      type: object
      description: |2
        A boxed array of *NoMaintenanceModeDrsRecommendationForVM*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/NoMaintenanceModeDrsRecommendationForVM'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    NonVIWorkloadDetectedOnDatastoreEvent:
      type: object
      description: |2
        This event records that non-VI workload is detected on the datastore.
      allOf:
        - $ref: '#/components/schemas/DatastoreEvent'

    ArrayOfNonVIWorkloadDetectedOnDatastoreEvent:
      type: object
      description: |2
        A boxed array of *NonVIWorkloadDetectedOnDatastoreEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/NonVIWorkloadDetectedOnDatastoreEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    NotEnoughResourcesToStartVmEvent:
      type: object
      description: |2
        This event records when the HA does not find sufficient resources to failover a
        virtual machine.
      properties:
        reason:
          description: |2
            The reason why the virtual machine could not be restarted
          type: string
      required:
        - reason
      allOf:
        - $ref: '#/components/schemas/VmEvent'

    ArrayOfNotEnoughResourcesToStartVmEvent:
      type: object
      description: |2
        A boxed array of *NotEnoughResourcesToStartVmEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/NotEnoughResourcesToStartVmEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    OutOfSyncDvsHost:
      type: object
      description: |2
        The list of hosts that have the DVS configuration on the host
        diverged from that of the Virtual Center Server.
      properties:
        hostOutOfSync:
          description: |2
            The host that went out of sync.
          type: array
          items:
            $ref: '#/components/schemas/DvsOutOfSyncHostArgument'
      required:
        - hostOutOfSync
      allOf:
        - $ref: '#/components/schemas/DvsEvent'

    ArrayOfOutOfSyncDvsHost:
      type: object
      description: |2
        A boxed array of *OutOfSyncDvsHost*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/OutOfSyncDvsHost'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PermissionAddedEvent:
      type: object
      description: |2
        This event records the creation of a permission.
      properties:
        role:
          description: |2
            The associated role.
          $ref: '#/components/schemas/RoleEventArgument'
        propagate:
          description: |2
            Whether or not the permission applies to sub-entities.
          type: boolean
      required:
        - role
        - propagate
      allOf:
        - $ref: '#/components/schemas/PermissionEvent'

    ArrayOfPermissionAddedEvent:
      type: object
      description: |2
        A boxed array of *PermissionAddedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PermissionAddedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PermissionEvent:
      type: object
      description: |2
        This event records a permission operation.
      properties:
        entity:
          description: |2
            The entity to which the permission applied.
          $ref: '#/components/schemas/ManagedEntityEventArgument'
        principal:
          description: |2
            The user name or group to which the permission was granted.
          type: string
        group:
          description: |2
            Whether or not the principal was a group.
          type: boolean
      required:
        - entity
        - principal
        - group
      allOf:
        - $ref: '#/components/schemas/AuthorizationEvent'

    ArrayOfPermissionEvent:
      type: object
      description: |2
        A boxed array of *PermissionEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PermissionEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PermissionRemovedEvent:
      type: object
      description: |2
        This event records the removal of a permission.
      allOf:
        - $ref: '#/components/schemas/PermissionEvent'

    ArrayOfPermissionRemovedEvent:
      type: object
      description: |2
        A boxed array of *PermissionRemovedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PermissionRemovedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PermissionUpdatedEvent:
      type: object
      description: |2
        This event records the update of a permission.
      properties:
        role:
          description: |2
            The associated role.
          $ref: '#/components/schemas/RoleEventArgument'
        propagate:
          description: |2
            Whether or not the permission applies to sub-entities.
          type: boolean
        prevRole:
          description: |2
            The previous associated role.
          $ref: '#/components/schemas/RoleEventArgument'
        prevPropagate:
          description: |2
            Previous propogate value.
          type: boolean
      required:
        - role
        - propagate
      allOf:
        - $ref: '#/components/schemas/PermissionEvent'

    ArrayOfPermissionUpdatedEvent:
      type: object
      description: |2
        A boxed array of *PermissionUpdatedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PermissionUpdatedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ProfileAssociatedEvent:
      type: object
      description: |2
        This event records that a Profile was associated with a managed entitiy.
      allOf:
        - $ref: '#/components/schemas/ProfileEvent'

    ArrayOfProfileAssociatedEvent:
      type: object
      description: |2
        A boxed array of *ProfileAssociatedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ProfileAssociatedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ProfileChangedEvent:
      type: object
      description: |2
        This event records that the profile has beed edited
      allOf:
        - $ref: '#/components/schemas/ProfileEvent'

    ArrayOfProfileChangedEvent:
      type: object
      description: |2
        A boxed array of *ProfileChangedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ProfileChangedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ProfileCreatedEvent:
      type: object
      description: |2
        This event records that a Profile was created.
      allOf:
        - $ref: '#/components/schemas/ProfileEvent'

    ArrayOfProfileCreatedEvent:
      type: object
      description: |2
        A boxed array of *ProfileCreatedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ProfileCreatedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ProfileDissociatedEvent:
      type: object
      description: |2
        This event records that a Profile was dissociated from a managed entity
      allOf:
        - $ref: '#/components/schemas/ProfileEvent'

    ArrayOfProfileDissociatedEvent:
      type: object
      description: |2
        A boxed array of *ProfileDissociatedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ProfileDissociatedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ProfileEvent:
      type: object
      description: |2
        This event records a Profile specific event.
      properties:
        profile:
          description: |2
            Link to the profile to which this event applies
          $ref: '#/components/schemas/ProfileEventArgument'
      required:
        - profile
      allOf:
        - $ref: '#/components/schemas/Event'

    ArrayOfProfileEvent:
      type: object
      description: |2
        A boxed array of *ProfileEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ProfileEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ProfileEventArgument:
      type: object
      description: |2
        The event argument is a Profile object
      properties:
        profile:
          description: |2
            Refers instance of *Profile*.
          $ref: '#/components/schemas/ManagedObjectReference'
        name:
          type: string
      required:
        - profile
        - name
      allOf:
        - $ref: '#/components/schemas/EventArgument'

    ArrayOfProfileEventArgument:
      type: object
      description: |2
        A boxed array of *ProfileEventArgument*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ProfileEventArgument'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ProfileReferenceHostChangedEvent:
      type: object
      description: |2
        This event records that the reference host associated with this profile has changed
      properties:
        referenceHost:
          description: |2
            The newly associated reference host with this profile
            
            Refers instance of *HostSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
        referenceHostName:
          description: |2
            The newly associated reference host name
          type: string
        prevReferenceHostName:
          description: |2
            The previous reference host name
          type: string
      allOf:
        - $ref: '#/components/schemas/ProfileEvent'

    ArrayOfProfileReferenceHostChangedEvent:
      type: object
      description: |2
        A boxed array of *ProfileReferenceHostChangedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ProfileReferenceHostChangedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ProfileRemovedEvent:
      type: object
      description: |2
        This event records that a Profile was removed.
      allOf:
        - $ref: '#/components/schemas/ProfileEvent'

    ArrayOfProfileRemovedEvent:
      type: object
      description: |2
        A boxed array of *ProfileRemovedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ProfileRemovedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    RecoveryEvent:
      type: object
      description: |2
        This event is generated when recovery takes place on a management vmknic
      properties:
        hostName:
          description: |2
            The host on which recovery happened
          type: string
        portKey:
          description: |2
            The key of the new port
          type: string
        dvsUuid:
          description: |2
            The uuid of the DVS
          type: string
        vnic:
          description: |2
            The virtual management NIC device where recovery was done
          type: string
      required:
        - hostName
        - portKey
      allOf:
        - $ref: '#/components/schemas/DvsEvent'

    ArrayOfRecoveryEvent:
      type: object
      description: |2
        A boxed array of *RecoveryEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/RecoveryEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    RemoteTSMEnabledEvent:
      type: object
      description: |2
        Remote Tech Support Mode for the host has been enabled.
      allOf:
        - $ref: '#/components/schemas/HostEvent'

    ArrayOfRemoteTSMEnabledEvent:
      type: object
      description: |2
        A boxed array of *RemoteTSMEnabledEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/RemoteTSMEnabledEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ResourcePoolCreatedEvent:
      type: object
      description: |2
        This event records when a new resource pool is created.
      properties:
        parent:
          description: |2
            The parent resource pool that new resource pool belongs to.
          $ref: '#/components/schemas/ResourcePoolEventArgument'
      required:
        - parent
      allOf:
        - $ref: '#/components/schemas/ResourcePoolEvent'

    ArrayOfResourcePoolCreatedEvent:
      type: object
      description: |2
        A boxed array of *ResourcePoolCreatedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ResourcePoolCreatedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ResourcePoolDestroyedEvent:
      type: object
      description: |2
        This event records when a resource pool is destroyed.
      allOf:
        - $ref: '#/components/schemas/ResourcePoolEvent'

    ArrayOfResourcePoolDestroyedEvent:
      type: object
      description: |2
        A boxed array of *ResourcePoolDestroyedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ResourcePoolDestroyedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ResourcePoolEvent:
      type: object
      description: |2
        This event is the base class for all resource pool events.
      properties:
        resourcePool:
          $ref: '#/components/schemas/ResourcePoolEventArgument'
      required:
        - resourcePool
      allOf:
        - $ref: '#/components/schemas/Event'

    ArrayOfResourcePoolEvent:
      type: object
      description: |2
        A boxed array of *ResourcePoolEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ResourcePoolEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ResourcePoolEventArgument:
      type: object
      description: |2
        The event argument is a ResourcePool object.
      properties:
        resourcePool:
          description: |2
            The ResourcePool object.
            
            Refers instance of *ResourcePool*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - resourcePool
      allOf:
        - $ref: '#/components/schemas/EntityEventArgument'

    ArrayOfResourcePoolEventArgument:
      type: object
      description: |2
        A boxed array of *ResourcePoolEventArgument*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ResourcePoolEventArgument'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ResourcePoolMovedEvent:
      type: object
      description: |2
        This event records when a resource pool is moved.
      properties:
        oldParent:
          description: |2
            The old parent of the resource Pool.
          $ref: '#/components/schemas/ResourcePoolEventArgument'
        newParent:
          description: |2
            The new parent of the resource Pool.
          $ref: '#/components/schemas/ResourcePoolEventArgument'
      required:
        - oldParent
        - newParent
      allOf:
        - $ref: '#/components/schemas/ResourcePoolEvent'

    ArrayOfResourcePoolMovedEvent:
      type: object
      description: |2
        A boxed array of *ResourcePoolMovedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ResourcePoolMovedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ResourcePoolReconfiguredEvent:
      type: object
      description: |2
        This event records when a resource pool configuration is changed.
      properties:
        configChanges:
          description: |2
            The configuration values changed during the reconfiguration.
          $ref: '#/components/schemas/ChangesInfoEventArgument'
      allOf:
        - $ref: '#/components/schemas/ResourcePoolEvent'

    ArrayOfResourcePoolReconfiguredEvent:
      type: object
      description: |2
        A boxed array of *ResourcePoolReconfiguredEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ResourcePoolReconfiguredEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ResourceViolatedEvent:
      type: object
      description: |2
        This event records when a conflict with a resource pool's resource
        configuration is detected.
      allOf:
        - $ref: '#/components/schemas/ResourcePoolEvent'

    ArrayOfResourceViolatedEvent:
      type: object
      description: |2
        A boxed array of *ResourceViolatedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ResourceViolatedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    RoleAddedEvent:
      type: object
      description: |2
        This event records the creation of a role.
      properties:
        privilegeList:
          description: |2
            The privileges granted to the role.
          type: array
          items:
            type: string
      allOf:
        - $ref: '#/components/schemas/RoleEvent'

    ArrayOfRoleAddedEvent:
      type: object
      description: |2
        A boxed array of *RoleAddedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/RoleAddedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    RoleEvent:
      type: object
      description: |2
        This event records a role operation.
      properties:
        role:
          description: |2
            The associated role.
          $ref: '#/components/schemas/RoleEventArgument'
      required:
        - role
      allOf:
        - $ref: '#/components/schemas/AuthorizationEvent'

    ArrayOfRoleEvent:
      type: object
      description: |2
        A boxed array of *RoleEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/RoleEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    RoleEventArgument:
      type: object
      description: |2
        The event argument is a Role object.
      properties:
        roleId:
          description: |2
            The ID of the role.
          type: integer
          format: int32
        name:
          description: |2
            The name of the role.
          type: string
      required:
        - roleId
        - name
      allOf:
        - $ref: '#/components/schemas/EventArgument'

    ArrayOfRoleEventArgument:
      type: object
      description: |2
        A boxed array of *RoleEventArgument*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/RoleEventArgument'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    RoleRemovedEvent:
      type: object
      description: |2
        This class records the removal of a role.
      allOf:
        - $ref: '#/components/schemas/RoleEvent'

    ArrayOfRoleRemovedEvent:
      type: object
      description: |2
        A boxed array of *RoleRemovedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/RoleRemovedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    RoleUpdatedEvent:
      type: object
      description: |2
        This event records the creation of a role.
      properties:
        privilegeList:
          description: |2
            The privileges granted to the role.
          type: array
          items:
            type: string
        prevRoleName:
          description: |2
            The name of the previous role.
          type: string
        privilegesAdded:
          description: |2
            The privileges added to the role.
          type: array
          items:
            type: string
        privilegesRemoved:
          description: |2
            The privileges removed from the role.
          type: array
          items:
            type: string
      allOf:
        - $ref: '#/components/schemas/RoleEvent'

    ArrayOfRoleUpdatedEvent:
      type: object
      description: |2
        A boxed array of *RoleUpdatedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/RoleUpdatedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    RollbackEvent:
      type: object
      description: |2
        This event is generated when network configuration rollback
        occurs on a host due configuration change that disconnected
        the host from vSphere server
      properties:
        hostName:
          description: |2
            The host on which rollback happened
          type: string
        methodName:
          description: |2
            The API method that was rolled back
          type: string
      required:
        - hostName
      allOf:
        - $ref: '#/components/schemas/DvsEvent'

    ArrayOfRollbackEvent:
      type: object
      description: |2
        A boxed array of *RollbackEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/RollbackEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ScheduledTaskCompletedEvent:
      type: object
      description: |2
        This event records the completion of a scheduled task.
      allOf:
        - $ref: '#/components/schemas/ScheduledTaskEvent'

    ArrayOfScheduledTaskCompletedEvent:
      type: object
      description: |2
        A boxed array of *ScheduledTaskCompletedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ScheduledTaskCompletedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ScheduledTaskCreatedEvent:
      type: object
      description: |2
        This event records the creation of a scheduled task.
      allOf:
        - $ref: '#/components/schemas/ScheduledTaskEvent'

    ArrayOfScheduledTaskCreatedEvent:
      type: object
      description: |2
        A boxed array of *ScheduledTaskCreatedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ScheduledTaskCreatedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ScheduledTaskEmailCompletedEvent:
      type: object
      description: |2
        This event records the sending of a notification via email for a scheduled task.
      properties:
        to:
          description: |2
            The destination email address.
          type: string
      required:
        - to
      allOf:
        - $ref: '#/components/schemas/ScheduledTaskEvent'

    ArrayOfScheduledTaskEmailCompletedEvent:
      type: object
      description: |2
        A boxed array of *ScheduledTaskEmailCompletedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ScheduledTaskEmailCompletedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ScheduledTaskEmailFailedEvent:
      type: object
      description: |2
        This event records the failure of an attempt to send a notification via email
        for a scheduled task.
      properties:
        to:
          description: |2
            The destination email address.
          type: string
        reason:
          description: |2
            The reason for the failure.
          $ref: '#/components/schemas/MethodFault'
      required:
        - to
        - reason
      allOf:
        - $ref: '#/components/schemas/ScheduledTaskEvent'

    ArrayOfScheduledTaskEmailFailedEvent:
      type: object
      description: |2
        A boxed array of *ScheduledTaskEmailFailedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ScheduledTaskEmailFailedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ScheduledTaskEvent:
      type: object
      description: |2
        These events are scheduled task events.
      properties:
        scheduledTask:
          description: |2
            The scheduled task object.
          $ref: '#/components/schemas/ScheduledTaskEventArgument'
        entity:
          description: |2
            The entity on which the scheduled task registered.
          $ref: '#/components/schemas/ManagedEntityEventArgument'
      required:
        - scheduledTask
        - entity
      allOf:
        - $ref: '#/components/schemas/Event'

    ArrayOfScheduledTaskEvent:
      type: object
      description: |2
        A boxed array of *ScheduledTaskEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ScheduledTaskEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ScheduledTaskEventArgument:
      type: object
      description: |2
        The event argument is a scheduled task object.
      properties:
        scheduledTask:
          description: |2
            The scheduled task object.
            
            Refers instance of *ScheduledTask*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - scheduledTask
      allOf:
        - $ref: '#/components/schemas/EntityEventArgument'

    ArrayOfScheduledTaskEventArgument:
      type: object
      description: |2
        A boxed array of *ScheduledTaskEventArgument*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ScheduledTaskEventArgument'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ScheduledTaskFailedEvent:
      type: object
      description: |2
        This event records the failure of a scheduled task.
      properties:
        reason:
          description: |2
            The reason for the failure.
          $ref: '#/components/schemas/MethodFault'
      required:
        - reason
      allOf:
        - $ref: '#/components/schemas/ScheduledTaskEvent'

    ArrayOfScheduledTaskFailedEvent:
      type: object
      description: |2
        A boxed array of *ScheduledTaskFailedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ScheduledTaskFailedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ScheduledTaskReconfiguredEvent:
      type: object
      description: |2
        This event records the reconfiguration of a scheduled task.
      properties:
        configChanges:
          description: |2
            The configuration values changed during the reconfiguration.
          $ref: '#/components/schemas/ChangesInfoEventArgument'
      allOf:
        - $ref: '#/components/schemas/ScheduledTaskEvent'

    ArrayOfScheduledTaskReconfiguredEvent:
      type: object
      description: |2
        A boxed array of *ScheduledTaskReconfiguredEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ScheduledTaskReconfiguredEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ScheduledTaskRemovedEvent:
      type: object
      description: |2
        This event records the removal of a scheduled task.
      allOf:
        - $ref: '#/components/schemas/ScheduledTaskEvent'

    ArrayOfScheduledTaskRemovedEvent:
      type: object
      description: |2
        A boxed array of *ScheduledTaskRemovedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ScheduledTaskRemovedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ScheduledTaskStartedEvent:
      type: object
      description: |2
        This event records when a scheduled task started.
      allOf:
        - $ref: '#/components/schemas/ScheduledTaskEvent'

    ArrayOfScheduledTaskStartedEvent:
      type: object
      description: |2
        A boxed array of *ScheduledTaskStartedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ScheduledTaskStartedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ServerLicenseExpiredEvent:
      type: object
      description: |2
        This event records an expired VirtualCenter server license.
      properties:
        product:
          type: string
      required:
        - product
      allOf:
        - $ref: '#/components/schemas/LicenseEvent'

    ArrayOfServerLicenseExpiredEvent:
      type: object
      description: |2
        A boxed array of *ServerLicenseExpiredEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ServerLicenseExpiredEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ServerStartedSessionEvent:
      type: object
      description: |2
        This event records the starting of the VirtualCenter server.
      allOf:
        - $ref: '#/components/schemas/SessionEvent'

    ArrayOfServerStartedSessionEvent:
      type: object
      description: |2
        A boxed array of *ServerStartedSessionEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ServerStartedSessionEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    SessionEvent:
      type: object
      description: |2
        These are session events.
      allOf:
        - $ref: '#/components/schemas/Event'

    ArrayOfSessionEvent:
      type: object
      description: |2
        A boxed array of *SessionEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/SessionEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    SessionTerminatedEvent:
      type: object
      description: |2
        This event records the termination of a session.
      properties:
        sessionId:
          description: |2
            The unique identifier of the terminated session.
          type: string
        terminatedUsername:
          description: |2
            The name of the user owning the terminated session.
          type: string
      required:
        - sessionId
        - terminatedUsername
      allOf:
        - $ref: '#/components/schemas/SessionEvent'

    ArrayOfSessionTerminatedEvent:
      type: object
      description: |2
        A boxed array of *SessionTerminatedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/SessionTerminatedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    TaskEvent:
      type: object
      description: |2
        This event records the creation of a Task.
        
        Note that the embedded TaskInfo object is a _snapshot_ of the
        Task state at the time of its creation, so its state will always be
        "queued". To find the current status of the task, query for the
        current state of the Task using the eventChainId in the embedded
        TaskInfo object.
      properties:
        info:
          description: |2
            The information about the task.
          $ref: '#/components/schemas/TaskInfo'
      required:
        - info
      allOf:
        - $ref: '#/components/schemas/Event'

    ArrayOfTaskEvent:
      type: object
      description: |2
        A boxed array of *TaskEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/TaskEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    TaskTimeoutEvent:
      type: object
      description: |2
        This event records when a task is cleaned up b/c of timeout
      allOf:
        - $ref: '#/components/schemas/TaskEvent'

    ArrayOfTaskTimeoutEvent:
      type: object
      description: |2
        A boxed array of *TaskTimeoutEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/TaskTimeoutEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    TeamingMatchEvent:
      type: object
      description: |2
        The teaming configuration of the uplink ports in the DVS matches
        physical switch configuration.
      allOf:
        - $ref: '#/components/schemas/DvsHealthStatusChangeEvent'

    ArrayOfTeamingMatchEvent:
      type: object
      description: |2
        A boxed array of *TeamingMatchEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/TeamingMatchEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    TeamingMisMatchEvent:
      type: object
      description: |2
        The teaming configuration of the uplink ports in the DVS
        does not match physical switch configuration.
      allOf:
        - $ref: '#/components/schemas/DvsHealthStatusChangeEvent'

    ArrayOfTeamingMisMatchEvent:
      type: object
      description: |2
        A boxed array of *TeamingMisMatchEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/TeamingMisMatchEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    TemplateBeingUpgradedEvent:
      type: object
      description: |2
        This event records the start of a template upgrade.
      allOf:
        - $ref: '#/components/schemas/TemplateUpgradeEvent'

    ArrayOfTemplateBeingUpgradedEvent:
      type: object
      description: |2
        A boxed array of *TemplateBeingUpgradedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/TemplateBeingUpgradedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    TemplateUpgradeEvent:
      type: object
      description: |2
        This event is the base class for all the template upgrade events.
      properties:
        legacyTemplate:
          type: string
      required:
        - legacyTemplate
      allOf:
        - $ref: '#/components/schemas/Event'

    ArrayOfTemplateUpgradeEvent:
      type: object
      description: |2
        A boxed array of *TemplateUpgradeEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/TemplateUpgradeEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    TemplateUpgradeFailedEvent:
      type: object
      description: |2
        This event records that the template upgrade failed.
      properties:
        reason:
          $ref: '#/components/schemas/MethodFault'
      required:
        - reason
      allOf:
        - $ref: '#/components/schemas/TemplateUpgradeEvent'

    ArrayOfTemplateUpgradeFailedEvent:
      type: object
      description: |2
        A boxed array of *TemplateUpgradeFailedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/TemplateUpgradeFailedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    TemplateUpgradedEvent:
      type: object
      description: |2
        This event records that the template upgrade succeeded.
      allOf:
        - $ref: '#/components/schemas/TemplateUpgradeEvent'

    ArrayOfTemplateUpgradedEvent:
      type: object
      description: |2
        A boxed array of *TemplateUpgradedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/TemplateUpgradedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    TimedOutHostOperationEvent:
      type: object
      description: |2
        This event indicates that an operation performed on the host timed out.
        
        Typically,
        a previous event in the sequence of events contains more
        information about the cause of the operation timing out.
      allOf:
        - $ref: '#/components/schemas/HostEvent'

    ArrayOfTimedOutHostOperationEvent:
      type: object
      description: |2
        A boxed array of *TimedOutHostOperationEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/TimedOutHostOperationEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    UnlicensedVirtualMachinesEvent:
      type: object
      description: |2
        This event records that we have unlicensed virtual machines on the
        specified host.
        
        This can be both a (@link vim.ManagedEntity.configIssue
        configIssue) and an entry in the event log.
      properties:
        unlicensed:
          type: integer
          format: int32
        available:
          type: integer
          format: int32
      required:
        - unlicensed
        - available
      allOf:
        - $ref: '#/components/schemas/LicenseEvent'

    ArrayOfUnlicensedVirtualMachinesEvent:
      type: object
      description: |2
        A boxed array of *UnlicensedVirtualMachinesEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/UnlicensedVirtualMachinesEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    UnlicensedVirtualMachinesFoundEvent:
      type: object
      description: |2
        This event records that we discovered unlicensed virtual machines on
        the specified host.
        
        After this event is entered into the event log, we
        expect to see a corresponding (@link
        vim.event.Event.UnlicensedVirtualMachinesEvent
        UnlicensedVirtualMachinesEvent) (@link vim.ManagedEntity.configIssue
        configIssue) on the host.
      properties:
        available:
          type: integer
          format: int32
      required:
        - available
      allOf:
        - $ref: '#/components/schemas/LicenseEvent'

    ArrayOfUnlicensedVirtualMachinesFoundEvent:
      type: object
      description: |2
        A boxed array of *UnlicensedVirtualMachinesFoundEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/UnlicensedVirtualMachinesFoundEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    UpdatedAgentBeingRestartedEvent:
      type: object
      description: |2
        This event records that the agent has been patched and will be
        restarted.
      allOf:
        - $ref: '#/components/schemas/HostEvent'

    ArrayOfUpdatedAgentBeingRestartedEvent:
      type: object
      description: |2
        A boxed array of *UpdatedAgentBeingRestartedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/UpdatedAgentBeingRestartedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    UpgradeEvent:
      type: object
      description: |2
        These event types represent events converted from VirtualCenter 1.x.
        
        All upgraded events are converted to string values.
      properties:
        message:
          description: |2
            The formatted message from the upgrade.
          type: string
      required:
        - message
      allOf:
        - $ref: '#/components/schemas/Event'

    ArrayOfUpgradeEvent:
      type: object
      description: |2
        A boxed array of *UpgradeEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/UpgradeEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    UplinkPortMtuNotSupportEvent:
      type: object
      description: |2
        Mtu health check status of an uplink port is changed, and in the latest mtu health check,
        not all the vlans' MTU setting on physical switch allows vSphere Distributed Switch
        max MTU size packets passing.
      allOf:
        - $ref: '#/components/schemas/DvsHealthStatusChangeEvent'

    ArrayOfUplinkPortMtuNotSupportEvent:
      type: object
      description: |2
        A boxed array of *UplinkPortMtuNotSupportEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/UplinkPortMtuNotSupportEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    UplinkPortMtuSupportEvent:
      type: object
      description: |2
        Mtu health check status of an uplink port is changed, and in the latest mtu health check,
        all the vlans' MTU setting on physical switch allows vSphere Distributed Switch
        max MTU size packets passing.
      allOf:
        - $ref: '#/components/schemas/DvsHealthStatusChangeEvent'

    ArrayOfUplinkPortMtuSupportEvent:
      type: object
      description: |2
        A boxed array of *UplinkPortMtuSupportEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/UplinkPortMtuSupportEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    UplinkPortVlanTrunkedEvent:
      type: object
      description: |2
        Vlans health check status of an uplink port is changed, and in the latest vlan health check,
        all the vlans are trunked by the physical switch connected to the uplink port.
      allOf:
        - $ref: '#/components/schemas/DvsHealthStatusChangeEvent'

    ArrayOfUplinkPortVlanTrunkedEvent:
      type: object
      description: |2
        A boxed array of *UplinkPortVlanTrunkedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/UplinkPortVlanTrunkedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    UplinkPortVlanUntrunkedEvent:
      type: object
      description: |2
        Vlans health check status of an uplink port is changed, and in the latest vlan health check,
        not all the vlans are trunked by the physical switch connected to the uplink port.
      allOf:
        - $ref: '#/components/schemas/DvsHealthStatusChangeEvent'

    ArrayOfUplinkPortVlanUntrunkedEvent:
      type: object
      description: |2
        A boxed array of *UplinkPortVlanUntrunkedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/UplinkPortVlanUntrunkedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    UserAssignedToGroup:
      type: object
      description: |2
        This event records that a user account membership was added to a group.
      properties:
        userLogin:
          type: string
        group:
          type: string
      required:
        - userLogin
        - group
      allOf:
        - $ref: '#/components/schemas/HostEvent'

    ArrayOfUserAssignedToGroup:
      type: object
      description: |2
        A boxed array of *UserAssignedToGroup*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/UserAssignedToGroup'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    UserLoginSessionEvent:
      type: object
      description: |2
        This event records a user logon.
      properties:
        ipAddress:
          description: |2
            The IP address of the peer that initiated the connection.
            
            This may
            be the client that originated the session, or it may be an intervening
            proxy if the binding uses a protocol that supports proxies, such as HTTP.
          type: string
        userAgent:
          description: |2
            The user agent or application
          type: string
        locale:
          description: |2
            The locale of the session.
          type: string
        sessionId:
          description: |2
            The unique identifier for the session.
          type: string
      required:
        - ipAddress
        - locale
        - sessionId
      allOf:
        - $ref: '#/components/schemas/SessionEvent'

    ArrayOfUserLoginSessionEvent:
      type: object
      description: |2
        A boxed array of *UserLoginSessionEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/UserLoginSessionEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    UserLogoutSessionEvent:
      type: object
      description: |2
        This event records a user logoff, disconnection, or session timeout.
      properties:
        ipAddress:
          description: |2
            The IP address of client
          type: string
        userAgent:
          description: |2
            The user agent or application
          type: string
        callCount:
          description: |2
            Number of API invocations made by the session
          type: integer
          format: int64
        sessionId:
          description: |2
            The unique identifier for the session.
          type: string
        loginTime:
          description: |2
            Timestamp when the user logged on for this session.
          type: string
          format: date-time
      allOf:
        - $ref: '#/components/schemas/SessionEvent'

    ArrayOfUserLogoutSessionEvent:
      type: object
      description: |2
        A boxed array of *UserLogoutSessionEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/UserLogoutSessionEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    UserPasswordChanged:
      type: object
      description: |2
        This event records that a user password changed.
      properties:
        userLogin:
          type: string
      required:
        - userLogin
      allOf:
        - $ref: '#/components/schemas/HostEvent'

    ArrayOfUserPasswordChanged:
      type: object
      description: |2
        A boxed array of *UserPasswordChanged*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/UserPasswordChanged'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    UserUnassignedFromGroup:
      type: object
      description: |2
        This event records that a user account membership was removed from a group.
      properties:
        userLogin:
          type: string
        group:
          type: string
      required:
        - userLogin
        - group
      allOf:
        - $ref: '#/components/schemas/HostEvent'

    ArrayOfUserUnassignedFromGroup:
      type: object
      description: |2
        A boxed array of *UserUnassignedFromGroup*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/UserUnassignedFromGroup'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    UserUpgradeEvent:
      type: object
      description: |2
        This event is a general user event from upgrade.
      allOf:
        - $ref: '#/components/schemas/UpgradeEvent'

    ArrayOfUserUpgradeEvent:
      type: object
      description: |2
        A boxed array of *UserUpgradeEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/UserUpgradeEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VMFSDatastoreCreatedEvent:
      type: object
      description: |2
        This event records when a VMFS datastore is created.
      properties:
        datastore:
          description: |2
            The associated datastore.
          $ref: '#/components/schemas/DatastoreEventArgument'
        datastoreUrl:
          description: |2
            Url of the associated datastore.
          type: string
      required:
        - datastore
      allOf:
        - $ref: '#/components/schemas/HostEvent'

    ArrayOfVMFSDatastoreCreatedEvent:
      type: object
      description: |2
        A boxed array of *VMFSDatastoreCreatedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VMFSDatastoreCreatedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VMFSDatastoreExpandedEvent:
      type: object
      description: |2
        This event records when a datastore is expanded.
      properties:
        datastore:
          description: |2
            The associated datastore.
          $ref: '#/components/schemas/DatastoreEventArgument'
      required:
        - datastore
      allOf:
        - $ref: '#/components/schemas/HostEvent'

    ArrayOfVMFSDatastoreExpandedEvent:
      type: object
      description: |2
        A boxed array of *VMFSDatastoreExpandedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VMFSDatastoreExpandedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VMFSDatastoreExtendedEvent:
      type: object
      description: |2
        This event records when a datastore is extended.
      properties:
        datastore:
          description: |2
            The associated datastore.
          $ref: '#/components/schemas/DatastoreEventArgument'
      required:
        - datastore
      allOf:
        - $ref: '#/components/schemas/HostEvent'

    ArrayOfVMFSDatastoreExtendedEvent:
      type: object
      description: |2
        A boxed array of *VMFSDatastoreExtendedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VMFSDatastoreExtendedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VMotionLicenseExpiredEvent:
      type: object
      description: |2
        This event records an expired VMotion license.
      allOf:
        - $ref: '#/components/schemas/LicenseEvent'

    ArrayOfVMotionLicenseExpiredEvent:
      type: object
      description: |2
        A boxed array of *VMotionLicenseExpiredEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VMotionLicenseExpiredEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VcAgentUninstallFailedEvent:
      type: object
      description: |2
        This event records when the VirtualCenter agent on a host failed to uninstall.
      properties:
        reason:
          description: |2
            The reason why the uninstall failed, if known.
            
            See *AgentInstallFailedReason_enum*
          type: string
      allOf:
        - $ref: '#/components/schemas/HostEvent'

    ArrayOfVcAgentUninstallFailedEvent:
      type: object
      description: |2
        A boxed array of *VcAgentUninstallFailedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VcAgentUninstallFailedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VcAgentUninstalledEvent:
      type: object
      description: |2
        This event records when the VirtualCenter agent on a host is uninstalled.
      allOf:
        - $ref: '#/components/schemas/HostEvent'

    ArrayOfVcAgentUninstalledEvent:
      type: object
      description: |2
        A boxed array of *VcAgentUninstalledEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VcAgentUninstalledEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VcAgentUpgradeFailedEvent:
      type: object
      description: |2
        This event records when the VirtualCenter agent on a host failed to upgrade.
      properties:
        reason:
          description: |2
            The reason why the upgrade failed, if known.
            
            See *AgentInstallFailedReason_enum*
          type: string
      allOf:
        - $ref: '#/components/schemas/HostEvent'

    ArrayOfVcAgentUpgradeFailedEvent:
      type: object
      description: |2
        A boxed array of *VcAgentUpgradeFailedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VcAgentUpgradeFailedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VcAgentUpgradedEvent:
      type: object
      description: |2
        This event records when the VirtualCenter agent on a host upgraded.
      allOf:
        - $ref: '#/components/schemas/HostEvent'

    ArrayOfVcAgentUpgradedEvent:
      type: object
      description: |2
        A boxed array of *VcAgentUpgradedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VcAgentUpgradedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VimAccountPasswordChangedEvent:
      type: object
      description: |2
        Password for the Vim account user on the host has been changed.
        
        This is an account created by VirtualCenter and used to manage the host.
      allOf:
        - $ref: '#/components/schemas/HostEvent'

    ArrayOfVimAccountPasswordChangedEvent:
      type: object
      description: |2
        A boxed array of *VimAccountPasswordChangedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VimAccountPasswordChangedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmAcquiredMksTicketEvent:
      type: object
      description: |2
        This event records a user successfully acquiring an MKS ticket
      allOf:
        - $ref: '#/components/schemas/VmEvent'

    ArrayOfVmAcquiredMksTicketEvent:
      type: object
      description: |2
        A boxed array of *VmAcquiredMksTicketEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmAcquiredMksTicketEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmAcquiredTicketEvent:
      type: object
      description: |2
        This event records a user successfully acquiring a ticket
      properties:
        ticketType:
          description: |2
            The type of the ticket @see VirtualMachine.TicketType
          type: string
      required:
        - ticketType
      allOf:
        - $ref: '#/components/schemas/VmEvent'

    ArrayOfVmAcquiredTicketEvent:
      type: object
      description: |2
        A boxed array of *VmAcquiredTicketEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmAcquiredTicketEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmAutoRenameEvent:
      type: object
      description: |2
        This event records that a virtual machine was automatically renamed
        because of a name conflict.
      properties:
        oldName:
          description: |2
            The name of the virtual machine before renaming.
          type: string
        newName:
          description: |2
            The name of the virtual machine after renaming.
          type: string
      required:
        - oldName
        - newName
      allOf:
        - $ref: '#/components/schemas/VmEvent'

    ArrayOfVmAutoRenameEvent:
      type: object
      description: |2
        A boxed array of *VmAutoRenameEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmAutoRenameEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmBeingClonedEvent:
      type: object
      description: |2
        This event records a virtual machine being cloned.
      properties:
        destFolder:
          description: |2
            The destination folder to which the virtual machine is being cloned.
          $ref: '#/components/schemas/FolderEventArgument'
        destName:
          description: |2
            The name of the destination virtual machine.
          type: string
        destHost:
          description: |2
            The destination host to which the virtual machine is being cloned.
          $ref: '#/components/schemas/HostEventArgument'
      required:
        - destFolder
        - destName
        - destHost
      allOf:
        - $ref: '#/components/schemas/VmCloneEvent'

    ArrayOfVmBeingClonedEvent:
      type: object
      description: |2
        A boxed array of *VmBeingClonedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmBeingClonedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmBeingClonedNoFolderEvent:
      type: object
      description: |2
        This event records a virtual machine being cloned.
      properties:
        destName:
          description: |2
            The name of the destination virtual machine.
          type: string
        destHost:
          description: |2
            The destination host to which the virtual machine is being cloned.
          $ref: '#/components/schemas/HostEventArgument'
      required:
        - destName
        - destHost
      allOf:
        - $ref: '#/components/schemas/VmCloneEvent'

    ArrayOfVmBeingClonedNoFolderEvent:
      type: object
      description: |2
        A boxed array of *VmBeingClonedNoFolderEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmBeingClonedNoFolderEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmBeingCreatedEvent:
      type: object
      description: |2
        This event records a virtual machine being created.
      properties:
        configSpec:
          description: |2
            The configuration specification that was used to create this virtual machine.
          $ref: '#/components/schemas/VirtualMachineConfigSpec'
      allOf:
        - $ref: '#/components/schemas/VmEvent'

    ArrayOfVmBeingCreatedEvent:
      type: object
      description: |2
        A boxed array of *VmBeingCreatedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmBeingCreatedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmBeingDeployedEvent:
      type: object
      description: |2
        This event records a virtual machine being deployed from a template.
      properties:
        srcTemplate:
          description: |2
            The template object from which the virtual machine is being deployed.
          $ref: '#/components/schemas/VmEventArgument'
      required:
        - srcTemplate
      allOf:
        - $ref: '#/components/schemas/VmEvent'

    ArrayOfVmBeingDeployedEvent:
      type: object
      description: |2
        A boxed array of *VmBeingDeployedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmBeingDeployedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmBeingHotMigratedEvent:
      type: object
      description: |2
        This event records that a virtual machine is being hot-migrated.
      properties:
        destHost:
          description: |2
            The destination host to which the virtual machine is to be migrated.
          $ref: '#/components/schemas/HostEventArgument'
        destDatacenter:
          description: |2
            The destination datacenter to which the virtual machine is being migrated
          $ref: '#/components/schemas/DatacenterEventArgument'
        destDatastore:
          description: |2
            The destination primary datastore to which the virtual machine is being migrated
          $ref: '#/components/schemas/DatastoreEventArgument'
      required:
        - destHost
      allOf:
        - $ref: '#/components/schemas/VmEvent'

    ArrayOfVmBeingHotMigratedEvent:
      type: object
      description: |2
        A boxed array of *VmBeingHotMigratedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmBeingHotMigratedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmBeingMigratedEvent:
      type: object
      description: |2
        This event records that a virtual machine is being migrated.
      properties:
        destHost:
          description: |2
            The destination host.
          $ref: '#/components/schemas/HostEventArgument'
        destDatacenter:
          description: |2
            The destination datacenter
          $ref: '#/components/schemas/DatacenterEventArgument'
        destDatastore:
          description: |2
            The destination primary datastore
          $ref: '#/components/schemas/DatastoreEventArgument'
      required:
        - destHost
      allOf:
        - $ref: '#/components/schemas/VmEvent'

    ArrayOfVmBeingMigratedEvent:
      type: object
      description: |2
        A boxed array of *VmBeingMigratedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmBeingMigratedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmBeingRelocatedEvent:
      type: object
      description: |2
        This event records that a virtual machine is being relocated.
      properties:
        destHost:
          description: |2
            The destination host to which the virtual machine is being relocated.
          $ref: '#/components/schemas/HostEventArgument'
        destDatacenter:
          description: |2
            The destination datacenter to which the virtual machine is being relocated
          $ref: '#/components/schemas/DatacenterEventArgument'
        destDatastore:
          description: |2
            The destination primary datastore to which the virtual machine is being relocated
          $ref: '#/components/schemas/DatastoreEventArgument'
      required:
        - destHost
      allOf:
        - $ref: '#/components/schemas/VmRelocateSpecEvent'

    ArrayOfVmBeingRelocatedEvent:
      type: object
      description: |2
        A boxed array of *VmBeingRelocatedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmBeingRelocatedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmCloneEvent:
      type: object
      description: |2
        The is the base event for all clone operations.
      allOf:
        - $ref: '#/components/schemas/VmEvent'

    ArrayOfVmCloneEvent:
      type: object
      description: |2
        A boxed array of *VmCloneEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmCloneEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmCloneFailedEvent:
      type: object
      description: |2
        This event records a failure to clone a virtual machine.
      properties:
        destFolder:
          description: |2
            The destination folder to which the virtual machine is being cloned.
          $ref: '#/components/schemas/FolderEventArgument'
        destName:
          description: |2
            The name of the destination virtual machine.
          type: string
        destHost:
          description: |2
            The destination host to which the virtual machine was being cloned.
          $ref: '#/components/schemas/HostEventArgument'
        reason:
          description: |2
            The reason why this clone operation failed.
          $ref: '#/components/schemas/MethodFault'
      required:
        - destFolder
        - destName
        - destHost
        - reason
      allOf:
        - $ref: '#/components/schemas/VmCloneEvent'

    ArrayOfVmCloneFailedEvent:
      type: object
      description: |2
        A boxed array of *VmCloneFailedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmCloneFailedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmClonedEvent:
      type: object
      description: |2
        This event records the completion of a virtual machine cloning operation.
      properties:
        sourceVm:
          description: |2
            The source virtual machine for the clone operation.
          $ref: '#/components/schemas/VmEventArgument'
      required:
        - sourceVm
      allOf:
        - $ref: '#/components/schemas/VmCloneEvent'

    ArrayOfVmClonedEvent:
      type: object
      description: |2
        A boxed array of *VmClonedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmClonedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmConfigMissingEvent:
      type: object
      description: |2
        This event records if the configuration file can not be found.
      allOf:
        - $ref: '#/components/schemas/VmEvent'

    ArrayOfVmConfigMissingEvent:
      type: object
      description: |2
        A boxed array of *VmConfigMissingEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmConfigMissingEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmConnectedEvent:
      type: object
      description: |2
        This event records that a virtual machine is connected.
      allOf:
        - $ref: '#/components/schemas/VmEvent'

    ArrayOfVmConnectedEvent:
      type: object
      description: |2
        A boxed array of *VmConnectedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmConnectedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmCreatedEvent:
      type: object
      description: |2
        This event records that a virtual machine was successfully created.
      allOf:
        - $ref: '#/components/schemas/VmEvent'

    ArrayOfVmCreatedEvent:
      type: object
      description: |2
        A boxed array of *VmCreatedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmCreatedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmDasBeingResetEvent:
      type: object
      description: |2
        This event records when a virtual machine is reset by
        HA VM Health Monitoring on hosts that do not support the
        create screenshot api or if the createscreenshot api fails.
      properties:
        reason:
          description: |2
            The reason why this vm is being reset
          type: string
      allOf:
        - $ref: '#/components/schemas/VmEvent'

    ArrayOfVmDasBeingResetEvent:
      type: object
      description: |2
        A boxed array of *VmDasBeingResetEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmDasBeingResetEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmDasBeingResetWithScreenshotEvent:
      type: object
      description: |2
        This event records when a virtual machine is reset by
        HA VM Health Monitoring on hosts that support the create screenshot api
      properties:
        screenshotFilePath:
          description: |2
            The datastore path of the screenshot taken before resetting.
          type: string
      required:
        - screenshotFilePath
      allOf:
        - $ref: '#/components/schemas/VmDasBeingResetEvent'

    ArrayOfVmDasBeingResetWithScreenshotEvent:
      type: object
      description: |2
        A boxed array of *VmDasBeingResetWithScreenshotEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmDasBeingResetWithScreenshotEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmDasResetFailedEvent:
      type: object
      description: |2
        This event records when HA VM Health Monitoring fails to reset
        a virtual machine after failure
      allOf:
        - $ref: '#/components/schemas/VmEvent'

    ArrayOfVmDasResetFailedEvent:
      type: object
      description: |2
        A boxed array of *VmDasResetFailedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmDasResetFailedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmDasUpdateErrorEvent:
      type: object
      description: |2
        The event records that an error occurred when updating the HA agents
        with the current state of the virtual machine.
        
        If this occurs during a
        powerOn operation, the virtual machine will not be failed over in the
        event of a host failure. If it occurs during a powerOff, the virtual
        machine will be automatically powered on if the host it was last running
        on crashes.
      allOf:
        - $ref: '#/components/schemas/VmEvent'

    ArrayOfVmDasUpdateErrorEvent:
      type: object
      description: |2
        A boxed array of *VmDasUpdateErrorEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmDasUpdateErrorEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmDasUpdateOkEvent:
      type: object
      description: |2
        This event records that HA agents have been updated with the current
        state of the virtual machine.
      allOf:
        - $ref: '#/components/schemas/VmEvent'

    ArrayOfVmDasUpdateOkEvent:
      type: object
      description: |2
        A boxed array of *VmDasUpdateOkEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmDasUpdateOkEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmDateRolledBackEvent:
      type: object
      description: |2
        This event records when the VirtualCenter server date rolled back.
      allOf:
        - $ref: '#/components/schemas/VmEvent'

    ArrayOfVmDateRolledBackEvent:
      type: object
      description: |2
        A boxed array of *VmDateRolledBackEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmDateRolledBackEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmDeployFailedEvent:
      type: object
      description: |2
        This event records a failure to deploy from a template.
      properties:
        destDatastore:
          description: |2
            The destination datastore to which the template was being deployed.
          $ref: '#/components/schemas/EntityEventArgument'
        reason:
          description: |2
            The reason for the failure.
          $ref: '#/components/schemas/MethodFault'
      required:
        - destDatastore
        - reason
      allOf:
        - $ref: '#/components/schemas/VmEvent'

    ArrayOfVmDeployFailedEvent:
      type: object
      description: |2
        A boxed array of *VmDeployFailedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmDeployFailedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmDeployedEvent:
      type: object
      description: |2
        This event records the completion of a virtual machine deployment operation.
      properties:
        srcTemplate:
          description: |2
            The template object from which the virtual machine has been deployed.
          $ref: '#/components/schemas/VmEventArgument'
      required:
        - srcTemplate
      allOf:
        - $ref: '#/components/schemas/VmEvent'

    ArrayOfVmDeployedEvent:
      type: object
      description: |2
        A boxed array of *VmDeployedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmDeployedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmDisconnectedEvent:
      type: object
      description: |2
        This event records that a virtual machine disconnected.
      allOf:
        - $ref: '#/components/schemas/VmEvent'

    ArrayOfVmDisconnectedEvent:
      type: object
      description: |2
        A boxed array of *VmDisconnectedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmDisconnectedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmDiscoveredEvent:
      type: object
      description: |2
        This event records a virtual machine discovery.
      allOf:
        - $ref: '#/components/schemas/VmEvent'

    ArrayOfVmDiscoveredEvent:
      type: object
      description: |2
        A boxed array of *VmDiscoveredEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmDiscoveredEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmDiskFailedEvent:
      type: object
      description: |2
        This event records a failure to create a virtual disk in a virtual machine.
      properties:
        disk:
          description: |2
            The name of the virtual disk.
          type: string
        reason:
          description: |2
            The reason for the failure.
          $ref: '#/components/schemas/MethodFault'
      required:
        - disk
        - reason
      allOf:
        - $ref: '#/components/schemas/VmEvent'

    ArrayOfVmDiskFailedEvent:
      type: object
      description: |2
        A boxed array of *VmDiskFailedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmDiskFailedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmEmigratingEvent:
      type: object
      description: |2
        This event records a virtual machine emigration.
      allOf:
        - $ref: '#/components/schemas/VmEvent'

    ArrayOfVmEmigratingEvent:
      type: object
      description: |2
        A boxed array of *VmEmigratingEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmEmigratingEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmEndRecordingEvent:
      type: object
      deprecated: true
      description: |2
        Deprecated as of vSphere API 6.0.
        
        This event indicates the end of a recording session on a virtual machine.
      allOf:
        - $ref: '#/components/schemas/VmEvent'

    ArrayOfVmEndRecordingEvent:
      type: object
      description: |2
        A boxed array of *VmEndRecordingEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmEndRecordingEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmEndReplayingEvent:
      type: object
      deprecated: true
      description: |2
        Deprecated as of vSphere API 6.0.
        
        This event indicates the end of a replay session on a virtual machine.
      allOf:
        - $ref: '#/components/schemas/VmEvent'

    ArrayOfVmEndReplayingEvent:
      type: object
      description: |2
        A boxed array of *VmEndReplayingEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmEndReplayingEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmEvent:
      type: object
      description: |2
        These are virtual machine events.
      properties:
        template:
          description: |2
            Indicates whether or not the virtual machine is marked as a template.
          type: boolean
      required:
        - template
      allOf:
        - $ref: '#/components/schemas/Event'

    ArrayOfVmEvent:
      type: object
      description: |2
        A boxed array of *VmEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmEventArgument:
      type: object
      description: |2
        The event argument is a VirtualMachine object.
      properties:
        vm:
          description: |2
            The VirtualMachine object.
            
            Refers instance of *VirtualMachine*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - vm
      allOf:
        - $ref: '#/components/schemas/EntityEventArgument'

    ArrayOfVmEventArgument:
      type: object
      description: |2
        A boxed array of *VmEventArgument*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmEventArgument'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmFailedMigrateEvent:
      type: object
      description: |2
        This event records a failure to migrate a virtual machine.
      properties:
        destHost:
          description: |2
            The destination host.
          $ref: '#/components/schemas/HostEventArgument'
        reason:
          description: |2
            The reason for the failure.
          $ref: '#/components/schemas/MethodFault'
        destDatacenter:
          description: |2
            The destination datacenter
          $ref: '#/components/schemas/DatacenterEventArgument'
        destDatastore:
          description: |2
            The destination primary datastore
          $ref: '#/components/schemas/DatastoreEventArgument'
      required:
        - destHost
        - reason
      allOf:
        - $ref: '#/components/schemas/VmEvent'

    ArrayOfVmFailedMigrateEvent:
      type: object
      description: |2
        A boxed array of *VmFailedMigrateEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmFailedMigrateEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmFailedRelayoutEvent:
      type: object
      description: |2
        This event records a specific failure to relay out a virtual machine,
        such as a failure to access the disk.
      properties:
        reason:
          $ref: '#/components/schemas/MethodFault'
      required:
        - reason
      allOf:
        - $ref: '#/components/schemas/VmEvent'

    ArrayOfVmFailedRelayoutEvent:
      type: object
      description: |2
        A boxed array of *VmFailedRelayoutEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmFailedRelayoutEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmFailedRelayoutOnVmfs2DatastoreEvent:
      type: object
      description: |2
        This event records a failure to relay out a virtual machine
        when the virtual machine still has disks on a VMFS2 volume.
      allOf:
        - $ref: '#/components/schemas/VmEvent'

    ArrayOfVmFailedRelayoutOnVmfs2DatastoreEvent:
      type: object
      description: |2
        A boxed array of *VmFailedRelayoutOnVmfs2DatastoreEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmFailedRelayoutOnVmfs2DatastoreEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmFailedStartingSecondaryEvent:
      type: object
      description: |2
        This event records vmotion failure when starting a secondary VM.
      properties:
        reason:
          description: |2
            The reason for the failure.
            
            See *VmFailedStartingSecondaryEventFailureReason_enum*
          type: string
      allOf:
        - $ref: '#/components/schemas/VmEvent'

    ArrayOfVmFailedStartingSecondaryEvent:
      type: object
      description: |2
        A boxed array of *VmFailedStartingSecondaryEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmFailedStartingSecondaryEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmFailedToPowerOffEvent:
      type: object
      description: |2
        This event records a failure to power off a virtual machine.
      properties:
        reason:
          description: |2
            The reason for the failure.
          $ref: '#/components/schemas/MethodFault'
      required:
        - reason
      allOf:
        - $ref: '#/components/schemas/VmEvent'

    ArrayOfVmFailedToPowerOffEvent:
      type: object
      description: |2
        A boxed array of *VmFailedToPowerOffEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmFailedToPowerOffEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmFailedToPowerOnEvent:
      type: object
      description: |2
        This event records a failure to power on a virtual machine.
      properties:
        reason:
          description: |2
            The reason for the failure.
          $ref: '#/components/schemas/MethodFault'
      required:
        - reason
      allOf:
        - $ref: '#/components/schemas/VmEvent'

    ArrayOfVmFailedToPowerOnEvent:
      type: object
      description: |2
        A boxed array of *VmFailedToPowerOnEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmFailedToPowerOnEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmFailedToRebootGuestEvent:
      type: object
      description: |2
        This event records a failure to reboot the guest on a virtual machine.
      properties:
        reason:
          description: |2
            The reason for the failure.
          $ref: '#/components/schemas/MethodFault'
      required:
        - reason
      allOf:
        - $ref: '#/components/schemas/VmEvent'

    ArrayOfVmFailedToRebootGuestEvent:
      type: object
      description: |2
        A boxed array of *VmFailedToRebootGuestEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmFailedToRebootGuestEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmFailedToResetEvent:
      type: object
      description: |2
        This event records a failure to reset a virtual machine.
      properties:
        reason:
          description: |2
            The reason for the failure.
          $ref: '#/components/schemas/MethodFault'
      required:
        - reason
      allOf:
        - $ref: '#/components/schemas/VmEvent'

    ArrayOfVmFailedToResetEvent:
      type: object
      description: |2
        A boxed array of *VmFailedToResetEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmFailedToResetEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmFailedToShutdownGuestEvent:
      type: object
      description: |2
        This event records a failure to shut down the guest on a virtual machine.
      properties:
        reason:
          description: |2
            The reason for the failure.
          $ref: '#/components/schemas/MethodFault'
      required:
        - reason
      allOf:
        - $ref: '#/components/schemas/VmEvent'

    ArrayOfVmFailedToShutdownGuestEvent:
      type: object
      description: |2
        A boxed array of *VmFailedToShutdownGuestEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmFailedToShutdownGuestEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmFailedToStandbyGuestEvent:
      type: object
      description: |2
        This event records a failure to set the guest on a virtual machine to a standby
        state.
      properties:
        reason:
          description: |2
            The reason for the failure.
          $ref: '#/components/schemas/MethodFault'
      required:
        - reason
      allOf:
        - $ref: '#/components/schemas/VmEvent'

    ArrayOfVmFailedToStandbyGuestEvent:
      type: object
      description: |2
        A boxed array of *VmFailedToStandbyGuestEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmFailedToStandbyGuestEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmFailedToSuspendEvent:
      type: object
      description: |2
        This event records a failure to suspend a virtual machine.
      properties:
        reason:
          description: |2
            The reason for the failure.
          $ref: '#/components/schemas/MethodFault'
      required:
        - reason
      allOf:
        - $ref: '#/components/schemas/VmEvent'

    ArrayOfVmFailedToSuspendEvent:
      type: object
      description: |2
        A boxed array of *VmFailedToSuspendEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmFailedToSuspendEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmFailedUpdatingSecondaryConfig:
      type: object
      description: |2
        This event records after a failover the new new primary failed to
        update the config of the secondary vm.
      allOf:
        - $ref: '#/components/schemas/VmEvent'

    ArrayOfVmFailedUpdatingSecondaryConfig:
      type: object
      description: |2
        A boxed array of *VmFailedUpdatingSecondaryConfig*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmFailedUpdatingSecondaryConfig'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmFailoverFailed:
      type: object
      description: |2
        This event records when a virtual machine failover was unsuccessful.
      properties:
        reason:
          description: |2
            The reason for the failure
          $ref: '#/components/schemas/MethodFault'
      allOf:
        - $ref: '#/components/schemas/VmEvent'

    ArrayOfVmFailoverFailed:
      type: object
      description: |2
        A boxed array of *VmFailoverFailed*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmFailoverFailed'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmFaultToleranceStateChangedEvent:
      type: object
      description: |2
        This event records a fault tolerance state change.
        
        A default alarm will be triggered upon this event, which would
        change the vm state:
        the vm state is red if the newState is needSecondary;
        the vm state is yellow if the newState is disabled;
        the vm state is green if the newState is notConfigured, starting,
        enabled or running
      properties:
        oldState:
          description: |2
            The old fault toleeance state.
          $ref: '#/components/schemas/VirtualMachineFaultToleranceState_enum'
        newState:
          description: |2
            The new fault tolerance state.
          $ref: '#/components/schemas/VirtualMachineFaultToleranceState_enum'
      required:
        - oldState
        - newState
      allOf:
        - $ref: '#/components/schemas/VmEvent'

    ArrayOfVmFaultToleranceStateChangedEvent:
      type: object
      description: |2
        A boxed array of *VmFaultToleranceStateChangedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmFaultToleranceStateChangedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmFaultToleranceTurnedOffEvent:
      type: object
      description: |2
        This event records that all secondary virtual machines have
        been removed and fault tolerance protection turned off for
        this virtual machine.
      allOf:
        - $ref: '#/components/schemas/VmEvent'

    ArrayOfVmFaultToleranceTurnedOffEvent:
      type: object
      description: |2
        A boxed array of *VmFaultToleranceTurnedOffEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmFaultToleranceTurnedOffEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmFaultToleranceVmTerminatedEvent:
      type: object
      description: |2
        This event records a secondary or primary VM is terminated.
        
        The reason could be : divergence, lost connection to secondary, partial
        hardware failure of secondary, or by user.
      properties:
        reason:
          description: |2
            The reason for the failure.
            
            see *VirtualMachineNeedSecondaryReason_enum*
          type: string
      allOf:
        - $ref: '#/components/schemas/VmEvent'

    ArrayOfVmFaultToleranceVmTerminatedEvent:
      type: object
      description: |2
        A boxed array of *VmFaultToleranceVmTerminatedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmFaultToleranceVmTerminatedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmGuestOSCrashedEvent:
      type: object
      description: |2
        This event notifies that a guest OS has crashed
      allOf:
        - $ref: '#/components/schemas/VmEvent'

    ArrayOfVmGuestOSCrashedEvent:
      type: object
      description: |2
        A boxed array of *VmGuestOSCrashedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmGuestOSCrashedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmGuestRebootEvent:
      type: object
      description: |2
        This is a virtual machine guest reboot request event.
      allOf:
        - $ref: '#/components/schemas/VmEvent'

    ArrayOfVmGuestRebootEvent:
      type: object
      description: |2
        A boxed array of *VmGuestRebootEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmGuestRebootEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmGuestShutdownEvent:
      type: object
      description: |2
        This is a virtual machine guest shutdown request event.
      allOf:
        - $ref: '#/components/schemas/VmEvent'

    ArrayOfVmGuestShutdownEvent:
      type: object
      description: |2
        A boxed array of *VmGuestShutdownEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmGuestShutdownEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmGuestStandbyEvent:
      type: object
      description: |2
        This is a virtual machine guest standby request event.
      allOf:
        - $ref: '#/components/schemas/VmEvent'

    ArrayOfVmGuestStandbyEvent:
      type: object
      description: |2
        A boxed array of *VmGuestStandbyEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmGuestStandbyEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmHealthMonitoringStateChangedEvent:
      type: object
      description: |2
        This event records when host monitoring state has changed.
      properties:
        state:
          description: |2
            The service state in
            *ClusterDasConfigInfoVmMonitoringState_enum*
          type: string
        prevState:
          description: |2
            The previous service state in
            *ClusterDasConfigInfoVmMonitoringState_enum*
          type: string
      required:
        - state
      allOf:
        - $ref: '#/components/schemas/ClusterEvent'

    ArrayOfVmHealthMonitoringStateChangedEvent:
      type: object
      description: |2
        A boxed array of *VmHealthMonitoringStateChangedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmHealthMonitoringStateChangedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmInstanceUuidAssignedEvent:
      type: object
      description: |2
        This event records the assignment of a new instance UUID
        to a virtual machine.
      properties:
        instanceUuid:
          description: |2
            The new instance UUID.
          type: string
      required:
        - instanceUuid
      allOf:
        - $ref: '#/components/schemas/VmEvent'

    ArrayOfVmInstanceUuidAssignedEvent:
      type: object
      description: |2
        A boxed array of *VmInstanceUuidAssignedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmInstanceUuidAssignedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmInstanceUuidChangedEvent:
      type: object
      description: |2
        This event records a change in a virtual machine's instance UUID.
      properties:
        oldInstanceUuid:
          description: |2
            The old instance UUID.
          type: string
        newInstanceUuid:
          description: |2
            The new instance UUID.
          type: string
      required:
        - oldInstanceUuid
        - newInstanceUuid
      allOf:
        - $ref: '#/components/schemas/VmEvent'

    ArrayOfVmInstanceUuidChangedEvent:
      type: object
      description: |2
        A boxed array of *VmInstanceUuidChangedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmInstanceUuidChangedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmInstanceUuidConflictEvent:
      type: object
      description: |2
        This event records a conflict of virtual machine instance UUIDs.
      properties:
        conflictedVm:
          description: |2
            The virtual machine whose instance UUID conflicts with the
            current virtual machine's instance UUID.
          $ref: '#/components/schemas/VmEventArgument'
        instanceUuid:
          description: |2
            The instance UUID in conflict.
          type: string
      required:
        - conflictedVm
        - instanceUuid
      allOf:
        - $ref: '#/components/schemas/VmEvent'

    ArrayOfVmInstanceUuidConflictEvent:
      type: object
      description: |2
        A boxed array of *VmInstanceUuidConflictEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmInstanceUuidConflictEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmMacAssignedEvent:
      type: object
      description: |2
        This event records the assignment of a new MAC address
        to a virtual network adapter.
      properties:
        adapter:
          description: |2
            The name of the virtual adapter.
          type: string
        mac:
          description: |2
            The new MAC address.
          type: string
      required:
        - adapter
        - mac
      allOf:
        - $ref: '#/components/schemas/VmEvent'

    ArrayOfVmMacAssignedEvent:
      type: object
      description: |2
        A boxed array of *VmMacAssignedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmMacAssignedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmMacChangedEvent:
      type: object
      description: |2
        This event records a change in a virtual machine's MAC address.
      properties:
        adapter:
          description: |2
            The name of the virtual network adapter.
          type: string
        oldMac:
          description: |2
            The old MAC address.
          type: string
        newMac:
          description: |2
            The new MAC address.
          type: string
      required:
        - adapter
        - oldMac
        - newMac
      allOf:
        - $ref: '#/components/schemas/VmEvent'

    ArrayOfVmMacChangedEvent:
      type: object
      description: |2
        A boxed array of *VmMacChangedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmMacChangedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmMacConflictEvent:
      type: object
      description: |2
        This event records a MAC address conflict for a virtual machine.
      properties:
        conflictedVm:
          description: |2
            The virtual machine whose MAC address conflicts with
            the current virtual machine's address.
          $ref: '#/components/schemas/VmEventArgument'
        mac:
          description: |2
            The MAC address that is in conflict.
          type: string
      required:
        - conflictedVm
        - mac
      allOf:
        - $ref: '#/components/schemas/VmEvent'

    ArrayOfVmMacConflictEvent:
      type: object
      description: |2
        A boxed array of *VmMacConflictEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmMacConflictEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmMaxFTRestartCountReached:
      type: object
      description: |2
        This event is fired when FT VM reached the max restart count
      allOf:
        - $ref: '#/components/schemas/VmEvent'

    ArrayOfVmMaxFTRestartCountReached:
      type: object
      description: |2
        A boxed array of *VmMaxFTRestartCountReached*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmMaxFTRestartCountReached'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmMaxRestartCountReached:
      type: object
      description: |2
        This event is fired when the VM reached the max restart count
      allOf:
        - $ref: '#/components/schemas/VmEvent'

    ArrayOfVmMaxRestartCountReached:
      type: object
      description: |2
        A boxed array of *VmMaxRestartCountReached*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmMaxRestartCountReached'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmMessageErrorEvent:
      type: object
      description: |2
        This event records when an error message (consisting of a collection of "observations")
        is thrown by the virtual machine.
        
        This is a generic event for such messages.
      properties:
        message:
          description: |2
            A raw message returned by the virtualization platform.
          type: string
        messageInfo:
          description: |2
            A set of localizable message data that comprise this event.
            
            Only available on servers that support localization.
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineMessage'
      required:
        - message
      allOf:
        - $ref: '#/components/schemas/VmEvent'

    ArrayOfVmMessageErrorEvent:
      type: object
      description: |2
        A boxed array of *VmMessageErrorEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmMessageErrorEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmMessageEvent:
      type: object
      description: |2
        This event records when an informational message (consisting of a collection of "observations")
        is thrown by the virtual machine.
        
        This is a generic event for such messages.
      properties:
        message:
          description: |2
            A raw message returned by the virtualization platform.
          type: string
        messageInfo:
          description: |2
            A set of localizable message data that comprise this event.
            
            Only available on servers that support localization.
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineMessage'
      required:
        - message
      allOf:
        - $ref: '#/components/schemas/VmEvent'

    ArrayOfVmMessageEvent:
      type: object
      description: |2
        A boxed array of *VmMessageEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmMessageEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmMessageWarningEvent:
      type: object
      description: |2
        This event records when a warning message (consisting of a collection of "observations")
        is thrown by the virtual machine.
        
        This is a generic event for such messages.
      properties:
        message:
          description: |2
            A raw message returned by the virtualization platform.
          type: string
        messageInfo:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineMessage'
      required:
        - message
      allOf:
        - $ref: '#/components/schemas/VmEvent'

    ArrayOfVmMessageWarningEvent:
      type: object
      description: |2
        A boxed array of *VmMessageWarningEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmMessageWarningEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmMigratedEvent:
      type: object
      description: |2
        This event records a virtual machine migration.
      properties:
        sourceHost:
          description: |2
            The source host.
            
            (Because this is after a successful migration,
            the destination host is recorded in the inherited "host" property.)
          $ref: '#/components/schemas/HostEventArgument'
        sourceDatacenter:
          description: |2
            The source datacenter
          $ref: '#/components/schemas/DatacenterEventArgument'
        sourceDatastore:
          description: |2
            The source primary datastore
          $ref: '#/components/schemas/DatastoreEventArgument'
      required:
        - sourceHost
      allOf:
        - $ref: '#/components/schemas/VmEvent'

    ArrayOfVmMigratedEvent:
      type: object
      description: |2
        A boxed array of *VmMigratedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmMigratedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmNoCompatibleHostForSecondaryEvent:
      type: object
      description: |2
        This event records that no compatible host was found to place a
        secondary VM.
        
        A default alarm will be triggered upon this event, which by default
        would trigger a SNMP trap.
      allOf:
        - $ref: '#/components/schemas/VmEvent'

    ArrayOfVmNoCompatibleHostForSecondaryEvent:
      type: object
      description: |2
        A boxed array of *VmNoCompatibleHostForSecondaryEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmNoCompatibleHostForSecondaryEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmNoNetworkAccessEvent:
      type: object
      description: |2
        This event records a migration failure when the destination host
        is not on the same network as the source host.
      properties:
        destHost:
          description: |2
            The destination host.
          $ref: '#/components/schemas/HostEventArgument'
      required:
        - destHost
      allOf:
        - $ref: '#/components/schemas/VmEvent'

    ArrayOfVmNoNetworkAccessEvent:
      type: object
      description: |2
        A boxed array of *VmNoNetworkAccessEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmNoNetworkAccessEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmOrphanedEvent:
      type: object
      description: |2
        This event records a virtual machine for which no host is responsible.
      allOf:
        - $ref: '#/components/schemas/VmEvent'

    ArrayOfVmOrphanedEvent:
      type: object
      description: |2
        A boxed array of *VmOrphanedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmOrphanedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmPowerOffOnIsolationEvent:
      type: object
      description: |2
        This event records when a virtual machine has been powered off on an isolated host
        in a HA cluster.
      properties:
        isolatedHost:
          description: |2
            The isolated host on which a virtual machine is powered off.
          $ref: '#/components/schemas/HostEventArgument'
      required:
        - isolatedHost
      allOf:
        - $ref: '#/components/schemas/VmPoweredOffEvent'

    ArrayOfVmPowerOffOnIsolationEvent:
      type: object
      description: |2
        A boxed array of *VmPowerOffOnIsolationEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmPowerOffOnIsolationEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmPoweredOffEvent:
      type: object
      description: |2
        This event records when a virtual machine finished powering off.
      allOf:
        - $ref: '#/components/schemas/VmEvent'

    ArrayOfVmPoweredOffEvent:
      type: object
      description: |2
        A boxed array of *VmPoweredOffEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmPoweredOffEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmPoweredOnEvent:
      type: object
      description: |2
        This event records when a virtual machine finished powering on.
      allOf:
        - $ref: '#/components/schemas/VmEvent'

    ArrayOfVmPoweredOnEvent:
      type: object
      description: |2
        A boxed array of *VmPoweredOnEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmPoweredOnEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmPoweringOnWithCustomizedDVPortEvent:
      type: object
      description: |2
        This event records when a virtual machine was powering on using
        DVPorts with port level configuration, which might be different
        from the DVportgroup.
      properties:
        vnic:
          description: |2
            The list of Virtual NIC that were using the DVports.
          type: array
          items:
            $ref: '#/components/schemas/VnicPortArgument'
      required:
        - vnic
      allOf:
        - $ref: '#/components/schemas/VmEvent'

    ArrayOfVmPoweringOnWithCustomizedDVPortEvent:
      type: object
      description: |2
        A boxed array of *VmPoweringOnWithCustomizedDVPortEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmPoweringOnWithCustomizedDVPortEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmPrimaryFailoverEvent:
      type: object
      description: |2
        This event records a fault tolerance failover.
        
        The reason could be : lost connection to primary, partial hardware failure
        of primary or by user.
      properties:
        reason:
          description: |2
            The reason for the failure.
            
            see *VirtualMachineNeedSecondaryReason_enum*
          type: string
      allOf:
        - $ref: '#/components/schemas/VmEvent'

    ArrayOfVmPrimaryFailoverEvent:
      type: object
      description: |2
        A boxed array of *VmPrimaryFailoverEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmPrimaryFailoverEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmReconfiguredEvent:
      type: object
      description: |2
        This event records a reconfiguration of the virtual machine.
      properties:
        configSpec:
          description: |2
            The configuration specification that was used for the reconfiguration.
          $ref: '#/components/schemas/VirtualMachineConfigSpec'
        configChanges:
          description: |2
            The configuration values changed during the reconfiguration.
          $ref: '#/components/schemas/ChangesInfoEventArgument'
      required:
        - configSpec
      allOf:
        - $ref: '#/components/schemas/VmEvent'

    ArrayOfVmReconfiguredEvent:
      type: object
      description: |2
        A boxed array of *VmReconfiguredEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmReconfiguredEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmRegisteredEvent:
      type: object
      description: |2
        This event records that a virtual machine was successfully registered.
      allOf:
        - $ref: '#/components/schemas/VmEvent'

    ArrayOfVmRegisteredEvent:
      type: object
      description: |2
        A boxed array of *VmRegisteredEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmRegisteredEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmRelayoutSuccessfulEvent:
      type: object
      description: |2
        This event records that a virtual machine was successfully
        converted to the new virtual machine format on a VMFS3 volume.
      allOf:
        - $ref: '#/components/schemas/VmEvent'

    ArrayOfVmRelayoutSuccessfulEvent:
      type: object
      description: |2
        A boxed array of *VmRelayoutSuccessfulEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmRelayoutSuccessfulEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmRelayoutUpToDateEvent:
      type: object
      description: |2
        This event records that a virtual machine is already in the
        correct format.
        
        No relay out is necessary.
      allOf:
        - $ref: '#/components/schemas/VmEvent'

    ArrayOfVmRelayoutUpToDateEvent:
      type: object
      description: |2
        A boxed array of *VmRelayoutUpToDateEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmRelayoutUpToDateEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmReloadFromPathEvent:
      type: object
      description: |2
        This event records that a virtual machine was successfully reloaded from a
        new configuration path.
      properties:
        configPath:
          type: string
      required:
        - configPath
      allOf:
        - $ref: '#/components/schemas/VmEvent'

    ArrayOfVmReloadFromPathEvent:
      type: object
      description: |2
        A boxed array of *VmReloadFromPathEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmReloadFromPathEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmReloadFromPathFailedEvent:
      type: object
      description: |2
        This event records that a virtual machine reload from a new configuration
        path failed.
      properties:
        configPath:
          type: string
      required:
        - configPath
      allOf:
        - $ref: '#/components/schemas/VmEvent'

    ArrayOfVmReloadFromPathFailedEvent:
      type: object
      description: |2
        A boxed array of *VmReloadFromPathFailedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmReloadFromPathFailedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmRelocateFailedEvent:
      type: object
      description: |2
        This event records a failure to relocate a virtual machine.
      properties:
        destHost:
          description: |2
            The destination host to which the virtual machine is being relocated.
          $ref: '#/components/schemas/HostEventArgument'
        reason:
          description: |2
            The reason why this relocate operation failed.
          $ref: '#/components/schemas/MethodFault'
        destDatacenter:
          description: |2
            The destination datacenter to which the virtual machine was being relocated
          $ref: '#/components/schemas/DatacenterEventArgument'
        destDatastore:
          description: |2
            The destination primary datastore to which the virtual machine was being relocated
          $ref: '#/components/schemas/DatastoreEventArgument'
      required:
        - destHost
        - reason
      allOf:
        - $ref: '#/components/schemas/VmRelocateSpecEvent'

    ArrayOfVmRelocateFailedEvent:
      type: object
      description: |2
        A boxed array of *VmRelocateFailedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmRelocateFailedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmRelocateSpecEvent:
      type: object
      description: |2
        This event is the base event for relocate and clone base events.
      allOf:
        - $ref: '#/components/schemas/VmEvent'

    ArrayOfVmRelocateSpecEvent:
      type: object
      description: |2
        A boxed array of *VmRelocateSpecEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmRelocateSpecEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmRelocatedEvent:
      type: object
      description: |2
        This event records the completion of a virtual machine relocation.
      properties:
        sourceHost:
          description: |2
            The source host from which the virtual machine was relocated.
          $ref: '#/components/schemas/HostEventArgument'
        sourceDatacenter:
          description: |2
            The source datacenter from which the virtual machine relocated
          $ref: '#/components/schemas/DatacenterEventArgument'
        sourceDatastore:
          description: |2
            The source primary datastore from which the virtual machine relocated
          $ref: '#/components/schemas/DatastoreEventArgument'
      required:
        - sourceHost
      allOf:
        - $ref: '#/components/schemas/VmRelocateSpecEvent'

    ArrayOfVmRelocatedEvent:
      type: object
      description: |2
        A boxed array of *VmRelocatedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmRelocatedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmRemoteConsoleConnectedEvent:
      type: object
      description: |2
        This event records that a remote console was connected to the VM
      allOf:
        - $ref: '#/components/schemas/VmEvent'

    ArrayOfVmRemoteConsoleConnectedEvent:
      type: object
      description: |2
        A boxed array of *VmRemoteConsoleConnectedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmRemoteConsoleConnectedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmRemoteConsoleDisconnectedEvent:
      type: object
      description: |2
        This event records that a remote console was disconnected from the VM
      allOf:
        - $ref: '#/components/schemas/VmEvent'

    ArrayOfVmRemoteConsoleDisconnectedEvent:
      type: object
      description: |2
        A boxed array of *VmRemoteConsoleDisconnectedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmRemoteConsoleDisconnectedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmRemovedEvent:
      type: object
      description: |2
        This event records a virtual machine removed from VirtualCenter management.
      allOf:
        - $ref: '#/components/schemas/VmEvent'

    ArrayOfVmRemovedEvent:
      type: object
      description: |2
        A boxed array of *VmRemovedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmRemovedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmRenamedEvent:
      type: object
      description: |2
        This event records the renaming of a virtual machine.
      properties:
        oldName:
          description: |2
            The old name of the virtual machine.
          type: string
        newName:
          description: |2
            The new name of the virtual machine.
          type: string
      required:
        - oldName
        - newName
      allOf:
        - $ref: '#/components/schemas/VmEvent'

    ArrayOfVmRenamedEvent:
      type: object
      description: |2
        A boxed array of *VmRenamedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmRenamedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmRequirementsExceedCurrentEVCModeEvent:
      type: object
      description: |2
        The virtual machine is using features that exceed what the
        host is capable of providing.
        
        This may occur when joining an EVC cluster
        while the virtual machine is powered on.
        The most common resolution is to power cycle the virtual machine.
      allOf:
        - $ref: '#/components/schemas/VmEvent'

    ArrayOfVmRequirementsExceedCurrentEVCModeEvent:
      type: object
      description: |2
        A boxed array of *VmRequirementsExceedCurrentEVCModeEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmRequirementsExceedCurrentEVCModeEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmResettingEvent:
      type: object
      description: |2
        This event records a virtual machine resetting.
      allOf:
        - $ref: '#/components/schemas/VmEvent'

    ArrayOfVmResettingEvent:
      type: object
      description: |2
        A boxed array of *VmResettingEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmResettingEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmResourcePoolMovedEvent:
      type: object
      description: |2
        This event records when a virtual machine is moved from one resource pool to another.
      properties:
        oldParent:
          description: |2
            The old parent resourcePool of the moved virtual machine.
          $ref: '#/components/schemas/ResourcePoolEventArgument'
        newParent:
          description: |2
            The new parent resourcePool of the moved virtual machine.
          $ref: '#/components/schemas/ResourcePoolEventArgument'
      required:
        - oldParent
        - newParent
      allOf:
        - $ref: '#/components/schemas/VmEvent'

    ArrayOfVmResourcePoolMovedEvent:
      type: object
      description: |2
        A boxed array of *VmResourcePoolMovedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmResourcePoolMovedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmResourceReallocatedEvent:
      type: object
      description: |2
        This event records a change in resource allocation of a virtual machine.
      properties:
        configChanges:
          description: |2
            The configuration values changed during the reconfiguration.
          $ref: '#/components/schemas/ChangesInfoEventArgument'
      allOf:
        - $ref: '#/components/schemas/VmEvent'

    ArrayOfVmResourceReallocatedEvent:
      type: object
      description: |2
        A boxed array of *VmResourceReallocatedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmResourceReallocatedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmRestartedOnAlternateHostEvent:
      type: object
      deprecated: true
      description: |2
        Deprecated as of vSphere API 5.0, the Server will generate the *EventEx* event
        with the *EventEx.eventTypeId* property set to "com.vmware.vc.ha.VmRestartedByHAEvent".
        
        This event records that the virtual machine was restarted on a host, since
        its original host had failed.
      properties:
        sourceHost:
          description: |2
            The host that failed.
          $ref: '#/components/schemas/HostEventArgument'
      required:
        - sourceHost
      allOf:
        - $ref: '#/components/schemas/VmPoweredOnEvent'

    ArrayOfVmRestartedOnAlternateHostEvent:
      type: object
      description: |2
        A boxed array of *VmRestartedOnAlternateHostEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmRestartedOnAlternateHostEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmResumingEvent:
      type: object
      description: |2
        This event records a virtual machine resuming.
      allOf:
        - $ref: '#/components/schemas/VmEvent'

    ArrayOfVmResumingEvent:
      type: object
      description: |2
        A boxed array of *VmResumingEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmResumingEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmSecondaryAddedEvent:
      type: object
      description: |2
        This event records a secondary VM is added.
      allOf:
        - $ref: '#/components/schemas/VmEvent'

    ArrayOfVmSecondaryAddedEvent:
      type: object
      description: |2
        A boxed array of *VmSecondaryAddedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmSecondaryAddedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmSecondaryDisabledBySystemEvent:
      type: object
      description: |2
        This event records that a fault tolerance secondary VM has been
        disabled by vCenter because the VM could not be powered on.
      properties:
        reason:
          $ref: '#/components/schemas/MethodFault'
      allOf:
        - $ref: '#/components/schemas/VmEvent'

    ArrayOfVmSecondaryDisabledBySystemEvent:
      type: object
      description: |2
        A boxed array of *VmSecondaryDisabledBySystemEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmSecondaryDisabledBySystemEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmSecondaryDisabledEvent:
      type: object
      description: |2
        This event records a secondary VM is disabled.
      allOf:
        - $ref: '#/components/schemas/VmEvent'

    ArrayOfVmSecondaryDisabledEvent:
      type: object
      description: |2
        A boxed array of *VmSecondaryDisabledEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmSecondaryDisabledEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmSecondaryEnabledEvent:
      type: object
      description: |2
        This event records a secondary VM is enabled.
      allOf:
        - $ref: '#/components/schemas/VmEvent'

    ArrayOfVmSecondaryEnabledEvent:
      type: object
      description: |2
        A boxed array of *VmSecondaryEnabledEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmSecondaryEnabledEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmSecondaryStartedEvent:
      type: object
      description: |2
        This event records a secondary VM is started successfully.
      allOf:
        - $ref: '#/components/schemas/VmEvent'

    ArrayOfVmSecondaryStartedEvent:
      type: object
      description: |2
        A boxed array of *VmSecondaryStartedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmSecondaryStartedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmShutdownOnIsolationEvent:
      type: object
      description: |2
        This event records when a virtual machine has been shut down on an isolated host
        in a HA cluster.
      properties:
        isolatedHost:
          description: |2
            The isolated host on which a virtual machine was shutdown.
          $ref: '#/components/schemas/HostEventArgument'
        shutdownResult:
          description: |2
            Indicates if the shutdown was successful.
            
            If the shutdown failed, the virtual
            machine was powered off. see *VmShutdownOnIsolationEventOperation_enum*
          type: string
      required:
        - isolatedHost
      allOf:
        - $ref: '#/components/schemas/VmPoweredOffEvent'

    ArrayOfVmShutdownOnIsolationEvent:
      type: object
      description: |2
        A boxed array of *VmShutdownOnIsolationEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmShutdownOnIsolationEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmStartRecordingEvent:
      type: object
      deprecated: true
      description: |2
        Deprecated as of vSphere API 6.0.
        
        This event indicates the start of a recording session on a virtual machine.
      allOf:
        - $ref: '#/components/schemas/VmEvent'

    ArrayOfVmStartRecordingEvent:
      type: object
      description: |2
        A boxed array of *VmStartRecordingEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmStartRecordingEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmStartReplayingEvent:
      type: object
      deprecated: true
      description: |2
        Deprecated as of vSphere API 6.0.
        
        This event indicates the start of a replay session on a virtual machine.
      allOf:
        - $ref: '#/components/schemas/VmEvent'

    ArrayOfVmStartReplayingEvent:
      type: object
      description: |2
        A boxed array of *VmStartReplayingEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmStartReplayingEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmStartingEvent:
      type: object
      description: |2
        This event records a virtual machine powering on.
      allOf:
        - $ref: '#/components/schemas/VmEvent'

    ArrayOfVmStartingEvent:
      type: object
      description: |2
        A boxed array of *VmStartingEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmStartingEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmStartingSecondaryEvent:
      type: object
      description: |2
        This event records a vmotion to start a secondary VM.
      allOf:
        - $ref: '#/components/schemas/VmEvent'

    ArrayOfVmStartingSecondaryEvent:
      type: object
      description: |2
        A boxed array of *VmStartingSecondaryEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmStartingSecondaryEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmStaticMacConflictEvent:
      type: object
      description: |2
        This event records a static MAC address conflict for a virtual machine.
      properties:
        conflictedVm:
          description: |2
            The virtual machine whose static MAC address conflicts with
            the current virtual machine's address.
          $ref: '#/components/schemas/VmEventArgument'
        mac:
          description: |2
            The static MAC address that is in conflict.
          type: string
      required:
        - conflictedVm
        - mac
      allOf:
        - $ref: '#/components/schemas/VmEvent'

    ArrayOfVmStaticMacConflictEvent:
      type: object
      description: |2
        A boxed array of *VmStaticMacConflictEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmStaticMacConflictEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmStoppingEvent:
      type: object
      description: |2
        This event records a virtual machine stopping.
      allOf:
        - $ref: '#/components/schemas/VmEvent'

    ArrayOfVmStoppingEvent:
      type: object
      description: |2
        A boxed array of *VmStoppingEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmStoppingEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmSuspendedEvent:
      type: object
      description: |2
        This event records when a virtual machine finished suspending.
      allOf:
        - $ref: '#/components/schemas/VmEvent'

    ArrayOfVmSuspendedEvent:
      type: object
      description: |2
        A boxed array of *VmSuspendedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmSuspendedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmSuspendingEvent:
      type: object
      description: |2
        This event records a virtual machine suspending.
      allOf:
        - $ref: '#/components/schemas/VmEvent'

    ArrayOfVmSuspendingEvent:
      type: object
      description: |2
        A boxed array of *VmSuspendingEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmSuspendingEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmTimedoutStartingSecondaryEvent:
      type: object
      description: |2
        This event records timeout when starting a secondary VM.
        
        A default alarm will be triggered upon this event, which by default
        would trigger a SNMP trap.
      properties:
        timeout:
          description: |2
            The duration of the timeout in milliseconds.
          type: integer
          format: int64
      allOf:
        - $ref: '#/components/schemas/VmEvent'

    ArrayOfVmTimedoutStartingSecondaryEvent:
      type: object
      description: |2
        A boxed array of *VmTimedoutStartingSecondaryEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmTimedoutStartingSecondaryEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmUnsupportedStartingEvent:
      type: object
      description: |2
        This event records when an unsupported guest is powering on.
      properties:
        guestId:
          type: string
      required:
        - guestId
      allOf:
        - $ref: '#/components/schemas/VmStartingEvent'

    ArrayOfVmUnsupportedStartingEvent:
      type: object
      description: |2
        A boxed array of *VmUnsupportedStartingEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmUnsupportedStartingEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmUpgradeCompleteEvent:
      type: object
      description: |2
        This event records the successful completion of an upgrade operation.
      properties:
        version:
          description: |2
            The version of the agent.
          type: string
      required:
        - version
      allOf:
        - $ref: '#/components/schemas/VmEvent'

    ArrayOfVmUpgradeCompleteEvent:
      type: object
      description: |2
        A boxed array of *VmUpgradeCompleteEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmUpgradeCompleteEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmUpgradeFailedEvent:
      type: object
      description: |2
        This event records a failure to upgrade virtual hardware.
      allOf:
        - $ref: '#/components/schemas/VmEvent'

    ArrayOfVmUpgradeFailedEvent:
      type: object
      description: |2
        A boxed array of *VmUpgradeFailedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmUpgradeFailedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmUpgradingEvent:
      type: object
      description: |2
        This event records the process of upgrading the virtual hardware on a
        virtual machine.
      properties:
        version:
          description: |2
            The version of the agent.
          type: string
      required:
        - version
      allOf:
        - $ref: '#/components/schemas/VmEvent'

    ArrayOfVmUpgradingEvent:
      type: object
      description: |2
        A boxed array of *VmUpgradingEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmUpgradingEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmUuidAssignedEvent:
      type: object
      description: |2
        This event records the assignment of a new BIOS UUID
        to a virtual machine.
      properties:
        uuid:
          description: |2
            The new BIOS UUID.
          type: string
      required:
        - uuid
      allOf:
        - $ref: '#/components/schemas/VmEvent'

    ArrayOfVmUuidAssignedEvent:
      type: object
      description: |2
        A boxed array of *VmUuidAssignedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmUuidAssignedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmUuidChangedEvent:
      type: object
      description: |2
        This event records a change in a virtual machine's BIOS UUID.
      properties:
        oldUuid:
          description: |2
            The old BIOS UUID.
          type: string
        newUuid:
          description: |2
            The new BIOS UUID.
          type: string
      required:
        - oldUuid
        - newUuid
      allOf:
        - $ref: '#/components/schemas/VmEvent'

    ArrayOfVmUuidChangedEvent:
      type: object
      description: |2
        A boxed array of *VmUuidChangedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmUuidChangedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmUuidConflictEvent:
      type: object
      description: |2
        This event records a conflict of virtual machine BIOS UUIDs.
      properties:
        conflictedVm:
          description: |2
            The virtual machine whose UUID conflicts with the
            current virtual machine's UUID.
          $ref: '#/components/schemas/VmEventArgument'
        uuid:
          description: |2
            The BIOS UUID in conflict.
          type: string
      required:
        - conflictedVm
        - uuid
      allOf:
        - $ref: '#/components/schemas/VmEvent'

    ArrayOfVmUuidConflictEvent:
      type: object
      description: |2
        A boxed array of *VmUuidConflictEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmUuidConflictEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmVnicPoolReservationViolationClearEvent:
      type: object
      description: |2
        This event is generated when the reservations used by all
        the virtual network adapters belonging to the virtual NIC network
        resource pool goes below the reservation allocated to the resource pool
      properties:
        vmVnicResourcePoolKey:
          description: |2
            The key of the Virtual NIC network resource pool
          type: string
        vmVnicResourcePoolName:
          description: |2
            The name of the Virtual NIC network resource pool
          type: string
      required:
        - vmVnicResourcePoolKey
      allOf:
        - $ref: '#/components/schemas/DvsEvent'

    ArrayOfVmVnicPoolReservationViolationClearEvent:
      type: object
      description: |2
        A boxed array of *VmVnicPoolReservationViolationClearEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmVnicPoolReservationViolationClearEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmVnicPoolReservationViolationRaiseEvent:
      type: object
      description: |2
        This event is generated when the reservations used by all
        the virtual network adapters belonging to the virtual NIC network
        resource pool exceeds the reservation allocated to the resource pool
      properties:
        vmVnicResourcePoolKey:
          description: |2
            The key of the Virtual NIC network resource pool
          type: string
        vmVnicResourcePoolName:
          description: |2
            The name of the Virtual NIC network resource pool
          type: string
      required:
        - vmVnicResourcePoolKey
      allOf:
        - $ref: '#/components/schemas/DvsEvent'

    ArrayOfVmVnicPoolReservationViolationRaiseEvent:
      type: object
      description: |2
        A boxed array of *VmVnicPoolReservationViolationRaiseEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmVnicPoolReservationViolationRaiseEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmWwnAssignedEvent:
      type: object
      description: |2
        This event records the assignment of a new WWN (World Wide Name)
        to a virtual machine.
      properties:
        nodeWwns:
          description: |2
            The new node WWN.
          type: array
          items:
            type: integer
            format: int64
        portWwns:
          description: |2
            The new port WWN.
          type: array
          items:
            type: integer
            format: int64
      required:
        - nodeWwns
        - portWwns
      allOf:
        - $ref: '#/components/schemas/VmEvent'

    ArrayOfVmWwnAssignedEvent:
      type: object
      description: |2
        A boxed array of *VmWwnAssignedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmWwnAssignedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmWwnChangedEvent:
      type: object
      description: |2
        This event records a change in a virtual machine's WWN (World Wide Name).
      properties:
        oldNodeWwns:
          description: |2
            The old node WWN.
          type: array
          items:
            type: integer
            format: int64
        oldPortWwns:
          description: |2
            The old port WWN.
          type: array
          items:
            type: integer
            format: int64
        newNodeWwns:
          description: |2
            The new node WWN.
          type: array
          items:
            type: integer
            format: int64
        newPortWwns:
          description: |2
            The new port WWN.
          type: array
          items:
            type: integer
            format: int64
      allOf:
        - $ref: '#/components/schemas/VmEvent'

    ArrayOfVmWwnChangedEvent:
      type: object
      description: |2
        A boxed array of *VmWwnChangedEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmWwnChangedEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmWwnConflictEvent:
      type: object
      description: |2
        This event records a conflict of virtual machine WWNs (World Wide Name).
      properties:
        conflictedVms:
          description: |2
            The virtual machine whose WWN conflicts with the
            current virtual machine's WWN.
          type: array
          items:
            $ref: '#/components/schemas/VmEventArgument'
        conflictedHosts:
          description: |2
            The host whose physical WWN conflicts with the
            current virtual machine's WWN.
          type: array
          items:
            $ref: '#/components/schemas/HostEventArgument'
        wwn:
          description: |2
            The WWN in conflict.
          type: integer
          format: int64
      required:
        - wwn
      allOf:
        - $ref: '#/components/schemas/VmEvent'

    ArrayOfVmWwnConflictEvent:
      type: object
      description: |2
        A boxed array of *VmWwnConflictEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmWwnConflictEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VnicPortArgument:
      type: object
      description: |2
        This argument records a Virtual NIC device that connects to a DVPort.
      properties:
        vnic:
          description: |2
            The Virtual NIC devices that were using the DVports.
          type: string
        port:
          description: |2
            The DVPorts that were being used.
          $ref: '#/components/schemas/DistributedVirtualSwitchPortConnection'
      required:
        - vnic
        - port
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVnicPortArgument:
      type: object
      description: |2
        A boxed array of *VnicPortArgument*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VnicPortArgument'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    WarningUpgradeEvent:
      type: object
      description: |2
        This event is a general warning event from upgrade.
      allOf:
        - $ref: '#/components/schemas/UpgradeEvent'

    ArrayOfWarningUpgradeEvent:
      type: object
      description: |2
        A boxed array of *WarningUpgradeEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/WarningUpgradeEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    IScsiBootFailureEvent:
      type: object
      description: |2
        Could not boot from iScsi.
      allOf:
        - $ref: '#/components/schemas/HostEvent'

    ArrayOfIScsiBootFailureEvent:
      type: object
      description: |2
        A boxed array of *IScsiBootFailureEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/IScsiBootFailureEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ExtExtendedProductInfo:
      type: object
      description: |2
        This data object encapsulates extended product information for an extension.
      properties:
        companyUrl:
          description: |2
            URL to extension vendor.
          type: string
        productUrl:
          description: |2
            URL to vendor's description of this extension.
          type: string
        managementUrl:
          description: |2
            URL to management UI for this extension.
          type: string
        self:
          description: |2
            The VirtualMachine or VirtualApp that is running this extension.
            
            Refers instance of *ManagedEntity*.
          $ref: '#/components/schemas/ManagedObjectReference'
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfExtExtendedProductInfo:
      type: object
      description: |2
        A boxed array of *ExtExtendedProductInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ExtExtendedProductInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ManagedByInfo:
      type: object
      description: |2
        The ManagedByInfo data object contains information about the extension
        responsible for the life-cycle of the entity.
      properties:
        extensionKey:
          description: |2
            Key of the extension managing the entity.
          type: string
        type:
          description: |2
            Managed entity type, as defined by the extension managing the entity.
            
            An extension can manage different types of entities - different kinds
            of virtual machines, vApps, etc. - and this property is used to find
            the corresponding *managedEntityInfo*
            entry from the extension.
          type: string
      required:
        - extensionKey
        - type
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfManagedByInfo:
      type: object
      description: |2
        A boxed array of *ManagedByInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ManagedByInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ExtManagedEntityInfo:
      type: object
      description: |2
        This data object contains information about entities managed by this
        extension.
        
        The data can be used by clients to show extra information
        about managed virtual machines or vApps, such as a custom icon and a
        description of the entity.
      properties:
        type:
          description: |2
            Managed entity type, as defined by the extension.
            
            This matches the
            *type* field in the configuration
            about a virtual machine or vApp.
          type: string
        smallIconUrl:
          description: |2
            The URL to a 16x16 pixel icon in PNG format for entities of this
            type managed by this extension.
            
            The design of the icon should
            allow for the possibility of it being badged with the power state
            of the entity by the vSphere client. If you do not provide this
            icon, the icon at
            *iconUrl*, if found, is
            scaled down to 16x16 pixels.
          type: string
        iconUrl:
          description: |2
            The URL to an icon in PNG format that is no larger than 256x256
            pixels.
            
            This icon will be scaled to 16x16, 32x32, 64x64, and
            128x128 if needed. The icon is shown for all entities of this type
            managed by this extension.
          type: string
        description:
          description: |2
            Description of this managed entity type.
            
            This is typically displayed
            by clients, and should provide users with information about the
            function of entities of this type.
          type: string
      required:
        - type
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfExtManagedEntityInfo:
      type: object
      description: |2
        A boxed array of *ExtManagedEntityInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ExtManagedEntityInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ExtSolutionManagerInfo:
      type: object
      description: |2
        This data object encapsulates the Solution Manager configuration for
        this extension.
      properties:
        tab:
          deprecated: true
          description: |2
            Deprecated as of vSphere API 5.1, see client documentation for the
            preferred way to integrate custom user interfaces.
            
            List of tabs that must be shown in the Solution Manager for this extension.
            
            Tabs are shown ordered by their position in this array.
          type: array
          items:
            $ref: '#/components/schemas/ExtSolutionManagerInfoTabInfo'
        smallIconUrl:
          description: |2
            URL for an icon for this extension.
            
            The icon will be shown in the Solution
            Manager for this extension. The icon must be 16x16, and should be in PNG
            format.
          type: string
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfExtSolutionManagerInfo:
      type: object
      description: |2
        A boxed array of *ExtSolutionManagerInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ExtSolutionManagerInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ExtSolutionManagerInfoTabInfo:
      type: object
      deprecated: true
      description: |2
        Deprecated as of vSphere API 5.1.
        
        This data object contains information about a tab to show in the
        Solution Manager for this extension.
      properties:
        label:
          description: |2
            The name of the tab.
          type: string
        url:
          description: |2
            The URL for the webpage to show in the tab.
            
            Extra parameters will be added
            to this URL when vSphere Client loads it. See the "Customizing the vSphere
            Client" technical note for more information.
          type: string
      required:
        - label
        - url
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfExtSolutionManagerInfoTabInfo:
      type: object
      description: |2
        A boxed array of *ExtSolutionManagerInfoTabInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ExtSolutionManagerInfoTabInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ActiveDirectoryFault:
      type: object
      description: |2
        Base fault for Active Directory related problems.
      properties:
        errorCode:
          description: |2
            The error code reported by the Active Directory API.
          type: integer
          format: int32
      allOf:
        - $ref: '#/components/schemas/VimFault'

    ArrayOfActiveDirectoryFault:
      type: object
      description: |2
        A boxed array of *ActiveDirectoryFault*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ActiveDirectoryFault'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ActiveVMsBlockingEVC:
      type: object
      description: |2
        An attempt to enable Enhanced VMotion Compatibility on a cluster, or to
        select a less-featureful EVC mode for a cluster where EVC is already
        enabled, has failed for the following reason:
        - The cluster contains hosts that expose additional compatibility-
          relevant CPU features beyond those present in the baseline of the
          requested EVC mode.
        - Those hosts have powered-on or suspended virtual machines.
          
        Therefore the EVC configuration has been rejected since it may suppress
        CPU features that are currently in-use.
      properties:
        evcMode:
          description: |2
            The requested EVC mode.
          type: string
        host:
          description: |2
            Hosts with active virtual machines that are blocking the operation,
            because the hosts expose compatibility-relevant CPU features not present
            in the baseline of the requested EVC mode.
            
            Note that in rare cases, a host may be on this list even if its
            *maxEVCModeKey* corresponds to the
            requested EVC mode. This means that even though that EVC mode is the
            best match for the host's hardware, the host still has some features
            beyond those present in the baseline for that EVC mode.
            
            Refers instances of *HostSystem*.
          type: array
          items:
            $ref: '#/components/schemas/ManagedObjectReference'
        hostName:
          description: |2
            The names of the hosts in the host array.
          type: array
          items:
            type: string
      allOf:
        - $ref: '#/components/schemas/EVCConfigFault'

    ArrayOfActiveVMsBlockingEVC:
      type: object
      description: |2
        A boxed array of *ActiveVMsBlockingEVC*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ActiveVMsBlockingEVC'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    AdminDisabled:
      type: object
      description: |2
        Fault thrown if an attempt to disable the Administrator permission
        on a host of which the Administator permission has already been disabled.
      allOf:
        - $ref: '#/components/schemas/HostConfigFault'

    ArrayOfAdminDisabled:
      type: object
      description: |2
        A boxed array of *AdminDisabled*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/AdminDisabled'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    AdminNotDisabled:
      type: object
      description: |2
        Fault thrown if an attempt to enable the Administrator permission
        on a host of which the Administator permission is not disabled.
      allOf:
        - $ref: '#/components/schemas/HostConfigFault'

    ArrayOfAdminNotDisabled:
      type: object
      description: |2
        A boxed array of *AdminNotDisabled*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/AdminNotDisabled'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    AffinityConfigured:
      type: object
      description: |2
        Virtual machine has a configured memory and/or CPU affinity that will
        prevent VMotion.
        
        This is an error for powered-on virtual machines.
      properties:
        configuredAffinity:
          description: |2
            Configured affinity types for the virtual machine.
            
            See *AffinityType_enum* for valid values.
          type: array
          items:
            type: string
      required:
        - configuredAffinity
      allOf:
        - $ref: '#/components/schemas/MigrationFault'

    ArrayOfAffinityConfigured:
      type: object
      description: |2
        A boxed array of *AffinityConfigured*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/AffinityConfigured'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    AgentInstallFailed:
      type: object
      description: |2
        An AgentInstallFailed fault is thrown when VirtualCenter
        fails to install the VirtualCenter agent on a host.
        
        For example, a fault is
        thrown if the agent software cannot be uploaded to the host or an error occurred
        during the agent installation.
      properties:
        reason:
          description: |2
            The reason why the agent install failed, if known.
            
            Values should come from *AgentInstallFailedReason_enum*.
          type: string
        statusCode:
          description: |2
            The status code returned by the agent installer, if it was run.
          type: integer
          format: int32
        installerOutput:
          description: |2
            The output (stdout/stderr) from executing the agent installer.
          type: string
      allOf:
        - $ref: '#/components/schemas/HostConnectFault'

    ArrayOfAgentInstallFailed:
      type: object
      description: |2
        A boxed array of *AgentInstallFailed*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/AgentInstallFailed'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    AlreadyBeingManaged:
      type: object
      description: |2
        AlreadyBeingManaged fault is thrown by the host
        connect method if the host is already being managed
        by a VirtualCenter server.
      properties:
        ipAddress:
          description: |2
            IP address of server that is currently managing the host.
          type: string
      required:
        - ipAddress
      allOf:
        - $ref: '#/components/schemas/HostConnectFault'

    ArrayOfAlreadyBeingManaged:
      type: object
      description: |2
        A boxed array of *AlreadyBeingManaged*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/AlreadyBeingManaged'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    AlreadyConnected:
      type: object
      description: |2
        AlreadyConnect fault is thrown by the host connect method
        if the host is already connected to a VirtualCenter server.
        
        This might occur if the host has been added more than once
        in the same VirtualCenter in different folders or compute
        resources.
      properties:
        name:
          description: |2
            Name of the host
          type: string
      required:
        - name
      allOf:
        - $ref: '#/components/schemas/HostConnectFault'

    ArrayOfAlreadyConnected:
      type: object
      description: |2
        A boxed array of *AlreadyConnected*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/AlreadyConnected'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    AlreadyExists:
      type: object
      description: |2
        An AlreadyExists fault is thrown when an attempt is made to add an element
        to a collection, if the element's key, name, or identifier already exists in that
        collection.
      properties:
        name:
          type: string
      allOf:
        - $ref: '#/components/schemas/VimFault'

    ArrayOfAlreadyExists:
      type: object
      description: |2
        A boxed array of *AlreadyExists*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/AlreadyExists'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    AlreadyUpgraded:
      type: object
      description: |2
        An AlreadyUpgraded fault is thrown when an attempt is made to upgrade the
        virtual hardware of a Virtual machine whose virtual hardware is already
        up-to-date.
      allOf:
        - $ref: '#/components/schemas/VimFault'

    ArrayOfAlreadyUpgraded:
      type: object
      description: |2
        A boxed array of *AlreadyUpgraded*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/AlreadyUpgraded'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    AnswerFileUpdateFailed:
      type: object
      description: |2
        Could not update the answer file as it has invalid inputs.
      properties:
        failure:
          description: |2
            Failures encountered during answer file update
          type: array
          items:
            $ref: '#/components/schemas/AnswerFileUpdateFailure'
      required:
        - failure
      allOf:
        - $ref: '#/components/schemas/VimFault'

    ArrayOfAnswerFileUpdateFailed:
      type: object
      description: |2
        A boxed array of *AnswerFileUpdateFailed*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/AnswerFileUpdateFailed'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    AnswerFileUpdateFailure:
      type: object
      description: |2
        DataObject which represents the errors that occurred when an
        answer file update was performed.
      properties:
        userInputPath:
          description: |2
            The user input that has the error
          $ref: '#/components/schemas/ProfilePropertyPath'
        errMsg:
          description: |2
            Message which explains the error
          $ref: '#/components/schemas/LocalizableMessage'
      required:
        - userInputPath
        - errMsg
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfAnswerFileUpdateFailure:
      type: object
      description: |2
        A boxed array of *AnswerFileUpdateFailure*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/AnswerFileUpdateFailure'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ApplicationQuiesceFault:
      type: object
      description: |2
        This fault is thrown when creating a quiesced snapshot failed
        because the (user-supplied) custom pre-freeze script in the
        virtual machine exited with a non-zero return code.
        
        This indicates that the script failed to perform its quiescing
        task, which causes us to fail the quiesced snapshot operation.
      allOf:
        - $ref: '#/components/schemas/SnapshotFault'

    ArrayOfApplicationQuiesceFault:
      type: object
      description: |2
        A boxed array of *ApplicationQuiesceFault*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ApplicationQuiesceFault'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    AuthMinimumAdminPermission:
      type: object
      description: |2
        This fault is thrown when the requested change
        would result in a loss of full administrative privileges
        for at least one user or group.
      allOf:
        - $ref: '#/components/schemas/VimFault'

    ArrayOfAuthMinimumAdminPermission:
      type: object
      description: |2
        A boxed array of *AuthMinimumAdminPermission*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/AuthMinimumAdminPermission'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    BackupBlobReadFailure:
      type: object
      description: |2
        Thrown if backupConfig blob is corrupted
      properties:
        entityName:
          description: |2
            The entity name on which backupConfig read failed
          type: string
        entityType:
          description: |2
            The entity type on which backupConfig read failed
          type: string
        fault:
          description: |2
            The fault that occurred.
          $ref: '#/components/schemas/MethodFault'
      required:
        - entityName
        - entityType
        - fault
      allOf:
        - $ref: '#/components/schemas/DvsFault'

    ArrayOfBackupBlobReadFailure:
      type: object
      description: |2
        A boxed array of *BackupBlobReadFailure*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/BackupBlobReadFailure'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    BackupBlobWriteFailure:
      type: object
      description: |2
        Thrown if backupConfig blob write fails
      properties:
        entityName:
          description: |2
            The entity name on which backupConfig write failed
          type: string
        entityType:
          description: |2
            The entity type on which backupConfig write failed
          type: string
        fault:
          description: |2
            The fault that occurred.
          $ref: '#/components/schemas/MethodFault'
      required:
        - entityName
        - entityType
        - fault
      allOf:
        - $ref: '#/components/schemas/DvsFault'

    ArrayOfBackupBlobWriteFailure:
      type: object
      description: |2
        A boxed array of *BackupBlobWriteFailure*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/BackupBlobWriteFailure'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    BlockedByFirewall:
      type: object
      description: |2
        Fault indicating that firewall configuration prevents
        an operation from completing successfully.
      allOf:
        - $ref: '#/components/schemas/HostConfigFault'

    ArrayOfBlockedByFirewall:
      type: object
      description: |2
        A boxed array of *BlockedByFirewall*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/BlockedByFirewall'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    CAMServerRefusedConnection:
      type: object
      description: |2
        Fault indicating that the CAM server
        cannot be connected.
      allOf:
        - $ref: '#/components/schemas/InvalidCAMServer'

    ArrayOfCAMServerRefusedConnection:
      type: object
      description: |2
        A boxed array of *CAMServerRefusedConnection*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/CAMServerRefusedConnection'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    CannotAccessFile:
      type: object
      description: |2
        This fault is thrown when an operation fails because of insufficient
        permissions to access a file.
      allOf:
        - $ref: '#/components/schemas/FileFault'

    ArrayOfCannotAccessFile:
      type: object
      description: |2
        A boxed array of *CannotAccessFile*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/CannotAccessFile'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    CannotAccessLocalSource:
      type: object
      description: |2
        An CannotAccessLocalSourceFault exception is thrown when a
        an attempt is made to upload license content
        and the local source cannot be accesed.
      allOf:
        - $ref: '#/components/schemas/VimFault'

    ArrayOfCannotAccessLocalSource:
      type: object
      description: |2
        A boxed array of *CannotAccessLocalSource*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/CannotAccessLocalSource'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    CannotAccessNetwork:
      type: object
      description: |2
        A network associated with the virtual machine is not accessible.
        
        If returned as
        part of migration checks, this is an error if either of the following is true,
        a warning otherwise:
        - The virtual ethernet card device backing is a distributed virtual switch,
          of which the destination host is not a member
        - The virtual ethernet card device backing is a standard network and the
          the device is connected
      properties:
        network:
          description: |2
            A reference to the network that cannot be accessed
            
            Refers instance of *Network*.
          $ref: '#/components/schemas/ManagedObjectReference'
      allOf:
        - $ref: '#/components/schemas/CannotAccessVmDevice'

    ArrayOfCannotAccessNetwork:
      type: object
      description: |2
        A boxed array of *CannotAccessNetwork*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/CannotAccessNetwork'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    CannotAccessVmComponent:
      type: object
      description: |2
        One of the virtual machine's components is not accessible on the execution host.
        
        This is a base class. Subclasses will encode the type of component that is not
        accessible.
      allOf:
        - $ref: '#/components/schemas/VmConfigFault'

    ArrayOfCannotAccessVmComponent:
      type: object
      description: |2
        A boxed array of *CannotAccessVmComponent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/CannotAccessVmComponent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    CannotAccessVmConfig:
      type: object
      description: |2
        One or more of the virtual machine's configuration files are not accessible.
      properties:
        reason:
          description: |2
            Contains the reason why the VM file could not be found.
            
            This is typically
            a FileFault.
          $ref: '#/components/schemas/MethodFault'
      required:
        - reason
      allOf:
        - $ref: '#/components/schemas/CannotAccessVmComponent'

    ArrayOfCannotAccessVmConfig:
      type: object
      description: |2
        A boxed array of *CannotAccessVmConfig*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/CannotAccessVmConfig'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    CannotAccessVmDevice:
      type: object
      description: |2
        One of the virtual machine's devices uses a backing that is not accessible
        on the host.
        
        Following is a discussion of this fault's use in migration validation.
        This is an error if the device is currently connected and a warning
        otherwise. Devices that can be disconnected can only be connected if the virtual
        machine is powered on.
        
        The usage of this fault is slightly different if the backing of a device is
        inherently host-local, and therefore not shared or globally named among
        hosts. (Examples of such backings: physical CD-ROM drive, physical serial
        port.) If a device with such a backing is currently connected, that will
        be a migration error. If the device is disconnected, there will be a
        warning if no backing with the same name exists on the destination host.
        If the device is disconnected and a backing with the same name exists on
        the destination host, this is neither a warning nor an error case, even
        though the destination host's backing is not the same instance as the
        source host's. It is assumed that use of the host-local backing is what is
        desired for the device.
      properties:
        device:
          description: |2
            The label of the device.
          type: string
        backing:
          description: |2
            The backing of the device.
          type: string
        connected:
          description: |2
            The connected/disconnected state of the device.
          type: boolean
      required:
        - device
        - backing
        - connected
      allOf:
        - $ref: '#/components/schemas/CannotAccessVmComponent'

    ArrayOfCannotAccessVmDevice:
      type: object
      description: |2
        A boxed array of *CannotAccessVmDevice*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/CannotAccessVmDevice'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    CannotAccessVmDisk:
      type: object
      description: |2
        One of the virtual machine's virtual disks is not accessible.
      properties:
        fault:
          description: |2
            The reason why the disk could not be accessed
          $ref: '#/components/schemas/MethodFault'
      required:
        - fault
      allOf:
        - $ref: '#/components/schemas/CannotAccessVmDevice'

    ArrayOfCannotAccessVmDisk:
      type: object
      description: |2
        A boxed array of *CannotAccessVmDisk*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/CannotAccessVmDisk'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    CannotAddHostWithFTVmAsStandalone:
      type: object
      description: |2
        Can not add a host with fault tolerance vms to be standalone
      allOf:
        - $ref: '#/components/schemas/HostConnectFault'

    ArrayOfCannotAddHostWithFTVmAsStandalone:
      type: object
      description: |2
        A boxed array of *CannotAddHostWithFTVmAsStandalone*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/CannotAddHostWithFTVmAsStandalone'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    CannotAddHostWithFTVmToDifferentCluster:
      type: object
      description: |2
        Can not add a host with fault tolerance vms to a different cluster other
        than the one used other vms in the same fault tolerance group.
      allOf:
        - $ref: '#/components/schemas/HostConnectFault'

    ArrayOfCannotAddHostWithFTVmToDifferentCluster:
      type: object
      description: |2
        A boxed array of *CannotAddHostWithFTVmToDifferentCluster*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/CannotAddHostWithFTVmToDifferentCluster'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    CannotAddHostWithFTVmToNonHACluster:
      type: object
      description: |2
        Can not add a host with fault tolerance vms to a non HA enabled cluster
      allOf:
        - $ref: '#/components/schemas/HostConnectFault'

    ArrayOfCannotAddHostWithFTVmToNonHACluster:
      type: object
      description: |2
        A boxed array of *CannotAddHostWithFTVmToNonHACluster*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/CannotAddHostWithFTVmToNonHACluster'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    CannotChangeDrsBehaviorForFtSecondary:
      type: object
      description: |2
        This fault is used to report that the DRS behavior cannot be modified
        for a FT secondary virtual machine
      properties:
        vm:
          description: |2
            The virtual machine whose behavior cannot be modified
            
            Refers instance of *VirtualMachine*.
          $ref: '#/components/schemas/ManagedObjectReference'
        vmName:
          description: |2
            Name of the virtual machine
          type: string
      required:
        - vm
        - vmName
      allOf:
        - $ref: '#/components/schemas/VmFaultToleranceIssue'

    ArrayOfCannotChangeDrsBehaviorForFtSecondary:
      type: object
      description: |2
        A boxed array of *CannotChangeDrsBehaviorForFtSecondary*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/CannotChangeDrsBehaviorForFtSecondary'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    CannotChangeHaSettingsForFtSecondary:
      type: object
      description: |2
        This fault is used to report that the HA settings cannot be modified
        for a FT secondary virtual machine
      properties:
        vm:
          description: |2
            The FT secondary virtual machine whose behavior cannot be modified
            
            Refers instance of *VirtualMachine*.
          $ref: '#/components/schemas/ManagedObjectReference'
        vmName:
          description: |2
            Name of the FT secondary virtual machine
          type: string
      required:
        - vm
        - vmName
      allOf:
        - $ref: '#/components/schemas/VmFaultToleranceIssue'

    ArrayOfCannotChangeHaSettingsForFtSecondary:
      type: object
      description: |2
        A boxed array of *CannotChangeHaSettingsForFtSecondary*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/CannotChangeHaSettingsForFtSecondary'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    CannotChangeVsanClusterUuid:
      type: object
      description: |2
        Fault thrown for cases that a VSAN cluster UUID may not be changed.
        
        For example, the VSAN cluster UUID for a host may not be changed so long
        as that host is enabled for VSAN.
        The VSAN cluster UUID for a given *ClusterComputeResource* may
        not be changed so long as that vim.ClusterComputeResource is enabled for
        VSAN.
        
        See also *HostVsanSystem.UpdateVsan_Task*, *ComputeResource.ReconfigureComputeResource_Task*.
      allOf:
        - $ref: '#/components/schemas/VsanFault'

    ArrayOfCannotChangeVsanClusterUuid:
      type: object
      description: |2
        A boxed array of *CannotChangeVsanClusterUuid*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/CannotChangeVsanClusterUuid'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    CannotChangeVsanNodeUuid:
      type: object
      description: |2
        Fault thrown for cases that a VSAN node UUID may not be changed.
        
        For example, the VSAN node UUID for a host may not be changed so long as
        that host is enabled for VSAN.
        
        See also *HostVsanSystem.UpdateVsan_Task*, *ComputeResource.ReconfigureComputeResource_Task*.
      allOf:
        - $ref: '#/components/schemas/VsanFault'

    ArrayOfCannotChangeVsanNodeUuid:
      type: object
      description: |2
        A boxed array of *CannotChangeVsanNodeUuid*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/CannotChangeVsanNodeUuid'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    CannotComputeFTCompatibleHosts:
      type: object
      description: |2
        This fault is used if FT compatible hosts cannot be computed for a VM
      properties:
        vm:
          description: |2
            The virtual machine for FT compatible hosts is being computed
            
            Refers instance of *VirtualMachine*.
          $ref: '#/components/schemas/ManagedObjectReference'
        vmName:
          description: |2
            Name of the virtual machine
          type: string
      required:
        - vm
        - vmName
      allOf:
        - $ref: '#/components/schemas/VmFaultToleranceIssue'

    ArrayOfCannotComputeFTCompatibleHosts:
      type: object
      description: |2
        A boxed array of *CannotComputeFTCompatibleHosts*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/CannotComputeFTCompatibleHosts'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    CannotCreateFile:
      type: object
      description: |2
        A CannotCreateFile exception is thrown if a file create
        operation fails.
      allOf:
        - $ref: '#/components/schemas/FileFault'

    ArrayOfCannotCreateFile:
      type: object
      description: |2
        A boxed array of *CannotCreateFile*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/CannotCreateFile'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    CannotDecryptPasswords:
      type: object
      description: |2
        The VirtualCenter server is unable to decrypt passwords stored in
        the customization specification.
      allOf:
        - $ref: '#/components/schemas/CustomizationFault'

    ArrayOfCannotDecryptPasswords:
      type: object
      description: |2
        A boxed array of *CannotDecryptPasswords*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/CannotDecryptPasswords'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    CannotDeleteFile:
      type: object
      description: |2
        A CannotDeleteFile exception is thrown if a file-deletion
        operation fails.
      allOf:
        - $ref: '#/components/schemas/FileFault'

    ArrayOfCannotDeleteFile:
      type: object
      description: |2
        A boxed array of *CannotDeleteFile*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/CannotDeleteFile'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    CannotDisableDrsOnClustersWithVApps:
      type: object
      description: |2
        This fault is thrown when an attempt is made to disable DRS on a cluster,
        which contains a vApp.
      allOf:
        - $ref: '#/components/schemas/RuntimeFault'

    ArrayOfCannotDisableDrsOnClustersWithVApps:
      type: object
      description: |2
        A boxed array of *CannotDisableDrsOnClustersWithVApps*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/CannotDisableDrsOnClustersWithVApps'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    CannotDisableSnapshot:
      type: object
      description: |2
        Fault thrown when an attempt is made to disable snapshots on a virtual
        machine which has a snapshot.
        
        To disable the snapshot feature, the
        virtual machine must not currently have a snapshot.
      allOf:
        - $ref: '#/components/schemas/VmConfigFault'

    ArrayOfCannotDisableSnapshot:
      type: object
      description: |2
        A boxed array of *CannotDisableSnapshot*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/CannotDisableSnapshot'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    CannotDisconnectHostWithFaultToleranceVm:
      type: object
      description: |2
        This fault is thrown when an attempt is made to disconnect a host, which
        has one or more fault tolerance vms and is not in maintenance mode.
      properties:
        hostName:
          description: |2
            The name of the host to be disconnected
          type: string
      required:
        - hostName
      allOf:
        - $ref: '#/components/schemas/VimFault'

    ArrayOfCannotDisconnectHostWithFaultToleranceVm:
      type: object
      description: |2
        A boxed array of *CannotDisconnectHostWithFaultToleranceVm*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/CannotDisconnectHostWithFaultToleranceVm'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    CannotEnableVmcpForCluster:
      type: object
      description: |2
        This fault is thrown when an attempt is made to enable VM Component Protection
        on a cluster which contains a host that does not support this feature.
      properties:
        host:
          description: |2
            Report the host with APD timeout disabled.
            
            If the host is set it points to the host which is the reason
            for this fault i.e this host has ADPTimeout disabled.
            
            Refers instance of *HostSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
        hostName:
          description: |2
            If set this reports the hostName.
            
            This is used for printing the host name in the
            localized message as the host may have been removed
            from the vCenter's inventory by the time localization would
            be taking place.
          type: string
        reason:
          description: |2
            This reports the reason for host not meeting the requirements
            for enabling vSphere VMCP.
            
            It can be the following reason.
            - APDTimeout disabled.
          type: string
      allOf:
        - $ref: '#/components/schemas/VimFault'

    ArrayOfCannotEnableVmcpForCluster:
      type: object
      description: |2
        A boxed array of *CannotEnableVmcpForCluster*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/CannotEnableVmcpForCluster'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    CannotModifyConfigCpuRequirements:
      type: object
      description: |2
        A virtual machine's total CPU feature requirements are determined by
        overlaying the requirements specified in its configuration (if any) on top
        of the requirements specified in the descriptor for its guest OS.
        
        It is
        therefore possible for a host change to implicitly change a virtual
        machine's CPU feature requirements. The guest OS descriptor may have
        different requirements on the new host. Or, if the virtual machine
        currently specifies requirements in its configuration, those requirements
        will be lost if the new host does not support this.
        
        This fault indicates that the virtual machine's CPU feature requirements
        would change because of a migration, and also that the destination host
        does not support storing CPU feature requirements in the virtual machine's
        configuration. (If the destination host does support such an action,
        WillModifyConfigCpuRequirements is used instead of this fault.)
        
        For a powered-off virtual machine, this is a warning. The migration may
        proceed, but the virtual machine will be operating under different
        CPU feature requirements if it is powered on after the migration.
        
        For a powered-on or suspended virtual machine, this is an error.
      allOf:
        - $ref: '#/components/schemas/MigrationFault'

    ArrayOfCannotModifyConfigCpuRequirements:
      type: object
      description: |2
        A boxed array of *CannotModifyConfigCpuRequirements*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/CannotModifyConfigCpuRequirements'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    CannotMoveFaultToleranceVm:
      type: object
      description: |2
        This fault is thrown when an attempt is made to move a fault tolerance
        vm to a different resource pool or cluster.
      properties:
        moveType:
          description: |2
            The type of the move
          type: string
        vmName:
          description: |2
            The virtual machine name to be moved.
          type: string
      required:
        - moveType
        - vmName
      allOf:
        - $ref: '#/components/schemas/VimFault'

    ArrayOfCannotMoveFaultToleranceVm:
      type: object
      description: |2
        A boxed array of *CannotMoveFaultToleranceVm*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/CannotMoveFaultToleranceVm'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    CannotMoveHostWithFaultToleranceVm:
      type: object
      description: |2
        This fault is thrown when an attempt is made to move a host which has
        one or more fault tolerance vms out of the current cluster.
      allOf:
        - $ref: '#/components/schemas/VimFault'

    ArrayOfCannotMoveHostWithFaultToleranceVm:
      type: object
      description: |2
        A boxed array of *CannotMoveHostWithFaultToleranceVm*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/CannotMoveHostWithFaultToleranceVm'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    CannotMoveVmWithDeltaDisk:
      type: object
      description: |2
        This fault is thrown when an attempt is made to relocate a virtual machine
        with virtual disk(s) having delta disk backing.
      properties:
        device:
          description: |2
            The label of the delta disk device
          type: string
      required:
        - device
      allOf:
        - $ref: '#/components/schemas/MigrationFault'

    ArrayOfCannotMoveVmWithDeltaDisk:
      type: object
      description: |2
        A boxed array of *CannotMoveVmWithDeltaDisk*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/CannotMoveVmWithDeltaDisk'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    CannotMoveVmWithNativeDeltaDisk:
      type: object
      description: |2
        This fault is thrown when an attempt is made to migrate a virtual machine
        with native delta disks to different datastores.
      allOf:
        - $ref: '#/components/schemas/MigrationFault'

    ArrayOfCannotMoveVmWithNativeDeltaDisk:
      type: object
      description: |2
        A boxed array of *CannotMoveVmWithNativeDeltaDisk*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/CannotMoveVmWithNativeDeltaDisk'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    CannotMoveVsanEnabledHost:
      type: object
      description: |2
        Fault thrown for the case that an attempt is made to move a host which
        is enabled for VSAN into an unsuitable *ClusterComputeResource*.
        
        The destination vim.ClusterComputeResource may be disabled for VSAN, or
        may be using VSAN with a different cluster UUID.
        
        See also *ClusterComputeResource.AddHost_Task*, *ClusterComputeResource.MoveHostInto_Task*, *ClusterComputeResource.MoveInto_Task*, *VsanClusterUuidMismatch*, *DestinationVsanDisabled*.
      allOf:
        - $ref: '#/components/schemas/VsanFault'

    ArrayOfCannotMoveVsanEnabledHost:
      type: object
      description: |2
        A boxed array of *CannotMoveVsanEnabledHost*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/CannotMoveVsanEnabledHost'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    CannotPlaceWithoutPrerequisiteMoves:
      type: object
      description: |2
        This fault is thrown when Storage DRS cannot recommend to place disks of
        a virtual machine without moving existing virtual disks in a
        datastore cluster.
      allOf:
        - $ref: '#/components/schemas/VimFault'

    ArrayOfCannotPlaceWithoutPrerequisiteMoves:
      type: object
      description: |2
        A boxed array of *CannotPlaceWithoutPrerequisiteMoves*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/CannotPlaceWithoutPrerequisiteMoves'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    CannotPowerOffVmInCluster:
      type: object
      description: |2
        This fault is reported when a user attempts to power off or
        suspend a VM when the HA master agent to which vCenter Server is
        connected does not manage the VM.
      properties:
        operation:
          description: |2
            The operation being performed.
            
            Values come from
            *CannotPowerOffVmInClusterOperation_enum*.
          type: string
        vm:
          description: |2
            The Virtual Machine
            
            Refers instance of *VirtualMachine*.
          $ref: '#/components/schemas/ManagedObjectReference'
        vmName:
          description: |2
            Name of the Virtual Machine
          type: string
      required:
        - operation
        - vm
        - vmName
      allOf:
        - $ref: '#/components/schemas/InvalidState'

    ArrayOfCannotPowerOffVmInCluster:
      type: object
      description: |2
        A boxed array of *CannotPowerOffVmInCluster*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/CannotPowerOffVmInCluster'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    CannotReconfigureVsanWhenHaEnabled:
      type: object
      description: |2
        Fault thrown for the case that an attempt is made to reconfigure VSAN
        when HA is currently enabled for a given *ClusterComputeResource*.
        
        See also *ComputeResource.ReconfigureComputeResource_Task*.
      allOf:
        - $ref: '#/components/schemas/VsanFault'

    ArrayOfCannotReconfigureVsanWhenHaEnabled:
      type: object
      description: |2
        A boxed array of *CannotReconfigureVsanWhenHaEnabled*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/CannotReconfigureVsanWhenHaEnabled'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    CannotUseNetwork:
      type: object
      description: |2
        A network associated with the virtual machine is accessible, but it
        cannot be used for some reason.
      properties:
        device:
          description: |2
            The label of the network device.
          type: string
        backing:
          description: |2
            The backing of the network device.
          type: string
        connected:
          description: |2
            The connected/disconnected state of the device.
          type: boolean
        reason:
          description: |2
            Reason describing why the network cannot be used.
          type: string
        network:
          description: |2
            A reference to the network that cannot be used
            
            Refers instance of *Network*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - device
        - backing
        - connected
        - reason
      allOf:
        - $ref: '#/components/schemas/VmConfigFault'

    ArrayOfCannotUseNetwork:
      type: object
      description: |2
        A boxed array of *CannotUseNetwork*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/CannotUseNetwork'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ClockSkew:
      type: object
      description: |2
        Fault indicating that the clock skew in the system exceeds the limit.
      allOf:
        - $ref: '#/components/schemas/HostConfigFault'

    ArrayOfClockSkew:
      type: object
      description: |2
        A boxed array of *ClockSkew*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ClockSkew'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    CloneFromSnapshotNotSupported:
      type: object
      description: |2
        An attempt is being made to clone a virtual machine from a snapshot
        point, and this is not supported.
        
        See also *VirtualMachineCloneSpec.snapshot*, *VirtualMachineCapability.snapshotConfigSupported*, *HostCapability.cloneFromSnapshotSupported*.
      allOf:
        - $ref: '#/components/schemas/MigrationFault'

    ArrayOfCloneFromSnapshotNotSupported:
      type: object
      description: |2
        A boxed array of *CloneFromSnapshotNotSupported*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/CloneFromSnapshotNotSupported'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    CollectorAddressUnset:
      type: object
      description: |2
        The distributed virtual switch received a reconfiguration request to
        activate ipfix monitoring of the switch traffic.
        
        However, the address
        and/or the port of the ipfix collector has not been specified.
      allOf:
        - $ref: '#/components/schemas/DvsFault'

    ArrayOfCollectorAddressUnset:
      type: object
      description: |2
        A boxed array of *CollectorAddressUnset*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/CollectorAddressUnset'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ConcurrentAccess:
      type: object
      description: |2
        A ConcurrentAccess fault is thrown when an operation
        fails because another operation has modified the
        datastructure.
        
        For non-transactional operations, such as a recursive
        delete of a subtree of the inventory, the operation might
        fail with ConcurrentAccess if another thread has added
        a new entity to the hierarchy.
      allOf:
        - $ref: '#/components/schemas/VimFault'

    ArrayOfConcurrentAccess:
      type: object
      description: |2
        A boxed array of *ConcurrentAccess*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ConcurrentAccess'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ConflictingConfiguration:
      type: object
      description: |2
        Thrown if the configurations of the objects are in conflict.
      properties:
        configInConflict:
          description: |2
            The configurations that are in conflict.
          type: array
          items:
            $ref: '#/components/schemas/ConflictingConfigurationConfig'
      required:
        - configInConflict
      allOf:
        - $ref: '#/components/schemas/DvsFault'

    ArrayOfConflictingConfiguration:
      type: object
      description: |2
        A boxed array of *ConflictingConfiguration*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ConflictingConfiguration'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ConflictingConfigurationConfig:
      type: object
      description: |2
        This class defines the configuration that is in conflict.
      properties:
        entity:
          description: |2
            The entity on which the configuration is in conflict.
            
            Refers instance of *ManagedEntity*.
          $ref: '#/components/schemas/ManagedObjectReference'
        propertyPath:
          description: |2
            The property paths that are in conflict.
          type: string
      required:
        - propertyPath
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfConflictingConfigurationConfig:
      type: object
      description: |2
        A boxed array of *ConflictingConfigurationConfig*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ConflictingConfigurationConfig'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ConflictingDatastoreFound:
      type: object
      description: |2
        ConflictingDatastoreFound is thrown when the conflicting datastores
        with the same url but backed by different disks are found in the host
        and the target datacenter.
      properties:
        name:
          description: |2
            The name of the datastore.
          type: string
        url:
          description: |2
            The unique locator for the datastore.
          type: string
      required:
        - name
        - url
      allOf:
        - $ref: '#/components/schemas/RuntimeFault'

    ArrayOfConflictingDatastoreFound:
      type: object
      description: |2
        A boxed array of *ConflictingDatastoreFound*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ConflictingDatastoreFound'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ConnectedIso:
      type: object
      properties:
        cdrom:
          description: |2
            The CD-ROM drive that caused the event.
          $ref: '#/components/schemas/VirtualCdrom'
        filename:
          description: |2
            The filename of the ISO
          type: string
      required:
        - cdrom
        - filename
      allOf:
        - $ref: '#/components/schemas/OvfExport'

    ArrayOfConnectedIso:
      type: object
      description: |2
        A boxed array of *ConnectedIso*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ConnectedIso'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    CpuCompatibilityUnknown:
      type: object
      deprecated: true
      description: |2
        Deprecated as of VI API 2.5, use *CpuIncompatible* and its other subclasses,
        not this one.
        
        Compatibility between the virtual machine's host and its CPU
        feature requirements cannot be determined, because not enough information
        is available about the CPU features of the host.
      allOf:
        - $ref: '#/components/schemas/CpuIncompatible'

    ArrayOfCpuCompatibilityUnknown:
      type: object
      description: |2
        A boxed array of *CpuCompatibilityUnknown*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/CpuCompatibilityUnknown'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    CpuHotPlugNotSupported:
      type: object
      description: |2
        Thrown when virtual CPUs cannot be hot-added or hot-removed from
        the virtual machine.
      allOf:
        - $ref: '#/components/schemas/VmConfigFault'

    ArrayOfCpuHotPlugNotSupported:
      type: object
      description: |2
        A boxed array of *CpuHotPlugNotSupported*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/CpuHotPlugNotSupported'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    CpuIncompatible:
      type: object
      deprecated: true
      description: |2
        Deprecated as of vSphere API 6.5 use
        *FeatureRequirementsNotMet*.
        
        The host is not compatible with the CPU feature requirements of the
        virtual machine, for a particular CPUID register.
        
        A subclass of this fault
        may be used to express the incompatibilities in a more easily
        understandable format.
      properties:
        level:
          description: |2
            The CpuIdInfo level where a problem was detected.
            
            Other levels may
            also have problems.
          type: integer
          format: int32
        registerName:
          description: |2
            The CpuIdInfo register where a problem was detected.
            
            Other registers
            may also have problems. Possible register names are eax, ebx, ecx, or edx.
          type: string
        registerBits:
          description: |2
            The contents of the register on the target host, in CpuIdInfo register
            format.
            
            The '-' character indicates an unknown value.
          type: string
        desiredBits:
          description: |2
            The desired values for the register's bits.
            
            The 'x' character indicates
            don't-care.
          type: string
        host:
          description: |2
            The host that is not compatible with the requirements.
            
            Refers instance of *HostSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - level
        - registerName
      allOf:
        - $ref: '#/components/schemas/VirtualHardwareCompatibilityIssue'

    ArrayOfCpuIncompatible:
      type: object
      description: |2
        A boxed array of *CpuIncompatible*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/CpuIncompatible'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    CpuIncompatible1ECX:
      type: object
      deprecated: true
      description: |2
        Deprecated as of vSphere API 6.5 use
        *FeatureRequirementsNotMet*.
        
        Convenience subclass for calling out some named features among the
        incompatibilities found in CPUID level 1 register ecx.
      properties:
        sse3:
          description: |2
            Flag to indicate bit 0 is incompatible.
          type: boolean
        pclmulqdq:
          description: |2
            Flag to indicate bit 1 is incompatible.
          type: boolean
        ssse3:
          description: |2
            Flag to indicate bit 9 is incompatible.
          type: boolean
        sse41:
          description: |2
            Flag to indicate bit 19 is incompatible.
          type: boolean
        sse42:
          description: |2
            Flag to indicate bit 20 is incompatible.
          type: boolean
        aes:
          description: |2
            Flag to indicate bit 25 is incompatible.
          type: boolean
        other:
          description: |2
            Flag to indicate that bits other than 0/1/9/19/20/25 are incompatible.
            
            I.e. the detected incompatibilities cannot be completely described by
            the sse3, pclmulqdq, ssse3, sse41, sse42, and/or aes flags.
          type: boolean
        otherOnly:
          description: |2
            Flag to indicate that the sse3, pclmulqdq, ssse3, sse41, sse42, and aes
            flags are all false, and the "other" flag is true.
            
            Purely a convenience
            property for the client processing this fault.
          type: boolean
      required:
        - sse3
        - pclmulqdq
        - ssse3
        - sse41
        - sse42
        - aes
        - other
        - otherOnly
      allOf:
        - $ref: '#/components/schemas/CpuIncompatible'

    ArrayOfCpuIncompatible1ECX:
      type: object
      description: |2
        A boxed array of *CpuIncompatible1ECX*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/CpuIncompatible1ECX'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    CpuIncompatible81EDX:
      type: object
      deprecated: true
      description: |2
        Deprecated as of vSphere API 6.5 use
        *FeatureRequirementsNotMet*.
        
        Convenience subclass for calling out some named features among the
        incompatibilities found in CPUID level 0x80000001 register edx.
      properties:
        nx:
          description: |2
            Flag to indicate bit 20 is incompatible.
          type: boolean
        ffxsr:
          description: |2
            Flag to indicate bit 25 is incompatible.
          type: boolean
        rdtscp:
          description: |2
            Flag to indicate bit 27 is incompatible.
          type: boolean
        lm:
          description: |2
            Flag to indicate bit 29 is incompatible.
          type: boolean
        other:
          description: |2
            Flag to indicate that bits other than 20/25/27/29 are incompatible.
            
            I.e. the detected incompatibilities cannot be completely described by
            the nx, ffxsr, rdtscp, and/or lm flags.
          type: boolean
        otherOnly:
          description: |2
            Flag to indicate that the nx, ffxsr, rdtscp, and lm flags are all false,
            and the "other" flag is true.
            
            Purely a convenience property for the
            client processing this fault.
          type: boolean
      required:
        - nx
        - ffxsr
        - rdtscp
        - lm
        - other
        - otherOnly
      allOf:
        - $ref: '#/components/schemas/CpuIncompatible'

    ArrayOfCpuIncompatible81EDX:
      type: object
      description: |2
        A boxed array of *CpuIncompatible81EDX*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/CpuIncompatible81EDX'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    CustomizationFault:
      type: object
      description: |2
        Base for exceptions that can be thrown from the customizer.
      allOf:
        - $ref: '#/components/schemas/VimFault'

    ArrayOfCustomizationFault:
      type: object
      description: |2
        A boxed array of *CustomizationFault*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/CustomizationFault'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    CustomizationPending:
      type: object
      description: |2
        A customization operation is already pending on this virtual
        machine and is awaiting power-up to complete.
      allOf:
        - $ref: '#/components/schemas/CustomizationFault'

    ArrayOfCustomizationPending:
      type: object
      description: |2
        A boxed array of *CustomizationPending*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/CustomizationPending'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DVPortNotSupported:
      type: object
      description: |2
        The virtual machine is configured to use a DVPort, which is not
        supported on the host.
        
        This could be because the host
        does not support VDS at all, or because the host has not
        joined a VDS.
      allOf:
        - $ref: '#/components/schemas/DeviceBackingNotSupported'

    ArrayOfDVPortNotSupported:
      type: object
      description: |2
        A boxed array of *DVPortNotSupported*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DVPortNotSupported'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DasConfigFault:
      type: object
      description: |2
        This fault indicates that some error has occurred during the
        configuration of the host for HA.
        
        This may be subclassed by a more specific fault.
      properties:
        reason:
          description: |2
            The reason why the HA configuration failed, if known.
            
            Values should come from *DasConfigFaultDasConfigFaultReason_enum*.
          type: string
        output:
          description: |2
            The output (stdout/stderr) from executing the configuration.
          type: string
        event:
          description: |2
            The list of events containing details why the configuration failed, if known.
          type: array
          items:
            $ref: '#/components/schemas/Event'
      allOf:
        - $ref: '#/components/schemas/VimFault'

    ArrayOfDasConfigFault:
      type: object
      description: |2
        A boxed array of *DasConfigFault*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DasConfigFault'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DatabaseError:
      type: object
      description: |2
        A DatabaseError exception is thrown if an
        operation failed when accessing the external
        database.
        
        This typically is because
        the database is (temporarily) unavailable or
        because of network problems.
      allOf:
        - $ref: '#/components/schemas/RuntimeFault'

    ArrayOfDatabaseError:
      type: object
      description: |2
        A boxed array of *DatabaseError*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DatabaseError'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DatacenterMismatch:
      type: object
      description: |2
        The input arguments had entities that did not belong to the same
        datacenter.
      properties:
        invalidArgument:
          description: |2
            The list of invalid arguments.
          type: array
          items:
            $ref: '#/components/schemas/DatacenterMismatchArgument'
        expectedDatacenter:
          description: |2
            The expected datacenter for the arguments.
            
            Refers instance of *Datacenter*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - invalidArgument
        - expectedDatacenter
      allOf:
        - $ref: '#/components/schemas/MigrationFault'

    ArrayOfDatacenterMismatch:
      type: object
      description: |2
        A boxed array of *DatacenterMismatch*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DatacenterMismatch'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DatacenterMismatchArgument:
      type: object
      description: |2
        An input entity argument that belongs to a mismatched datacenter.
      properties:
        entity:
          description: |2
            The invalid input entity.
            
            Refers instance of *ManagedEntity*.
          $ref: '#/components/schemas/ManagedObjectReference'
        inputDatacenter:
          description: |2
            The datacenter for this entity.
            
            Refers instance of *Datacenter*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - entity
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfDatacenterMismatchArgument:
      type: object
      description: |2
        A boxed array of *DatacenterMismatchArgument*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DatacenterMismatchArgument'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DatastoreNotWritableOnHost:
      type: object
      description: |2
        This exception is thrown if a datastore is not
        writable on the target host.
      properties:
        host:
          description: |2
            The target host on which the datastore is not writable.
            
            Refers instance of *HostSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - host
      allOf:
        - $ref: '#/components/schemas/InvalidDatastore'

    ArrayOfDatastoreNotWritableOnHost:
      type: object
      description: |2
        A boxed array of *DatastoreNotWritableOnHost*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DatastoreNotWritableOnHost'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DeltaDiskFormatNotSupported:
      type: object
      description: |2
        Thrown on an attempt to use an unsupported delta disk format.
      properties:
        datastore:
          description: |2
            The datastores which do not support the specified format.
            
            Refers instances of *Datastore*.
          type: array
          items:
            $ref: '#/components/schemas/ManagedObjectReference'
        deltaDiskFormat:
          description: |2
            The format not supported.
            
            See *DeltaDiskFormat*.
          type: string
      required:
        - deltaDiskFormat
      allOf:
        - $ref: '#/components/schemas/VmConfigFault'

    ArrayOfDeltaDiskFormatNotSupported:
      type: object
      description: |2
        A boxed array of *DeltaDiskFormatNotSupported*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DeltaDiskFormatNotSupported'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DestinationSwitchFull:
      type: object
      description: |2
        For one of the networks that the virtual machine is using, the corresponding
        switch on the host is full.
        
        If returned as part of migration checks, this is an error
        if either of the following is true, a warning otherwise:
        - The virtual ethernet card device backing is a distributed virtual switch
        - The virtual ethernet card device backing is a standard network and the
          the device is connected
      allOf:
        - $ref: '#/components/schemas/CannotAccessNetwork'

    ArrayOfDestinationSwitchFull:
      type: object
      description: |2
        A boxed array of *DestinationSwitchFull*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DestinationSwitchFull'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DestinationVsanDisabled:
      type: object
      description: |2
        Fault thrown for the case that an attempt is made to move a host which
        is enabled for VSAN into a *ClusterComputeResource* which is
        disabled for VSAN.
        
        See also *CannotMoveVsanEnabledHost*.
      properties:
        destinationCluster:
          description: |2
            Name of the disabled destination *ClusterComputeResource*.
            
            See also *ManagedEntity.name*.
          type: string
      required:
        - destinationCluster
      allOf:
        - $ref: '#/components/schemas/CannotMoveVsanEnabledHost'

    ArrayOfDestinationVsanDisabled:
      type: object
      description: |2
        A boxed array of *DestinationVsanDisabled*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DestinationVsanDisabled'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DeviceBackingNotSupported:
      type: object
      description: |2
        The device is backed by a backing type which is not supported
        for this particular device.
        
        If this fault is returned as a subfault of
        DisallowedMigrationDeviceAttached, this indicates that although
        this backing for the device may be supported on the destination
        host, the hosts do not support the requested migration of the
        virtual machine while using this device with this backing.
      properties:
        backing:
          description: |2
            The type of the backing.
          type: string
      required:
        - backing
      allOf:
        - $ref: '#/components/schemas/DeviceNotSupported'

    ArrayOfDeviceBackingNotSupported:
      type: object
      description: |2
        A boxed array of *DeviceBackingNotSupported*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DeviceBackingNotSupported'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DeviceControllerNotSupported:
      type: object
      description: |2
        The device in question is supported, but the device-controller
        combination is not supported.
        
        If this fault is returned as a subfault of
        DisallowedMigrationDeviceAttached, this indicates that although
        this device-controller combination may be supported on the
        destination host, the hosts do not support the requested migration
        of the virtual machine while using this device and controller.
      properties:
        controller:
          description: |2
            The type of the controller.
          type: string
      required:
        - controller
      allOf:
        - $ref: '#/components/schemas/DeviceNotSupported'

    ArrayOfDeviceControllerNotSupported:
      type: object
      description: |2
        A boxed array of *DeviceControllerNotSupported*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DeviceControllerNotSupported'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DeviceHotPlugNotSupported:
      type: object
      description: |2
        A DeviceHotPlugNotSupported exception is thrown if the specified device
        cannot be hot-added or hot-removed from the virtual machine
        at this time.
      allOf:
        - $ref: '#/components/schemas/InvalidDeviceSpec'

    ArrayOfDeviceHotPlugNotSupported:
      type: object
      description: |2
        A boxed array of *DeviceHotPlugNotSupported*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DeviceHotPlugNotSupported'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DeviceNotFound:
      type: object
      description: |2
        A DeviceNotFound exception is thrown if
        a device to be edited or removed
        cannot be found.
        
        Most likely, the client incorrectly passed
        the device key.
      allOf:
        - $ref: '#/components/schemas/InvalidDeviceSpec'

    ArrayOfDeviceNotFound:
      type: object
      description: |2
        A boxed array of *DeviceNotFound*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DeviceNotFound'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DeviceNotSupported:
      type: object
      description: |2
        The virtual machine uses a device type that is not supported on the
        host.
        
        If this fault is returned as a subfault of
        *DisallowedMigrationDeviceAttached*, this indicates that although
        this device may be supported on the destination host, the hosts do
        not support the requested migration of the virtual machine while
        using this device.
      properties:
        device:
          description: |2
            The label of the device.
          type: string
        reason:
          description: |2
            The specific reason why the device is not supported.
            
            Values should come from *DeviceNotSupportedReason_enum*.
            This might not be set if we're not sure of the reason, or
            if this doesn't make sense in the context. For example,
            in the *DisallowedMigrationDeviceAttached* context
            we already know the problem.
          type: string
      required:
        - device
      allOf:
        - $ref: '#/components/schemas/VirtualHardwareCompatibilityIssue'

    ArrayOfDeviceNotSupported:
      type: object
      description: |2
        A boxed array of *DeviceNotSupported*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DeviceNotSupported'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DeviceUnsupportedForVmPlatform:
      type: object
      description: |2
        A DeviceUnsupportedForVmPlatform exception is thrown if the specified device
        is not supported on the platform on which the virtual machine is being
        created/configured.
        
        For example, this exception might be thrown if a client
        incorrectly attempts to add a device supported only on ESX Server to a
        virtual machine on a hosted product.
      allOf:
        - $ref: '#/components/schemas/InvalidDeviceSpec'

    ArrayOfDeviceUnsupportedForVmPlatform:
      type: object
      description: |2
        A boxed array of *DeviceUnsupportedForVmPlatform*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DeviceUnsupportedForVmPlatform'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DeviceUnsupportedForVmVersion:
      type: object
      description: |2
        A DeviceUnsupportedForVmVersion exception is thrown if a specific device
        is not supported for a given version of the virtual machine.
      properties:
        currentVersion:
          description: |2
            The current version of the virtual machine.
          type: string
        expectedVersion:
          description: |2
            The minimum expected virtual mahcine version needed to
            support this device.
          type: string
      required:
        - currentVersion
        - expectedVersion
      allOf:
        - $ref: '#/components/schemas/InvalidDeviceSpec'

    ArrayOfDeviceUnsupportedForVmVersion:
      type: object
      description: |2
        A boxed array of *DeviceUnsupportedForVmVersion*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DeviceUnsupportedForVmVersion'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DigestNotSupported:
      type: object
      description: |2
        The digest file of the specified virtual disk is not supported.
        
        Typically, this fault is returned as part of a parent fault like
        *VmConfigIncompatibleForFaultTolerance*, indicating that the
        virtual disk's digest file needs to be changed before fault tolerance can be
        enabled on the associated virtual machine.
      allOf:
        - $ref: '#/components/schemas/DeviceNotSupported'

    ArrayOfDigestNotSupported:
      type: object
      description: |2
        A boxed array of *DigestNotSupported*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DigestNotSupported'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DirectoryNotEmpty:
      type: object
      description: |2
        This fault is thrown when an operation fails because the specified
        directory is not empty.
      allOf:
        - $ref: '#/components/schemas/FileFault'

    ArrayOfDirectoryNotEmpty:
      type: object
      description: |2
        A boxed array of *DirectoryNotEmpty*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DirectoryNotEmpty'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DisableAdminNotSupported:
      type: object
      description: |2
        Fault thrown when an attempt is made to move a disk with associated snapshots to a destination host.
        
        If such a move were to occur, snapshots associated with the disk would be irrevocably
        lost. This is always an error.
      allOf:
        - $ref: '#/components/schemas/HostConfigFault'

    ArrayOfDisableAdminNotSupported:
      type: object
      description: |2
        A boxed array of *DisableAdminNotSupported*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DisableAdminNotSupported'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DisallowedChangeByService:
      type: object
      description: |2
        Fault thrown if the disallowed operation is invoked by the client.
        
        The
        change is disallowed because it conflicts with target state maintained
        by a service. The corresponding method is usually not disabled because
        only a subset of changes carried out by the method is disallowed. For
        example, an online extend executed via virtual machine reconfigure
        method is not allowed if replication is enabled on a virtual machine.
      properties:
        serviceName:
          description: |2
            The service that has disallowed the change.
          type: string
        disallowedChange:
          description: |2
            The change this is not allowed, the set of possible values is
            described in *DisallowedChangeByServiceDisallowedChange_enum*.
          type: string
      required:
        - serviceName
      allOf:
        - $ref: '#/components/schemas/RuntimeFault'

    ArrayOfDisallowedChangeByService:
      type: object
      description: |2
        A boxed array of *DisallowedChangeByService*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DisallowedChangeByService'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DisallowedDiskModeChange:
      type: object
      description: |2
        Thrown when the *VirtualMachine.ReconfigVM_Task* operation
        includes a change to the *VirtualDiskMode_enum*
        property.
        
        This property cannot be changed as long as a virtual machine
        has an existing snapshot.
      allOf:
        - $ref: '#/components/schemas/InvalidDeviceSpec'

    ArrayOfDisallowedDiskModeChange:
      type: object
      description: |2
        A boxed array of *DisallowedDiskModeChange*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DisallowedDiskModeChange'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DisallowedMigrationDeviceAttached:
      type: object
      description: |2
        The virtual machine is using a type of device that prevents migration.
      properties:
        fault:
          description: |2
            A fault specifies the particular device issue.
            
            This is typically
            a subclass of VirtualHardwareCompatibilityIssue, such as
            RawDiskNotSupported, RemoteDeviceNotSupported, or SharedBusControllerNotSupported
          $ref: '#/components/schemas/MethodFault'
      required:
        - fault
      allOf:
        - $ref: '#/components/schemas/MigrationFault'

    ArrayOfDisallowedMigrationDeviceAttached:
      type: object
      description: |2
        A boxed array of *DisallowedMigrationDeviceAttached*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DisallowedMigrationDeviceAttached'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DisallowedOperationOnFailoverHost:
      type: object
      description: |2
        Fault thrown when an attempt is made to perform a disallowed operation on a
        host that has been configured as a failover host in an cluster that has High
        Availability enabled.
        
        See *ClusterFailoverHostAdmissionControlPolicy*.
        Examples of such operations are destroying a host, moving a host out of a cluster,
        or powering on a virtual machine on a specific host.
      properties:
        host:
          description: |2
            The failover host.
            
            Refers instance of *HostSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
        hostname:
          description: |2
            Name of the failover host.
          type: string
      required:
        - host
        - hostname
      allOf:
        - $ref: '#/components/schemas/RuntimeFault'

    ArrayOfDisallowedOperationOnFailoverHost:
      type: object
      description: |2
        A boxed array of *DisallowedOperationOnFailoverHost*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DisallowedOperationOnFailoverHost'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DisconnectedHostsBlockingEVC:
      type: object
      description: |2
        An attempt to enable Enhanced VMotion Compatibility on a cluster, or to
        select a less-featureful EVC mode for a cluster where EVC is already enabled,
        has failed because the cluster contains one or more disconnected hosts.
      allOf:
        - $ref: '#/components/schemas/EVCConfigFault'

    ArrayOfDisconnectedHostsBlockingEVC:
      type: object
      description: |2
        A boxed array of *DisconnectedHostsBlockingEVC*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DisconnectedHostsBlockingEVC'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DiskHasPartitions:
      type: object
      description: |2
        Fault used for disks which have existing, non-VSAN partitions.
        
        See also *HostStorageSystem.UpdateDiskPartitions*, *HostVsanSystem.QueryDisksForVsan*.
      allOf:
        - $ref: '#/components/schemas/VsanDiskFault'

    ArrayOfDiskHasPartitions:
      type: object
      description: |2
        A boxed array of *DiskHasPartitions*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DiskHasPartitions'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DiskIsLastRemainingNonSSD:
      type: object
      description: |2
        Fault thrown for the case that an attempt is made to delete the last
        *VsanHostDiskMapping.nonSsd* from a *VsanHostDiskMapping*.
        
        See also *HostVsanSystem.RemoveDisk_Task*, *HostVsanSystem.RemoveDiskMapping_Task*.
      allOf:
        - $ref: '#/components/schemas/VsanDiskFault'

    ArrayOfDiskIsLastRemainingNonSSD:
      type: object
      description: |2
        A boxed array of *DiskIsLastRemainingNonSSD*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DiskIsLastRemainingNonSSD'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DiskIsNonLocal:
      type: object
      description: |2
        Fault used for disks which are ineligible for VSAN because they are
        considered non-local.
        
        See also *HostVsanSystem.QueryDisksForVsan*.
      allOf:
        - $ref: '#/components/schemas/VsanDiskFault'

    ArrayOfDiskIsNonLocal:
      type: object
      description: |2
        A boxed array of *DiskIsNonLocal*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DiskIsNonLocal'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DiskIsUSB:
      type: object
      description: |2
        Fault used for disks which are ineligible for VSAN because they are USB
        disks.
        
        See also *HostVsanSystem.QueryDisksForVsan*.
      allOf:
        - $ref: '#/components/schemas/VsanDiskFault'

    ArrayOfDiskIsUSB:
      type: object
      description: |2
        A boxed array of *DiskIsUSB*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DiskIsUSB'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DiskMoveTypeNotSupported:
      type: object
      description: |2
        Specifying non-standard disk movement types is not supported.
        
        See also *VirtualMachineRelocateSpec.diskMoveType*, *VirtualMachineRelocateSpecDiskLocator.diskMoveType*.
      allOf:
        - $ref: '#/components/schemas/MigrationFault'

    ArrayOfDiskMoveTypeNotSupported:
      type: object
      description: |2
        A boxed array of *DiskMoveTypeNotSupported*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DiskMoveTypeNotSupported'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DiskNotSupported:
      type: object
      description: |2
        The host does not support the backings for the disks specified by the virtual
        machine.
        
        For example, this fault is thrown if a virtual machine is created from
        a template that specifies backings that the host does not have. Similarly, this fault
        is thrown if a virtual machine is registered on a host that does not support the
        specified backings.
      properties:
        disk:
          description: |2
            The ID of disk that is not supported.
          type: integer
          format: int32
      required:
        - disk
      allOf:
        - $ref: '#/components/schemas/VirtualHardwareCompatibilityIssue'

    ArrayOfDiskNotSupported:
      type: object
      description: |2
        A boxed array of *DiskNotSupported*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DiskNotSupported'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DiskTooSmall:
      type: object
      description: |2
        Fault used for disks which are too small for usage by VSAN.
      allOf:
        - $ref: '#/components/schemas/VsanDiskFault'

    ArrayOfDiskTooSmall:
      type: object
      description: |2
        A boxed array of *DiskTooSmall*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DiskTooSmall'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DomainNotFound:
      type: object
      description: |2
        Fault indicating that the domain controller
        for domainName cannot be reached.
      properties:
        domainName:
          description: |2
            The domain that cannot be accessed.
          type: string
      required:
        - domainName
      allOf:
        - $ref: '#/components/schemas/ActiveDirectoryFault'

    ArrayOfDomainNotFound:
      type: object
      description: |2
        A boxed array of *DomainNotFound*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DomainNotFound'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DrsDisabledOnVm:
      type: object
      description: |2
        This fault is thrown when DRS cannot move a virtual machine because
        DRS is disabled on it (i.e., it is pinned on its registered host).
      allOf:
        - $ref: '#/components/schemas/VimFault'

    ArrayOfDrsDisabledOnVm:
      type: object
      description: |2
        A boxed array of *DrsDisabledOnVm*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DrsDisabledOnVm'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DrsVmotionIncompatibleFault:
      type: object
      description: |2
        This fault is thrown when DRS tries to migrate a virtual machine to a host,
        but finds that the host is incompatible with the given virtual machine.
      properties:
        host:
          description: |2
            The host that is incompatible with a given virtual machine.
            
            Refers instance of *HostSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - host
      allOf:
        - $ref: '#/components/schemas/VirtualHardwareCompatibilityIssue'

    ArrayOfDrsVmotionIncompatibleFault:
      type: object
      description: |2
        A boxed array of *DrsVmotionIncompatibleFault*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DrsVmotionIncompatibleFault'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DuplicateDisks:
      type: object
      description: |2
        Fault used to denote a duplicate set of disks were incorrectly specified
        for a given operation.
        
        See also *HostVsanSystem.AddDisks_Task*, *HostVsanSystem.InitializeDisks_Task*.
      allOf:
        - $ref: '#/components/schemas/VsanDiskFault'

    ArrayOfDuplicateDisks:
      type: object
      description: |2
        A boxed array of *DuplicateDisks*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DuplicateDisks'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DuplicateName:
      type: object
      description: |2
        A DuplicateName exception is thrown because a name already exists
        in the same name space.
      properties:
        name:
          description: |2
            The name that is already bound in the name space.
          type: string
        object:
          description: |2
            Managed object that already holds the name.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - name
        - object
      allOf:
        - $ref: '#/components/schemas/VimFault'

    ArrayOfDuplicateName:
      type: object
      description: |2
        A boxed array of *DuplicateName*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DuplicateName'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DuplicateVsanNetworkInterface:
      type: object
      description: |2
        Fault thrown for cases that duplicate network interface names are
        incorrectly specified for a VSAN operation.
        
        See also *HostVsanSystem.UpdateVsan_Task*, *ComputeResource.ReconfigureComputeResource_Task*.
      properties:
        device:
          description: |2
            The network interface name found to be duplicated.
          type: string
      required:
        - device
      allOf:
        - $ref: '#/components/schemas/VsanFault'

    ArrayOfDuplicateVsanNetworkInterface:
      type: object
      description: |2
        A boxed array of *DuplicateVsanNetworkInterface*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DuplicateVsanNetworkInterface'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DvsApplyOperationFault:
      type: object
      description: |2
        Thrown if a vSphere Distributed Switch apply operation failed to set or remove
        some of the specified objects.
      properties:
        objectFault:
          description: |2
            Faults occurred on the host during a DistributedVirtualSwitch operation.
          type: array
          items:
            $ref: '#/components/schemas/DvsApplyOperationFaultFaultOnObject'
      required:
        - objectFault
      allOf:
        - $ref: '#/components/schemas/DvsFault'

    ArrayOfDvsApplyOperationFault:
      type: object
      description: |2
        A boxed array of *DvsApplyOperationFault*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DvsApplyOperationFault'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DvsApplyOperationFaultFaultOnObject:
      type: object
      description: |2
        The fault occurred during an apply operation.
      properties:
        objectId:
          description: |2
            The object identifier.
            
            It should be UUID for vSphere Distributed Switches,
            keys for vNetwork distributed portgroups and ports.
          type: string
        type:
          description: |2
            The Type of the objects.
          type: string
        fault:
          description: |2
            The fault that occurred.
          $ref: '#/components/schemas/MethodFault'
      required:
        - objectId
        - type
        - fault
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfDvsApplyOperationFaultFaultOnObject:
      type: object
      description: |2
        A boxed array of *DvsApplyOperationFaultFaultOnObject*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DvsApplyOperationFaultFaultOnObject'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DvsFault:
      type: object
      description: |2
        Base class for faults that can be thrown while invoking a distributed virtual switch
        operation.
      allOf:
        - $ref: '#/components/schemas/VimFault'

    ArrayOfDvsFault:
      type: object
      description: |2
        A boxed array of *DvsFault*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DvsFault'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DvsNotAuthorized:
      type: object
      description: |2
        Thrown if
        *DVSCapability.dvsOperationSupported*
        is false and *DVSConfigInfo.extensionKey* is not same
        as the extension key of the login-session.
      properties:
        sessionExtensionKey:
          description: |2
            The extension key associated with the user-session.
          type: string
        dvsExtensionKey:
          description: |2
            The value of *DVSConfigInfo.extensionKey*.
          type: string
      allOf:
        - $ref: '#/components/schemas/DvsFault'

    ArrayOfDvsNotAuthorized:
      type: object
      description: |2
        A boxed array of *DvsNotAuthorized*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DvsNotAuthorized'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DvsOperationBulkFault:
      type: object
      description: |2
        Thrown if a DistributedVirtualSwitch operation failed on some of the host members.
      properties:
        hostFault:
          description: |2
            Faults occurred on the host during a DistributedVirtualSwitch operation.
          type: array
          items:
            $ref: '#/components/schemas/DvsOperationBulkFaultFaultOnHost'
      required:
        - hostFault
      allOf:
        - $ref: '#/components/schemas/DvsFault'

    ArrayOfDvsOperationBulkFault:
      type: object
      description: |2
        A boxed array of *DvsOperationBulkFault*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DvsOperationBulkFault'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DvsOperationBulkFaultFaultOnHost:
      type: object
      description: |2
        The fault occurred on the host during an operation.
      properties:
        host:
          description: |2
            The host.
            
            Refers instance of *HostSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
        fault:
          description: |2
            The fault that occurred.
          $ref: '#/components/schemas/MethodFault'
      required:
        - host
        - fault
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfDvsOperationBulkFaultFaultOnHost:
      type: object
      description: |2
        A boxed array of *DvsOperationBulkFaultFaultOnHost*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DvsOperationBulkFaultFaultOnHost'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DvsScopeViolated:
      type: object
      deprecated: true
      description: |2
        Deprecated as of vSphere API 5.5.
        
        Thrown if a entity trying to connect to a port or portgroup but it is not in the
        port or portgroup's scope.
      properties:
        scope:
          description: |2
            The configured scope.
            
            Refers instances of *ManagedEntity*.
          type: array
          items:
            $ref: '#/components/schemas/ManagedObjectReference'
        entity:
          description: |2
            The entity that violates the scope.
            
            Refers instance of *ManagedEntity*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - scope
        - entity
      allOf:
        - $ref: '#/components/schemas/DvsFault'

    ArrayOfDvsScopeViolated:
      type: object
      description: |2
        A boxed array of *DvsScopeViolated*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DvsScopeViolated'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    EVCAdmissionFailed:
      type: object
      description: |2
        The host does not satisfy the admission requirements for the Enhanced
        VMotion Compatibility mode of the cluster.
      properties:
        faults:
          description: |2
            The faults that caused this EVC test to fail
            (e.g.
            
            FeatureRequirementsNotMet faults).
          type: array
          items:
            $ref: '#/components/schemas/MethodFault'
      allOf:
        - $ref: '#/components/schemas/NotSupportedHostInCluster'

    ArrayOfEVCAdmissionFailed:
      type: object
      description: |2
        A boxed array of *EVCAdmissionFailed*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/EVCAdmissionFailed'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    EVCAdmissionFailedCPUFeaturesForMode:
      type: object
      description: |2
        The host's CPU hardware is a family/model that should support the
        Enhanced VMotion Compatibility mode of the cluster, but some necessary
        CPU features are not present.
      properties:
        currentEVCModeKey:
          description: |2
            The Enhanced VMotion Compatibility mode that is currently in effect for
            the cluster.
          type: string
      required:
        - currentEVCModeKey
      allOf:
        - $ref: '#/components/schemas/EVCAdmissionFailed'

    ArrayOfEVCAdmissionFailedCPUFeaturesForMode:
      type: object
      description: |2
        A boxed array of *EVCAdmissionFailedCPUFeaturesForMode*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/EVCAdmissionFailedCPUFeaturesForMode'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    EVCAdmissionFailedCPUModel:
      type: object
      description: |2
        The host's CPU hardware is a family/model that does not support any
        Enhanced VMotion Compatibility mode.
      allOf:
        - $ref: '#/components/schemas/EVCAdmissionFailed'

    ArrayOfEVCAdmissionFailedCPUModel:
      type: object
      description: |2
        A boxed array of *EVCAdmissionFailedCPUModel*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/EVCAdmissionFailedCPUModel'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    EVCAdmissionFailedCPUModelForMode:
      type: object
      description: |2
        The host's CPU hardware is a family/model that does not support the Enhanced
        VMotion Compatibility mode of the cluster.
      properties:
        currentEVCModeKey:
          description: |2
            The Enhanced VMotion Compatibility mode that is currently in effect for
            the cluster.
          type: string
      required:
        - currentEVCModeKey
      allOf:
        - $ref: '#/components/schemas/EVCAdmissionFailed'

    ArrayOfEVCAdmissionFailedCPUModelForMode:
      type: object
      description: |2
        A boxed array of *EVCAdmissionFailedCPUModelForMode*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/EVCAdmissionFailedCPUModelForMode'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    EVCAdmissionFailedCPUVendor:
      type: object
      description: |2
        The host's CPU vendor does not match the required CPU vendor for the
        Enhanced VMotion Compatibility mode of the cluster.
      properties:
        clusterCPUVendor:
          description: |2
            The CPU vendor required for entering the cluster.
          type: string
        hostCPUVendor:
          description: |2
            The CPU vendor of the host.
          type: string
      required:
        - clusterCPUVendor
        - hostCPUVendor
      allOf:
        - $ref: '#/components/schemas/EVCAdmissionFailed'

    ArrayOfEVCAdmissionFailedCPUVendor:
      type: object
      description: |2
        A boxed array of *EVCAdmissionFailedCPUVendor*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/EVCAdmissionFailedCPUVendor'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    EVCAdmissionFailedCPUVendorUnknown:
      type: object
      description: |2
        The host's CPU vendor is unknown, which prevents admission into an Enhanced
        VMotion Compatibility cluster.
      allOf:
        - $ref: '#/components/schemas/EVCAdmissionFailed'

    ArrayOfEVCAdmissionFailedCPUVendorUnknown:
      type: object
      description: |2
        A boxed array of *EVCAdmissionFailedCPUVendorUnknown*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/EVCAdmissionFailedCPUVendorUnknown'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    EVCAdmissionFailedHostDisconnected:
      type: object
      description: |2
        The host is not connected, which prevents admission into an Enhanced
        VMotion Compatibility cluster.
      allOf:
        - $ref: '#/components/schemas/EVCAdmissionFailed'

    ArrayOfEVCAdmissionFailedHostDisconnected:
      type: object
      description: |2
        A boxed array of *EVCAdmissionFailedHostDisconnected*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/EVCAdmissionFailedHostDisconnected'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    EVCAdmissionFailedHostSoftware:
      type: object
      description: |2
        The host's software does not support any Enhanced VMotion Compatibility mode.
      allOf:
        - $ref: '#/components/schemas/EVCAdmissionFailed'

    ArrayOfEVCAdmissionFailedHostSoftware:
      type: object
      description: |2
        A boxed array of *EVCAdmissionFailedHostSoftware*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/EVCAdmissionFailedHostSoftware'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    EVCAdmissionFailedHostSoftwareForMode:
      type: object
      description: |2
        The host's software does not support the Enhanced VMotion Compatibility
        mode of the cluster.
      allOf:
        - $ref: '#/components/schemas/EVCAdmissionFailed'

    ArrayOfEVCAdmissionFailedHostSoftwareForMode:
      type: object
      description: |2
        A boxed array of *EVCAdmissionFailedHostSoftwareForMode*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/EVCAdmissionFailedHostSoftwareForMode'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    EVCAdmissionFailedVmActive:
      type: object
      description: |2
        An attempt to move or add a host into an Enhanced VMotion Compatibility
        cluster has failed for the following reason:
        - The host exposes additional compatibility-relevant CPU features beyond
          those present in the baseline mandated by the cluster's EVC mode.
        - The host has powered-on or suspended virtual machines.
          
        Therefore the host may not be admitted into the cluster, since its virtual
        machines may be using CPU features suppressed in the cluster.
        
        Note that in rare cases, this may occur even if the host's
        *maxEVCModeKey* corresponds to the EVC
        mode of the cluster. This means that even though that EVC mode is the best
        match for the host's hardware, the host still has some features beyond
        those present in the baseline for that EVC mode.
      allOf:
        - $ref: '#/components/schemas/EVCAdmissionFailed'

    ArrayOfEVCAdmissionFailedVmActive:
      type: object
      description: |2
        A boxed array of *EVCAdmissionFailedVmActive*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/EVCAdmissionFailedVmActive'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    EVCConfigFault:
      type: object
      description: |2
        An attempt to enable Enhanced VMotion Compatibility on a cluster has failed.
      properties:
        faults:
          description: |2
            The faults that caused this EVC test to fail,
            such as *FeatureRequirementsNotMet* faults.
          type: array
          items:
            $ref: '#/components/schemas/MethodFault'
      allOf:
        - $ref: '#/components/schemas/VimFault'

    ArrayOfEVCConfigFault:
      type: object
      description: |2
        A boxed array of *EVCConfigFault*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/EVCConfigFault'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    EVCModeIllegalByVendor:
      type: object
      description: |2
        An attempt to enable Enhanced VMotion Compatibility on a cluster, or change
        the EVC configuration on an EVC-enabled cluster, has failed because the
        selected EVC mode is not legal for the CPU hardware vendor of the hosts
        currently in the cluster.
      properties:
        clusterCPUVendor:
          description: |2
            The CPU vendor in use in the cluster.
          type: string
        modeCPUVendor:
          description: |2
            The CPU vendor for the requested EVC mode.
          type: string
      required:
        - clusterCPUVendor
        - modeCPUVendor
      allOf:
        - $ref: '#/components/schemas/EVCConfigFault'

    ArrayOfEVCModeIllegalByVendor:
      type: object
      description: |2
        A boxed array of *EVCModeIllegalByVendor*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/EVCModeIllegalByVendor'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    EVCModeUnsupportedByHosts:
      type: object
      description: |2
        An attempt to enable Enhanced VMotion Compatibility on a cluster has failed
        because there are hosts in the cluster with a CPU feature baseline below the
        desired EVC mode.
      properties:
        evcMode:
          description: |2
            The requested EVC mode.
          type: string
        host:
          description: |2
            The set of hosts which are blocking EVC because their CPU hardware does
            not support the requested EVC mode.
            
            Refers instances of *HostSystem*.
          type: array
          items:
            $ref: '#/components/schemas/ManagedObjectReference'
        hostName:
          description: |2
            The names of the hosts in the host array.
          type: array
          items:
            type: string
      allOf:
        - $ref: '#/components/schemas/EVCConfigFault'

    ArrayOfEVCModeUnsupportedByHosts:
      type: object
      description: |2
        A boxed array of *EVCModeUnsupportedByHosts*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/EVCModeUnsupportedByHosts'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    EVCUnsupportedByHostHardware:
      type: object
      description: |2
        An attempt to enable Enhanced VMotion Compatibility (EVC) on a cluster has
        failed because one or more hosts in the cluster do not match the desired
        featureset and lack hardware support for EVC.
      properties:
        host:
          description: |2
            The set of hosts which are blocking EVC because their CPU hardware does
            not support CPUID override.
            
            Refers instances of *HostSystem*.
          type: array
          items:
            $ref: '#/components/schemas/ManagedObjectReference'
        hostName:
          description: |2
            The names of the hosts in the host array.
          type: array
          items:
            type: string
      required:
        - host
        - hostName
      allOf:
        - $ref: '#/components/schemas/EVCConfigFault'

    ArrayOfEVCUnsupportedByHostHardware:
      type: object
      description: |2
        A boxed array of *EVCUnsupportedByHostHardware*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/EVCUnsupportedByHostHardware'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    EVCUnsupportedByHostSoftware:
      type: object
      description: |2
        An attempt to enable Enhanced VMotion Compatibility (EVC) on a cluster has
        failed because one or more hosts in the cluster lack software support for
        EVC.
      properties:
        host:
          description: |2
            The set of hosts which are blocking EVC because their virtualization
            software does not support CPUID override.
            
            Refers instances of *HostSystem*.
          type: array
          items:
            $ref: '#/components/schemas/ManagedObjectReference'
        hostName:
          description: |2
            The names of the hosts in the host array.
          type: array
          items:
            type: string
      required:
        - host
        - hostName
      allOf:
        - $ref: '#/components/schemas/EVCConfigFault'

    ArrayOfEVCUnsupportedByHostSoftware:
      type: object
      description: |2
        A boxed array of *EVCUnsupportedByHostSoftware*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/EVCUnsupportedByHostSoftware'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    EightHostLimitViolated:
      type: object
      description: |2
        Only virtual machines on eight different hosts can have a single
        virtual disk backing opened for read at once.
        
        This fault occurs when moving or powering on this virtual
        machine would cause a violation of the above constraint.
        This only occurs when multiple virtual machines are sharing a
        single disk backing.
        
        Note that there is no limit on the number of virtual machines
        who share a disk backings, so long as they are running on
        eight or fewer hosts.
      allOf:
        - $ref: '#/components/schemas/VmConfigFault'

    ArrayOfEightHostLimitViolated:
      type: object
      description: |2
        A boxed array of *EightHostLimitViolated*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/EightHostLimitViolated'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    EncryptionKeyRequired:
      type: object
      description: |2
        An EncryptionKeyRequired fault occurs when an operation fails due
        to one or more required encryption keys.
      properties:
        requiredKey:
          description: |2
            A list of required key identifiers.
          type: array
          items:
            $ref: '#/components/schemas/CryptoKeyId'
      allOf:
        - $ref: '#/components/schemas/InvalidState'

    ArrayOfEncryptionKeyRequired:
      type: object
      description: |2
        A boxed array of *EncryptionKeyRequired*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/EncryptionKeyRequired'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ExpiredAddonLicense:
      type: object
      description: |2
        An ExpiredAddonLicense fault is thrown if an attempt to acquire an Addon license
        'feature failed for count 'count'.
      allOf:
        - $ref: '#/components/schemas/ExpiredFeatureLicense'

    ArrayOfExpiredAddonLicense:
      type: object
      description: |2
        A boxed array of *ExpiredAddonLicense*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ExpiredAddonLicense'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ExpiredEditionLicense:
      type: object
      description: |2
        An ExpiredEditionLicense fault is thrown if an attempt to acquire an Edition license
        'feature failed for count 'count'.
      allOf:
        - $ref: '#/components/schemas/ExpiredFeatureLicense'

    ArrayOfExpiredEditionLicense:
      type: object
      description: |2
        A boxed array of *ExpiredEditionLicense*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ExpiredEditionLicense'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ExpiredFeatureLicense:
      type: object
      description: |2
        An ExpiredFeatureLicense fault is thrown if an attempt to acquire an Addon license
        'feature failed for count 'count'.
      properties:
        feature:
          type: string
        count:
          type: integer
          format: int32
        expirationDate:
          type: string
          format: date-time
      required:
        - feature
        - count
        - expirationDate
      allOf:
        - $ref: '#/components/schemas/NotEnoughLicenses'

    ArrayOfExpiredFeatureLicense:
      type: object
      description: |2
        A boxed array of *ExpiredFeatureLicense*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ExpiredFeatureLicense'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ExtendedFault:
      type: object
      description: |2
        This fault is the container for faults logged by extensions.
      properties:
        faultTypeId:
          description: |2
            The id of the type of extended fault.
          type: string
        data:
          description: |2
            Key/value pairs associated with fault.
          type: array
          items:
            $ref: '#/components/schemas/KeyValue'
      required:
        - faultTypeId
      allOf:
        - $ref: '#/components/schemas/VimFault'

    ArrayOfExtendedFault:
      type: object
      description: |2
        A boxed array of *ExtendedFault*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ExtendedFault'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    FailToEnableSPBM:
      type: object
      description: |2
        Fault type that could be thrown when enabling SPBM(Storage Policy
        Based Management) feature of a compute resource.
      properties:
        cs:
          description: |2
            The compute resource
            
            Refers instance of *ComputeResource*.
          $ref: '#/components/schemas/ManagedObjectReference'
        csName:
          description: |2
            The computer resource name
          type: string
        hostLicenseStates:
          description: |2
            Array of *ComputeResourceHostSPBMLicenseInfo* that
            contains SPBM license information for all hosts in the compute resource
          type: array
          items:
            $ref: '#/components/schemas/ComputeResourceHostSPBMLicenseInfo'
      required:
        - cs
        - csName
        - hostLicenseStates
      allOf:
        - $ref: '#/components/schemas/NotEnoughLicenses'

    ArrayOfFailToEnableSPBM:
      type: object
      description: |2
        A boxed array of *FailToEnableSPBM*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/FailToEnableSPBM'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    FailToLockFaultToleranceVMs:
      type: object
      description: |2
        Thrown when trying to state lock a Fault Tolerance VM, and the
        other VM in the same Fault Tolerance pair is already locked.
      properties:
        vmName:
          description: |2
            The name of the vm to be locked.
          type: string
        vm:
          description: |2
            The vm to be locked, this can be a Fault Tolerance primary or secondary VM
            
            Refers instance of *VirtualMachine*.
          $ref: '#/components/schemas/ManagedObjectReference'
        alreadyLockedVm:
          description: |2
            The vm that is already locked, this can be a Fault Tolerance primary or secondary VM
            
            Refers instance of *VirtualMachine*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - vmName
        - vm
        - alreadyLockedVm
      allOf:
        - $ref: '#/components/schemas/RuntimeFault'

    ArrayOfFailToLockFaultToleranceVMs:
      type: object
      description: |2
        A boxed array of *FailToLockFaultToleranceVMs*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/FailToLockFaultToleranceVMs'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    FaultToleranceAntiAffinityViolated:
      type: object
      description: |2
        More than one VM in the same fault tolerance group are placed on the same host
      properties:
        hostName:
          description: |2
            The name of the host.
          type: string
        host:
          description: |2
            The host.
            
            Refers instance of *HostSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - hostName
        - host
      allOf:
        - $ref: '#/components/schemas/MigrationFault'

    ArrayOfFaultToleranceAntiAffinityViolated:
      type: object
      description: |2
        A boxed array of *FaultToleranceAntiAffinityViolated*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/FaultToleranceAntiAffinityViolated'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    FaultToleranceCannotEditMem:
      type: object
      description: |2
        The memory size, reservation, limit or shares of a virtual machine cannot
        be edited if Fault Tolerance is turned on
      properties:
        vmName:
          description: |2
            The name of the VM.
          type: string
        vm:
          description: |2
            The VM.
            
            Refers instance of *VirtualMachine*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - vmName
        - vm
      allOf:
        - $ref: '#/components/schemas/VmConfigFault'

    ArrayOfFaultToleranceCannotEditMem:
      type: object
      description: |2
        A boxed array of *FaultToleranceCannotEditMem*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/FaultToleranceCannotEditMem'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    FaultToleranceCpuIncompatible:
      type: object
      description: |2
        Convenience subclass for calling out some named features among the
        incompatibilities found in CPUID level 1 register ecx for FT vms.
      properties:
        model:
          description: |2
            Flag to indicate CPU model is incompatible.
          type: boolean
        family:
          description: |2
            Flag to indicate CPU family is incompatible.
          type: boolean
        stepping:
          description: |2
            Flag to indicate CPU stepping is incompatible.
          type: boolean
      required:
        - model
        - family
        - stepping
      allOf:
        - $ref: '#/components/schemas/CpuIncompatible'

    ArrayOfFaultToleranceCpuIncompatible:
      type: object
      description: |2
        A boxed array of *FaultToleranceCpuIncompatible*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/FaultToleranceCpuIncompatible'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    FaultToleranceNeedsThickDisk:
      type: object
      description: |2
        Fault Tolerance VM requires thick disks
      properties:
        vmName:
          description: |2
            The name of the VM.
          type: string
      required:
        - vmName
      allOf:
        - $ref: '#/components/schemas/MigrationFault'

    ArrayOfFaultToleranceNeedsThickDisk:
      type: object
      description: |2
        A boxed array of *FaultToleranceNeedsThickDisk*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/FaultToleranceNeedsThickDisk'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    FaultToleranceNotLicensed:
      type: object
      description: |2
        This fault is thrown when fault tolerance has not been licensed on the
        source or destination host.
        
        It must be licensed on both hosts.
      properties:
        hostName:
          description: |2
            The host name
          type: string
      allOf:
        - $ref: '#/components/schemas/VmFaultToleranceIssue'

    ArrayOfFaultToleranceNotLicensed:
      type: object
      description: |2
        A boxed array of *FaultToleranceNotLicensed*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/FaultToleranceNotLicensed'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    FaultToleranceNotSameBuild:
      type: object
      description: |2
        The destination host does not have the same build or Fault Tolerance
        feature version number as the source host.
      properties:
        build:
          description: |2
            The string.
          type: string
      required:
        - build
      allOf:
        - $ref: '#/components/schemas/MigrationFault'

    ArrayOfFaultToleranceNotSameBuild:
      type: object
      description: |2
        A boxed array of *FaultToleranceNotSameBuild*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/FaultToleranceNotSameBuild'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    FaultTolerancePrimaryPowerOnNotAttempted:
      type: object
      description: |2
        This fault is used to report that VirtualCenter did not attempt to power on
        a Fault Tolerance secondary virtual machine because it was unable to
        power on the corresponding Fault Tolerance primary virtual machine.
      properties:
        secondaryVm:
          description: |2
            The secondary virtual machine that was not attempted
            
            Refers instance of *VirtualMachine*.
          $ref: '#/components/schemas/ManagedObjectReference'
        primaryVm:
          description: |2
            The corresponding primary virtual machine
            
            Refers instance of *VirtualMachine*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - secondaryVm
        - primaryVm
      allOf:
        - $ref: '#/components/schemas/VmFaultToleranceIssue'

    ArrayOfFaultTolerancePrimaryPowerOnNotAttempted:
      type: object
      description: |2
        A boxed array of *FaultTolerancePrimaryPowerOnNotAttempted*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/FaultTolerancePrimaryPowerOnNotAttempted'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    FaultToleranceVmNotDasProtected:
      type: object
      description: |2
        A FaultToleranceVmNotDasProtected fault occurs when an Fault Tolerance VM
        is not protected by HA and the operation for terminating the primary VM
        or secondary VM is invoked.
      properties:
        vm:
          description: |2
            The Fault Toelrance primary VM
            
            Refers instance of *VirtualMachine*.
          $ref: '#/components/schemas/ManagedObjectReference'
        vmName:
          description: |2
            Name of the VM
          type: string
      required:
        - vm
        - vmName
      allOf:
        - $ref: '#/components/schemas/VimFault'

    ArrayOfFaultToleranceVmNotDasProtected:
      type: object
      description: |2
        A boxed array of *FaultToleranceVmNotDasProtected*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/FaultToleranceVmNotDasProtected'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    FcoeFault:
      type: object
      deprecated: true
      description: |2
        Deprecated as of vSphere API 8.0. Software FCoE not supported.
        
        Base class for faults that can be thrown while invoking FCoE management operations.
      allOf:
        - $ref: '#/components/schemas/VimFault'

    ArrayOfFcoeFault:
      type: object
      description: |2
        A boxed array of *FcoeFault*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/FcoeFault'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    FcoeFaultPnicHasNoPortSet:
      type: object
      deprecated: true
      description: |2
        Deprecated as of vSphere API 8.0. Software FCoE not supported.
        
        This fault indicates the given Software Fcoe NIC has no uplink ports
        that is required for initiating a discovery.
      properties:
        nicDevice:
          type: string
      required:
        - nicDevice
      allOf:
        - $ref: '#/components/schemas/FcoeFault'

    ArrayOfFcoeFaultPnicHasNoPortSet:
      type: object
      description: |2
        A boxed array of *FcoeFaultPnicHasNoPortSet*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/FcoeFaultPnicHasNoPortSet'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    FeatureRequirementsNotMet:
      type: object
      description: |2
        The host does not meet feature requirements of the virtual machine.
      properties:
        featureRequirement:
          description: |2
            The feature requirements that were not met.
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineFeatureRequirement'
        vm:
          description: |2
            The virtual machine whose feature requirements were not met.
            
            Refers instance of *VirtualMachine*.
          $ref: '#/components/schemas/ManagedObjectReference'
        host:
          description: |2
            The host whose capabilities did not meet the virtual machine's feature requirements.
            
            Refers instance of *HostSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
      allOf:
        - $ref: '#/components/schemas/VirtualHardwareCompatibilityIssue'

    ArrayOfFeatureRequirementsNotMet:
      type: object
      description: |2
        A boxed array of *FeatureRequirementsNotMet*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/FeatureRequirementsNotMet'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    FileAlreadyExists:
      type: object
      description: |2
        This fault is thrown when an operation attempts to create a file using the name of
        an existing file.
      allOf:
        - $ref: '#/components/schemas/FileFault'

    ArrayOfFileAlreadyExists:
      type: object
      description: |2
        A boxed array of *FileAlreadyExists*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/FileAlreadyExists'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    FileBackedPortNotSupported:
      type: object
      description: |2
        The virtual machine has a port (either a SerialPort or a ParallelPort) which is
        backed by a file.
        
        This is an error when migrating a virtual machine with the device
        connected, and can be returned as a subfault of DisallowedMigrationDeviceAttached.
      allOf:
        - $ref: '#/components/schemas/DeviceNotSupported'

    ArrayOfFileBackedPortNotSupported:
      type: object
      description: |2
        A boxed array of *FileBackedPortNotSupported*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/FileBackedPortNotSupported'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    FileFault:
      type: object
      description: |2
        The common base type for all file-related exceptions.
      properties:
        file:
          description: |2
            The file in question.
          type: string
      required:
        - file
      allOf:
        - $ref: '#/components/schemas/VimFault'

    ArrayOfFileFault:
      type: object
      description: |2
        A boxed array of *FileFault*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/FileFault'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    FileLocked:
      type: object
      description: |2
        Thrown if an attempt is made to lock a file that is already in use.
      allOf:
        - $ref: '#/components/schemas/FileFault'

    ArrayOfFileLocked:
      type: object
      description: |2
        A boxed array of *FileLocked*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/FileLocked'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    FileNameTooLong:
      type: object
      description: |2
        This fault is thrown when an operation fails because the name of the
        specified file is too long.
      allOf:
        - $ref: '#/components/schemas/FileFault'

    ArrayOfFileNameTooLong:
      type: object
      description: |2
        A boxed array of *FileNameTooLong*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/FileNameTooLong'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    FileNotFound:
      type: object
      description: |2
        This fault is thrown when an operation fails because the specified file
        does not exist.
      allOf:
        - $ref: '#/components/schemas/FileFault'

    ArrayOfFileNotFound:
      type: object
      description: |2
        A boxed array of *FileNotFound*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/FileNotFound'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    FileNotWritable:
      type: object
      description: |2
        Thrown if an attempt is made to write to a read-only file.
      allOf:
        - $ref: '#/components/schemas/FileFault'

    ArrayOfFileNotWritable:
      type: object
      description: |2
        A boxed array of *FileNotWritable*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/FileNotWritable'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    FileTooLarge:
      type: object
      description: |2
        This fault is thrown when an operation fails because the file is larger
        than the maximum file size supported by the datastore.
      properties:
        datastore:
          description: |2
            The name of the datastore that does not support the file's size.
          type: string
        fileSize:
          description: |2
            The size (in bytes) of the file.
          type: integer
          format: int64
        maxFileSize:
          description: |2
            The max file size (in bytes) supported on the datastore.
          type: integer
          format: int64
      required:
        - datastore
        - fileSize
      allOf:
        - $ref: '#/components/schemas/FileFault'

    ArrayOfFileTooLarge:
      type: object
      description: |2
        A boxed array of *FileTooLarge*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/FileTooLarge'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    FilesystemQuiesceFault:
      type: object
      description: |2
        This fault is thrown when creating a quiesced snapshot failed
        because the create snapshot operation exceeded the time limit
        for holding off I/O in the frozen VM.
        
        This indicates that when we attempted to thaw the VM after
        creating the snapshot, we got an error back indicating that
        the VM was not frozen anymore. In this case, we roll back
        the entire snapshot create operation and throw this exception.
      allOf:
        - $ref: '#/components/schemas/SnapshotFault'

    ArrayOfFilesystemQuiesceFault:
      type: object
      description: |2
        A boxed array of *FilesystemQuiesceFault*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/FilesystemQuiesceFault'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    FilterInUse:
      type: object
      description: |2
        A FilterInUse fault indicates that some error has occurred because an
        IO filter was in use.
      properties:
        disk:
          description: |2
            Virtual disks that use the filter.
          type: array
          items:
            $ref: '#/components/schemas/VirtualDiskId'
      allOf:
        - $ref: '#/components/schemas/ResourceInUse'

    ArrayOfFilterInUse:
      type: object
      description: |2
        A boxed array of *FilterInUse*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/FilterInUse'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    FtIssuesOnHost:
      type: object
      description: |2
        The FtIssuesOnHost fault reports issues that prevent a particular
        host from being used as the register or power on host for a Fault
        Tolerance secondary virtual machine
      properties:
        host:
          description: |2
            The host which has Fault Tolerance issues.
            
            Refers instance of *HostSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
        hostName:
          description: |2
            Name for the host which has Fault Tolerance issues.
          type: string
        errors:
          description: |2
            Information on the details of the Fault Tolerance issues
          type: array
          items:
            $ref: '#/components/schemas/MethodFault'
      required:
        - host
        - hostName
      allOf:
        - $ref: '#/components/schemas/VmFaultToleranceIssue'

    ArrayOfFtIssuesOnHost:
      type: object
      description: |2
        A boxed array of *FtIssuesOnHost*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/FtIssuesOnHost'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    FtVmHostRuleViolation:
      type: object
      description: |2
        The virtual machine if powered on or VMotioned, would violate an
        FT VM-Host rule.
        
        ***Since:*** vSphere API Release 8.0.3.0
      properties:
        vmName:
          description: |2
            The vm that can not be powered on or VMotioned without violating FT Metro
            Cluster placement rule.
          type: string
        hostName:
          description: |2
            The host that the virtual machine can not be powered on without violating
            FT Metro Cluster placement rule.
          type: string
        hostGroup:
          description: |2
            Indicate the Host Group for FT Metro Cluster enabled Virtual Machine.
          type: string
      required:
        - vmName
        - hostName
        - hostGroup
      allOf:
        - $ref: '#/components/schemas/VmConfigFault'

    ArrayOfFtVmHostRuleViolation:
      type: object
      description: |2
        A boxed array of *FtVmHostRuleViolation*. To be used in *Any* placeholders.
        
        ***Since:*** vSphere API Release 8.0.3.0
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/FtVmHostRuleViolation'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    FullStorageVMotionNotSupported:
      type: object
      description: |2
        An operation on a powered-on virtual machine requests a simultaneous change
        of storage location and execution host, but the host does not have that
        capability.
      allOf:
        - $ref: '#/components/schemas/MigrationFeatureNotSupported'

    ArrayOfFullStorageVMotionNotSupported:
      type: object
      description: |2
        A boxed array of *FullStorageVMotionNotSupported*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/FullStorageVMotionNotSupported'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    GatewayConnectFault:
      type: object
      deprecated: true
      description: |2
        Deprecated not used since vSphere 6.5.
        
        GatewayConnectFault is a base fault type for the faults thrown by a gateway
        server used to connect to a host.
      properties:
        gatewayType:
          description: |2
            The type of the gateway used for the connection to the host.
          type: string
        gatewayId:
          description: |2
            Identifier of the gateway that is used for the connection to the host.
          type: string
        gatewayInfo:
          description: |2
            Human-readable information about the host gateway server.
          type: string
        details:
          description: |2
            Details of the cause for this fault.
            
            This is the way in which Host
            Gateway servers propagate opaque error messages through vCenter Server.
          $ref: '#/components/schemas/LocalizableMessage'
      required:
        - gatewayType
        - gatewayId
        - gatewayInfo
      allOf:
        - $ref: '#/components/schemas/HostConnectFault'

    ArrayOfGatewayConnectFault:
      type: object
      description: |2
        A boxed array of *GatewayConnectFault*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/GatewayConnectFault'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    GatewayHostNotReachable:
      type: object
      deprecated: true
      description: |2
        Deprecated not used since vSphere 6.5.
        
        GatewayHostNotReachable is thrown by the gateway used to connect to a host,
        if an error occurs while establishing a connection to that host.
        
        The fault may provide a more detailed message of what caused the problem.
      allOf:
        - $ref: '#/components/schemas/GatewayToHostConnectFault'

    ArrayOfGatewayHostNotReachable:
      type: object
      description: |2
        A boxed array of *GatewayHostNotReachable*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/GatewayHostNotReachable'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    GatewayNotFound:
      type: object
      deprecated: true
      description: |2
        Deprecated not used since vSphere 6.5.
        
        GatewayNotFound is thrown by vCenter Server, if no host gateway with the
        specified type/id and available resources is known to the vCenter Server.
      allOf:
        - $ref: '#/components/schemas/GatewayConnectFault'

    ArrayOfGatewayNotFound:
      type: object
      description: |2
        A boxed array of *GatewayNotFound*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/GatewayNotFound'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    GatewayNotReachable:
      type: object
      deprecated: true
      description: |2
        Deprecated not used since vSphere 6.5.
        
        GatewayNotReachable is thrown by vCenter Server when it fails to establish
        a connection to the host gateway server.
        
        This fault may occur due to
        network connectivity problems or inability to establish secure connection
        between the gateway server and vCenter Server.
      allOf:
        - $ref: '#/components/schemas/GatewayConnectFault'

    ArrayOfGatewayNotReachable:
      type: object
      description: |2
        A boxed array of *GatewayNotReachable*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/GatewayNotReachable'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    GatewayOperationRefused:
      type: object
      deprecated: true
      description: |2
        Deprecated not used sine vSphere 6.5.
        
        GatewayOperationRefused is thrown by vCenter Server when a gateway server denies to
        accept more connection due to resource limitation.
        
        The fault may occur due
        to specific configuration of the Gateway server to work with limited
        resources or due to physical limitation to handle more host connections.
      allOf:
        - $ref: '#/components/schemas/GatewayConnectFault'

    ArrayOfGatewayOperationRefused:
      type: object
      description: |2
        A boxed array of *GatewayOperationRefused*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/GatewayOperationRefused'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    GatewayToHostAuthFault:
      type: object
      deprecated: true
      description: |2
        Deprecated not used since vSphere 6.5.
        
        GatewayToHostAuthFault is thrown by the gateway used to communicate with a
        host, if the gateway cannot authenticate to the host with the provided
        authentication data.
        
        The fault provides information, which of the properties given in the
        authentication data are invalid or if more properties are required.
        
        See also *HostGatewaySpec.hostAuthParams*.
      properties:
        invalidProperties:
          description: |2
            List of properties that have been provided in the authentication data
            but have wrong values.
          type: array
          items:
            type: string
        missingProperties:
          description: |2
            List of properties that do not have their values specified in the
            provided authentication data but are required.
          type: array
          items:
            type: string
      required:
        - invalidProperties
        - missingProperties
      allOf:
        - $ref: '#/components/schemas/GatewayToHostConnectFault'

    ArrayOfGatewayToHostAuthFault:
      type: object
      description: |2
        A boxed array of *GatewayToHostAuthFault*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/GatewayToHostAuthFault'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    GatewayToHostConnectFault:
      type: object
      deprecated: true
      description: |2
        Deprecated not used since vSphere 6.5.
        
        GatewayToHostConnectFault is thrown by the gateway used to communicate
        with a host, if an error occurs in the communication between the gateway and
        the host.
        
        More details may be provided by a subfault.
      properties:
        hostname:
          description: |2
            Hostname of the host that the gateway is communicating with.
          type: string
        port:
          description: |2
            Port specified for the connection between the gateway and the host.
          type: integer
          format: int32
      required:
        - hostname
      allOf:
        - $ref: '#/components/schemas/GatewayConnectFault'

    ArrayOfGatewayToHostConnectFault:
      type: object
      description: |2
        A boxed array of *GatewayToHostConnectFault*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/GatewayToHostConnectFault'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    GatewayToHostTrustVerifyFault:
      type: object
      deprecated: true
      description: |2
        Deprecated not used since vSphere 6.5.
        
        GatewayToHostTrustVerifyFault is thrown by the gateway used to communicate
        with a host, if it cannot establish a trusted connection to the host with
        the provided host verification token parameter.
        
        The fault provides a list of opaque &lt;key,value&gt; properties, which the end
        user has to verify in order to trust the host and a verification token,
        which can be used to state that those exact properties are valid.
        
        See also *HostGatewaySpec.trustVerificationToken*.
      properties:
        verificationToken:
          description: |2
            A unique verification token, that can be used to state the the listed
            properties are valid.
          type: string
        propertiesToVerify:
          description: |2
            A key/value list of properties that need user verification in order
            for the gateway to trust the host to succeed.
            
            For instance the user may
            need to verify an SSL thumbprint or a whole certificate.
          type: array
          items:
            $ref: '#/components/schemas/KeyValue'
      required:
        - verificationToken
        - propertiesToVerify
      allOf:
        - $ref: '#/components/schemas/GatewayToHostConnectFault'

    ArrayOfGatewayToHostTrustVerifyFault:
      type: object
      description: |2
        A boxed array of *GatewayToHostTrustVerifyFault*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/GatewayToHostTrustVerifyFault'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    GenericDrsFault:
      type: object
      description: |2
        DRS returns more than one faults for each virtual machine, or DRS returns
        *VimFault* because of some internal errors.
      properties:
        hostFaults:
          description: |2
            This is an optional field to return the detailed information back to
            the client.
            
            This optional array may consist of the exact fault for
            some hosts in the cluster.
          type: array
          items:
            $ref: '#/components/schemas/MethodFault'
      allOf:
        - $ref: '#/components/schemas/VimFault'

    ArrayOfGenericDrsFault:
      type: object
      description: |2
        A boxed array of *GenericDrsFault*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/GenericDrsFault'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    GenericVmConfigFault:
      type: object
      description: |2
        Thrown when a running virtual machine reports an error.
      properties:
        reason:
          description: |2
            Message from the virtual machine
          type: string
      required:
        - reason
      allOf:
        - $ref: '#/components/schemas/VmConfigFault'

    ArrayOfGenericVmConfigFault:
      type: object
      description: |2
        A boxed array of *GenericVmConfigFault*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/GenericVmConfigFault'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    GuestAuthenticationChallenge:
      type: object
      description: |2
        Fault is thrown when a call to *GuestAuthManager.AcquireCredentialsInGuest* requires a challenge
        response in order to authenticate in the guest.
        
        The authToken string
        in serverChallenge contains a base64 encoded challenge token.
      properties:
        serverChallenge:
          description: |2
            Contains the server challenge information
          $ref: '#/components/schemas/GuestAuthentication'
        sessionID:
          description: |2
            Contains a session ID number that associates the server response
            with the initial request.
          type: integer
          format: int64
      required:
        - serverChallenge
        - sessionID
      allOf:
        - $ref: '#/components/schemas/GuestOperationsFault'

    ArrayOfGuestAuthenticationChallenge:
      type: object
      description: |2
        A boxed array of *GuestAuthenticationChallenge*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/GuestAuthenticationChallenge'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    GuestComponentsOutOfDate:
      type: object
      description: |2
        A GuestComponentsOutOfDate exception is thrown when an
        operation fails because the guest operations agent is out of date and lacks
        the functionality to execute the operation.
      allOf:
        - $ref: '#/components/schemas/GuestOperationsFault'

    ArrayOfGuestComponentsOutOfDate:
      type: object
      description: |2
        A boxed array of *GuestComponentsOutOfDate*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/GuestComponentsOutOfDate'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    GuestMultipleMappings:
      type: object
      description: |2
        A GuestMultipleMappings exception is thrown when an
        operation fails because the guest alias store mapping file
        contains multiple conflicting instances of the same certificate
        and username.
      allOf:
        - $ref: '#/components/schemas/GuestOperationsFault'

    ArrayOfGuestMultipleMappings:
      type: object
      description: |2
        A boxed array of *GuestMultipleMappings*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/GuestMultipleMappings'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    GuestOperationsFault:
      type: object
      description: |2
        The common base type for all guest operations faults.
      allOf:
        - $ref: '#/components/schemas/VimFault'

    ArrayOfGuestOperationsFault:
      type: object
      description: |2
        A boxed array of *GuestOperationsFault*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/GuestOperationsFault'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    GuestOperationsUnavailable:
      type: object
      description: |2
        A GuestOperationsUnavailable exception is thrown when an
        operation fails to contact the guest operations agent
        running inside the virtual machine.
      allOf:
        - $ref: '#/components/schemas/GuestOperationsFault'

    ArrayOfGuestOperationsUnavailable:
      type: object
      description: |2
        A boxed array of *GuestOperationsUnavailable*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/GuestOperationsUnavailable'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    GuestPermissionDenied:
      type: object
      description: |2
        A GuestPermissionDenied exception is thrown when an
        operation fails because the authentication used
        is insufficient to perform the operation.
      allOf:
        - $ref: '#/components/schemas/GuestOperationsFault'

    ArrayOfGuestPermissionDenied:
      type: object
      description: |2
        A boxed array of *GuestPermissionDenied*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/GuestPermissionDenied'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    GuestProcessNotFound:
      type: object
      description: |2
        A GuestProcessNotFound exception is thrown when an
        operation fails because the guest process specified does not exist.
      properties:
        pid:
          description: |2
            The process ID that was not found.
          type: integer
          format: int64
      required:
        - pid
      allOf:
        - $ref: '#/components/schemas/GuestOperationsFault'

    ArrayOfGuestProcessNotFound:
      type: object
      description: |2
        A boxed array of *GuestProcessNotFound*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/GuestProcessNotFound'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    GuestRegistryFault:
      type: object
      description: |2
        A GuestRegistryFault exception is thrown when an operation fails
        because of some errors in accessing/modifying the guest registry.
      properties:
        windowsSystemErrorCode:
          description: |2
            The windows system error number from GetLastError().
          type: integer
          format: int64
      required:
        - windowsSystemErrorCode
      allOf:
        - $ref: '#/components/schemas/GuestOperationsFault'

    ArrayOfGuestRegistryFault:
      type: object
      description: |2
        A boxed array of *GuestRegistryFault*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/GuestRegistryFault'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    GuestRegistryKeyAlreadyExists:
      type: object
      description: |2
        A GuestRegistryKeyAlreadyExists exception is thrown when an operation fails
        because the guest registry key specified already exists.
      allOf:
        - $ref: '#/components/schemas/GuestRegistryKeyFault'

    ArrayOfGuestRegistryKeyAlreadyExists:
      type: object
      description: |2
        A boxed array of *GuestRegistryKeyAlreadyExists*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/GuestRegistryKeyAlreadyExists'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    GuestRegistryKeyFault:
      type: object
      description: |2
        A GuestRegistryKeyFault exception is thrown when an operation fails
        because of some errors in accessing/modifying a guest registry key.
      properties:
        keyName:
          description: |2
            The full path to the windows registry key.
          type: string
      required:
        - keyName
      allOf:
        - $ref: '#/components/schemas/GuestRegistryFault'

    ArrayOfGuestRegistryKeyFault:
      type: object
      description: |2
        A boxed array of *GuestRegistryKeyFault*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/GuestRegistryKeyFault'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    GuestRegistryKeyHasSubkeys:
      type: object
      description: |2
        A GuestRegistryKeyHasSubkeys exception is thrown when an operation fails
        because the guest registry key has subkeys.
        
        If a delete on the key is
        desired, please use the recursive delete option.
      allOf:
        - $ref: '#/components/schemas/GuestRegistryKeyFault'

    ArrayOfGuestRegistryKeyHasSubkeys:
      type: object
      description: |2
        A boxed array of *GuestRegistryKeyHasSubkeys*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/GuestRegistryKeyHasSubkeys'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    GuestRegistryKeyInvalid:
      type: object
      description: |2
        A GuestRegistryKeyInvalid exception is thrown when an operation fails
        because the guest registry key specified was not valid (most probably
        due to an invalid HKEY Root in the key path), or does not exist.
      allOf:
        - $ref: '#/components/schemas/GuestRegistryKeyFault'

    ArrayOfGuestRegistryKeyInvalid:
      type: object
      description: |2
        A boxed array of *GuestRegistryKeyInvalid*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/GuestRegistryKeyInvalid'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    GuestRegistryKeyParentVolatile:
      type: object
      description: |2
        A GuestRegistryKeyParentVolatile exception is thrown when trying to create
        a non-volatile registry subkey under a volatile registry parent key.
      allOf:
        - $ref: '#/components/schemas/GuestRegistryKeyFault'

    ArrayOfGuestRegistryKeyParentVolatile:
      type: object
      description: |2
        A boxed array of *GuestRegistryKeyParentVolatile*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/GuestRegistryKeyParentVolatile'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    GuestRegistryValueFault:
      type: object
      description: |2
        A GuestRegistryValueFault exception is thrown when an operation fails
        because of some errors in accessing/modifying a guest registry value.
      properties:
        keyName:
          description: |2
            The full path to the windows registry key containing the value.
          type: string
        valueName:
          description: |2
            The name of the value.
          type: string
      required:
        - keyName
        - valueName
      allOf:
        - $ref: '#/components/schemas/GuestRegistryFault'

    ArrayOfGuestRegistryValueFault:
      type: object
      description: |2
        A boxed array of *GuestRegistryValueFault*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/GuestRegistryValueFault'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    GuestRegistryValueNotFound:
      type: object
      description: |2
        A GuestRegistryValueNotFound exception is thrown when an operation fails
        because the guest registry Value specified was not found.
      allOf:
        - $ref: '#/components/schemas/GuestRegistryValueFault'

    ArrayOfGuestRegistryValueNotFound:
      type: object
      description: |2
        A boxed array of *GuestRegistryValueNotFound*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/GuestRegistryValueNotFound'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HAErrorsAtDest:
      type: object
      description: |2
        The destination compute resource is HA-enabled, and HA is not running
        properly.
        
        This will cause the following problems:
        1\) The VM will not have HA protection.
        2\) If this is an intracluster VMotion, HA will not be properly
        informed that the migration completed. This can have serious
        consequences to the functioning of HA.
      allOf:
        - $ref: '#/components/schemas/MigrationFault'

    ArrayOfHAErrorsAtDest:
      type: object
      description: |2
        A boxed array of *HAErrorsAtDest*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HAErrorsAtDest'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HeterogenousHostsBlockingEVC:
      type: object
      description: |2
        An attempt to enable Enhanced VMotion Compatibility on a cluster has failed
        because the cluster contains CPUs from more than one vendor.
      allOf:
        - $ref: '#/components/schemas/EVCConfigFault'

    ArrayOfHeterogenousHostsBlockingEVC:
      type: object
      description: |2
        A boxed array of *HeterogenousHostsBlockingEVC*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HeterogenousHostsBlockingEVC'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostAccessRestrictedToManagementServer:
      type: object
      description: |2
        Fault thrown when an attempt is made to adjust resource settings
        directly on a host that is being managed by VC.
        
        VC is currently the
        source of truth for all resource pools on the host.
        Examples of methods affected by this are:
        - create respool
        - update respool
        - change VM resource settings.
      properties:
        managementServer:
          description: |2
            Name/IP of the server currently managing this host.
          type: string
      required:
        - managementServer
      allOf:
        - $ref: '#/components/schemas/NotSupported'

    ArrayOfHostAccessRestrictedToManagementServer:
      type: object
      description: |2
        A boxed array of *HostAccessRestrictedToManagementServer*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostAccessRestrictedToManagementServer'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostConfigFailed:
      type: object
      description: |2
        Fault to indicate configuration of the host failed.
        
        Configuration could have failed because of multiple
        reasons and individual failures will be reported in
        \#failure.
      properties:
        failure:
          type: array
          items:
            $ref: '#/components/schemas/MethodFault'
      required:
        - failure
      allOf:
        - $ref: '#/components/schemas/HostConfigFault'

    ArrayOfHostConfigFailed:
      type: object
      description: |2
        A boxed array of *HostConfigFailed*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostConfigFailed'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostConfigFault:
      type: object
      description: |2
        Base class for all Host configuration related faults
      allOf:
        - $ref: '#/components/schemas/VimFault'

    ArrayOfHostConfigFault:
      type: object
      description: |2
        A boxed array of *HostConfigFault*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostConfigFault'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostConnectFault:
      type: object
      description: |2
        A base clase for faults that are related to connecting or
        adding a host to the inventory.
      allOf:
        - $ref: '#/components/schemas/VimFault'

    ArrayOfHostConnectFault:
      type: object
      description: |2
        A boxed array of *HostConnectFault*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostConnectFault'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostHasComponentFailure:
      type: object
      description: |2
        The host has a component failure and thus can cause issues for VMs running or
        to be running on it.
      properties:
        hostName:
          description: |2
            The host that has the component failure.
          type: string
        componentType:
          description: |2
            The type of the component that has failed.
            
            Values come from *HostHasComponentFailureHostComponentType_enum*.
          type: string
        componentName:
          description: |2
            The name of the component that has failed.
          type: string
      required:
        - hostName
        - componentType
        - componentName
      allOf:
        - $ref: '#/components/schemas/VimFault'

    ArrayOfHostHasComponentFailure:
      type: object
      description: |2
        A boxed array of *HostHasComponentFailure*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostHasComponentFailure'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostInDomain:
      type: object
      description: |2
        Fault indicating that an operation cannot be performed while
        the host is part of a Windows domain.
      allOf:
        - $ref: '#/components/schemas/HostConfigFault'

    ArrayOfHostInDomain:
      type: object
      description: |2
        A boxed array of *HostInDomain*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostInDomain'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostIncompatibleForFaultTolerance:
      type: object
      description: |2
        This fault is thrown when an attempt is made to configure a fault tolerant
        virtual machine on a host that is incompatible.
      properties:
        hostName:
          type: string
        reason:
          description: |2
            The specific reason why the host does not support fault tolerance.
            
            Values should come from *HostIncompatibleForFaultToleranceReason_enum*.
          type: string
      allOf:
        - $ref: '#/components/schemas/VmFaultToleranceIssue'

    ArrayOfHostIncompatibleForFaultTolerance:
      type: object
      description: |2
        A boxed array of *HostIncompatibleForFaultTolerance*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostIncompatibleForFaultTolerance'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostIncompatibleForRecordReplay:
      type: object
      deprecated: true
      description: |2
        Deprecated as of vSphere API 6.0.
        
        This fault is thrown when an attempt is made record or replay
        a virtual machine on a host that is incompatible.
      properties:
        hostName:
          type: string
        reason:
          description: |2
            The specific reason why the host does not support record/replay.
            
            Values should come from *HostIncompatibleForRecordReplayReason_enum*.
          type: string
      allOf:
        - $ref: '#/components/schemas/VimFault'

    ArrayOfHostIncompatibleForRecordReplay:
      type: object
      description: |2
        A boxed array of *HostIncompatibleForRecordReplay*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostIncompatibleForRecordReplay'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostInventoryFull:
      type: object
      description: |2
        A HostInventoryFull is thrown if the inventory has reach the max capacity of hosts.
      properties:
        capacity:
          type: integer
          format: int32
      required:
        - capacity
      allOf:
        - $ref: '#/components/schemas/NotEnoughLicenses'

    ArrayOfHostInventoryFull:
      type: object
      description: |2
        A boxed array of *HostInventoryFull*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostInventoryFull'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostPowerOpFailed:
      type: object
      description: |2
        This fault is thrown when a host power operation fails.
      allOf:
        - $ref: '#/components/schemas/VimFault'

    ArrayOfHostPowerOpFailed:
      type: object
      description: |2
        A boxed array of *HostPowerOpFailed*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostPowerOpFailed'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostSpecificationOperationFailed:
      type: object
      description: |2
        Fault thrown when an operation, on host specification or host sub
        specification for a host, failed.
      properties:
        host:
          description: |2
            The host on which host specification operation failed.
            
            Refers instance of *HostSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - host
      allOf:
        - $ref: '#/components/schemas/VimFault'

    ArrayOfHostSpecificationOperationFailed:
      type: object
      description: |2
        A boxed array of *HostSpecificationOperationFailed*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostSpecificationOperationFailed'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HotSnapshotMoveNotSupported:
      type: object
      description: |2
        An attempt is being made to move a virtual machine's disk that has
        associated snapshots, and preserving the snapshots is not supported by the
        host because the virtual machine is currently powered on.
      allOf:
        - $ref: '#/components/schemas/SnapshotCopyNotSupported'

    ArrayOfHotSnapshotMoveNotSupported:
      type: object
      description: |2
        A boxed array of *HotSnapshotMoveNotSupported*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HotSnapshotMoveNotSupported'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HttpFault:
      type: object
      description: |2
        Generic base class for outbound HTTP communication errors.
      properties:
        statusCode:
          description: |2
            HTTP status code received from external web-server.
          type: integer
          format: int32
        statusMessage:
          description: |2
            HTTP status message received from external web-server.
          type: string
      required:
        - statusCode
        - statusMessage
      allOf:
        - $ref: '#/components/schemas/VimFault'

    ArrayOfHttpFault:
      type: object
      description: |2
        A boxed array of *HttpFault*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HttpFault'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    IDEDiskNotSupported:
      type: object
      deprecated: true
      description: |2
        Deprecated as of VI API 2.5, use *DeviceControllerNotSupported*.
        
        The virtual machine uses a virtual disk with an IDE controller, but this
        is not supported on the host.
      allOf:
        - $ref: '#/components/schemas/DiskNotSupported'

    ArrayOfIDEDiskNotSupported:
      type: object
      description: |2
        A boxed array of *IDEDiskNotSupported*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/IDEDiskNotSupported'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    IORMNotSupportedHostOnDatastore:
      type: object
      description: |2
        A IORMNotSupportedHostOnDatastore fault occurs when the datastore is connected
        to one or more hosts that do not support storage I/O resource management.
      properties:
        datastore:
          description: |2
            The datastore.
            
            Refers instance of *Datastore*.
          $ref: '#/components/schemas/ManagedObjectReference'
        datastoreName:
          description: |2
            The name of the datastore.
          type: string
        host:
          description: |2
            The list of hosts that do not support storage I/O
            resource management.
            
            Refers instances of *HostSystem*.
          type: array
          items:
            $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - datastore
        - datastoreName
      allOf:
        - $ref: '#/components/schemas/VimFault'

    ArrayOfIORMNotSupportedHostOnDatastore:
      type: object
      description: |2
        A boxed array of *IORMNotSupportedHostOnDatastore*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/IORMNotSupportedHostOnDatastore'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ImportHostAddFailure:
      type: object
      description: |2
        Thrown if failure occurs while adding host to DVS during import operation
      properties:
        hostIp:
          description: |2
            Hosts on which import operation failed
          type: array
          items:
            type: string
      required:
        - hostIp
      allOf:
        - $ref: '#/components/schemas/DvsFault'

    ArrayOfImportHostAddFailure:
      type: object
      description: |2
        A boxed array of *ImportHostAddFailure*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ImportHostAddFailure'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ImportOperationBulkFault:
      type: object
      description: |2
        Thrown if a Import operation fails
      properties:
        importFaults:
          description: |2
            Faults occurred during the import operation
          type: array
          items:
            $ref: '#/components/schemas/ImportOperationBulkFaultFaultOnImport'
      required:
        - importFaults
      allOf:
        - $ref: '#/components/schemas/DvsFault'

    ArrayOfImportOperationBulkFault:
      type: object
      description: |2
        A boxed array of *ImportOperationBulkFault*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ImportOperationBulkFault'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ImportOperationBulkFaultFaultOnImport:
      type: object
      description: |2
        The fault occurred on the entity during an import operation.
      properties:
        entityType:
          description: |2
            The entity type on which import failed.
            
            See *EntityType_enum*
            for valid values
          type: string
        key:
          description: |2
            The key on which import failed
          type: string
        fault:
          description: |2
            The fault that occurred.
          $ref: '#/components/schemas/MethodFault'
      required:
        - fault
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfImportOperationBulkFaultFaultOnImport:
      type: object
      description: |2
        A boxed array of *ImportOperationBulkFaultFaultOnImport*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ImportOperationBulkFaultFaultOnImport'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    InUseFeatureManipulationDisallowed:
      type: object
      description: |2
        A InUseFeatureManipulationDisallowed fault is thrown if an Vim.LicenseAssignmentManager.SetFeatureInUse or Vim.LicenseAssignmentManager.ResetFeatureInUse call can not complete because a feature is not available or the manipulation is not allowed.
      allOf:
        - $ref: '#/components/schemas/NotEnoughLicenses'

    ArrayOfInUseFeatureManipulationDisallowed:
      type: object
      description: |2
        A boxed array of *InUseFeatureManipulationDisallowed*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/InUseFeatureManipulationDisallowed'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    InaccessibleDatastore:
      type: object
      description: |2
        An InaccessibleDatastore exception is thrown if the datastore corresponding to the
        given datastore path isn't currently accessible.
      properties:
        detail:
          type: string
      allOf:
        - $ref: '#/components/schemas/InvalidDatastore'

    ArrayOfInaccessibleDatastore:
      type: object
      description: |2
        A boxed array of *InaccessibleDatastore*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/InaccessibleDatastore'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    InaccessibleFTMetadataDatastore:
      type: object
      description: |2
        An InaccessibleFTMetadataDatastore exception is thrown if the datastore
        corresponding to the specified FT Metadata Datastore path isn't currently
        accessible.
      allOf:
        - $ref: '#/components/schemas/InaccessibleDatastore'

    ArrayOfInaccessibleFTMetadataDatastore:
      type: object
      description: |2
        A boxed array of *InaccessibleFTMetadataDatastore*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/InaccessibleFTMetadataDatastore'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    InaccessibleVFlashSource:
      type: object
      description: |2
        An InaccessibleVFlashSource exception is thrown when
        an attempt is made to access the vFlash resource on
        the host, such as creating vFlash cache file for the
        virtual disk.
      properties:
        hostName:
          description: |2
            Name of the host which has the vFlash resource
          type: string
      required:
        - hostName
      allOf:
        - $ref: '#/components/schemas/VimFault'

    ArrayOfInaccessibleVFlashSource:
      type: object
      description: |2
        A boxed array of *InaccessibleVFlashSource*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/InaccessibleVFlashSource'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    IncompatibleDefaultDevice:
      type: object
      description: |2
        A default device (see *VirtualMachineConfigOption.defaultDevice* for a
        definition) which the virtual machine is using is incompatible with
        the corresponding default device which will be created on the target host.
        
        This is an issue with powered-on or suspended migration under some
        circumstances. The problem is that in cases where the virtual machine
        must be recreated, it will have the default device created with default
        settings that are appropriate for the target host. If those are not
        compatible with the settings for that device that the virtual machine is currently
        using, then resuming the virtual machine on the target host might fail.
        
        This might happen if the device in question were reconfigured or the default
        is different between the source and the destination host. An example of
        a default device and associated setting which might cause this is
        *VirtualMachineVideoCard.videoRamSizeInKB*.
        This is an error.
      properties:
        device:
          description: |2
            The label of the device.
          type: string
      required:
        - device
      allOf:
        - $ref: '#/components/schemas/MigrationFault'

    ArrayOfIncompatibleDefaultDevice:
      type: object
      description: |2
        A boxed array of *IncompatibleDefaultDevice*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/IncompatibleDefaultDevice'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    IncompatibleHostForFtSecondary:
      type: object
      description: |2
        The IncompatibleHostForFtSecondary fault is thrown when an invalid
        host has been specified when calling *VirtualMachine.CreateSecondaryVM_Task*
        or *VirtualMachine.EnableSecondaryVM_Task*.
      properties:
        host:
          description: |2
            The host that is not compatible with the secondary virtual machine.
            
            Refers instance of *HostSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
        error:
          description: |2
            Information on why the host that was specified could not be used for
            the FaultTolerance Secondary VirtualMachine.
          type: array
          items:
            $ref: '#/components/schemas/MethodFault'
      required:
        - host
      allOf:
        - $ref: '#/components/schemas/VmFaultToleranceIssue'

    ArrayOfIncompatibleHostForFtSecondary:
      type: object
      description: |2
        A boxed array of *IncompatibleHostForFtSecondary*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/IncompatibleHostForFtSecondary'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    IncompatibleHostForVmReplication:
      type: object
      description: |2
        A IncompatibleHostForVmReplication is thrown when a VM is powered
        on or migrated to a host which does not support the replication
        configuration of the VM.
      properties:
        vmName:
          description: |2
            The VM which has replication configured
          type: string
        hostName:
          description: |2
            The host which is incompatible for VM replication
          type: string
        reason:
          description: |2
            The reason why the host is incompatible
          type: string
      required:
        - vmName
        - hostName
        - reason
      allOf:
        - $ref: '#/components/schemas/ReplicationFault'

    ArrayOfIncompatibleHostForVmReplication:
      type: object
      description: |2
        A boxed array of *IncompatibleHostForVmReplication*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/IncompatibleHostForVmReplication'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    IncompatibleSetting:
      type: object
      description: |2
        Thrown when two parameters in the customization settings conflict with each other.
        
        For example, a client may not specify both a Workgroup and a DomainName.
      properties:
        conflictingProperty:
          description: |2
            The name of the setting that is conflicting.
          type: string
      required:
        - conflictingProperty
      allOf:
        - $ref: '#/components/schemas/InvalidArgument'

    ArrayOfIncompatibleSetting:
      type: object
      description: |2
        A boxed array of *IncompatibleSetting*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/IncompatibleSetting'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    IncorrectFileType:
      type: object
      description: |2
        Thrown when an operation fails because the files do not match a
        specified file type.
      allOf:
        - $ref: '#/components/schemas/FileFault'

    ArrayOfIncorrectFileType:
      type: object
      description: |2
        A boxed array of *IncorrectFileType*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/IncorrectFileType'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    IncorrectHostInformation:
      type: object
      description: |2
        A IncorrectHostInformation is thrown if the host does not provide the information
        needed to acquire the correct set of licenses.
      allOf:
        - $ref: '#/components/schemas/NotEnoughLicenses'

    ArrayOfIncorrectHostInformation:
      type: object
      description: |2
        A boxed array of *IncorrectHostInformation*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/IncorrectHostInformation'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    IndependentDiskVMotionNotSupported:
      type: object
      description: |2
        An operation on a powered-on virtual machine requests that the virtual
        machine's disks be moved without choosing a new home datastore for the
        virtual machine, but the host does not have that capability.
      allOf:
        - $ref: '#/components/schemas/MigrationFeatureNotSupported'

    ArrayOfIndependentDiskVMotionNotSupported:
      type: object
      description: |2
        A boxed array of *IndependentDiskVMotionNotSupported*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/IndependentDiskVMotionNotSupported'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    InsufficientAgentVmsDeployed:
      type: object
      description: |2
        This fault is returned when the required number of deployed agent virtual
        machines is not currently deployed on a host and hence the host cannot be
        used to run client virtual machines.
      properties:
        hostName:
          type: string
        requiredNumAgentVms:
          description: |2
            The number of agent virtual machines required to be deployed on the host.
          type: integer
          format: int32
        currentNumAgentVms:
          description: |2
            The number of agent virtual machines currently deployed on the host.
          type: integer
          format: int32
      required:
        - hostName
        - requiredNumAgentVms
        - currentNumAgentVms
      allOf:
        - $ref: '#/components/schemas/InsufficientResourcesFault'

    ArrayOfInsufficientAgentVmsDeployed:
      type: object
      description: |2
        A boxed array of *InsufficientAgentVmsDeployed*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/InsufficientAgentVmsDeployed'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    InsufficientCpuResourcesFault:
      type: object
      description: |2
        CPU resources admission control failed
      properties:
        unreserved:
          description: |2
            The CPU available in the resource pool requested in MHz.
          type: integer
          format: int64
        requested:
          description: |2
            The CPU resource amount requested in the failed operation in MHz.
          type: integer
          format: int64
      required:
        - unreserved
        - requested
      allOf:
        - $ref: '#/components/schemas/InsufficientResourcesFault'

    ArrayOfInsufficientCpuResourcesFault:
      type: object
      description: |2
        A boxed array of *InsufficientCpuResourcesFault*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/InsufficientCpuResourcesFault'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    InsufficientDisks:
      type: object
      description: |2
        Fault used to denote an insufficient group of disks for a given operation.
        
        See also *HostVsanSystem.AddDisks_Task*, *HostVsanSystem.InitializeDisks_Task*.
      allOf:
        - $ref: '#/components/schemas/VsanDiskFault'

    ArrayOfInsufficientDisks:
      type: object
      description: |2
        A boxed array of *InsufficientDisks*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/InsufficientDisks'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    InsufficientFailoverResourcesFault:
      type: object
      description: |2
        This is thrown if an operation would violate the configured failover level of a HA
        cluster.
        
        In a HA cluster, virtual machines provide high availability by moving among physical
        machines in the event of a failure. HA Admission Control ensures that the total
        resource requirements for the set of virtual machines in a HA cluster does not exceed
        the resources that would be available in the worst-case scenario failure. If HA
        Admission Control is not used, physical machines may have insufficient resources to
        provide the expected level of service.
        
        This fault indicates that the virtual machine operation you attempted would have
        created a situation where the remaining physical machines would not meet the needs of
        the virtual machines in the event of a failure.
      allOf:
        - $ref: '#/components/schemas/InsufficientResourcesFault'

    ArrayOfInsufficientFailoverResourcesFault:
      type: object
      description: |2
        A boxed array of *InsufficientFailoverResourcesFault*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/InsufficientFailoverResourcesFault'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    InsufficientGraphicsResourcesFault:
      type: object
      description: |2
        Graphics resources admission control failed
      allOf:
        - $ref: '#/components/schemas/InsufficientResourcesFault'

    ArrayOfInsufficientGraphicsResourcesFault:
      type: object
      description: |2
        A boxed array of *InsufficientGraphicsResourcesFault*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/InsufficientGraphicsResourcesFault'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    InsufficientHostCapacityFault:
      type: object
      description: |2
        The host does not have enough capacity for running the virtual machine.
      properties:
        host:
          description: |2
            The host which does not have the enough capacity.
            
            Refers instance of *HostSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
      allOf:
        - $ref: '#/components/schemas/InsufficientResourcesFault'

    ArrayOfInsufficientHostCapacityFault:
      type: object
      description: |2
        A boxed array of *InsufficientHostCapacityFault*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/InsufficientHostCapacityFault'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    InsufficientHostCpuCapacityFault:
      type: object
      description: |2
        The host does not have enough CPU capacity for running the virtual machine.
      properties:
        unreserved:
          description: |2
            The CPU available on the host in MHz.
          type: integer
          format: int64
        requested:
          description: |2
            The CPU resource amount requested in the failed operation in MHz.
          type: integer
          format: int64
      required:
        - unreserved
        - requested
      allOf:
        - $ref: '#/components/schemas/InsufficientHostCapacityFault'

    ArrayOfInsufficientHostCpuCapacityFault:
      type: object
      description: |2
        A boxed array of *InsufficientHostCpuCapacityFault*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/InsufficientHostCpuCapacityFault'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    InsufficientHostMemoryCapacityFault:
      type: object
      description: |2
        The host does not have enough memory capacity for running the virtual machine.
      properties:
        unreserved:
          description: |2
            The memory available on the host in bytes.
          type: integer
          format: int64
        requested:
          description: |2
            The memory resource amount requested in the failed operation in bytes.
          type: integer
          format: int64
      required:
        - unreserved
        - requested
      allOf:
        - $ref: '#/components/schemas/InsufficientHostCapacityFault'

    ArrayOfInsufficientHostMemoryCapacityFault:
      type: object
      description: |2
        A boxed array of *InsufficientHostMemoryCapacityFault*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/InsufficientHostMemoryCapacityFault'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    InsufficientMemoryResourcesFault:
      type: object
      description: |2
        Memory resource admission control failed
      properties:
        unreserved:
          description: |2
            The memory available in the resource pool requested in bytes.
          type: integer
          format: int64
        requested:
          description: |2
            The memory resource amount requested in the failed operation in bytes.
          type: integer
          format: int64
      required:
        - unreserved
        - requested
      allOf:
        - $ref: '#/components/schemas/InsufficientResourcesFault'

    ArrayOfInsufficientMemoryResourcesFault:
      type: object
      description: |2
        A boxed array of *InsufficientMemoryResourcesFault*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/InsufficientMemoryResourcesFault'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    InsufficientNetworkCapacity:
      type: object
      description: |2
        The host does not have enough network capacity for running the virtual machine.
      allOf:
        - $ref: '#/components/schemas/InsufficientResourcesFault'

    ArrayOfInsufficientNetworkCapacity:
      type: object
      description: |2
        A boxed array of *InsufficientNetworkCapacity*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/InsufficientNetworkCapacity'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    InsufficientNetworkResourcePoolCapacity:
      type: object
      description: |2
        Insufficient network resource pool bandwidth
      properties:
        dvsName:
          description: |2
            Distributed Virtual Switch containing the resource pool
            having unsufficient network bandwitdh.
          type: string
        dvsUuid:
          description: |2
            UUID of the distributed Virtual Switch containing the resource pool
            having unsufficient network bandwitdh.
          type: string
        resourcePoolKey:
          description: |2
            Key of the resource pool on which network bandwidth is requested.
          type: string
        available:
          description: |2
            Network bandwidth available (in MBs) in the requested resource pool.
          type: integer
          format: int64
        requested:
          description: |2
            Network bandwidth amount requested (in MBs).
          type: integer
          format: int64
        device:
          description: |2
            List of network devices that are requesting or already have requested
            bandwidth on the network resource pool.
          type: array
          items:
            type: string
      required:
        - dvsName
        - dvsUuid
        - resourcePoolKey
        - available
        - requested
        - device
      allOf:
        - $ref: '#/components/schemas/InsufficientResourcesFault'

    ArrayOfInsufficientNetworkResourcePoolCapacity:
      type: object
      description: |2
        A boxed array of *InsufficientNetworkResourcePoolCapacity*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/InsufficientNetworkResourcePoolCapacity'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    InsufficientPerCpuCapacity:
      type: object
      description: |2
        The host does not have enough per CPU capacity.
      allOf:
        - $ref: '#/components/schemas/InsufficientHostCapacityFault'

    ArrayOfInsufficientPerCpuCapacity:
      type: object
      description: |2
        A boxed array of *InsufficientPerCpuCapacity*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/InsufficientPerCpuCapacity'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    InsufficientResourcesFault:
      type: object
      description: |2
        Base fault that occurs when an operation conflicts with a resource configuration
        policy.
        
        For example, this fault occurs if a power-on operation reserves more memory
        than is allocated to a resource pool.
      allOf:
        - $ref: '#/components/schemas/VimFault'

    ArrayOfInsufficientResourcesFault:
      type: object
      description: |2
        A boxed array of *InsufficientResourcesFault*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/InsufficientResourcesFault'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    InsufficientStandbyCpuResource:
      type: object
      description: |2
        This fault is thrown when Distributed Power Management cannot perform
        a given opeartion because there is insufficient CPU resource
        on standby hosts (if any) to meet the requirements of the operation.
      properties:
        available:
          description: |2
            The total amount of CPU resource available (in MHz) on all the usable hosts
            in the cluster (including powered on and standby hosts).
          type: integer
          format: int64
        requested:
          description: |2
            The additional amount of CPU resource (other than that on the hosts included
            in "available") needed (in MHz).
          type: integer
          format: int64
      required:
        - available
        - requested
      allOf:
        - $ref: '#/components/schemas/InsufficientStandbyResource'

    ArrayOfInsufficientStandbyCpuResource:
      type: object
      description: |2
        A boxed array of *InsufficientStandbyCpuResource*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/InsufficientStandbyCpuResource'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    InsufficientStandbyMemoryResource:
      type: object
      description: |2
        This fault is thrown by Distributed Power Management algorithm.
        
        It indicates
        that there are insufficient memory resources on standby hosts (if any)
        to meet the requirements of a given operation.
      properties:
        available:
          description: |2
            The total amount of memory resource available (in bytes) on all the usable hosts
            in the cluster (including powered on and standby hosts).
          type: integer
          format: int64
        requested:
          description: |2
            The additional amount of memory resource (other than that on the hosts included
            in "available") needed (in bytes).
          type: integer
          format: int64
      required:
        - available
        - requested
      allOf:
        - $ref: '#/components/schemas/InsufficientStandbyResource'

    ArrayOfInsufficientStandbyMemoryResource:
      type: object
      description: |2
        A boxed array of *InsufficientStandbyMemoryResource*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/InsufficientStandbyMemoryResource'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    InsufficientStandbyResource:
      type: object
      description: |2
        This fault is thrown when Distributed Power Management cannot perform
        a given opeartion because there are insufficient CPU/memory resources
        on standby hosts (if any) to meet the requirements of the operation.
      allOf:
        - $ref: '#/components/schemas/InsufficientResourcesFault'

    ArrayOfInsufficientStandbyResource:
      type: object
      description: |2
        A boxed array of *InsufficientStandbyResource*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/InsufficientStandbyResource'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    InsufficientStorageIops:
      type: object
      description: |2
        The datastore does not have enough IOPs capacity for running the virtual machine.
      properties:
        unreservedIops:
          description: |2
            The IOPs available on the datastore
          type: integer
          format: int64
        requestedIops:
          description: |2
            The IOPs resource amount requested in the failed operation
          type: integer
          format: int64
        datastoreName:
          description: |2
            Name of the datastore with insufficient capacity
          type: string
      required:
        - unreservedIops
        - requestedIops
        - datastoreName
      allOf:
        - $ref: '#/components/schemas/VimFault'

    ArrayOfInsufficientStorageIops:
      type: object
      description: |2
        A boxed array of *InsufficientStorageIops*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/InsufficientStorageIops'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    InsufficientStorageSpace:
      type: object
      description: |2
        The fault occurs when Storage DRS cannot perform a given operation (e.g., fix the
        out of space condition, or place a virtual disk) because there is insufficient
        storage space in the given storage pod to meet the requirements of the operation.
      allOf:
        - $ref: '#/components/schemas/InsufficientResourcesFault'

    ArrayOfInsufficientStorageSpace:
      type: object
      description: |2
        A boxed array of *InsufficientStorageSpace*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/InsufficientStorageSpace'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    InsufficientVFlashResourcesFault:
      type: object
      description: |2
        Insufficient vFlash resource to consume
      properties:
        freeSpaceInMB:
          description: |2
            The vFlash resource available capacity in MB.
          type: integer
          format: int64
        freeSpace:
          description: |2
            The vFlash resource available capacity in bytes.
          type: integer
          format: int64
        requestedSpaceInMB:
          description: |2
            The vFlash resource amount requested in MB.
          type: integer
          format: int64
        requestedSpace:
          description: |2
            The vFlash resource amount requested in bytes.
          type: integer
          format: int64
      required:
        - freeSpace
        - requestedSpace
      allOf:
        - $ref: '#/components/schemas/InsufficientResourcesFault'

    ArrayOfInsufficientVFlashResourcesFault:
      type: object
      description: |2
        A boxed array of *InsufficientVFlashResourcesFault*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/InsufficientVFlashResourcesFault'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    InvalidAffinitySettingFault:
      type: object
      description: |2
        An InvalidAffinitySettingsFault is thrown if an invalid affinity setting is
        specified for a virtual machine.
      allOf:
        - $ref: '#/components/schemas/VimFault'

    ArrayOfInvalidAffinitySettingFault:
      type: object
      description: |2
        A boxed array of *InvalidAffinitySettingFault*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/InvalidAffinitySettingFault'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    InvalidBmcRole:
      type: object
      description: |2
        An InvalidBmcRole fault is thrown when a BMC user doesn't have the necessary
        privileges.
        
        BMC (Board Management Controller) is a piece of hardware required for
        IPMI.
      allOf:
        - $ref: '#/components/schemas/VimFault'

    ArrayOfInvalidBmcRole:
      type: object
      description: |2
        A boxed array of *InvalidBmcRole*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/InvalidBmcRole'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    InvalidBundle:
      type: object
      description: |2
        An Invalid Bundle fault is thrown if an operation fails because of a
        problem with the supplied bundle.
      allOf:
        - $ref: '#/components/schemas/PlatformConfigFault'

    ArrayOfInvalidBundle:
      type: object
      description: |2
        A boxed array of *InvalidBundle*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/InvalidBundle'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    InvalidCAMCertificate:
      type: object
      description: |2
        Fault indicating that the CAM server's certificate
        cannot be verified.
      allOf:
        - $ref: '#/components/schemas/InvalidCAMServer'

    ArrayOfInvalidCAMCertificate:
      type: object
      description: |2
        A boxed array of *InvalidCAMCertificate*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/InvalidCAMCertificate'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    InvalidCAMServer:
      type: object
      description: |2
        Fault indicating that the CAM server
        for camServer cannot be reached,
        or is not a valid IP address.
      properties:
        camServer:
          description: |2
            The address of the CAM server.
          type: string
      required:
        - camServer
      allOf:
        - $ref: '#/components/schemas/ActiveDirectoryFault'

    ArrayOfInvalidCAMServer:
      type: object
      description: |2
        A boxed array of *InvalidCAMServer*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/InvalidCAMServer'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    InvalidClientCertificate:
      type: object
      description: |2
        This exception is thrown when a client has provided a
        certificate that fails certificate validation at the server.
      allOf:
        - $ref: '#/components/schemas/InvalidLogin'

    ArrayOfInvalidClientCertificate:
      type: object
      description: |2
        A boxed array of *InvalidClientCertificate*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/InvalidClientCertificate'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    InvalidController:
      type: object
      description: |2
        An InvalidController exception is thrown if
        a device refers to a controller that cannot be found.
        
        For example, an exception might be thrown if the client
        incorrectly passes a controller key,
        or if the client did not specify a controller where one is
        required (such as for disks or CD-ROMs).
      properties:
        controllerKey:
          type: integer
          format: int32
      required:
        - controllerKey
      allOf:
        - $ref: '#/components/schemas/InvalidDeviceSpec'

    ArrayOfInvalidController:
      type: object
      description: |2
        A boxed array of *InvalidController*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/InvalidController'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    InvalidDasConfigArgument:
      type: object
      description: |2
        This fault is thrown when an attempt is made to configure an HA cluster with
        invalid argument.
      properties:
        entry:
          description: |2
            The entry for the invalid argument
          type: string
        clusterName:
          description: |2
            Name of the cluster to be configured
          type: string
      allOf:
        - $ref: '#/components/schemas/InvalidArgument'

    ArrayOfInvalidDasConfigArgument:
      type: object
      description: |2
        A boxed array of *InvalidDasConfigArgument*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/InvalidDasConfigArgument'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    InvalidDasRestartPriorityForFtVm:
      type: object
      description: |2
        This fault is thrown when an attempt is made to set the DAS restart
        priority of a FT VM to disabled.
      properties:
        vm:
          description: |2
            The virtual machine
            
            Refers instance of *VirtualMachine*.
          $ref: '#/components/schemas/ManagedObjectReference'
        vmName:
          description: |2
            The name of the virtual machine
          type: string
      required:
        - vm
        - vmName
      allOf:
        - $ref: '#/components/schemas/InvalidArgument'

    ArrayOfInvalidDasRestartPriorityForFtVm:
      type: object
      description: |2
        A boxed array of *InvalidDasRestartPriorityForFtVm*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/InvalidDasRestartPriorityForFtVm'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    InvalidDatastore:
      type: object
      description: |2
        An InvalidDatastore exception is thrown if an operation fails because of a
        problem with the specified datastore.
        
        Typically, a subclass of this
        exception is thrown, indicating a problem such as an inaccessible datastore
        or an invalid datastore path.
      properties:
        datastore:
          description: |2
            The datastore that is invalid.
            
            Refers instance of *Datastore*.
          $ref: '#/components/schemas/ManagedObjectReference'
        name:
          description: |2
            The name of the datastore that is invalid.
          type: string
      allOf:
        - $ref: '#/components/schemas/VimFault'

    ArrayOfInvalidDatastore:
      type: object
      description: |2
        A boxed array of *InvalidDatastore*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/InvalidDatastore'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    InvalidDatastorePath:
      type: object
      description: |2
        An InvalidDatastorePath exception is thrown if a datastore path violates
        the expected format.
        
        The expected format is "\[dsName\] path", e.g.
        "\[storage1\] folder/Vm1.vmdk". This exception is also thrown if a datastore
        corresponding to the given datastore path is not found.
      properties:
        datastorePath:
          description: |2
            The invalid datastore path name, if one was provided.
          type: string
      required:
        - datastorePath
      allOf:
        - $ref: '#/components/schemas/InvalidDatastore'

    ArrayOfInvalidDatastorePath:
      type: object
      description: |2
        A boxed array of *InvalidDatastorePath*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/InvalidDatastorePath'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    InvalidDatastoreState:
      type: object
      description: |2
        The datastore is in an invalid state (e.g., maintenance mode)
        for a given operation.
      properties:
        datastoreName:
          description: |2
            The name of the datastore.
          type: string
      allOf:
        - $ref: '#/components/schemas/InvalidState'

    ArrayOfInvalidDatastoreState:
      type: object
      description: |2
        A boxed array of *InvalidDatastoreState*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/InvalidDatastoreState'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    InvalidDeviceBacking:
      type: object
      description: |2
        An InvalidDeviceBacking exception is thrown if
        a device with an incompatible
        device backing is added or edited.
      allOf:
        - $ref: '#/components/schemas/InvalidDeviceSpec'

    ArrayOfInvalidDeviceBacking:
      type: object
      description: |2
        A boxed array of *InvalidDeviceBacking*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/InvalidDeviceBacking'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    InvalidDeviceOperation:
      type: object
      description: |2
        An InvalidDeviceOperation exception is thrown if
        virtual machine creation or configuration fails because an invalid
        operation is attempted on the given device.
      properties:
        badOp:
          description: |2
            The invalid operation attempted.
          $ref: '#/components/schemas/VirtualDeviceConfigSpecOperation_enum'
        badFileOp:
          description: |2
            The invalid file operation attempted.
          $ref: '#/components/schemas/VirtualDeviceConfigSpecFileOperation_enum'
      allOf:
        - $ref: '#/components/schemas/InvalidDeviceSpec'

    ArrayOfInvalidDeviceOperation:
      type: object
      description: |2
        A boxed array of *InvalidDeviceOperation*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/InvalidDeviceOperation'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    InvalidDeviceSpec:
      type: object
      description: |2
        An InvalidDeviceSpec exception is thrown if
        a virtual machine creation or configuration fails because a device
        specification contains an invalid value.
      properties:
        deviceIndex:
          description: |2
            Index of the device in the configuration specification that has the invalid value.
          type: integer
          format: int32
      required:
        - deviceIndex
      allOf:
        - $ref: '#/components/schemas/InvalidVmConfig'

    ArrayOfInvalidDeviceSpec:
      type: object
      description: |2
        A boxed array of *InvalidDeviceSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/InvalidDeviceSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    InvalidDiskFormat:
      type: object
      description: |2
        The disk format is either corrupted or not supported.
      allOf:
        - $ref: '#/components/schemas/InvalidFormat'

    ArrayOfInvalidDiskFormat:
      type: object
      description: |2
        A boxed array of *InvalidDiskFormat*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/InvalidDiskFormat'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    InvalidDrsBehaviorForFtVm:
      type: object
      description: |2
        This fault is thrown when an attempt is made to set the DRS behavior
        of an FT VM to an unsupported value.
        
        Currently, the only supported
        behavior is **DRS Disabled**.
      properties:
        vm:
          description: |2
            The virtual machine
            
            Refers instance of *VirtualMachine*.
          $ref: '#/components/schemas/ManagedObjectReference'
        vmName:
          description: |2
            The name of the virtual machine
          type: string
      required:
        - vm
        - vmName
      allOf:
        - $ref: '#/components/schemas/InvalidArgument'

    ArrayOfInvalidDrsBehaviorForFtVm:
      type: object
      description: |2
        A boxed array of *InvalidDrsBehaviorForFtVm*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/InvalidDrsBehaviorForFtVm'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    InvalidEditionLicense:
      type: object
      description: |2
        An ExpiredEditionLicense fault is thrown if an attempt to acquire an Edition license
        'feature failed for count 'count'.
      properties:
        feature:
          type: string
      required:
        - feature
      allOf:
        - $ref: '#/components/schemas/NotEnoughLicenses'

    ArrayOfInvalidEditionLicense:
      type: object
      description: |2
        A boxed array of *InvalidEditionLicense*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/InvalidEditionLicense'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    InvalidEvent:
      type: object
      description: |2
        A InvalidEvent fault is thrown when the event
        is malformed.
      allOf:
        - $ref: '#/components/schemas/VimFault'

    ArrayOfInvalidEvent:
      type: object
      description: |2
        A boxed array of *InvalidEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/InvalidEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    InvalidFolder:
      type: object
      description: |2
        An InvalidFolderFault exception is thrown when a
        node is moved to an invalid place in the hierarchy.
        
        This can be because it is a child of the current node,
        or a wrong kind of container.
      properties:
        target:
          description: |2
            Reference to invalid target.
            
            Refers instance of *ManagedEntity*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - target
      allOf:
        - $ref: '#/components/schemas/VimFault'

    ArrayOfInvalidFolder:
      type: object
      description: |2
        A boxed array of *InvalidFolder*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/InvalidFolder'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    InvalidFormat:
      type: object
      description: |2
        Throws when an invalid format is detected.
        
        For example, when
        a virtual machine is registered and the system is unable to parse
        the files as a virtual machine.
      allOf:
        - $ref: '#/components/schemas/VmConfigFault'

    ArrayOfInvalidFormat:
      type: object
      description: |2
        A boxed array of *InvalidFormat*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/InvalidFormat'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    InvalidGuestLogin:
      type: object
      description: |2
        An InvalidGuestLogin exception is thrown when an operation fails because
        authentication information used to authenticate with the guest was not
        accepted.
      allOf:
        - $ref: '#/components/schemas/GuestOperationsFault'

    ArrayOfInvalidGuestLogin:
      type: object
      description: |2
        A boxed array of *InvalidGuestLogin*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/InvalidGuestLogin'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    InvalidHostConnectionState:
      type: object
      description: |2
        The host has an invalid connection state.
      allOf:
        - $ref: '#/components/schemas/InvalidHostState'

    ArrayOfInvalidHostConnectionState:
      type: object
      description: |2
        A boxed array of *InvalidHostConnectionState*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/InvalidHostConnectionState'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    InvalidHostName:
      type: object
      description: |2
        The attempted operation requires that the host has a suitable FQDN.
      allOf:
        - $ref: '#/components/schemas/HostConfigFault'

    ArrayOfInvalidHostName:
      type: object
      description: |2
        A boxed array of *InvalidHostName*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/InvalidHostName'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    InvalidHostState:
      type: object
      description: |2
        The host has an invalid state.
      properties:
        host:
          description: |2
            The host that has an invalid state.
            
            Refers instance of *HostSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
      allOf:
        - $ref: '#/components/schemas/InvalidState'

    ArrayOfInvalidHostState:
      type: object
      description: |2
        A boxed array of *InvalidHostState*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/InvalidHostState'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    InvalidIndexArgument:
      type: object
      description: |2
        An InvalidIndexArgument exception is thrown if the
        index was not found
      properties:
        key:
          description: |2
            Value of index that was not found
          type: string
      required:
        - key
      allOf:
        - $ref: '#/components/schemas/InvalidArgument'

    ArrayOfInvalidIndexArgument:
      type: object
      description: |2
        A boxed array of *InvalidIndexArgument*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/InvalidIndexArgument'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    InvalidIpfixConfig:
      type: object
      description: |2
        Illegal value specified for a property of the switch's IpfixConfig.
      properties:
        property:
          description: |2
            Path of the property in IpfixConfig that has an invalid value.
          type: string
      allOf:
        - $ref: '#/components/schemas/DvsFault'

    ArrayOfInvalidIpfixConfig:
      type: object
      description: |2
        A boxed array of *InvalidIpfixConfig*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/InvalidIpfixConfig'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    InvalidIpmiLoginInfo:
      type: object
      description: |2
        A InvalidIpmiLoginInfo fault is thrown when the IPMI user name and/or password is
        invalid.
      allOf:
        - $ref: '#/components/schemas/VimFault'

    ArrayOfInvalidIpmiLoginInfo:
      type: object
      description: |2
        A boxed array of *InvalidIpmiLoginInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/InvalidIpmiLoginInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    InvalidIpmiMacAddress:
      type: object
      description: |2
        A InvalidIpmiMacAddress fault is thrown when the IPMI mac address provided by the
        user doesn't match with the observed mac address on the host.
      properties:
        userProvidedMacAddress:
          type: string
        observedMacAddress:
          type: string
      required:
        - userProvidedMacAddress
        - observedMacAddress
      allOf:
        - $ref: '#/components/schemas/VimFault'

    ArrayOfInvalidIpmiMacAddress:
      type: object
      description: |2
        A boxed array of *InvalidIpmiMacAddress*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/InvalidIpmiMacAddress'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    InvalidLicense:
      type: object
      description: |2
        Thrown when
        an attempt is made to upload license content
        that is invalid.
      properties:
        licenseContent:
          description: |2
            The content of the license being reported as invalid.
          type: string
      required:
        - licenseContent
      allOf:
        - $ref: '#/components/schemas/VimFault'

    ArrayOfInvalidLicense:
      type: object
      description: |2
        A boxed array of *InvalidLicense*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/InvalidLicense'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    InvalidLocale:
      type: object
      description: |2
        Thrown when a locale name is unknown or invalid.
      allOf:
        - $ref: '#/components/schemas/VimFault'

    ArrayOfInvalidLocale:
      type: object
      description: |2
        A boxed array of *InvalidLocale*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/InvalidLocale'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    InvalidLogin:
      type: object
      description: |2
        Thrown when a server logon fails due to a bad user name or
        password.
      allOf:
        - $ref: '#/components/schemas/VimFault'

    ArrayOfInvalidLogin:
      type: object
      description: |2
        A boxed array of *InvalidLogin*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/InvalidLogin'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    InvalidName:
      type: object
      description: |2
        A InvalidName fault is thrown when the name
        contains an invalid character or format.
      properties:
        name:
          description: |2
            The invalid name.
          type: string
        entity:
          description: |2
            Entity, if any, that has an invalid name.
            
            Refers instance of *ManagedEntity*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - name
      allOf:
        - $ref: '#/components/schemas/VimFault'

    ArrayOfInvalidName:
      type: object
      description: |2
        A boxed array of *InvalidName*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/InvalidName'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    InvalidNasCredentials:
      type: object
      description: |2
        This fault is thrown when an operation to configure a CIFS volume
        fails because the credentials specified in the
        *spec* are incorrect.
      properties:
        userName:
          description: |2
            The username associated with the CIFS connection.
          type: string
      required:
        - userName
      allOf:
        - $ref: '#/components/schemas/NasConfigFault'

    ArrayOfInvalidNasCredentials:
      type: object
      description: |2
        A boxed array of *InvalidNasCredentials*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/InvalidNasCredentials'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    InvalidNetworkInType:
      type: object
      description: |2
        The network specified in the property does not exists.
      allOf:
        - $ref: '#/components/schemas/VAppPropertyFault'

    ArrayOfInvalidNetworkInType:
      type: object
      description: |2
        A boxed array of *InvalidNetworkInType*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/InvalidNetworkInType'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    InvalidNetworkResource:
      type: object
      description: |2
        This fault is thrown when an operation to configure a NAS volume fails
        because the network resource specified is invalid.
      properties:
        remoteHost:
          description: |2
            The host that runs the CIFS or NFS server.
          type: string
        remotePath:
          description: |2
            The remote share.
          type: string
      required:
        - remoteHost
        - remotePath
      allOf:
        - $ref: '#/components/schemas/NasConfigFault'

    ArrayOfInvalidNetworkResource:
      type: object
      description: |2
        A boxed array of *InvalidNetworkResource*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/InvalidNetworkResource'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    InvalidOperationOnSecondaryVm:
      type: object
      description: |2
        This fault is thrown when an attempt is made to invoke an operation on
        a secondary virtual machine that is only supported on the primary virtual
        machine of the fault tolerant group.
      properties:
        instanceUuid:
          description: |2
            Instance UUID of the secondary virtual machine.
          type: string
      required:
        - instanceUuid
      allOf:
        - $ref: '#/components/schemas/VmFaultToleranceIssue'

    ArrayOfInvalidOperationOnSecondaryVm:
      type: object
      description: |2
        A boxed array of *InvalidOperationOnSecondaryVm*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/InvalidOperationOnSecondaryVm'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    InvalidPowerState:
      type: object
      description: |2
        This exception is thrown if the
        power operation attempted could not be performed given
        the current power state of the virtual machine.
      properties:
        requestedState:
          description: |2
            Power state of the virtual machine required to
            allow the operation to succeed.
          $ref: '#/components/schemas/VirtualMachinePowerState_enum'
        existingState:
          description: |2
            Power state of the virtual machine that
            prevented the operation from succeeding.
          $ref: '#/components/schemas/VirtualMachinePowerState_enum'
      required:
        - existingState
      allOf:
        - $ref: '#/components/schemas/InvalidState'

    ArrayOfInvalidPowerState:
      type: object
      description: |2
        A boxed array of *InvalidPowerState*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/InvalidPowerState'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    InvalidPrivilege:
      type: object
      description: |2
        A InvalidPrivilege fault is thrown when the privilege
        does not exist.
      properties:
        privilege:
          description: |2
            The invalid privilege.
          type: string
      required:
        - privilege
      allOf:
        - $ref: '#/components/schemas/VimFault'

    ArrayOfInvalidPrivilege:
      type: object
      description: |2
        A boxed array of *InvalidPrivilege*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/InvalidPrivilege'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    InvalidProfileReferenceHost:
      type: object
      description: |2
        A InvalidProfileReferenceHost fault is thrown when a valid host is not
        associated with a profile in the Virtual Center inventory.
        
        This could
        be because there is no host assciated with the profile or because the
        associated host is incompatible with the profile.
      properties:
        reason:
          description: |2
            The reason for the invalid reference host if known.
          type: string
        host:
          description: |2
            The incompatible host if associated with the profile.
            
            Refers instance of *HostSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
        profile:
          description: |2
            The profile with the invalid or missing reference host.
            
            Refers instance of *Profile*.
          $ref: '#/components/schemas/ManagedObjectReference'
        profileName:
          description: |2
            The profile name: the replacement of the member above.
          type: string
      allOf:
        - $ref: '#/components/schemas/RuntimeFault'

    ArrayOfInvalidProfileReferenceHost:
      type: object
      description: |2
        A boxed array of *InvalidProfileReferenceHost*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/InvalidProfileReferenceHost'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    InvalidPropertyType:
      type: object
      description: |2
        The type specification in the property in invalid.
      allOf:
        - $ref: '#/components/schemas/VAppPropertyFault'

    ArrayOfInvalidPropertyType:
      type: object
      description: |2
        A boxed array of *InvalidPropertyType*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/InvalidPropertyType'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    InvalidPropertyValue:
      type: object
      description: |2
        The value of the property is not valid given the type of the property.
      allOf:
        - $ref: '#/components/schemas/VAppPropertyFault'

    ArrayOfInvalidPropertyValue:
      type: object
      description: |2
        A boxed array of *InvalidPropertyValue*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/InvalidPropertyValue'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    InvalidResourcePoolStructureFault:
      type: object
      description: |2
        This fault is thrown when an operation will cause the structure of a resource
        pool hiearchy to exceed its limit.
        
        The limits are typically imposed by the total
        number of nodes, maximum fan-out, and total depth of the hierarchy.
      allOf:
        - $ref: '#/components/schemas/InsufficientResourcesFault'

    ArrayOfInvalidResourcePoolStructureFault:
      type: object
      description: |2
        A boxed array of *InvalidResourcePoolStructureFault*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/InvalidResourcePoolStructureFault'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    InvalidScheduledTask:
      type: object
      description: |2
        This exception is thrown when an unauthorized
        user runs a scheduled task.
        
        ***Since:*** vSphere API Release 8.0.2.0
      allOf:
        - $ref: '#/components/schemas/RuntimeFault'

    ArrayOfInvalidScheduledTask:
      type: object
      description: |2
        A boxed array of *InvalidScheduledTask*. To be used in *Any* placeholders.
        
        ***Since:*** vSphere API Release 8.0.2.0
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/InvalidScheduledTask'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    InvalidSnapshotFormat:
      type: object
      description: |2
        Thrown when an invalid snapshot configuration is detected.
        
        For
        example, when a virtual machine's snapshot tree includes
        snapshots that are no longer present.
      allOf:
        - $ref: '#/components/schemas/InvalidFormat'

    ArrayOfInvalidSnapshotFormat:
      type: object
      description: |2
        A boxed array of *InvalidSnapshotFormat*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/InvalidSnapshotFormat'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    InvalidState:
      type: object
      description: |2
        An InvalidState fault is thrown if the
        operation failed due to the current state of the system.
      allOf:
        - $ref: '#/components/schemas/VimFault'

    ArrayOfInvalidState:
      type: object
      description: |2
        A boxed array of *InvalidState*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/InvalidState'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    InvalidVmConfig:
      type: object
      description: |2
        Thrown when virtual machine creation or configuration fails.
        
        This is
        a base type for all virtual machine configuration errors.
      properties:
        property:
          description: |2
            Path of the property in configSpec that has an invalid value.
          type: string
      allOf:
        - $ref: '#/components/schemas/VmConfigFault'

    ArrayOfInvalidVmConfig:
      type: object
      description: |2
        A boxed array of *InvalidVmConfig*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/InvalidVmConfig'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    InvalidVmState:
      type: object
      description: |2
        The VM has an invalid state.
      properties:
        vm:
          description: |2
            The VM that has an invalid state.
            
            Refers instance of *VirtualMachine*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - vm
      allOf:
        - $ref: '#/components/schemas/InvalidState'

    ArrayOfInvalidVmState:
      type: object
      description: |2
        A boxed array of *InvalidVmState*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/InvalidVmState'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    InventoryHasStandardAloneHosts:
      type: object
      description: |2
        A InventoryHasStandardAloneHosts fault is thrown if an assignment operation tries to downgrade a license that does have allow hosts licensed with StandardAlone license in the inventory.
      properties:
        hosts:
          type: array
          items:
            type: string
      required:
        - hosts
      allOf:
        - $ref: '#/components/schemas/NotEnoughLicenses'

    ArrayOfInventoryHasStandardAloneHosts:
      type: object
      description: |2
        A boxed array of *InventoryHasStandardAloneHosts*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/InventoryHasStandardAloneHosts'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    IpHostnameGeneratorError:
      type: object
      description: |2
        An error occurred while running the IP/hostname generator application
      allOf:
        - $ref: '#/components/schemas/CustomizationFault'

    ArrayOfIpHostnameGeneratorError:
      type: object
      description: |2
        A boxed array of *IpHostnameGeneratorError*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/IpHostnameGeneratorError'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    IscsiFault:
      type: object
      description: |2
        Base class for faults that can be thrown while invoking iSCSI management operations.
      allOf:
        - $ref: '#/components/schemas/VimFault'

    ArrayOfIscsiFault:
      type: object
      description: |2
        A boxed array of *IscsiFault*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/IscsiFault'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    IscsiFaultInvalidVnic:
      type: object
      description: |2
        This fault indicates an attempt is made to bind a Virtual NIC to an iSCSI adapter
        where the Virtual NIC has no association with the adapter.
        
        For ex: The uplink for
        the given Virtual NIC is not valid for the iSCSI HBA.
      properties:
        vnicDevice:
          type: string
      required:
        - vnicDevice
      allOf:
        - $ref: '#/components/schemas/IscsiFault'

    ArrayOfIscsiFaultInvalidVnic:
      type: object
      description: |2
        A boxed array of *IscsiFaultInvalidVnic*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/IscsiFaultInvalidVnic'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    IscsiFaultPnicInUse:
      type: object
      description: |2
        This fault indicates the given Physical NIC is being used by iSCSI HBA.
      properties:
        pnicDevice:
          type: string
      required:
        - pnicDevice
      allOf:
        - $ref: '#/components/schemas/IscsiFault'

    ArrayOfIscsiFaultPnicInUse:
      type: object
      description: |2
        A boxed array of *IscsiFaultPnicInUse*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/IscsiFaultPnicInUse'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    IscsiFaultVnicAlreadyBound:
      type: object
      description: |2
        This fault indicates that the given Virtual NIC is already bound to the iSCSI HBA.
      properties:
        vnicDevice:
          type: string
      required:
        - vnicDevice
      allOf:
        - $ref: '#/components/schemas/IscsiFault'

    ArrayOfIscsiFaultVnicAlreadyBound:
      type: object
      description: |2
        A boxed array of *IscsiFaultVnicAlreadyBound*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/IscsiFaultVnicAlreadyBound'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    IscsiFaultVnicHasActivePaths:
      type: object
      description: |2
        This fault indicates the given Virtual NIC has active storage paths associated with it.
      properties:
        vnicDevice:
          type: string
      required:
        - vnicDevice
      allOf:
        - $ref: '#/components/schemas/IscsiFault'

    ArrayOfIscsiFaultVnicHasActivePaths:
      type: object
      description: |2
        A boxed array of *IscsiFaultVnicHasActivePaths*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/IscsiFaultVnicHasActivePaths'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    IscsiFaultVnicHasMultipleUplinks:
      type: object
      description: |2
        This fault indicates that the Virtual NIC has multiple uplinks and not suitable for iSCSI
        multi-pathing and can not be bound to iSCSI HBA.
      properties:
        vnicDevice:
          type: string
      required:
        - vnicDevice
      allOf:
        - $ref: '#/components/schemas/IscsiFault'

    ArrayOfIscsiFaultVnicHasMultipleUplinks:
      type: object
      description: |2
        A boxed array of *IscsiFaultVnicHasMultipleUplinks*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/IscsiFaultVnicHasMultipleUplinks'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    IscsiFaultVnicHasNoUplinks:
      type: object
      description: |2
        This fault indicates the given Virtual NIC has no uplinks and not suitable for iSCSI
        multi-pathing configuration.
      properties:
        vnicDevice:
          type: string
      required:
        - vnicDevice
      allOf:
        - $ref: '#/components/schemas/IscsiFault'

    ArrayOfIscsiFaultVnicHasNoUplinks:
      type: object
      description: |2
        A boxed array of *IscsiFaultVnicHasNoUplinks*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/IscsiFaultVnicHasNoUplinks'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    IscsiFaultVnicHasWrongUplink:
      type: object
      description: |2
        This fault indicates the given Virtual NIC has the wrong Physical uplink
        for iSCSI multi-pathing configuration.
        
        The Physical uplink is not associated
        with the iSCSI Host Bus Adapter.
      properties:
        vnicDevice:
          description: |2
            Contains the VMkernel virtual NIC device name.
          type: string
      required:
        - vnicDevice
      allOf:
        - $ref: '#/components/schemas/IscsiFault'

    ArrayOfIscsiFaultVnicHasWrongUplink:
      type: object
      description: |2
        A boxed array of *IscsiFaultVnicHasWrongUplink*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/IscsiFaultVnicHasWrongUplink'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    IscsiFaultVnicInUse:
      type: object
      description: |2
        This fault indicates the given Virtual NIC is being used by iSCSI and the requested operation can't be completed.
      properties:
        vnicDevice:
          type: string
      required:
        - vnicDevice
      allOf:
        - $ref: '#/components/schemas/IscsiFault'

    ArrayOfIscsiFaultVnicInUse:
      type: object
      description: |2
        A boxed array of *IscsiFaultVnicInUse*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/IscsiFaultVnicInUse'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    IscsiFaultVnicIsLastPath:
      type: object
      description: |2
        This fault indicates that the given Virtual NIC is associated with the only path to the storage.
        
        Any attempt to unbind this
        from iSCSI HBA would result in storage being inaccessible.
      properties:
        vnicDevice:
          type: string
      required:
        - vnicDevice
      allOf:
        - $ref: '#/components/schemas/IscsiFault'

    ArrayOfIscsiFaultVnicIsLastPath:
      type: object
      description: |2
        A boxed array of *IscsiFaultVnicIsLastPath*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/IscsiFaultVnicIsLastPath'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    IscsiFaultVnicNotBound:
      type: object
      description: |2
        This fault indicates an attempt was made to remove a Virtual NIC from an iSCSI HBA while
        Virtual NIC is not associated with the adapter.
      properties:
        vnicDevice:
          type: string
      required:
        - vnicDevice
      allOf:
        - $ref: '#/components/schemas/IscsiFault'

    ArrayOfIscsiFaultVnicNotBound:
      type: object
      description: |2
        A boxed array of *IscsiFaultVnicNotBound*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/IscsiFaultVnicNotBound'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    IscsiFaultVnicNotFound:
      type: object
      description: |2
        This fault indicates an attempt was made to add a non-existent Virtual NIC adapter.
      properties:
        vnicDevice:
          type: string
      required:
        - vnicDevice
      allOf:
        - $ref: '#/components/schemas/IscsiFault'

    ArrayOfIscsiFaultVnicNotFound:
      type: object
      description: |2
        A boxed array of *IscsiFaultVnicNotFound*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/IscsiFaultVnicNotFound'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    KeyNotFound:
      type: object
      description: |2
        An KeyNotFound fault is returned when the key does not exist among
        key value pairs.
      properties:
        key:
          description: |2
            The non existing key.
          type: string
      required:
        - key
      allOf:
        - $ref: '#/components/schemas/VimFault'

    ArrayOfKeyNotFound:
      type: object
      description: |2
        A boxed array of *KeyNotFound*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/KeyNotFound'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    LargeRDMConversionNotSupported:
      type: object
      description: |2
        The virtual machine is using a 2TB+ RDM device and operation is
        unable to convert the disk to a different type.
      properties:
        device:
          description: |2
            The name of the disk device using the RDM.
          type: string
      required:
        - device
      allOf:
        - $ref: '#/components/schemas/MigrationFault'

    ArrayOfLargeRDMConversionNotSupported:
      type: object
      description: |2
        A boxed array of *LargeRDMConversionNotSupported*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/LargeRDMConversionNotSupported'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    LargeRDMNotSupportedOnDatastore:
      type: object
      description: |2
        The virtual machine is configured with a 2TB+ Raw Disk Mapping.
        
        This is not
        supported on the datastore.
      properties:
        device:
          description: |2
            The label of the 2TB+ RDM device that would have its backing placed on
            the datastore.
            
            This is not guaranteed to be the only such device.
          type: string
        datastore:
          description: |2
            The datastore.
            
            Refers instance of *Datastore*.
          $ref: '#/components/schemas/ManagedObjectReference'
        datastoreName:
          description: |2
            The name of the datastore.
          type: string
      required:
        - device
        - datastore
        - datastoreName
      allOf:
        - $ref: '#/components/schemas/VmConfigFault'

    ArrayOfLargeRDMNotSupportedOnDatastore:
      type: object
      description: |2
        A boxed array of *LargeRDMNotSupportedOnDatastore*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/LargeRDMNotSupportedOnDatastore'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    LegacyNetworkInterfaceInUse:
      type: object
      description: |2
        A virtual machine's network connectivity cannot be determined
        because it uses a legacy network interface.
        
        If returned as part of migration checks,
        this is an error if the virtual machine is currently connected to the legacy
        interface, and a warning otherwise.
      allOf:
        - $ref: '#/components/schemas/CannotAccessNetwork'

    ArrayOfLegacyNetworkInterfaceInUse:
      type: object
      description: |2
        A boxed array of *LegacyNetworkInterfaceInUse*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/LegacyNetworkInterfaceInUse'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    LicenseAssignmentFailed:
      type: object
      description: |2
        A LicenseAssignmentFailed fault is thrown when VirtualCenter
        fails to assign a license to an entity.
      properties:
        reason:
          description: |2
            The reason why the assignment failed, if known.
          type: string
      allOf:
        - $ref: '#/components/schemas/RuntimeFault'

    ArrayOfLicenseAssignmentFailed:
      type: object
      description: |2
        A boxed array of *LicenseAssignmentFailed*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/LicenseAssignmentFailed'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    LicenseDowngradeDisallowed:
      type: object
      description: |2
        A LicenseDowngradeDisallowed fault is thrown if an assignment operation tries to downgrade a license that does have certain licensed features which are in use.
      properties:
        edition:
          type: string
        entityId:
          type: string
        features:
          description: |2
            List of conflicting features that prevent
            downgrade
          type: array
          items:
            $ref: '#/components/schemas/KeyAnyValue'
      required:
        - edition
        - entityId
        - features
      allOf:
        - $ref: '#/components/schemas/NotEnoughLicenses'

    ArrayOfLicenseDowngradeDisallowed:
      type: object
      description: |2
        A boxed array of *LicenseDowngradeDisallowed*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/LicenseDowngradeDisallowed'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    LicenseEntityNotFound:
      type: object
      description: |2
        An LicenseEntityNotFound fault is thrown when an attempt is
        do any operation on an entity/licensed asset that does not exist.
        
        Example, remove an entity that does not exist.
      properties:
        entityId:
          type: string
      required:
        - entityId
      allOf:
        - $ref: '#/components/schemas/VimFault'

    ArrayOfLicenseEntityNotFound:
      type: object
      description: |2
        A boxed array of *LicenseEntityNotFound*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/LicenseEntityNotFound'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    LicenseExpired:
      type: object
      description: |2
        A LicenseExpired fault is thrown if it an operation is unsuccessful because the license used for the operation has expired.
      properties:
        licenseKey:
          description: |2
            License key that has expired
          type: string
      required:
        - licenseKey
      allOf:
        - $ref: '#/components/schemas/NotEnoughLicenses'

    ArrayOfLicenseExpired:
      type: object
      description: |2
        A boxed array of *LicenseExpired*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/LicenseExpired'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    LicenseKeyEntityMismatch:
      type: object
      description: |2
        A LicenseKeyEntityMismatch fault is thrown if an assignment operation tries to assign a license that does not apply to an entity.
        
        For example assigning a host license to VirtualCenter.
      allOf:
        - $ref: '#/components/schemas/NotEnoughLicenses'

    ArrayOfLicenseKeyEntityMismatch:
      type: object
      description: |2
        A boxed array of *LicenseKeyEntityMismatch*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/LicenseKeyEntityMismatch'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    LicenseRestricted:
      type: object
      description: |2
        This fault is thrown if the required licenses were unable to be checked
        out due to a restriction in the option file of the license server.
      allOf:
        - $ref: '#/components/schemas/NotEnoughLicenses'

    ArrayOfLicenseRestricted:
      type: object
      description: |2
        A boxed array of *LicenseRestricted*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/LicenseRestricted'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    LicenseServerUnavailable:
      type: object
      description: |2
        This fault is thrown when the License Server
        is unavailable during an attempt to change license state.
      properties:
        licenseServer:
          description: |2
            The name of the unavailable license server.
          type: string
      required:
        - licenseServer
      allOf:
        - $ref: '#/components/schemas/VimFault'

    ArrayOfLicenseServerUnavailable:
      type: object
      description: |2
        A boxed array of *LicenseServerUnavailable*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/LicenseServerUnavailable'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    LicenseSourceUnavailable:
      type: object
      description: |2
        A LicenseSourceUnavailable is thrown if it is unable to check out a license because
        the license source is unavailable.
      properties:
        licenseSource:
          description: |2
            License source
          $ref: '#/components/schemas/LicenseSource'
      required:
        - licenseSource
      allOf:
        - $ref: '#/components/schemas/NotEnoughLicenses'

    ArrayOfLicenseSourceUnavailable:
      type: object
      description: |2
        A boxed array of *LicenseSourceUnavailable*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/LicenseSourceUnavailable'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    LimitExceeded:
      type: object
      description: |2
        This exception is thrown if one of the arguments passed to the function exceeds
        a limit.
      properties:
        property:
          description: |2
            The name of the property that exceeds the limit.
          type: string
        limit:
          description: |2
            The limit value.
          type: integer
          format: int32
      allOf:
        - $ref: '#/components/schemas/VimFault'

    ArrayOfLimitExceeded:
      type: object
      description: |2
        A boxed array of *LimitExceeded*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/LimitExceeded'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    LinuxVolumeNotClean:
      type: object
      description: |2
        Customization operation is performed on a linux source vm that
        was not shut down properly.
        
        If the filesystem has significant
        fsck errors on it, customization process cannot make changes
        to it.
      allOf:
        - $ref: '#/components/schemas/CustomizationFault'

    ArrayOfLinuxVolumeNotClean:
      type: object
      description: |2
        A boxed array of *LinuxVolumeNotClean*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/LinuxVolumeNotClean'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    LogBundlingFailed:
      type: object
      description: |2
        A LogBundlingFailed exception is thrown when generation of a diagnostic
        data bundle fails.
      allOf:
        - $ref: '#/components/schemas/VimFault'

    ArrayOfLogBundlingFailed:
      type: object
      description: |2
        A boxed array of *LogBundlingFailed*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/LogBundlingFailed'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    MaintenanceModeFileMove:
      type: object
      description: |2
        Migration of the virtual machine to the target host will need a move of
        virtual machine files, like configuration file or virtual disks, which is
        not permitted if the source host is in maintenance mode.
      allOf:
        - $ref: '#/components/schemas/MigrationFault'

    ArrayOfMaintenanceModeFileMove:
      type: object
      description: |2
        A boxed array of *MaintenanceModeFileMove*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/MaintenanceModeFileMove'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    MemoryFileFormatNotSupportedByDatastore:
      type: object
      description: |2
        Virtual memory file format is not supported on the datastore.
      properties:
        datastoreName:
          description: |2
            The name of the Datastore.
          type: string
        type:
          description: |2
            Datastore file system volume type.
            
            See *DatastoreSummary.type*
          type: string
      required:
        - datastoreName
        - type
      allOf:
        - $ref: '#/components/schemas/UnsupportedDatastore'

    ArrayOfMemoryFileFormatNotSupportedByDatastore:
      type: object
      description: |2
        A boxed array of *MemoryFileFormatNotSupportedByDatastore*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/MemoryFileFormatNotSupportedByDatastore'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    MemoryHotPlugNotSupported:
      type: object
      description: |2
        Thrown when memory cannot be hot-added or hot-removed from the virtual machine.
      allOf:
        - $ref: '#/components/schemas/VmConfigFault'

    ArrayOfMemoryHotPlugNotSupported:
      type: object
      description: |2
        A boxed array of *MemoryHotPlugNotSupported*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/MemoryHotPlugNotSupported'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    MemorySizeNotRecommended:
      type: object
      description: |2
        The memory amount of the virtual machine is not within the recommended
        memory bounds for the virtual machine's guest OS.
      properties:
        memorySizeMB:
          description: |2
            The configured memory size of the virtual machine.
          type: integer
          format: int32
        minMemorySizeMB:
          description: |2
            The minimum recommended memory size.
          type: integer
          format: int32
        maxMemorySizeMB:
          description: |2
            The maximum recommended memory size.
          type: integer
          format: int32
      required:
        - memorySizeMB
        - minMemorySizeMB
        - maxMemorySizeMB
      allOf:
        - $ref: '#/components/schemas/VirtualHardwareCompatibilityIssue'

    ArrayOfMemorySizeNotRecommended:
      type: object
      description: |2
        A boxed array of *MemorySizeNotRecommended*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/MemorySizeNotRecommended'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    MemorySizeNotSupported:
      type: object
      description: |2
        The memory amount of the virtual machine is not within the acceptable
        guest memory bounds supported by the virtual machine's host.
      properties:
        memorySizeMB:
          description: |2
            The configured memory size of the virtual machine.
          type: integer
          format: int32
        minMemorySizeMB:
          description: |2
            The minimum acceptable memory size.
          type: integer
          format: int32
        maxMemorySizeMB:
          description: |2
            The maximum acceptable memory size.
          type: integer
          format: int32
      required:
        - memorySizeMB
        - minMemorySizeMB
        - maxMemorySizeMB
      allOf:
        - $ref: '#/components/schemas/VirtualHardwareCompatibilityIssue'

    ArrayOfMemorySizeNotSupported:
      type: object
      description: |2
        A boxed array of *MemorySizeNotSupported*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/MemorySizeNotSupported'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    MemorySizeNotSupportedByDatastore:
      type: object
      description: |2
        The memory amount of the virtual machine is not within the acceptable
        guest memory bounds supported by the virtual machine's datastore.
      properties:
        datastore:
          description: |2
            The datastore which does not support the requested memory size.
            
            Refers instance of *Datastore*.
          $ref: '#/components/schemas/ManagedObjectReference'
        memorySizeMB:
          description: |2
            The configured memory size of the virtual machine.
          type: integer
          format: int32
        maxMemorySizeMB:
          description: |2
            The maximum acceptable memory size supported by the datastore.
          type: integer
          format: int32
      required:
        - datastore
        - memorySizeMB
        - maxMemorySizeMB
      allOf:
        - $ref: '#/components/schemas/VirtualHardwareCompatibilityIssue'

    ArrayOfMemorySizeNotSupportedByDatastore:
      type: object
      description: |2
        A boxed array of *MemorySizeNotSupportedByDatastore*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/MemorySizeNotSupportedByDatastore'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    MemorySnapshotOnIndependentDisk:
      type: object
      description: |2
        Thrown if a request to take a memory snapshot is issued
        on a virtual machine with an independent disk.
      allOf:
        - $ref: '#/components/schemas/SnapshotFault'

    ArrayOfMemorySnapshotOnIndependentDisk:
      type: object
      description: |2
        A boxed array of *MemorySnapshotOnIndependentDisk*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/MemorySnapshotOnIndependentDisk'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    MethodAlreadyDisabledFault:
      type: object
      description: |2
        A MethodAlreadyDisabledFault fault is thrown when an attempt
        is made to disable a method that is already disabled.
      properties:
        sourceId:
          type: string
      required:
        - sourceId
      allOf:
        - $ref: '#/components/schemas/RuntimeFault'

    ArrayOfMethodAlreadyDisabledFault:
      type: object
      description: |2
        A boxed array of *MethodAlreadyDisabledFault*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/MethodAlreadyDisabledFault'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    MethodDisabled:
      type: object
      description: |2
        A MethodDisabled fault is thrown if a disabled method
        is invoked by the client.
        
        The method denote an invalid state
        operation or may have been explicitly disabled.
      properties:
        source:
          type: string
      allOf:
        - $ref: '#/components/schemas/RuntimeFault'

    ArrayOfMethodDisabled:
      type: object
      description: |2
        A boxed array of *MethodDisabled*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/MethodDisabled'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    MigrationDisabled:
      type: object
      description: |2
        An MigrationDisabled fault is thrown if the
        migration failed due to disabled migration
      allOf:
        - $ref: '#/components/schemas/MigrationFault'

    ArrayOfMigrationDisabled:
      type: object
      description: |2
        A boxed array of *MigrationDisabled*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/MigrationDisabled'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    MigrationFault:
      type: object
      description: |2
        Base object type for issues that can occur when reassigning the execution
        host of a virtual machine using migrate or relocate.
        
        These issues are typically
        used as argument in the MigrationEvent. When a MigrationFault is used as a value
        in a MigrationEvent, the type of MigrationEvent determines if the issue is a
        warning or an error (for example, MigrationHostWarningEvent or
        MigrationHostErrorEvent). When thrown as an exception, the fault is an error.
        
        Issues are categorized as errors or warnings according to the following
        criteria:
        
        If the virtual machine is powered on:
        1. Error for fatal problems with the VMotion interfaces or licensing.
        2. Error if VMotion would fail.
        3. Error if VMotion would in any way interrupt the continuous and consistent
           operation of the virtual machine.
        4. Warning for potential performance or connectivity problems between the
           source and destination VMotion interfaces.
        5. Warning if the virtual machine's currently disconnected devices may not
           be connectable after VMotion.
           
        If the virtual machine is powered off or suspended:
        1. Error if the destination host cannot access all the files that comprise
           the virtual machine (including virtual disks).
        2. Error if aspects of the virtual machine are not supported by the
           destination host's hardware or software.
        3. Warning if problems would occur when powering on or resuming the
           virtual machine, if the usage/configuration of the destination
           host were to remain in its current state.
      allOf:
        - $ref: '#/components/schemas/VimFault'

    ArrayOfMigrationFault:
      type: object
      description: |2
        A boxed array of *MigrationFault*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/MigrationFault'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    MigrationFeatureNotSupported:
      type: object
      description: |2
        A migration operation that requires feature support on source and
        destination hosts is lacking support on the host.
      properties:
        atSourceHost:
          description: |2
            Whether this error is for the source host.
          type: boolean
        failedHostName:
          description: |2
            The name of the host.
          type: string
        failedHost:
          description: |2
            The host.
            
            Refers instance of *HostSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - atSourceHost
        - failedHostName
        - failedHost
      allOf:
        - $ref: '#/components/schemas/MigrationFault'

    ArrayOfMigrationFeatureNotSupported:
      type: object
      description: |2
        A boxed array of *MigrationFeatureNotSupported*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/MigrationFeatureNotSupported'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    MigrationNotReady:
      type: object
      description: |2
        The VM to be migrated is not ready for the migration operation.
        
        This might
        because the VM is still in the progress of powering on or resuming from a
        suspended state.
      properties:
        reason:
          type: string
      required:
        - reason
      allOf:
        - $ref: '#/components/schemas/MigrationFault'

    ArrayOfMigrationNotReady:
      type: object
      description: |2
        A boxed array of *MigrationNotReady*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/MigrationNotReady'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    MismatchedBundle:
      type: object
      description: |2
        A MismatchedBundle fault is thrown when the bundle supplied for
        *HostFirmwareSystem.RestoreFirmwareConfiguration* does not match the
        specifications of the host
      properties:
        bundleUuid:
          description: |2
            The uuid of the host that the bundle was generated for
          type: string
        hostUuid:
          description: |2
            The uuid of the host
          type: string
        bundleBuildNumber:
          description: |2
            The build number of the host that the bundle was generated for
          type: integer
          format: int32
        hostBuildNumber:
          description: |2
            The build number of the host
          type: integer
          format: int32
      required:
        - bundleUuid
        - hostUuid
        - bundleBuildNumber
        - hostBuildNumber
      allOf:
        - $ref: '#/components/schemas/VimFault'

    ArrayOfMismatchedBundle:
      type: object
      description: |2
        A boxed array of *MismatchedBundle*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/MismatchedBundle'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    MismatchedNetworkPolicies:
      type: object
      deprecated: true
      description: |2
        Deprecated as of vSphere API 5.5, use *CannotUseNetwork* with
        a correct reason for the fault.
        
        The virtual machine network uses different offload or security
        policies on the destination host than on the source host.
        
        This is an error
        if the virtual machine is currently connected to the network, and a warning
        otherwise.
      properties:
        device:
          description: |2
            The label of the interface device.
          type: string
        backing:
          description: |2
            The name of the network.
          type: string
        connected:
          description: |2
            The connected/disconnected state of the device.
          type: boolean
      required:
        - device
        - backing
        - connected
      allOf:
        - $ref: '#/components/schemas/MigrationFault'

    ArrayOfMismatchedNetworkPolicies:
      type: object
      description: |2
        A boxed array of *MismatchedNetworkPolicies*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/MismatchedNetworkPolicies'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    MismatchedVMotionNetworkNames:
      type: object
      description: |2
        The source and destination hosts do not use the same network name for
        their VMotion interfaces.
        
        This is a warning for migrating powered-on virtual
        machines.
      properties:
        sourceNetwork:
          description: |2
            The name of the network used by the source host VMotion interface.
          type: string
        destNetwork:
          description: |2
            The name of the network used by the destination host VMotion interface.
          type: string
      required:
        - sourceNetwork
        - destNetwork
      allOf:
        - $ref: '#/components/schemas/MigrationFault'

    ArrayOfMismatchedVMotionNetworkNames:
      type: object
      description: |2
        A boxed array of *MismatchedVMotionNetworkNames*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/MismatchedVMotionNetworkNames'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    MissingBmcSupport:
      type: object
      description: |2
        A MissingBmcSuppport fault is thrown when a host's BMC doesn't support IPMI.
        
        BMC (Board Management Controller) is a piece of hardware required for IPMI.
      allOf:
        - $ref: '#/components/schemas/VimFault'

    ArrayOfMissingBmcSupport:
      type: object
      description: |2
        A boxed array of *MissingBmcSupport*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/MissingBmcSupport'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    MissingController:
      type: object
      description: |2
        A controller key has not been specified for a new device
        that requires a controller, such as a disk or CD-ROM device.
      allOf:
        - $ref: '#/components/schemas/InvalidDeviceSpec'

    ArrayOfMissingController:
      type: object
      description: |2
        A boxed array of *MissingController*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/MissingController'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    MissingIpPool:
      type: object
      description: |2
        No IP pool is associated with a network.
      allOf:
        - $ref: '#/components/schemas/VAppPropertyFault'

    ArrayOfMissingIpPool:
      type: object
      description: |2
        A boxed array of *MissingIpPool*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/MissingIpPool'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    MissingLinuxCustResources:
      type: object
      description: |2
        Usable open source components required for Linux customization were not found
        on the server.
      allOf:
        - $ref: '#/components/schemas/CustomizationFault'

    ArrayOfMissingLinuxCustResources:
      type: object
      description: |2
        A boxed array of *MissingLinuxCustResources*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/MissingLinuxCustResources'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    MissingNetworkIpConfig:
      type: object
      description: |2
        No IP configuration exists for network.
      allOf:
        - $ref: '#/components/schemas/VAppPropertyFault'

    ArrayOfMissingNetworkIpConfig:
      type: object
      description: |2
        A boxed array of *MissingNetworkIpConfig*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/MissingNetworkIpConfig'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    MissingPowerOffConfiguration:
      type: object
      description: |2
        Attempting to power-off a vApp for which no virtual machines has been
        configured to power off.
      allOf:
        - $ref: '#/components/schemas/VAppConfigFault'

    ArrayOfMissingPowerOffConfiguration:
      type: object
      description: |2
        A boxed array of *MissingPowerOffConfiguration*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/MissingPowerOffConfiguration'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    MissingPowerOnConfiguration:
      type: object
      description: |2
        Attempting to power-on a vApp service for which no virtual machines has been
        configured to power on.
      allOf:
        - $ref: '#/components/schemas/VAppConfigFault'

    ArrayOfMissingPowerOnConfiguration:
      type: object
      description: |2
        A boxed array of *MissingPowerOnConfiguration*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/MissingPowerOnConfiguration'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    MissingWindowsCustResources:
      type: object
      description: |2
        A usable sysprep file was not found on the server.
      allOf:
        - $ref: '#/components/schemas/CustomizationFault'

    ArrayOfMissingWindowsCustResources:
      type: object
      description: |2
        A boxed array of *MissingWindowsCustResources*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/MissingWindowsCustResources'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    MksConnectionLimitReached:
      type: object
      description: |2
        Thrown when a mouse-keyboard-screen connection ticket to a virtual machine
        cannot be granted because the configured connection limit has been reached.
      properties:
        connectionLimit:
          description: |2
            MKS connection limit for the virtual machine.
          type: integer
          format: int32
      required:
        - connectionLimit
      allOf:
        - $ref: '#/components/schemas/InvalidState'

    ArrayOfMksConnectionLimitReached:
      type: object
      description: |2
        A boxed array of *MksConnectionLimitReached*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/MksConnectionLimitReached'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    MountError:
      type: object
      description: |2
        Customization failed because the customization process was unable to mount a remote
        virtual disk file.
      properties:
        vm:
          description: |2
            The virtual machine to be customized.
            
            Refers instance of *VirtualMachine*.
          $ref: '#/components/schemas/ManagedObjectReference'
        diskIndex:
          description: |2
            Index into the virtual machine's device list,
            representing the key value that identifies the virtual device
            that is the presumed boot disk.
          type: integer
          format: int32
      required:
        - vm
        - diskIndex
      allOf:
        - $ref: '#/components/schemas/CustomizationFault'

    ArrayOfMountError:
      type: object
      description: |2
        A boxed array of *MountError*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/MountError'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    MultiWriterNotSupported:
      type: object
      description: |2
        The multi-writer sharing of the specified virtual disk is not supported.
        
        Typically, this fault is returned as part of a parent fault like
        *VmConfigIncompatibleForFaultTolerance*, indicating that the
        virtual disk's multi-writer sharing needs to be changed before fault
        tolerance can be enabled on the associated virtual machine.
      allOf:
        - $ref: '#/components/schemas/DeviceNotSupported'

    ArrayOfMultiWriterNotSupported:
      type: object
      description: |2
        A boxed array of *MultiWriterNotSupported*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/MultiWriterNotSupported'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    MultipleCertificatesVerifyFault:
      type: object
      description: |2
        MultipleCertificatesVerifyFault is thrown by the host connect method
        *HostSystem.ReconnectHost_Task* as well as the methods to add a host to
        VirtualCenter (*Folder.AddStandaloneHost_Task* and
        *ClusterComputeResource.AddHost_Task*) if VirtualCenter detects that the
        host has different SSL certificates for different management ports.
        
        This
        can occur, for example, if an ESX 2.x host has different SSL certificates
        for the authd service (port 902) and the Management UI port (port 443).
        VirtualCenter is not able to manage such hosts. To fix this issue, the user
        should modify the host to ensure there is only one certificate for
        all services. Alternatively, different certificates are allowed as long as each
        certificate is verifiable (trusted) by the VirtualCenter server.
      properties:
        thumbprintData:
          description: |2
            The thumbprints (and associated ports) used by the services on the host.
          type: array
          items:
            $ref: '#/components/schemas/MultipleCertificatesVerifyFaultThumbprintData'
      required:
        - thumbprintData
      allOf:
        - $ref: '#/components/schemas/HostConnectFault'

    ArrayOfMultipleCertificatesVerifyFault:
      type: object
      description: |2
        A boxed array of *MultipleCertificatesVerifyFault*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/MultipleCertificatesVerifyFault'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    MultipleCertificatesVerifyFaultThumbprintData:
      type: object
      properties:
        port:
          description: |2
            The port used by the service.
          type: integer
          format: int32
        thumbprint:
          description: |2
            The SSL thumbprint of the host's certificate used by the service.
          type: string
      required:
        - port
        - thumbprint
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfMultipleCertificatesVerifyFaultThumbprintData:
      type: object
      description: |2
        A boxed array of *MultipleCertificatesVerifyFaultThumbprintData*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/MultipleCertificatesVerifyFaultThumbprintData'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    MultipleSnapshotsNotSupported:
      type: object
      description: |2
        Fault thrown when an attempt is made to create a second snapshot on a VM that only
        supports a single snapshot at a time.
      allOf:
        - $ref: '#/components/schemas/SnapshotFault'

    ArrayOfMultipleSnapshotsNotSupported:
      type: object
      description: |2
        A boxed array of *MultipleSnapshotsNotSupported*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/MultipleSnapshotsNotSupported'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    NamespaceFull:
      type: object
      description: |2
        A NamespaceFull fault is thrown when an operation
        on namespace requires more space to complete.
      properties:
        name:
          description: |2
            The namespace in question.
          type: string
        currentMaxSize:
          description: |2
            Current maximum size.
          type: integer
          format: int64
        requiredSize:
          description: |2
            Size necessary to complete operation.
            
            If not present,
            system was not able to determine how much space would
            be necessary to complete operation.
          type: integer
          format: int64
      required:
        - name
        - currentMaxSize
      allOf:
        - $ref: '#/components/schemas/VimFault'

    ArrayOfNamespaceFull:
      type: object
      description: |2
        A boxed array of *NamespaceFull*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/NamespaceFull'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    NamespaceLimitReached:
      type: object
      description: |2
        A NamespaceLimitReached fault is thrown when the maximum allowed
        namespaces for a virtual machine will be exceeded.
      properties:
        limit:
          description: |2
            Allowed maximum number of namespaces per virtual machine.
          type: integer
          format: int32
      allOf:
        - $ref: '#/components/schemas/VimFault'

    ArrayOfNamespaceLimitReached:
      type: object
      description: |2
        A boxed array of *NamespaceLimitReached*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/NamespaceLimitReached'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    NamespaceWriteProtected:
      type: object
      description: |2
        A NamespaceWriteProtected fault is thrown when an operation
        on namespace fails because namespace is write-protected.
      properties:
        name:
          description: |2
            The namespace in question.
          type: string
      required:
        - name
      allOf:
        - $ref: '#/components/schemas/VimFault'

    ArrayOfNamespaceWriteProtected:
      type: object
      description: |2
        A boxed array of *NamespaceWriteProtected*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/NamespaceWriteProtected'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    NasConfigFault:
      type: object
      description: |2
        Base class for all network-attached storage configuration faults.
      properties:
        name:
          description: |2
            Name of the Nas datastore being configured.
          type: string
      required:
        - name
      allOf:
        - $ref: '#/components/schemas/HostConfigFault'

    ArrayOfNasConfigFault:
      type: object
      description: |2
        A boxed array of *NasConfigFault*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/NasConfigFault'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    NasConnectionLimitReached:
      type: object
      description: |2
        This fault is thrown when an operation to configure a CIFS volume fails
        because the request exceeds the maximum allowed connections on this host
        for the specified remote path.
      properties:
        remoteHost:
          description: |2
            The host that runs the NFS server.
          type: string
        remotePath:
          description: |2
            The remote share.
          type: string
      required:
        - remoteHost
        - remotePath
      allOf:
        - $ref: '#/components/schemas/NasConfigFault'

    ArrayOfNasConnectionLimitReached:
      type: object
      description: |2
        A boxed array of *NasConnectionLimitReached*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/NasConnectionLimitReached'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    NasSessionCredentialConflict:
      type: object
      description: |2
        This fault is thrown when an operation to configure a CIFS volume fails
        when attempting to log on more than once with the same user name.
      properties:
        remoteHost:
          description: |2
            The host that runs the NFS server.
          type: string
        remotePath:
          description: |2
            The remote share.
          type: string
        userName:
          type: string
      required:
        - remoteHost
        - remotePath
        - userName
      allOf:
        - $ref: '#/components/schemas/NasConfigFault'

    ArrayOfNasSessionCredentialConflict:
      type: object
      description: |2
        A boxed array of *NasSessionCredentialConflict*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/NasSessionCredentialConflict'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    NasVolumeNotMounted:
      type: object
      description: |2
        This fault is thrown when an operation to configure a NAS datastore
        fails because the specified NFS volume is not mounted.
      properties:
        remoteHost:
          description: |2
            The host that runs the NFS server.
          type: string
        remotePath:
          description: |2
            The remote share.
          type: string
      required:
        - remoteHost
        - remotePath
      allOf:
        - $ref: '#/components/schemas/NasConfigFault'

    ArrayOfNasVolumeNotMounted:
      type: object
      description: |2
        A boxed array of *NasVolumeNotMounted*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/NasVolumeNotMounted'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    NetworkCopyFault:
      type: object
      description: |2
        A network copy of the file failed.
      allOf:
        - $ref: '#/components/schemas/FileFault'

    ArrayOfNetworkCopyFault:
      type: object
      description: |2
        A boxed array of *NetworkCopyFault*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/NetworkCopyFault'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    NetworkDisruptedAndConfigRolledBack:
      type: object
      description: |2
        Thrown if network configuration change disconnected the host from vCenter server
        and has been rolled back.
      properties:
        host:
          description: |2
            The name of host on which the network configuration was rolled back.
          type: string
      required:
        - host
      allOf:
        - $ref: '#/components/schemas/VimFault'

    ArrayOfNetworkDisruptedAndConfigRolledBack:
      type: object
      description: |2
        A boxed array of *NetworkDisruptedAndConfigRolledBack*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/NetworkDisruptedAndConfigRolledBack'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    NetworkInaccessible:
      type: object
      description: |2
        This fault is thrown when an operation to configure a NAS volume fails
        because network access is unavailable.
      allOf:
        - $ref: '#/components/schemas/NasConfigFault'

    ArrayOfNetworkInaccessible:
      type: object
      description: |2
        A boxed array of *NetworkInaccessible*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/NetworkInaccessible'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    NetworksMayNotBeTheSame:
      type: object
      description: |2
        Used as a warning if a virtual machine provisioning operation is done
        across datacenters.
        
        This warns that the network used by the virtual
        machine before and after the operation may not be the same even though
        the two networks have the same name. This is because network names
        are only unique within a datacenter.
      properties:
        name:
          description: |2
            The name of the network.
          type: string
      allOf:
        - $ref: '#/components/schemas/MigrationFault'

    ArrayOfNetworksMayNotBeTheSame:
      type: object
      description: |2
        A boxed array of *NetworksMayNotBeTheSame*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/NetworksMayNotBeTheSame'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    NicSettingMismatch:
      type: object
      description: |2
        The number of network adapter settings in the customization specification
        does not match the number of network adapters present in the virtual machine.
      properties:
        numberOfNicsInSpec:
          description: |2
            The number of network adapter settings specified in the customization
            specification.
          type: integer
          format: int32
        numberOfNicsInVM:
          description: |2
            The number of network adapters present in the virtual machine.
          type: integer
          format: int32
      required:
        - numberOfNicsInSpec
        - numberOfNicsInVM
      allOf:
        - $ref: '#/components/schemas/CustomizationFault'

    ArrayOfNicSettingMismatch:
      type: object
      description: |2
        A boxed array of *NicSettingMismatch*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/NicSettingMismatch'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    NoActiveHostInCluster:
      type: object
      description: |2
        A NoActiveHostInCluster fault is thrown when there is no host in a valid
        state in the given compute resource to perform a specified operation.
        
        This
        can happen, for example, if all the hosts are disconnected or in maintenance
        mode.
      properties:
        computeResource:
          description: |2
            The compute resource that does not have any active hosts.
            
            Refers instance of *ComputeResource*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - computeResource
      allOf:
        - $ref: '#/components/schemas/InvalidState'

    ArrayOfNoActiveHostInCluster:
      type: object
      description: |2
        A boxed array of *NoActiveHostInCluster*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/NoActiveHostInCluster'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    NoAvailableIp:
      type: object
      description: |2
        There are no more IP addresses available on the given network.
      properties:
        network:
          description: |2
            A reference to the network
            
            Refers instance of *Network*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - network
      allOf:
        - $ref: '#/components/schemas/VAppPropertyFault'

    ArrayOfNoAvailableIp:
      type: object
      description: |2
        A boxed array of *NoAvailableIp*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/NoAvailableIp'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    NoClientCertificate:
      type: object
      description: |2
        This exception is thrown when a client has connected without supplying a
        certificate but the associated call expects that the client has done so.
      allOf:
        - $ref: '#/components/schemas/VimFault'

    ArrayOfNoClientCertificate:
      type: object
      description: |2
        A boxed array of *NoClientCertificate*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/NoClientCertificate'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    NoCompatibleDatastore:
      type: object
      description: |2
        A NoCompatibleDatastore fault is thrown when Storage DRS cannot find a compatible
        datastore in a given storage pod to place a disk or a virtual machine.
        
        a virtual machine.
      allOf:
        - $ref: '#/components/schemas/VimFault'

    ArrayOfNoCompatibleDatastore:
      type: object
      description: |2
        A boxed array of *NoCompatibleDatastore*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/NoCompatibleDatastore'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    NoCompatibleHardAffinityHost:
      type: object
      description: |2
        The cluster contains no hosts satisfying the hard VM/host affinity rules
        constraint for the VM.
      properties:
        vmName:
          description: |2
            The vm for which there are no compatible hard-affine hosts in the cluster.
          type: string
      required:
        - vmName
      allOf:
        - $ref: '#/components/schemas/VmConfigFault'

    ArrayOfNoCompatibleHardAffinityHost:
      type: object
      description: |2
        A boxed array of *NoCompatibleHardAffinityHost*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/NoCompatibleHardAffinityHost'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    NoCompatibleHost:
      type: object
      description: |2
        A NoCompatibleHost fault is thrown when DRS cannot find a compatible
        host in a given compute resource to run a virtual machine on.
      properties:
        host:
          description: |2
            The list of hosts that are not compatible, each element has a
            corresponding fault in the error array.
            
            Refers instances of *HostSystem*.
          type: array
          items:
            $ref: '#/components/schemas/ManagedObjectReference'
        error:
          description: |2
            An error in this array indicates why the corresponding host in the
            host array is incompatible.
          type: array
          items:
            $ref: '#/components/schemas/MethodFault'
      allOf:
        - $ref: '#/components/schemas/VimFault'

    ArrayOfNoCompatibleHost:
      type: object
      description: |2
        A boxed array of *NoCompatibleHost*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/NoCompatibleHost'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    NoCompatibleHostWithAccessToDevice:
      type: object
      description: |2
        This fault is used to report that a FT VM cannot be placed because there is
        no compatible host that can access all devices required to be connected when
        the VM powers on.
      allOf:
        - $ref: '#/components/schemas/NoCompatibleHost'

    ArrayOfNoCompatibleHostWithAccessToDevice:
      type: object
      description: |2
        A boxed array of *NoCompatibleHostWithAccessToDevice*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/NoCompatibleHostWithAccessToDevice'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    NoCompatibleSoftAffinityHost:
      type: object
      description: |2
        The cluster contains no hosts satisfying the soft VM/host affinity rules
        constraint for the VM.
      properties:
        vmName:
          description: |2
            The vm for which there are no compatible soft-affine hosts in the cluster.
          type: string
      required:
        - vmName
      allOf:
        - $ref: '#/components/schemas/VmConfigFault'

    ArrayOfNoCompatibleSoftAffinityHost:
      type: object
      description: |2
        A boxed array of *NoCompatibleSoftAffinityHost*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/NoCompatibleSoftAffinityHost'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    NoConnectedDatastore:
      type: object
      description: |2
        The fault occurs when Storage DRS cannot move a virtual machine because
        the host it is registered on is not connected to any other datastore
        in the storage pod.
      allOf:
        - $ref: '#/components/schemas/VimFault'

    ArrayOfNoConnectedDatastore:
      type: object
      description: |2
        A boxed array of *NoConnectedDatastore*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/NoConnectedDatastore'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    NoDiskFound:
      type: object
      description: |2
        This exception is thrown when a virtual machine
        which has no virtual disks is being upgraded or relaid out
        using the VirtualMachine.upgradeVirtualHardware or upgradeVmLayout
        commands.
      allOf:
        - $ref: '#/components/schemas/VimFault'

    ArrayOfNoDiskFound:
      type: object
      description: |2
        A boxed array of *NoDiskFound*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/NoDiskFound'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    NoDiskSpace:
      type: object
      description: |2
        This fault is thrown when an operation fails because of insufficient
        disk space.
      properties:
        datastore:
          description: |2
            The name of the datastore with insufficient disk space.
          type: string
      required:
        - datastore
      allOf:
        - $ref: '#/components/schemas/FileFault'

    ArrayOfNoDiskSpace:
      type: object
      description: |2
        A boxed array of *NoDiskSpace*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/NoDiskSpace'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    NoDisksToCustomize:
      type: object
      description: |2
        None of the disks attached to the VM are suitable for customization.
      allOf:
        - $ref: '#/components/schemas/CustomizationFault'

    ArrayOfNoDisksToCustomize:
      type: object
      description: |2
        A boxed array of *NoDisksToCustomize*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/NoDisksToCustomize'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    NoGateway:
      type: object
      description: |2
        This error occurs when an operation fails because of vmkernel gateway
        is unset.
      allOf:
        - $ref: '#/components/schemas/HostConfigFault'

    ArrayOfNoGateway:
      type: object
      description: |2
        A boxed array of *NoGateway*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/NoGateway'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    NoGuestHeartbeat:
      type: object
      description: |2
        A powered-on virtual machine has a guest OS with Tools installed, but it does not
        have a valid heartbeat.
      allOf:
        - $ref: '#/components/schemas/MigrationFault'

    ArrayOfNoGuestHeartbeat:
      type: object
      description: |2
        A boxed array of *NoGuestHeartbeat*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/NoGuestHeartbeat'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    NoHost:
      type: object
      description: |2
        A NoHostFault fault occurs when a host
        cannot be reached.
      properties:
        name:
          type: string
      allOf:
        - $ref: '#/components/schemas/HostConnectFault'

    ArrayOfNoHost:
      type: object
      description: |2
        A boxed array of *NoHost*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/NoHost'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    NoHostSuitableForFtSecondary:
      type: object
      description: |2
        The NoHostSuitableForFtSecondary fault is thrown when the system is unable to
        find a suitable host for the Fault Tolerance secondary virtual machine.
        
        This fault can be thrown when Virtual Center is trying to place or power on
        a Fault Tolerance Secondary, in both DRS or non-DRS cases.
      properties:
        vm:
          description: |2
            The primary virtual machine corresponding to the secondary virtual
            machine.
            
            Refers instance of *VirtualMachine*.
          $ref: '#/components/schemas/ManagedObjectReference'
        vmName:
          description: |2
            The name of the primary virtual machine corresponding to the secondary
            virtual machine.
          type: string
      required:
        - vm
        - vmName
      allOf:
        - $ref: '#/components/schemas/VmFaultToleranceIssue'

    ArrayOfNoHostSuitableForFtSecondary:
      type: object
      description: |2
        A boxed array of *NoHostSuitableForFtSecondary*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/NoHostSuitableForFtSecondary'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    NoLicenseServerConfigured:
      type: object
      description: |2
        The NoLicenseServerConfigured fault is thrown when there is no
        valid license server configured for the system and the system
        is not in evaluation mode.
        
        Any operation occurs that requires
        evaluation license or a valid license will throw the
        NoLicenseServerConfigured. This can happen with the new licensing
        scheme that is a hybrid of flex-based licensing and serial number
        based licensing. There can be cases where VirtualCenter is licensed
        by a serial number and there is no need for a flex license server.
        These cases are valid as long as no operation that requires flex-
        based license server is invoked, for example, adding a pre-4.0
        host that requires flex licenses. If however, such an operation is
        invoked, the NoLicenseServerConfigured fault is thrown.
      allOf:
        - $ref: '#/components/schemas/NotEnoughLicenses'

    ArrayOfNoLicenseServerConfigured:
      type: object
      description: |2
        A boxed array of *NoLicenseServerConfigured*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/NoLicenseServerConfigured'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    NoPeerHostFound:
      type: object
      description: |2
        This fault is thrown when no peer host is found to wake up this host.
      allOf:
        - $ref: '#/components/schemas/HostPowerOpFailed'

    ArrayOfNoPeerHostFound:
      type: object
      description: |2
        A boxed array of *NoPeerHostFound*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/NoPeerHostFound'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    NoPermission:
      type: object
      description: |2
        Thrown when an operation is denied because of privileges
        not held on managed object(s).
      properties:
        object:
          deprecated: true
          description: |2
            Deprecated as of vSphere 8.0, use the *NoPermission.missingPrivileges* field.
            
            The managed object on which a permission is required.
          $ref: '#/components/schemas/ManagedObjectReference'
        privilegeId:
          deprecated: true
          description: |2
            Deprecated as of vSphere 8.0, use the *NoPermission.missingPrivileges* field.
            
            The privilege identifier required
          type: string
        missingPrivileges:
          description: |2
            List of entities and missing privileges for each entity
            
            ***Since:*** vSphere API Release 7.0.3.2
          type: array
          items:
            $ref: '#/components/schemas/NoPermissionEntityPrivileges'
      allOf:
        - $ref: '#/components/schemas/SecurityError'

    ArrayOfNoPermission:
      type: object
      description: |2
        A boxed array of *NoPermission*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/NoPermission'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    NoPermissionEntityPrivileges:
      type: object
      description: |2
        Entity and privileges for the entity
        
        ***Since:*** vSphere API Release 7.0.3.2
      properties:
        entity:
          $ref: '#/components/schemas/ManagedObjectReference'
        privilegeIds:
          type: array
          items:
            type: string
      required:
        - entity
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfNoPermissionEntityPrivileges:
      type: object
      description: |2
        A boxed array of *NoPermissionEntityPrivileges*. To be used in *Any* placeholders.
        
        ***Since:*** vSphere API Release 7.0.3.2
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/NoPermissionEntityPrivileges'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    NoPermissionOnAD:
      type: object
      description: |2
        Fault indicating that the user account used to connect to the
        Active Directory doesn not have enough permissions for the action
        that was attempted.
      allOf:
        - $ref: '#/components/schemas/ActiveDirectoryFault'

    ArrayOfNoPermissionOnAD:
      type: object
      description: |2
        A boxed array of *NoPermissionOnAD*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/NoPermissionOnAD'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    NoPermissionOnHost:
      type: object
      description: |2
        This indicates that the user account used to connect to the host does
        not have enough permissions to enable VirtualCenter to manage the host.
      allOf:
        - $ref: '#/components/schemas/HostConnectFault'

    ArrayOfNoPermissionOnHost:
      type: object
      description: |2
        A boxed array of *NoPermissionOnHost*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/NoPermissionOnHost'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    NoPermissionOnNasVolume:
      type: object
      description: |2
        This fault is thrown when an operation to configure a NAS volume fails
        because of insufficient user permissions.
        
        For CIFS volumes, this implies that the user specified in the
        *spec* does not have access to the
        network resource.
      properties:
        userName:
          type: string
      allOf:
        - $ref: '#/components/schemas/NasConfigFault'

    ArrayOfNoPermissionOnNasVolume:
      type: object
      description: |2
        A boxed array of *NoPermissionOnNasVolume*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/NoPermissionOnNasVolume'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    NoSubjectName:
      type: object
      description: |2
        This exception is thrown when an extension has attempted to use certificate-based
        authentication but the extension has been registered without a subject name.
      allOf:
        - $ref: '#/components/schemas/VimFault'

    ArrayOfNoSubjectName:
      type: object
      description: |2
        A boxed array of *NoSubjectName*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/NoSubjectName'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    NoVcManagedIpConfigured:
      type: object
      description: |2
        The IP address of the VC server has not be configured, and a vApp
        property is requesting to use it.
      allOf:
        - $ref: '#/components/schemas/VAppPropertyFault'

    ArrayOfNoVcManagedIpConfigured:
      type: object
      description: |2
        A boxed array of *NoVcManagedIpConfigured*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/NoVcManagedIpConfigured'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    NoVirtualNic:
      type: object
      description: |2
        This error occurs when an operation fails because of
        no virtual NIC available.
      allOf:
        - $ref: '#/components/schemas/HostConfigFault'

    ArrayOfNoVirtualNic:
      type: object
      description: |2
        A boxed array of *NoVirtualNic*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/NoVirtualNic'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    NoVmInVApp:
      type: object
      description: |2
        Attempting to power-on or power-off a vApp that contains no
        virtual machines.
      allOf:
        - $ref: '#/components/schemas/VAppConfigFault'

    ArrayOfNoVmInVApp:
      type: object
      description: |2
        A boxed array of *NoVmInVApp*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/NoVmInVApp'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    NonADUserRequired:
      type: object
      description: |2
        Fault indicating that an operation must be executed by a
        non Active Directory user.
      allOf:
        - $ref: '#/components/schemas/ActiveDirectoryFault'

    ArrayOfNonADUserRequired:
      type: object
      description: |2
        A boxed array of *NonADUserRequired*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/NonADUserRequired'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    NonHomeRDMVMotionNotSupported:
      type: object
      description: |2
        An operation on a powered-on virtual machine requests that an existing
        Raw Disk Mapping end up in a location other than the new home datastore
        for the virtual machine, but the host does not have that capability.
      properties:
        device:
          description: |2
            The label of an RDM device for which an unsupported move was requested.
            
            This is not guaranteed to be the only such device.
          type: string
      required:
        - device
      allOf:
        - $ref: '#/components/schemas/MigrationFeatureNotSupported'

    ArrayOfNonHomeRDMVMotionNotSupported:
      type: object
      description: |2
        A boxed array of *NonHomeRDMVMotionNotSupported*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/NonHomeRDMVMotionNotSupported'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    NonPersistentDisksNotSupported:
      type: object
      description: |2
        The virtual machine has nonpersistent virtual disk.
        
        This is an error for
        any powered-on migration which involves moving virtual disks.
      allOf:
        - $ref: '#/components/schemas/DeviceNotSupported'

    ArrayOfNonPersistentDisksNotSupported:
      type: object
      description: |2
        A boxed array of *NonPersistentDisksNotSupported*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/NonPersistentDisksNotSupported'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    NonVmwareOuiMacNotSupportedHost:
      type: object
      description: |2
        The host does not support VM that has VPX assigned prefix or ranged based
        MAC address (i.e.
        
        MAC is not prefixed with 00:50:56:\[80-BF\])
      properties:
        hostName:
          description: |2
            The name of the host.
          type: string
      required:
        - hostName
      allOf:
        - $ref: '#/components/schemas/NotSupportedHost'

    ArrayOfNonVmwareOuiMacNotSupportedHost:
      type: object
      description: |2
        A boxed array of *NonVmwareOuiMacNotSupportedHost*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/NonVmwareOuiMacNotSupportedHost'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    NotADirectory:
      type: object
      description: |2
        This fault is thrown when an operation fails because the specified object
        is not a directory.
      allOf:
        - $ref: '#/components/schemas/FileFault'

    ArrayOfNotADirectory:
      type: object
      description: |2
        A boxed array of *NotADirectory*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/NotADirectory'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    NotAFile:
      type: object
      description: |2
        This fault is thrown when an operation fails because the specified object
        is not a file.
      allOf:
        - $ref: '#/components/schemas/FileFault'

    ArrayOfNotAFile:
      type: object
      description: |2
        A boxed array of *NotAFile*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/NotAFile'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    NotAuthenticated:
      type: object
      description: |2
        Thrown when an operation is denied because the session
        has not yet successfully logged in.
      allOf:
        - $ref: '#/components/schemas/NoPermission'

    ArrayOfNotAuthenticated:
      type: object
      description: |2
        A boxed array of *NotAuthenticated*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/NotAuthenticated'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    NotEnoughCpus:
      type: object
      description: |2
        The host hardware does not have enough CPU cores to support the number of
        virtual CPUs in the virtual machine.
        
        If the host is using hyperthreading, NotEnoughLogicalCpus is
        employed instead of NotEnoughCpus.
      properties:
        numCpuDest:
          description: |2
            The number of CPUs present on the host.
          type: integer
          format: int32
        numCpuVm:
          description: |2
            The number of virtual CPUs present in the virtual machine.
          type: integer
          format: int32
      required:
        - numCpuDest
        - numCpuVm
      allOf:
        - $ref: '#/components/schemas/VirtualHardwareCompatibilityIssue'

    ArrayOfNotEnoughCpus:
      type: object
      description: |2
        A boxed array of *NotEnoughCpus*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/NotEnoughCpus'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    NotEnoughLogicalCpus:
      type: object
      description: |2
        The host hardware does not have enough logical CPUs (hyperthreads) to
        support the number of virtual CPUs in the virtual machine.
      properties:
        host:
          description: |2
            The host that does not have enough logical CPUs.
            
            Refers instance of *HostSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
      allOf:
        - $ref: '#/components/schemas/NotEnoughCpus'

    ArrayOfNotEnoughLogicalCpus:
      type: object
      description: |2
        A boxed array of *NotEnoughLogicalCpus*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/NotEnoughLogicalCpus'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    NotFound:
      type: object
      description: |2
        A NotFound error occurs when a referenced component of a managed
        object cannot be found.
        
        The referenced component can be a data
        object type (such as a role or permission) or a primitive
        (such as a string).
        
        For example, if the missing referenced component is a data object, such as
        VirtualSwitch, the NotFound error is
        thrown. The NotFound error is also thrown if the data object is found, but the referenced name
        (for example, "vswitch0") is not.
      allOf:
        - $ref: '#/components/schemas/VimFault'

    ArrayOfNotFound:
      type: object
      description: |2
        A boxed array of *NotFound*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/NotFound'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    NotSupportedDeviceForFT:
      type: object
      deprecated: true
      description: |2
        Deprecated as of vSphere API 7.0. Not used since vSphere API 6.5.
        
        VMs with pvscsi or vmxnet3 virtual devices support Fault Tolerance only
        on 4.1 or later hosts.
      properties:
        host:
          description: |2
            The host
            
            Refers instance of *HostSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
        hostName:
          description: |2
            The host name
          type: string
        vm:
          description: |2
            The virtual machine
            
            Refers instance of *VirtualMachine*.
          $ref: '#/components/schemas/ManagedObjectReference'
        vmName:
          description: |2
            The virtual machine name
          type: string
        deviceType:
          description: |2
            The device type
          type: string
        deviceLabel:
          description: |2
            The device label
          type: string
      required:
        - host
        - vm
        - deviceType
      allOf:
        - $ref: '#/components/schemas/VmFaultToleranceIssue'

    ArrayOfNotSupportedDeviceForFT:
      type: object
      description: |2
        A boxed array of *NotSupportedDeviceForFT*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/NotSupportedDeviceForFT'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    NotSupportedHost:
      type: object
      description: |2
        A NotSupportedHostFault occurs when the host is of a type
        that is not supported.
      properties:
        productName:
          description: |2
            The name of the unsupported product if available;
            for example, "VMware ESX Server".
          type: string
        productVersion:
          description: |2
            The version of the unsupported product; for example, "1.5.2"
          type: string
      allOf:
        - $ref: '#/components/schemas/HostConnectFault'

    ArrayOfNotSupportedHost:
      type: object
      description: |2
        A boxed array of *NotSupportedHost*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/NotSupportedHost'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    NotSupportedHostForChecksum:
      type: object
      description: |2
        Base class for host checksum related faults
      allOf:
        - $ref: '#/components/schemas/VimFault'

    ArrayOfNotSupportedHostForChecksum:
      type: object
      description: |2
        A boxed array of *NotSupportedHostForChecksum*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/NotSupportedHostForChecksum'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    NotSupportedHostForVFlash:
      type: object
      description: |2
        The host does not support vFlash feature.
      properties:
        hostName:
          description: |2
            The name of the host.
          type: string
      required:
        - hostName
      allOf:
        - $ref: '#/components/schemas/NotSupportedHost'

    ArrayOfNotSupportedHostForVFlash:
      type: object
      description: |2
        A boxed array of *NotSupportedHostForVFlash*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/NotSupportedHostForVFlash'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    NotSupportedHostForVmcp:
      type: object
      description: |2
        The host does not support VM Component Protection.
      properties:
        hostName:
          description: |2
            The name of the host.
          type: string
      required:
        - hostName
      allOf:
        - $ref: '#/components/schemas/NotSupportedHost'

    ArrayOfNotSupportedHostForVmcp:
      type: object
      description: |2
        A boxed array of *NotSupportedHostForVmcp*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/NotSupportedHostForVmcp'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    NotSupportedHostForVmemFile:
      type: object
      description: |2
        The host does not support VM Component Protection.
      properties:
        hostName:
          description: |2
            The name of the host.
          type: string
      required:
        - hostName
      allOf:
        - $ref: '#/components/schemas/NotSupportedHost'

    ArrayOfNotSupportedHostForVmemFile:
      type: object
      description: |2
        A boxed array of *NotSupportedHostForVmemFile*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/NotSupportedHostForVmemFile'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    NotSupportedHostForVsan:
      type: object
      description: |2
        The host does not support VSAN.
      properties:
        hostName:
          description: |2
            The name of the host.
          type: string
      required:
        - hostName
      allOf:
        - $ref: '#/components/schemas/NotSupportedHost'

    ArrayOfNotSupportedHostForVsan:
      type: object
      description: |2
        A boxed array of *NotSupportedHostForVsan*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/NotSupportedHostForVsan'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    NotSupportedHostInCluster:
      type: object
      description: |2
        A NotSupportedHostInCluster fault occurs when the host does not support
        the necessary features to participate in the cluster.
      allOf:
        - $ref: '#/components/schemas/NotSupportedHost'

    ArrayOfNotSupportedHostInCluster:
      type: object
      description: |2
        A boxed array of *NotSupportedHostInCluster*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/NotSupportedHostInCluster'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    NotSupportedHostInDvs:
      type: object
      description: |2
        A NotSupportedHostInDvs fault occurs when the host does not support
        the necessary features to participate in the DVS.
      properties:
        switchProductSpec:
          description: |2
            The product spec of the DVS.
            
            This determines which host versions may
            participate in the DVS; that information may be queried by using
            *DistributedVirtualSwitchManager.QueryDvsCompatibleHostSpec*.
          $ref: '#/components/schemas/DistributedVirtualSwitchProductSpec'
      required:
        - switchProductSpec
      allOf:
        - $ref: '#/components/schemas/NotSupportedHost'

    ArrayOfNotSupportedHostInDvs:
      type: object
      description: |2
        A boxed array of *NotSupportedHostInDvs*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/NotSupportedHostInDvs'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    NotSupportedHostInHACluster:
      type: object
      description: |2
        A NotSupportedHostInHACluster fault occurs when the host does not support
        the necessary features to participate in the HA cluster.
      properties:
        hostName:
          description: |2
            The name of the host.
          type: string
        build:
          description: |2
            The product build number of the host.
          type: string
      required:
        - hostName
        - build
      allOf:
        - $ref: '#/components/schemas/NotSupportedHost'

    ArrayOfNotSupportedHostInHACluster:
      type: object
      description: |2
        A boxed array of *NotSupportedHostInHACluster*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/NotSupportedHostInHACluster'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    NotUserConfigurableProperty:
      type: object
      description: |2
        The property value cannot be changed since it is not
        user configurable.
      allOf:
        - $ref: '#/components/schemas/VAppPropertyFault'

    ArrayOfNotUserConfigurableProperty:
      type: object
      description: |2
        A boxed array of *NotUserConfigurableProperty*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/NotUserConfigurableProperty'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    NumVirtualCoresPerSocketNotSupported:
      type: object
      description: |2
        The host's software does not support enough cores per socket to
        accommodate the virtual machine.
        
        This is always an error.
      properties:
        maxSupportedCoresPerSocketDest:
          description: |2
            The maximum number of cores per socket supported on the host.
          type: integer
          format: int32
        numCoresPerSocketVm:
          description: |2
            The number of cores per socket in the virtual machine.
          type: integer
          format: int32
      required:
        - maxSupportedCoresPerSocketDest
        - numCoresPerSocketVm
      allOf:
        - $ref: '#/components/schemas/VirtualHardwareCompatibilityIssue'

    ArrayOfNumVirtualCoresPerSocketNotSupported:
      type: object
      description: |2
        A boxed array of *NumVirtualCoresPerSocketNotSupported*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/NumVirtualCoresPerSocketNotSupported'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    NumVirtualCpusExceedsLimit:
      type: object
      description: |2
        This fault is thrown when the total number of virtual CPUs present or requested
        in virtual machines' configuration has exceeded the limit on the host.
      properties:
        maxSupportedVcpus:
          description: |2
            The maximum number of virtual CPUs supported on the host.
          type: integer
          format: int32
      required:
        - maxSupportedVcpus
      allOf:
        - $ref: '#/components/schemas/InsufficientResourcesFault'

    ArrayOfNumVirtualCpusExceedsLimit:
      type: object
      description: |2
        A boxed array of *NumVirtualCpusExceedsLimit*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/NumVirtualCpusExceedsLimit'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    NumVirtualCpusIncompatible:
      type: object
      description: |2
        The number of virtual CPUs present or requested in the virtual machine's
        configuration is not supported for a specific feature.
      properties:
        reason:
          description: |2
            The reason for the incompatibility.
            
            See *NumVirtualCpusIncompatibleReason_enum* for valid values.
          type: string
        numCpu:
          description: |2
            The number of virtual CPUs in the virtual machine.
          type: integer
          format: int32
      required:
        - reason
        - numCpu
      allOf:
        - $ref: '#/components/schemas/VmConfigFault'

    ArrayOfNumVirtualCpusIncompatible:
      type: object
      description: |2
        A boxed array of *NumVirtualCpusIncompatible*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/NumVirtualCpusIncompatible'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    NumVirtualCpusNotSupported:
      type: object
      description: |2
        The host's software does not support enough virtual CPUs to
        accommodate the virtual machine.
        
        This is always an error.
      properties:
        maxSupportedVcpusDest:
          description: |2
            The maximum number of virtual CPUs supported on the host.
          type: integer
          format: int32
        numCpuVm:
          description: |2
            The number of virtual CPUs in the virtual machine.
          type: integer
          format: int32
      required:
        - maxSupportedVcpusDest
        - numCpuVm
      allOf:
        - $ref: '#/components/schemas/VirtualHardwareCompatibilityIssue'

    ArrayOfNumVirtualCpusNotSupported:
      type: object
      description: |2
        A boxed array of *NumVirtualCpusNotSupported*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/NumVirtualCpusNotSupported'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    OperationDisabledByGuest:
      type: object
      description: |2
        An OperationDisabledByGuest exception is thrown when an
        operation fails because the guest operations agent has been configured to
        disable the operation.
      allOf:
        - $ref: '#/components/schemas/GuestOperationsFault'

    ArrayOfOperationDisabledByGuest:
      type: object
      description: |2
        A boxed array of *OperationDisabledByGuest*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/OperationDisabledByGuest'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    OperationDisallowedOnHost:
      type: object
      description: |2
        An OperationDisallowedOnHost is thrown if an operation is diasllowed
        on host when a direct connection is used.
        
        Examples for such operations include VM powering on / memory hot-plug
        which could potentially violate hard-enforcement licenses if allowed
        on host.
        The functionality these operations provide is still available, but only
        through calls to an external entity.
      allOf:
        - $ref: '#/components/schemas/RuntimeFault'

    ArrayOfOperationDisallowedOnHost:
      type: object
      description: |2
        A boxed array of *OperationDisallowedOnHost*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/OperationDisallowedOnHost'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    OperationNotSupportedByGuest:
      type: object
      description: |2
        An OperationNotSupportedByGuest exception is thrown when an
        operation fails because the guest OS does not support
        the operation (e.g., Registry manipulation in Linux guests.).
      allOf:
        - $ref: '#/components/schemas/GuestOperationsFault'

    ArrayOfOperationNotSupportedByGuest:
      type: object
      description: |2
        A boxed array of *OperationNotSupportedByGuest*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/OperationNotSupportedByGuest'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    OutOfBounds:
      type: object
      description: |2
        Thrown if a parameter exceeds the acceptable range of values.
      properties:
        argumentName:
          description: |2
            This should be the name of the field that holds the allowed maximum
            (for example, Host.capability.maxSupportedVMs).
          type: string
      required:
        - argumentName
      allOf:
        - $ref: '#/components/schemas/VimFault'

    ArrayOfOutOfBounds:
      type: object
      description: |2
        A boxed array of *OutOfBounds*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/OutOfBounds'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    OvfAttribute:
      type: object
      description: |2
        An OVF descriptor Attribute base class.
      properties:
        elementName:
          description: |2
            Element name where the attribute is defined
          type: string
        attributeName:
          description: |2
            Attribute name
          type: string
      required:
        - elementName
        - attributeName
      allOf:
        - $ref: '#/components/schemas/OvfInvalidPackage'

    ArrayOfOvfAttribute:
      type: object
      description: |2
        A boxed array of *OvfAttribute*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/OvfAttribute'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    OvfConnectedDevice:
      type: object
      allOf:
        - $ref: '#/components/schemas/OvfHardwareExport'

    ArrayOfOvfConnectedDevice:
      type: object
      description: |2
        A boxed array of *OvfConnectedDevice*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/OvfConnectedDevice'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    OvfConnectedDeviceFloppy:
      type: object
      properties:
        filename:
          description: |2
            The filename of the floppy image
          type: string
      required:
        - filename
      allOf:
        - $ref: '#/components/schemas/OvfConnectedDevice'

    ArrayOfOvfConnectedDeviceFloppy:
      type: object
      description: |2
        A boxed array of *OvfConnectedDeviceFloppy*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/OvfConnectedDeviceFloppy'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    OvfConnectedDeviceIso:
      type: object
      properties:
        filename:
          description: |2
            The filename of the ISO
          type: string
      required:
        - filename
      allOf:
        - $ref: '#/components/schemas/OvfConnectedDevice'

    ArrayOfOvfConnectedDeviceIso:
      type: object
      description: |2
        A boxed array of *OvfConnectedDeviceIso*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/OvfConnectedDeviceIso'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    OvfConstraint:
      type: object
      description: |2
        A base fault for Ovf descriptor constraints
      properties:
        name:
          description: |2
            The name of the element
          type: string
      required:
        - name
      allOf:
        - $ref: '#/components/schemas/OvfInvalidPackage'

    ArrayOfOvfConstraint:
      type: object
      description: |2
        A boxed array of *OvfConstraint*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/OvfConstraint'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    OvfConsumerCallbackFault:
      type: object
      description: |2
        Superclass for all faults that can be thrown during the callback to an OVF
        consumer.
        
        The *MethodFault.faultCause* gives details about what went
        wrong.
      properties:
        extensionKey:
          description: |2
            The OVF consumer's extension key.
          type: string
        extensionName:
          description: |2
            The OVF consumer's extension name.
          type: string
      required:
        - extensionKey
        - extensionName
      allOf:
        - $ref: '#/components/schemas/OvfFault'

    ArrayOfOvfConsumerCallbackFault:
      type: object
      description: |2
        A boxed array of *OvfConsumerCallbackFault*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/OvfConsumerCallbackFault'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    OvfConsumerCommunicationError:
      type: object
      description: |2
        A fault type indicating that network communication with an OVF consumer failed.
      properties:
        description:
          description: |2
            The network library error message.
          type: string
      required:
        - description
      allOf:
        - $ref: '#/components/schemas/OvfConsumerCallbackFault'

    ArrayOfOvfConsumerCommunicationError:
      type: object
      description: |2
        A boxed array of *OvfConsumerCommunicationError*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/OvfConsumerCommunicationError'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    OvfConsumerFault:
      type: object
      description: |2
        Localized fault that may be thrown by an OVF consumer.
      properties:
        errorKey:
          description: |2
            An error code that uniquely describes the fault within this extension.
          type: string
        message:
          description: |2
            The error message, localized by the OVF consumer
          type: string
        params:
          description: |2
            Additional parameters for this fault
          type: array
          items:
            $ref: '#/components/schemas/KeyValue'
      required:
        - errorKey
        - message
      allOf:
        - $ref: '#/components/schemas/OvfConsumerCallbackFault'

    ArrayOfOvfConsumerFault:
      type: object
      description: |2
        A boxed array of *OvfConsumerFault*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/OvfConsumerFault'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    OvfConsumerInvalidSection:
      type: object
      description: |2
        A fault type indicating that the XML of a section appended by an OVF consumer was
        invalid.
      properties:
        lineNumber:
          description: |2
            The line number in the section on which the error was found.
          type: integer
          format: int32
        description:
          description: |2
            The XML parser error message.
          type: string
      required:
        - lineNumber
        - description
      allOf:
        - $ref: '#/components/schemas/OvfConsumerCallbackFault'

    ArrayOfOvfConsumerInvalidSection:
      type: object
      description: |2
        A boxed array of *OvfConsumerInvalidSection*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/OvfConsumerInvalidSection'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    OvfConsumerPowerOnFault:
      type: object
      description: |2
        A fault type indicating that the power on operation failed.
      properties:
        extensionKey:
          description: |2
            The OVF consumer's extension key.
          type: string
        extensionName:
          description: |2
            The OVF consumer's extension name.
          type: string
        description:
          description: |2
            A localized, human-readable description of the error.
          type: string
      required:
        - extensionKey
        - extensionName
        - description
      allOf:
        - $ref: '#/components/schemas/InvalidState'

    ArrayOfOvfConsumerPowerOnFault:
      type: object
      description: |2
        A boxed array of *OvfConsumerPowerOnFault*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/OvfConsumerPowerOnFault'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    OvfConsumerUndeclaredSection:
      type: object
      description: |2
        A fault type indicating that an OVF consumer appended an undeclared section to an OST.
        
        An undeclared section means a section with a qualified type that the OVF consumer was
        not registered as a handler of.
      properties:
        qualifiedSectionType:
          description: |2
            The undeclared qualified section type appended by the OVF consumer.
          type: string
      required:
        - qualifiedSectionType
      allOf:
        - $ref: '#/components/schemas/OvfConsumerCallbackFault'

    ArrayOfOvfConsumerUndeclaredSection:
      type: object
      description: |2
        A boxed array of *OvfConsumerUndeclaredSection*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/OvfConsumerUndeclaredSection'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    OvfConsumerUndefinedPrefix:
      type: object
      description: |2
        A fault type indicating that an OVF consumer added a section with an unbound prefix.
      properties:
        prefix:
          description: |2
            The prefix for which no namespace definition was found.
          type: string
      required:
        - prefix
      allOf:
        - $ref: '#/components/schemas/OvfConsumerCallbackFault'

    ArrayOfOvfConsumerUndefinedPrefix:
      type: object
      description: |2
        A boxed array of *OvfConsumerUndefinedPrefix*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/OvfConsumerUndefinedPrefix'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    OvfConsumerValidationFault:
      type: object
      description: |2
        Thrown by an OVF consumer if an error occurred while validating an instantiation OST.
      properties:
        extensionKey:
          description: |2
            The OVF consumer's extension key.
          type: string
        extensionName:
          description: |2
            The OVF consumer's extension name.
          type: string
        message:
          description: |2
            The error message, localized by the OVF consumer
          type: string
      required:
        - extensionKey
        - extensionName
        - message
      allOf:
        - $ref: '#/components/schemas/VmConfigFault'

    ArrayOfOvfConsumerValidationFault:
      type: object
      description: |2
        A boxed array of *OvfConsumerValidationFault*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/OvfConsumerValidationFault'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    OvfCpuCompatibility:
      type: object
      properties:
        registerName:
          description: |2
            Possible register names are eax, ebx, ecx, or edx.
          type: string
        level:
          description: |2
            The CpuId level where a problem was detected.
            
            Other levels may
            also have problems
          type: integer
          format: int32
        registerValue:
          description: |2
            The register value where the problem was detected
          type: string
        desiredRegisterValue:
          description: |2
            The desired register value return from the host
          type: string
      required:
        - registerName
        - level
        - registerValue
        - desiredRegisterValue
      allOf:
        - $ref: '#/components/schemas/OvfImport'

    ArrayOfOvfCpuCompatibility:
      type: object
      description: |2
        A boxed array of *OvfCpuCompatibility*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/OvfCpuCompatibility'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    OvfCpuCompatibilityCheckNotSupported:
      type: object
      allOf:
        - $ref: '#/components/schemas/OvfImport'

    ArrayOfOvfCpuCompatibilityCheckNotSupported:
      type: object
      description: |2
        A boxed array of *OvfCpuCompatibilityCheckNotSupported*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/OvfCpuCompatibilityCheckNotSupported'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    OvfDiskMappingNotFound:
      type: object
      properties:
        diskName:
          description: |2
            The disk name that is not found
          type: string
        vmName:
          description: |2
            The VM Name
          type: string
      required:
        - diskName
        - vmName
      allOf:
        - $ref: '#/components/schemas/OvfSystemFault'

    ArrayOfOvfDiskMappingNotFound:
      type: object
      description: |2
        A boxed array of *OvfDiskMappingNotFound*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/OvfDiskMappingNotFound'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    OvfDiskOrderConstraint:
      type: object
      description: |2
        Class used to indicate that the Disks in a DiskSection was not defined
        in the same order as in the Reference section
      allOf:
        - $ref: '#/components/schemas/OvfConstraint'

    ArrayOfOvfDiskOrderConstraint:
      type: object
      description: |2
        A boxed array of *OvfDiskOrderConstraint*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/OvfDiskOrderConstraint'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    OvfDuplicateElement:
      type: object
      description: |2
        OvfDuplicateElement is thrown if Ovf descriptor contains an invalid duplicate element.
      allOf:
        - $ref: '#/components/schemas/OvfElement'

    ArrayOfOvfDuplicateElement:
      type: object
      description: |2
        A boxed array of *OvfDuplicateElement*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/OvfDuplicateElement'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    OvfDuplicatedElementBoundary:
      type: object
      description: |2
        If the Ovf descriptor element have duplicated element bound.
      properties:
        boundary:
          description: |2
            Name of duplicated boundary
          type: string
      required:
        - boundary
      allOf:
        - $ref: '#/components/schemas/OvfElement'

    ArrayOfOvfDuplicatedElementBoundary:
      type: object
      description: |2
        A boxed array of *OvfDuplicatedElementBoundary*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/OvfDuplicatedElementBoundary'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    OvfDuplicatedPropertyIdExport:
      type: object
      description: |2
        Two or more user-configurable properties are
        found with the same fully-qualified property
        name.
      properties:
        fqid:
          description: |2
            The fully qualified property id.
          type: string
      required:
        - fqid
      allOf:
        - $ref: '#/components/schemas/OvfExport'

    ArrayOfOvfDuplicatedPropertyIdExport:
      type: object
      description: |2
        A boxed array of *OvfDuplicatedPropertyIdExport*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/OvfDuplicatedPropertyIdExport'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    OvfDuplicatedPropertyIdImport:
      type: object
      description: |2
        Two or more user-configurable properties are
        found with the same fully-qualified property
        name.
      allOf:
        - $ref: '#/components/schemas/OvfExport'

    ArrayOfOvfDuplicatedPropertyIdImport:
      type: object
      description: |2
        A boxed array of *OvfDuplicatedPropertyIdImport*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/OvfDuplicatedPropertyIdImport'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    OvfElement:
      type: object
      description: |2
        A base fault for element exceptions in the Ovf XML descriptor.
      properties:
        name:
          description: |2
            The name of the element
          type: string
      required:
        - name
      allOf:
        - $ref: '#/components/schemas/OvfInvalidPackage'

    ArrayOfOvfElement:
      type: object
      description: |2
        A boxed array of *OvfElement*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/OvfElement'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    OvfElementInvalidValue:
      type: object
      description: |2
        A class used if a element node is found to have an invalid value.
        
        Base class for OvfProperty errors.
      properties:
        value:
          description: |2
            The value of the element
          type: string
      required:
        - value
      allOf:
        - $ref: '#/components/schemas/OvfElement'

    ArrayOfOvfElementInvalidValue:
      type: object
      description: |2
        A boxed array of *OvfElementInvalidValue*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/OvfElementInvalidValue'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    OvfExport:
      type: object
      description: |2
        A common base class to host all the Ovf Lib Export Exceptions.
      allOf:
        - $ref: '#/components/schemas/OvfFault'

    ArrayOfOvfExport:
      type: object
      description: |2
        A boxed array of *OvfExport*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/OvfExport'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    OvfExportFailed:
      type: object
      description: |2
        This fault is used if we fail to export an OVF package.
      allOf:
        - $ref: '#/components/schemas/OvfExport'

    ArrayOfOvfExportFailed:
      type: object
      description: |2
        A boxed array of *OvfExportFailed*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/OvfExportFailed'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    OvfFault:
      type: object
      description: |2
        A common base type fault for all Ovf related faults.
        
        The structure of OvfFault is as listed.
        - OvfFault
          - OvfInvalidPackage
            - OvfXmlFormat
            - OvfWrongNamespace
            - OvfElement
              - OvfElementInvalidValue
              - OvfUnexpectedElement
              - OvfDuplicateElement
              - OvfMissingElement
              - OvfMissingElementNormalBoundary
              - OvfDuplicatedElementBoundary
            - OvfAttribute
              - OvfMissingAttribute
              - OvfInvalidValue
                - OvfInvalidValueFormatMalformed
                - OvfInvalidValueConfiguration
                - OvfInvalidValueReference
                - OvfInvalidValueEmpty
            - OvfProperty
              - OvfPropertyType
              - OvfPropertyValue
              - OvfPropertyNetwork
              - OvfPropertyQualifier
              - OvfPropertyQualifierWarning
          - OvfConstraint
            - OvfDiskOrderConstraint
            - OvfHostResourceConstraint
          - OvfUnsupportedPackage
            - OvfNoHostNic
            - OvfInvalidVmName
            - OvfUnsupportedAttribute
              - OvfUnsupportedAttributeValue
            - OvfUnsupportedElement
              - OvfUnsupportedElementValue
              - OvfUnsupportedSection
              - OvfNoSpaceOnController
            - OvfUnsupportedType
            - OvfUnsupportedSubType
            - OvfHardwareCheck
            - OvfNoSupportedHardwareFamily
          - OvfExport
            - OvfExportFailed
            - OvfHardwareExport
              - OvfUnsupportedDeviceExport
              - OvfUnknownDeviceBacking
              - OvfConnectedDevice
                - OvfConnectedDeviceISO
              - OvfUnableToExportDisk
            - OvfPropertyExport
            - OvfPropertyNetworkExport
            - OvfDuplicatedPropertyIdExport
          - OvfImport (these are typically returned as warnings)
            - OvfImportFailed
            - OvfHardwareCheck
            - OvfMissingHardware
            - OvfCpuCompatibility
            - OvfCpuCompatibilityCheckNotSupported
            - OvfUnsupportedDiskProvisioning
            - OvfDuplicatedPropertyIdImport
            - OvfNetworkMappingNotSupported
          - OvfSystemFault
            - OvfDiskMappingNotFound
            - OvfHostValueNotParsed
            - OvfInternalError
            - OvfUnsupportedDeviceBackingOption
            - OvfUnsupportedDeviceBackingInfo
            - OvfToXmlUnsupportedElement
            - OvfUnknownDevice
            - OvfUnknownEntity
          - OvfConsumerCallbackFault
            - OvfConsumerFault
            - OvfConsumerCommunicationError
            - OvfConsumerInvalidSection
            - OvfConsumerUndeclaredSection
            - OvfConsumerUndefinedPrefix
              
        All messages go into the vimlocale
      allOf:
        - $ref: '#/components/schemas/VimFault'

    ArrayOfOvfFault:
      type: object
      description: |2
        A boxed array of *OvfFault*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/OvfFault'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    OvfHardwareCheck:
      type: object
      allOf:
        - $ref: '#/components/schemas/OvfImport'

    ArrayOfOvfHardwareCheck:
      type: object
      description: |2
        A boxed array of *OvfHardwareCheck*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/OvfHardwareCheck'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    OvfHardwareExport:
      type: object
      description: |2
        A common base class to host all the OvfLib Export Exceptions for hardware.
      properties:
        device:
          description: |2
            The virtual device we are exporting to OVF
          $ref: '#/components/schemas/VirtualDevice'
        vmPath:
          description: |2
            The path to the VM containing the device.
            
            This path shows the location of the VM in the vApp hierarchy, on the form:
            
            /ParentVApp/ChildVApp/VMName
          type: string
      required:
        - vmPath
      allOf:
        - $ref: '#/components/schemas/OvfExport'

    ArrayOfOvfHardwareExport:
      type: object
      description: |2
        A boxed array of *OvfHardwareExport*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/OvfHardwareExport'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    OvfHostResourceConstraint:
      type: object
      description: |2
        Class used to indicate that the value in HostResoruce did not map to
        a valid reference element.
      properties:
        value:
          description: |2
            Value of the element
          type: string
      required:
        - value
      allOf:
        - $ref: '#/components/schemas/OvfConstraint'

    ArrayOfOvfHostResourceConstraint:
      type: object
      description: |2
        A boxed array of *OvfHostResourceConstraint*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/OvfHostResourceConstraint'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    OvfHostValueNotParsed:
      type: object
      properties:
        property:
          description: |2
            The host property field that could not be parsed.
          type: string
        value:
          description: |2
            Value of the field that could not be parsed.
          type: string
      required:
        - property
        - value
      allOf:
        - $ref: '#/components/schemas/OvfSystemFault'

    ArrayOfOvfHostValueNotParsed:
      type: object
      description: |2
        A boxed array of *OvfHostValueNotParsed*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/OvfHostValueNotParsed'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    OvfImport:
      type: object
      description: |2
        A common base class for errors that can happen during Import and
        that is not due to an invalid package (OvfInvalidPackage).
        
        These
        are typically issued as warnings.
      allOf:
        - $ref: '#/components/schemas/OvfFault'

    ArrayOfOvfImport:
      type: object
      description: |2
        A boxed array of *OvfImport*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/OvfImport'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    OvfImportFailed:
      type: object
      description: |2
        This fault is used if we fail to deploy an OVF package.
      allOf:
        - $ref: '#/components/schemas/OvfImport'

    ArrayOfOvfImportFailed:
      type: object
      description: |2
        A boxed array of *OvfImportFailed*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/OvfImportFailed'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    OvfInternalError:
      type: object
      description: |2
        Disk mode not supported
      allOf:
        - $ref: '#/components/schemas/OvfSystemFault'

    ArrayOfOvfInternalError:
      type: object
      description: |2
        A boxed array of *OvfInternalError*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/OvfInternalError'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    OvfInvalidPackage:
      type: object
      description: |2
        Base fault class for all Invalid OVF package faults.
      properties:
        lineNumber:
          description: |2
            XML OVF descriptor line numbers
          type: integer
          format: int32
      required:
        - lineNumber
      allOf:
        - $ref: '#/components/schemas/OvfFault'

    ArrayOfOvfInvalidPackage:
      type: object
      description: |2
        A boxed array of *OvfInvalidPackage*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/OvfInvalidPackage'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    OvfInvalidValue:
      type: object
      description: |2
        If an invalid value is found in the Ovf descriptor we throw an OvfInvalidValue exception.
      properties:
        value:
          description: |2
            Attribute value
          type: string
      required:
        - value
      allOf:
        - $ref: '#/components/schemas/OvfAttribute'

    ArrayOfOvfInvalidValue:
      type: object
      description: |2
        A boxed array of *OvfInvalidValue*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/OvfInvalidValue'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    OvfInvalidValueConfiguration:
      type: object
      description: |2
        If an malformed ovf:configuration attribute value is found in the
        Ovf descriptor we throw an OvfInvalidValueConfiguration exception.
      allOf:
        - $ref: '#/components/schemas/OvfInvalidValue'

    ArrayOfOvfInvalidValueConfiguration:
      type: object
      description: |2
        A boxed array of *OvfInvalidValueConfiguration*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/OvfInvalidValueConfiguration'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    OvfInvalidValueEmpty:
      type: object
      description: |2
        If an attribute is found with an empty value where it is not allowed.
      allOf:
        - $ref: '#/components/schemas/OvfInvalidValue'

    ArrayOfOvfInvalidValueEmpty:
      type: object
      description: |2
        A boxed array of *OvfInvalidValueEmpty*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/OvfInvalidValueEmpty'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    OvfInvalidValueFormatMalformed:
      type: object
      description: |2
        If an malformed value is found in the Ovf descriptor we throw an OvfInvalidValueFormatMalformed
        exception.
      allOf:
        - $ref: '#/components/schemas/OvfInvalidValue'

    ArrayOfOvfInvalidValueFormatMalformed:
      type: object
      description: |2
        A boxed array of *OvfInvalidValueFormatMalformed*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/OvfInvalidValueFormatMalformed'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    OvfInvalidValueReference:
      type: object
      description: |2
        If a value refer to something that is not found is found in the Ovf descriptor
        we throw an OvfInvalidValueReference exception.
      allOf:
        - $ref: '#/components/schemas/OvfInvalidValue'

    ArrayOfOvfInvalidValueReference:
      type: object
      description: |2
        A boxed array of *OvfInvalidValueReference*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/OvfInvalidValueReference'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    OvfInvalidVmName:
      type: object
      description: |2
        This fault is used if we can not normalize the vm name
      properties:
        name:
          description: |2
            The name of the invalid Virtual Machine
          type: string
      required:
        - name
      allOf:
        - $ref: '#/components/schemas/OvfUnsupportedPackage'

    ArrayOfOvfInvalidVmName:
      type: object
      description: |2
        A boxed array of *OvfInvalidVmName*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/OvfInvalidVmName'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    OvfMappedOsId:
      type: object
      properties:
        ovfId:
          description: |2
            The operating system id specified in the OVF descriptor.
          type: integer
          format: int32
        ovfDescription:
          description: |2
            The OS description specified in the OVF descriptor.
          type: string
        targetDescription:
          description: |2
            The display name of the target OS
          type: string
      required:
        - ovfId
        - ovfDescription
        - targetDescription
      allOf:
        - $ref: '#/components/schemas/OvfImport'

    ArrayOfOvfMappedOsId:
      type: object
      description: |2
        A boxed array of *OvfMappedOsId*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/OvfMappedOsId'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    OvfMissingAttribute:
      type: object
      description: |2
        If the Ovf descriptor is missing an attribute this exception is thrown.
      allOf:
        - $ref: '#/components/schemas/OvfAttribute'

    ArrayOfOvfMissingAttribute:
      type: object
      description: |2
        A boxed array of *OvfMissingAttribute*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/OvfMissingAttribute'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    OvfMissingElement:
      type: object
      description: |2
        If the Ovf descriptor is missing an Element this exception is thrown.
      allOf:
        - $ref: '#/components/schemas/OvfElement'

    ArrayOfOvfMissingElement:
      type: object
      description: |2
        A boxed array of *OvfMissingElement*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/OvfMissingElement'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    OvfMissingElementNormalBoundary:
      type: object
      description: |2
        If the Ovf descriptor element normal boundary is not met this exception is thrown.
      properties:
        boundary:
          description: |2
            The missing bound
          type: string
      required:
        - boundary
      allOf:
        - $ref: '#/components/schemas/OvfMissingElement'

    ArrayOfOvfMissingElementNormalBoundary:
      type: object
      description: |2
        A boxed array of *OvfMissingElementNormalBoundary*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/OvfMissingElementNormalBoundary'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    OvfMissingHardware:
      type: object
      description: |2
        The OVF descriptor does not have a description of
        a required hardware element e.g CPU, Memory
      properties:
        name:
          description: |2
            Name of the missing hardware.
          type: string
        resourceType:
          description: |2
            OVF rasd resource type of the missing hardware.
          type: integer
          format: int32
      required:
        - name
        - resourceType
      allOf:
        - $ref: '#/components/schemas/OvfImport'

    ArrayOfOvfMissingHardware:
      type: object
      description: |2
        A boxed array of *OvfMissingHardware*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/OvfMissingHardware'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    OvfNetworkMappingNotSupported:
      type: object
      description: |2
        The network mapping provided for OVF Import
        is not supported by any hosts
      allOf:
        - $ref: '#/components/schemas/OvfImport'

    ArrayOfOvfNetworkMappingNotSupported:
      type: object
      description: |2
        A boxed array of *OvfNetworkMappingNotSupported*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/OvfNetworkMappingNotSupported'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    OvfNoHostNic:
      type: object
      description: |2
        This fault is used if there is no network defined on host
      allOf:
        - $ref: '#/components/schemas/OvfUnsupportedPackage'

    ArrayOfOvfNoHostNic:
      type: object
      description: |2
        A boxed array of *OvfNoHostNic*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/OvfNoHostNic'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    OvfNoSpaceOnController:
      type: object
      description: |2
        If the hardware element (RASD) point to a parent controller where there is no
        space left.
      properties:
        parent:
          description: |2
            The parent reference
          type: string
      required:
        - parent
      allOf:
        - $ref: '#/components/schemas/OvfUnsupportedElement'

    ArrayOfOvfNoSpaceOnController:
      type: object
      description: |2
        A boxed array of *OvfNoSpaceOnController*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/OvfNoSpaceOnController'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    OvfNoSupportedHardwareFamily:
      type: object
      properties:
        version:
          description: |2
            Version found that was not supported
          type: string
      required:
        - version
      allOf:
        - $ref: '#/components/schemas/OvfUnsupportedPackage'

    ArrayOfOvfNoSupportedHardwareFamily:
      type: object
      description: |2
        A boxed array of *OvfNoSupportedHardwareFamily*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/OvfNoSupportedHardwareFamily'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    OvfProperty:
      type: object
      description: |2
        A base fault for property faults in the property section of the Ovf XML descriptor.
      properties:
        type:
          description: |2
            The type of the property
          type: string
        value:
          description: |2
            The value of the property
          type: string
      required:
        - type
        - value
      allOf:
        - $ref: '#/components/schemas/OvfInvalidPackage'

    ArrayOfOvfProperty:
      type: object
      description: |2
        A boxed array of *OvfProperty*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/OvfProperty'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    OvfPropertyExport:
      type: object
      description: |2
        VIM property type that can not be converted to OVF
      properties:
        type:
          description: |2
            VIM type
          type: string
        value:
          description: |2
            VIM value
          type: string
      required:
        - type
        - value
      allOf:
        - $ref: '#/components/schemas/OvfExport'

    ArrayOfOvfPropertyExport:
      type: object
      description: |2
        A boxed array of *OvfPropertyExport*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/OvfPropertyExport'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    OvfPropertyNetwork:
      type: object
      description: |2
        A class used indicate there was a property network error
      allOf:
        - $ref: '#/components/schemas/OvfProperty'

    ArrayOfOvfPropertyNetwork:
      type: object
      description: |2
        A boxed array of *OvfPropertyNetwork*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/OvfPropertyNetwork'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    OvfPropertyNetworkExport:
      type: object
      description: |2
        VIM property type that refers to a network that
        does not exist in the package since no virtual machines
        are hooked up to it.
      properties:
        network:
          description: |2
            name of network
          type: string
      required:
        - network
      allOf:
        - $ref: '#/components/schemas/OvfExport'

    ArrayOfOvfPropertyNetworkExport:
      type: object
      description: |2
        A boxed array of *OvfPropertyNetworkExport*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/OvfPropertyNetworkExport'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    OvfPropertyQualifier:
      type: object
      description: |2
        A class used to indicate there was a property qualifier error
      properties:
        qualifier:
          description: |2
            qualifiers
          type: string
      required:
        - qualifier
      allOf:
        - $ref: '#/components/schemas/OvfProperty'

    ArrayOfOvfPropertyQualifier:
      type: object
      description: |2
        A boxed array of *OvfPropertyQualifier*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/OvfPropertyQualifier'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    OvfPropertyQualifierDuplicate:
      type: object
      description: |2
        Indicate that a property qualifier was duplicated.
      properties:
        qualifier:
          description: |2
            qualifiers
          type: string
      required:
        - qualifier
      allOf:
        - $ref: '#/components/schemas/OvfProperty'

    ArrayOfOvfPropertyQualifierDuplicate:
      type: object
      description: |2
        A boxed array of *OvfPropertyQualifierDuplicate*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/OvfPropertyQualifierDuplicate'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    OvfPropertyQualifierIgnored:
      type: object
      description: |2
        Indicate that the was qualifier was ignored
      properties:
        qualifier:
          description: |2
            qualifiers
          type: string
      required:
        - qualifier
      allOf:
        - $ref: '#/components/schemas/OvfProperty'

    ArrayOfOvfPropertyQualifierIgnored:
      type: object
      description: |2
        A boxed array of *OvfPropertyQualifierIgnored*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/OvfPropertyQualifierIgnored'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    OvfPropertyType:
      type: object
      description: |2
        A class used to indicate there was a property type error
      allOf:
        - $ref: '#/components/schemas/OvfProperty'

    ArrayOfOvfPropertyType:
      type: object
      description: |2
        A boxed array of *OvfPropertyType*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/OvfPropertyType'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    OvfPropertyValue:
      type: object
      description: |2
        A class used indicate there was a property value error
      allOf:
        - $ref: '#/components/schemas/OvfProperty'

    ArrayOfOvfPropertyValue:
      type: object
      description: |2
        A boxed array of *OvfPropertyValue*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/OvfPropertyValue'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    OvfSystemFault:
      type: object
      description: |2
        A common base class to host all the OVF subsystems's system faults.
        
        This is a class of fault that can be thrown because of
        some api changes, new hardware that are not supported by
        the host.
      allOf:
        - $ref: '#/components/schemas/OvfFault'

    ArrayOfOvfSystemFault:
      type: object
      description: |2
        A boxed array of *OvfSystemFault*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/OvfSystemFault'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    OvfToXmlUnsupportedElement:
      type: object
      description: |2
        Unsupported element to export to XML
      properties:
        name:
          description: |2
            The name of the xml element we could not write to the xml descriptor
          type: string
      allOf:
        - $ref: '#/components/schemas/OvfSystemFault'

    ArrayOfOvfToXmlUnsupportedElement:
      type: object
      description: |2
        A boxed array of *OvfToXmlUnsupportedElement*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/OvfToXmlUnsupportedElement'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    OvfUnableToExportDisk:
      type: object
      properties:
        diskName:
          description: |2
            disk name
          type: string
      required:
        - diskName
      allOf:
        - $ref: '#/components/schemas/OvfHardwareExport'

    ArrayOfOvfUnableToExportDisk:
      type: object
      description: |2
        A boxed array of *OvfUnableToExportDisk*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/OvfUnableToExportDisk'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    OvfUnexpectedElement:
      type: object
      description: |2
        Class used to indicate an unexpected element in the Ovf descriptor
      allOf:
        - $ref: '#/components/schemas/OvfElement'

    ArrayOfOvfUnexpectedElement:
      type: object
      description: |2
        A boxed array of *OvfUnexpectedElement*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/OvfUnexpectedElement'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    OvfUnknownDevice:
      type: object
      properties:
        device:
          description: |2
            The unknown device
          $ref: '#/components/schemas/VirtualDevice'
        vmName:
          description: |2
            The name of the Virtual Machine containing the unkown device
          type: string
      required:
        - vmName
      allOf:
        - $ref: '#/components/schemas/OvfSystemFault'

    ArrayOfOvfUnknownDevice:
      type: object
      description: |2
        A boxed array of *OvfUnknownDevice*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/OvfUnknownDevice'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    OvfUnknownDeviceBacking:
      type: object
      properties:
        backing:
          description: |2
            The VirtualDevice BackingInfo that is not supported by OVF export.
          $ref: '#/components/schemas/VirtualDeviceBackingInfo'
      required:
        - backing
      allOf:
        - $ref: '#/components/schemas/OvfHardwareExport'

    ArrayOfOvfUnknownDeviceBacking:
      type: object
      description: |2
        A boxed array of *OvfUnknownDeviceBacking*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/OvfUnknownDeviceBacking'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    OvfUnknownEntity:
      type: object
      properties:
        lineNumber:
          description: |2
            line number where the unknown entity was found
          type: integer
          format: int32
      required:
        - lineNumber
      allOf:
        - $ref: '#/components/schemas/OvfSystemFault'

    ArrayOfOvfUnknownEntity:
      type: object
      description: |2
        A boxed array of *OvfUnknownEntity*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/OvfUnknownEntity'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    OvfUnsupportedAttribute:
      type: object
      description: |2
        If the Ovf descriptor have an unsupported attribute.
      properties:
        elementName:
          description: |2
            The name of the element with the unsupported attribute
          type: string
        attributeName:
          description: |2
            The name of the unsupported attribute
          type: string
      required:
        - elementName
        - attributeName
      allOf:
        - $ref: '#/components/schemas/OvfUnsupportedPackage'

    ArrayOfOvfUnsupportedAttribute:
      type: object
      description: |2
        A boxed array of *OvfUnsupportedAttribute*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/OvfUnsupportedAttribute'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    OvfUnsupportedAttributeValue:
      type: object
      description: |2
        Used when an OVF descriptor attribute has an unsupported value.
      properties:
        value:
          description: |2
            Unsupported attribute value
          type: string
      required:
        - value
      allOf:
        - $ref: '#/components/schemas/OvfUnsupportedAttribute'

    ArrayOfOvfUnsupportedAttributeValue:
      type: object
      description: |2
        A boxed array of *OvfUnsupportedAttributeValue*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/OvfUnsupportedAttributeValue'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    OvfUnsupportedDeviceBackingInfo:
      type: object
      properties:
        elementName:
          description: |2
            The element name
          type: string
        instanceId:
          description: |2
            The InstanceId on the hardware description
          type: string
        deviceName:
          description: |2
            The device name
          type: string
        backingName:
          description: |2
            The name of the VirtualDevice Backing Info not supported on the device.
          type: string
      required:
        - deviceName
      allOf:
        - $ref: '#/components/schemas/OvfSystemFault'

    ArrayOfOvfUnsupportedDeviceBackingInfo:
      type: object
      description: |2
        A boxed array of *OvfUnsupportedDeviceBackingInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/OvfUnsupportedDeviceBackingInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    OvfUnsupportedDeviceBackingOption:
      type: object
      properties:
        elementName:
          description: |2
            The element name
          type: string
        instanceId:
          description: |2
            The InstanceId for the hardware element
          type: string
        deviceName:
          description: |2
            The device name
          type: string
        backingName:
          description: |2
            The name of the VirtualDevice Backing Option not supported on the device.
          type: string
      required:
        - deviceName
      allOf:
        - $ref: '#/components/schemas/OvfSystemFault'

    ArrayOfOvfUnsupportedDeviceBackingOption:
      type: object
      description: |2
        A boxed array of *OvfUnsupportedDeviceBackingOption*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/OvfUnsupportedDeviceBackingOption'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    OvfUnsupportedDeviceExport:
      type: object
      allOf:
        - $ref: '#/components/schemas/OvfHardwareExport'

    ArrayOfOvfUnsupportedDeviceExport:
      type: object
      description: |2
        A boxed array of *OvfUnsupportedDeviceExport*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/OvfUnsupportedDeviceExport'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    OvfUnsupportedDiskProvisioning:
      type: object
      description: |2
        Disk provisioning not supported
      properties:
        diskProvisioning:
          description: |2
            The disk provisioning that was not supported.
          type: string
        supportedDiskProvisioning:
          description: |2
            Disk modes supported by the host.
          type: string
      required:
        - diskProvisioning
        - supportedDiskProvisioning
      allOf:
        - $ref: '#/components/schemas/OvfImport'

    ArrayOfOvfUnsupportedDiskProvisioning:
      type: object
      description: |2
        A boxed array of *OvfUnsupportedDiskProvisioning*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/OvfUnsupportedDiskProvisioning'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    OvfUnsupportedElement:
      type: object
      description: |2
        If the Ovf descriptor has an unsupported element where it is not allowed.
      properties:
        name:
          description: |2
            The name of the unsupported element
          type: string
      required:
        - name
      allOf:
        - $ref: '#/components/schemas/OvfUnsupportedPackage'

    ArrayOfOvfUnsupportedElement:
      type: object
      description: |2
        A boxed array of *OvfUnsupportedElement*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/OvfUnsupportedElement'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    OvfUnsupportedElementValue:
      type: object
      description: |2
        If the Ovf descriptor has an unsupported value of a element in the
        OVF descriptor.
      properties:
        value:
          description: |2
            The unsupported element value
          type: string
      required:
        - value
      allOf:
        - $ref: '#/components/schemas/OvfUnsupportedElement'

    ArrayOfOvfUnsupportedElementValue:
      type: object
      description: |2
        A boxed array of *OvfUnsupportedElementValue*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/OvfUnsupportedElementValue'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    OvfUnsupportedPackage:
      type: object
      description: |2
        A common base class to host all the Ovf Lib Unsupported Package faults
      properties:
        lineNumber:
          description: |2
            OVF descriptor linenumber
          type: integer
          format: int32
      allOf:
        - $ref: '#/components/schemas/OvfFault'

    ArrayOfOvfUnsupportedPackage:
      type: object
      description: |2
        A boxed array of *OvfUnsupportedPackage*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/OvfUnsupportedPackage'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    OvfUnsupportedSection:
      type: object
      description: |2
        If the Ovf descriptor has an unsupported required section.
      properties:
        info:
          description: |2
            The info of the unsupported section
          type: string
      required:
        - info
      allOf:
        - $ref: '#/components/schemas/OvfUnsupportedElement'

    ArrayOfOvfUnsupportedSection:
      type: object
      description: |2
        A boxed array of *OvfUnsupportedSection*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/OvfUnsupportedSection'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    OvfUnsupportedSubType:
      type: object
      properties:
        elementName:
          description: |2
            The name of the element with the unsupported type
          type: string
        instanceId:
          description: |2
            The OVF RASD InstanceId for the hardware description
          type: string
        deviceType:
          description: |2
            The device type
          type: integer
          format: int32
        deviceSubType:
          description: |2
            The device subtype that is unsupported
          type: string
      required:
        - elementName
        - instanceId
        - deviceType
        - deviceSubType
      allOf:
        - $ref: '#/components/schemas/OvfUnsupportedPackage'

    ArrayOfOvfUnsupportedSubType:
      type: object
      description: |2
        A boxed array of *OvfUnsupportedSubType*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/OvfUnsupportedSubType'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    OvfUnsupportedType:
      type: object
      properties:
        name:
          description: |2
            The name of the element with the unsupported type
          type: string
        instanceId:
          description: |2
            The OVF RASD InstanceId for the hardware description
          type: string
        deviceType:
          description: |2
            The device type that is unsupported
          type: integer
          format: int32
      required:
        - name
        - instanceId
        - deviceType
      allOf:
        - $ref: '#/components/schemas/OvfUnsupportedPackage'

    ArrayOfOvfUnsupportedType:
      type: object
      description: |2
        A boxed array of *OvfUnsupportedType*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/OvfUnsupportedType'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    OvfWrongElement:
      type: object
      description: |2
        If the Ovf descriptor has an element that is not accepted, this exception is thrown.
      allOf:
        - $ref: '#/components/schemas/OvfElement'

    ArrayOfOvfWrongElement:
      type: object
      description: |2
        A boxed array of *OvfWrongElement*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/OvfWrongElement'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    OvfWrongNamespace:
      type: object
      description: |2
        A OvfWrongNamespace exception is throw if the ovf descriptor has a
        Namespace error as defined in the Ovf spec
      properties:
        namespaceName:
          description: |2
            The name of the invalid namespace
          type: string
      required:
        - namespaceName
      allOf:
        - $ref: '#/components/schemas/OvfInvalidPackage'

    ArrayOfOvfWrongNamespace:
      type: object
      description: |2
        A boxed array of *OvfWrongNamespace*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/OvfWrongNamespace'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    OvfXmlFormat:
      type: object
      description: |2
        Class used to specify if the Ovf XML descriptor could not be parsed
      properties:
        description:
          description: |2
            Description of the XML parser error
            
            High level error description
          type: string
      required:
        - description
      allOf:
        - $ref: '#/components/schemas/OvfInvalidPackage'

    ArrayOfOvfXmlFormat:
      type: object
      description: |2
        A boxed array of *OvfXmlFormat*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/OvfXmlFormat'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PasswordExpired:
      type: object
      description: |2
        Thrown when a server login fails due to expired user password.
      allOf:
        - $ref: '#/components/schemas/InvalidLogin'

    ArrayOfPasswordExpired:
      type: object
      description: |2
        A boxed array of *PasswordExpired*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PasswordExpired'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PatchAlreadyInstalled:
      type: object
      description: |2
        This fault is thrown if a patch install fails because the patch
        is already installed on the host.
      allOf:
        - $ref: '#/components/schemas/PatchNotApplicable'

    ArrayOfPatchAlreadyInstalled:
      type: object
      description: |2
        A boxed array of *PatchAlreadyInstalled*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PatchAlreadyInstalled'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PatchBinariesNotFound:
      type: object
      description: |2
        This fault is thrown if a patch install fails
        because the binaries associated with the patch are not found.
      properties:
        patchID:
          description: |2
            The patch whose associated binaries are not found.
          type: string
        binary:
          description: |2
            The binaries that are not found.
          type: array
          items:
            type: string
      required:
        - patchID
      allOf:
        - $ref: '#/components/schemas/VimFault'

    ArrayOfPatchBinariesNotFound:
      type: object
      description: |2
        A boxed array of *PatchBinariesNotFound*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PatchBinariesNotFound'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PatchInstallFailed:
      type: object
      description: |2
        This is a general-purpose fault indicating that some error has
        occurred regarding a patch install.
        
        Data about the fault is
        available and is presented as a platform specific string.
      properties:
        rolledBack:
          description: |2
            Whether or not the patch install has been rolled back.
            
            If not,
            a manual rollback is required.
          type: boolean
      required:
        - rolledBack
      allOf:
        - $ref: '#/components/schemas/PlatformConfigFault'

    ArrayOfPatchInstallFailed:
      type: object
      description: |2
        A boxed array of *PatchInstallFailed*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PatchInstallFailed'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PatchIntegrityError:
      type: object
      description: |2
        This fault is thrown if a patch operation fails because the signature of
        the patch did not check out.
      allOf:
        - $ref: '#/components/schemas/PlatformConfigFault'

    ArrayOfPatchIntegrityError:
      type: object
      description: |2
        A boxed array of *PatchIntegrityError*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PatchIntegrityError'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PatchMetadataCorrupted:
      type: object
      description: |2
        This fault is thrown if the metadata associated with a patch is
        corrupted or unreadable when a patch query or install is attempted.
      allOf:
        - $ref: '#/components/schemas/PatchMetadataInvalid'

    ArrayOfPatchMetadataCorrupted:
      type: object
      description: |2
        A boxed array of *PatchMetadataCorrupted*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PatchMetadataCorrupted'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PatchMetadataInvalid:
      type: object
      description: |2
        This fault is thrown if a patch query or
        installation operation fails because of a problem with the metadata
        associated with the patch.
        
        Typically, a subclass of this exception is
        thrown, indicating a problem such as the metadata is not found or the
        metadata is corrupted.
      properties:
        patchID:
          description: |2
            The patch ID whose associated metadata is invalid.
          type: string
        metaData:
          description: |2
            The metadata file that is not available or corrupted.
          type: array
          items:
            type: string
      required:
        - patchID
      allOf:
        - $ref: '#/components/schemas/VimFault'

    ArrayOfPatchMetadataInvalid:
      type: object
      description: |2
        A boxed array of *PatchMetadataInvalid*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PatchMetadataInvalid'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PatchMetadataNotFound:
      type: object
      description: |2
        This fault is thrown if the metadata associated with a patch is not
        found when a patch query or install is attempted.
      allOf:
        - $ref: '#/components/schemas/PatchMetadataInvalid'

    ArrayOfPatchMetadataNotFound:
      type: object
      description: |2
        A boxed array of *PatchMetadataNotFound*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PatchMetadataNotFound'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PatchMissingDependencies:
      type: object
      description: |2
        This fault is thrown if a patch install fails because the patch
        requires other patches or libraries that are not installed on the host.
      properties:
        prerequisitePatch:
          description: |2
            The ID of required patches.
          type: array
          items:
            type: string
        prerequisiteLib:
          description: |2
            The names of required libraries or RPMs.
          type: array
          items:
            type: string
      allOf:
        - $ref: '#/components/schemas/PatchNotApplicable'

    ArrayOfPatchMissingDependencies:
      type: object
      description: |2
        A boxed array of *PatchMissingDependencies*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PatchMissingDependencies'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PatchNotApplicable:
      type: object
      description: |2
        This fault is thrown if a patch install fails because the patch is not
        applicable to the host.
        
        Typically, a subclass of this exception is
        thrown, indicating a problem such as the patch is superseded, already
        installed, or has dependencies missing, and so on.
      properties:
        patchID:
          description: |2
            The ID of the patch that is not applicable to the host.
          type: string
      required:
        - patchID
      allOf:
        - $ref: '#/components/schemas/VimFault'

    ArrayOfPatchNotApplicable:
      type: object
      description: |2
        A boxed array of *PatchNotApplicable*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PatchNotApplicable'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PatchSuperseded:
      type: object
      description: |2
        This fault is thrown if a patch install fails because the patch is
        superseded by patches already installed.
      properties:
        supersede:
          description: |2
            The patches that supersede this patch.
          type: array
          items:
            type: string
      allOf:
        - $ref: '#/components/schemas/PatchNotApplicable'

    ArrayOfPatchSuperseded:
      type: object
      description: |2
        A boxed array of *PatchSuperseded*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PatchSuperseded'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PhysCompatRDMNotSupported:
      type: object
      description: |2
        The virtual machine is configured with a Raw Disk Mapping in physical compatibility mode.
        
        This mode is not supported on the host.
      allOf:
        - $ref: '#/components/schemas/RDMNotSupported'

    ArrayOfPhysCompatRDMNotSupported:
      type: object
      description: |2
        A boxed array of *PhysCompatRDMNotSupported*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PhysCompatRDMNotSupported'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PlatformConfigFault:
      type: object
      description: |2
        A PlatformConfigFault is a catch-all fault indicating that some error has
        occurred regarding the configuration of the host.
        
        Data about the fault is
        available and will be presented as a platform specific string.
        
        This information carried by this fault cannot be localized. Most likely
        this information will already have been localized to the locale of the
        server that generated this fault. Where possible, a more specific fault
        will be thrown.
      properties:
        text:
          description: |2
            Platform specific text string describing this error.
          type: string
      required:
        - text
      allOf:
        - $ref: '#/components/schemas/HostConfigFault'

    ArrayOfPlatformConfigFault:
      type: object
      description: |2
        A boxed array of *PlatformConfigFault*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PlatformConfigFault'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PowerOnFtSecondaryFailed:
      type: object
      description: |2
        The PowerOnFtSecondaryFailed fault is thrown when the system is unable to
        power on a Fault Tolerance secondary virtual machine.
        
        It includes a list
        of failures on different hosts.
      properties:
        vm:
          description: |2
            The primary virtual machine corresponding to the secondary that is to
            be powered on
            
            Refers instance of *VirtualMachine*.
          $ref: '#/components/schemas/ManagedObjectReference'
        vmName:
          description: |2
            The name of the primary virtual machine corresponding to the secondary
            that is to be powered on.
          type: string
        hostSelectionBy:
          description: |2
            The host selection type
          $ref: '#/components/schemas/FtIssuesOnHostHostSelectionType_enum'
        hostErrors:
          description: |2
            Information on why the system can not power on a Fault Tolerance
            secondary virtual machine on specific hosts.
            
            Everything in the array
            should be FtIssuesOnHost.
          type: array
          items:
            $ref: '#/components/schemas/MethodFault'
        rootCause:
          description: |2
            The reason why powering on secondary failed.
          $ref: '#/components/schemas/MethodFault'
      required:
        - vm
        - vmName
        - hostSelectionBy
        - rootCause
      allOf:
        - $ref: '#/components/schemas/VmFaultToleranceIssue'

    ArrayOfPowerOnFtSecondaryFailed:
      type: object
      description: |2
        A boxed array of *PowerOnFtSecondaryFailed*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PowerOnFtSecondaryFailed'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PowerOnFtSecondaryTimedout:
      type: object
      description: |2
        PowerOnFtSecondaryTimedout exception is thrown when Virtual Center
        fails the operation to power on a Fault Tolerance secondary virtual
        machine because it is taking longer than expected.
      properties:
        vm:
          description: |2
            The primary virtual machine corresponding to the secondary that is to
            be powered on
            
            Refers instance of *VirtualMachine*.
          $ref: '#/components/schemas/ManagedObjectReference'
        vmName:
          description: |2
            The name of the primary virtual machine corresponding to the secondary
            that is to be powered on.
          type: string
        timeout:
          description: |2
            The time out value in seconds
          type: integer
          format: int32
      required:
        - vm
        - vmName
        - timeout
      allOf:
        - $ref: '#/components/schemas/Timedout'

    ArrayOfPowerOnFtSecondaryTimedout:
      type: object
      description: |2
        A boxed array of *PowerOnFtSecondaryTimedout*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PowerOnFtSecondaryTimedout'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ProfileUpdateFailed:
      type: object
      description: |2
        Errors were detected during Profile update.
      properties:
        failure:
          description: |2
            Failures encountered during update/validation
          type: array
          items:
            $ref: '#/components/schemas/ProfileUpdateFailedUpdateFailure'
        warnings:
          description: |2
            Warnings encountered during update/validation
          type: array
          items:
            $ref: '#/components/schemas/ProfileUpdateFailedUpdateFailure'
      required:
        - failure
      allOf:
        - $ref: '#/components/schemas/VimFault'

    ArrayOfProfileUpdateFailed:
      type: object
      description: |2
        A boxed array of *ProfileUpdateFailed*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ProfileUpdateFailed'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ProfileUpdateFailedUpdateFailure:
      type: object
      properties:
        profilePath:
          description: |2
            Location in the profile which has the error
          $ref: '#/components/schemas/ProfilePropertyPath'
        errMsg:
          description: |2
            Message which explains the problem encountered
          $ref: '#/components/schemas/LocalizableMessage'
      required:
        - profilePath
        - errMsg
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfProfileUpdateFailedUpdateFailure:
      type: object
      description: |2
        A boxed array of *ProfileUpdateFailedUpdateFailure*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ProfileUpdateFailedUpdateFailure'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    QuarantineModeFault:
      type: object
      properties:
        vmName:
          type: string
        faultType:
          type: string
      required:
        - vmName
        - faultType
      allOf:
        - $ref: '#/components/schemas/VmConfigFault'

    ArrayOfQuarantineModeFault:
      type: object
      description: |2
        A boxed array of *QuarantineModeFault*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/QuarantineModeFault'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    QuestionPending:
      type: object
      description: |2
        Thrown when an operation cannot be performed on a virtual machine
        because it has a pending question requiring user input.
      properties:
        text:
          description: |2
            Text of the question from the virtual machine.
          type: string
      required:
        - text
      allOf:
        - $ref: '#/components/schemas/InvalidState'

    ArrayOfQuestionPending:
      type: object
      description: |2
        A boxed array of *QuestionPending*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/QuestionPending'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    QuiesceDatastoreIOForHAFailed:
      type: object
      description: |2
        A QuiesceDatastoreIOForHAFailed fault occurs when the HA agent on a host
        cannot quiesce file activity on a datastore to be unmouonted or removed.
      properties:
        host:
          description: |2
            The host.
            
            Refers instance of *HostSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
        hostName:
          description: |2
            Name of the host.
          type: string
        ds:
          description: |2
            The datastore.
            
            Refers instance of *Datastore*.
          $ref: '#/components/schemas/ManagedObjectReference'
        dsName:
          description: |2
            Name of the datastore.
          type: string
      required:
        - host
        - hostName
        - ds
        - dsName
      allOf:
        - $ref: '#/components/schemas/ResourceInUse'

    ArrayOfQuiesceDatastoreIOForHAFailed:
      type: object
      description: |2
        A boxed array of *QuiesceDatastoreIOForHAFailed*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/QuiesceDatastoreIOForHAFailed'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    RDMConversionNotSupported:
      type: object
      description: |2
        The virtual machine is using an RDM device with compatibility
        mode set to 'physicalMode' and operation is unable to convert
        the disk to a different type.
      properties:
        device:
          description: |2
            The name of the disk device using the RDM.
          type: string
      required:
        - device
      allOf:
        - $ref: '#/components/schemas/MigrationFault'

    ArrayOfRDMConversionNotSupported:
      type: object
      description: |2
        A boxed array of *RDMConversionNotSupported*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/RDMConversionNotSupported'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    RDMNotPreserved:
      type: object
      description: |2
        The virtual machine is configured with a Raw Disk Mapping.
        
        The host only supports Raw
        Disk Mappings in a limited fashion. After the migration, the RDM will function correctly,
        but it will be indistinguishable from a virtual disk when viewing the virtual machine's
        properties. This change will persist even if the virtual machine is migrated
        back to a host with full RDM support.
        
        This is a warning only for migrations to ESX 2.1.x hosts.
      properties:
        device:
          description: |2
            The name of the disk device using the RDM.
          type: string
      required:
        - device
      allOf:
        - $ref: '#/components/schemas/MigrationFault'

    ArrayOfRDMNotPreserved:
      type: object
      description: |2
        A boxed array of *RDMNotPreserved*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/RDMNotPreserved'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    RDMNotSupported:
      type: object
      description: |2
        The virtual machine is configured with a Raw Disk Mapping.
        
        This is not
        supported on the host.
      allOf:
        - $ref: '#/components/schemas/DeviceNotSupported'

    ArrayOfRDMNotSupported:
      type: object
      description: |2
        A boxed array of *RDMNotSupported*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/RDMNotSupported'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    RDMNotSupportedOnDatastore:
      type: object
      description: |2
        The virtual machine is configured with a Raw Disk Mapping.
        
        This is not
        supported on the datastore.
      properties:
        device:
          description: |2
            The label of the RDM device that would have its backing placed on
            the datastore.
            
            This is not guaranteed to be the only such device.
          type: string
        datastore:
          description: |2
            The datastore.
            
            Refers instance of *Datastore*.
          $ref: '#/components/schemas/ManagedObjectReference'
        datastoreName:
          description: |2
            The name of the datastore.
          type: string
      required:
        - device
        - datastore
        - datastoreName
      allOf:
        - $ref: '#/components/schemas/VmConfigFault'

    ArrayOfRDMNotSupportedOnDatastore:
      type: object
      description: |2
        A boxed array of *RDMNotSupportedOnDatastore*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/RDMNotSupportedOnDatastore'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    RDMPointsToInaccessibleDisk:
      type: object
      description: |2
        One of the virtual machine's virtual disks is a Raw Disk Mapping
        that is itself accessible, but points to a LUN that is inaccessible.
      allOf:
        - $ref: '#/components/schemas/CannotAccessVmDisk'

    ArrayOfRDMPointsToInaccessibleDisk:
      type: object
      description: |2
        A boxed array of *RDMPointsToInaccessibleDisk*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/RDMPointsToInaccessibleDisk'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    RawDiskNotSupported:
      type: object
      description: |2
        The virtual machine has a raw disk attached that is not supported.
        
        This is often
        used as a subfault for DisallowedMigrationDeviceAttached or
        DisallowedSnapshotDeviceAttached.
      allOf:
        - $ref: '#/components/schemas/DeviceNotSupported'

    ArrayOfRawDiskNotSupported:
      type: object
      description: |2
        A boxed array of *RawDiskNotSupported*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/RawDiskNotSupported'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ReadHostResourcePoolTreeFailed:
      type: object
      description: |2
        Fault thrown on host connect if we were unable to correctly read the
        existing tree on the root.
        
        This is bad because then we don't know the
        available resources on the host, and all kinds of admission control will
        fail.
        This just allows for more robust error handling - we should be able to
        read the existing hierarchy under normal conditions.
      allOf:
        - $ref: '#/components/schemas/HostConnectFault'

    ArrayOfReadHostResourcePoolTreeFailed:
      type: object
      description: |2
        A boxed array of *ReadHostResourcePoolTreeFailed*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ReadHostResourcePoolTreeFailed'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ReadOnlyDisksWithLegacyDestination:
      type: object
      description: |2
        The virtual machine uses read-only (undoable or nonpersistent) disks that
        can cause a slower power on at the migration destination.
        
        As a result, VMtion
        could slow down considerably or timeout. This is an issue only for migration of
        powered-on virtual machines from an ESX host with version greater
        than 2.0.x to an ESX host with version 2.0.x. It will be an error if the
        number of such disks is great enough to cause timeout ( &ge; 3 ), or a warning
        otherwise.
      properties:
        roDiskCount:
          description: |2
            The number of read-only disks in use.
          type: integer
          format: int32
        timeoutDanger:
          description: |2
            Whether this number of disks will cause a timeout failure.
          type: boolean
      required:
        - roDiskCount
        - timeoutDanger
      allOf:
        - $ref: '#/components/schemas/MigrationFault'

    ArrayOfReadOnlyDisksWithLegacyDestination:
      type: object
      description: |2
        A boxed array of *ReadOnlyDisksWithLegacyDestination*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ReadOnlyDisksWithLegacyDestination'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    RebootRequired:
      type: object
      description: |2
        This fault is thrown if a patch install fails because an installed
        nonchainable patch has not taken effect.
      properties:
        patch:
          description: |2
            The nonchainable patch installed.
          type: string
      allOf:
        - $ref: '#/components/schemas/VimFault'

    ArrayOfRebootRequired:
      type: object
      description: |2
        A boxed array of *RebootRequired*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/RebootRequired'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    RecordReplayDisabled:
      type: object
      deprecated: true
      description: |2
        Deprecated as of vSphere API 6.0.
        
        Fault thrown if a record or replay operation cannot be performed
        because these capabilities have been disabled on the virtual machine.
      allOf:
        - $ref: '#/components/schemas/VimFault'

    ArrayOfRecordReplayDisabled:
      type: object
      description: |2
        A boxed array of *RecordReplayDisabled*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/RecordReplayDisabled'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    RemoteDeviceNotSupported:
      type: object
      description: |2
        The virtual machine has a currently connected device with a remote backing.
        
        This is an error when migrating a powered-on virtual machine, and can be returned
        as a subfault of DisallowedMigrationDeviceAttached.
      allOf:
        - $ref: '#/components/schemas/DeviceNotSupported'

    ArrayOfRemoteDeviceNotSupported:
      type: object
      description: |2
        A boxed array of *RemoteDeviceNotSupported*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/RemoteDeviceNotSupported'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    RemoveFailed:
      type: object
      description: |2
        This fault is thrown when the client attempts to remove an object that has
        active related objects (for example, a role that has active permissions).
      allOf:
        - $ref: '#/components/schemas/VimFault'

    ArrayOfRemoveFailed:
      type: object
      description: |2
        A boxed array of *RemoveFailed*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/RemoveFailed'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ReplicationConfigFault:
      type: object
      description: |2
        Base type for Replication-related configuration errors.
      allOf:
        - $ref: '#/components/schemas/ReplicationFault'

    ArrayOfReplicationConfigFault:
      type: object
      description: |2
        A boxed array of *ReplicationConfigFault*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ReplicationConfigFault'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ReplicationDiskConfigFault:
      type: object
      description: |2
        A ReplicationDiskConfigFault is thrown when there is an issue with
        configuring disk replication properties.
      properties:
        reason:
          description: |2
            The reason for the failure.
            
            One of the above.
          type: string
        vmRef:
          description: |2
            The virtual machine, for identification purposes.
            
            Refers instance of *VirtualMachine*.
          $ref: '#/components/schemas/ManagedObjectReference'
        key:
          description: |2
            The disk (device) key in the parent VM for identification
            purposes.
          type: integer
          format: int32
      allOf:
        - $ref: '#/components/schemas/ReplicationConfigFault'

    ArrayOfReplicationDiskConfigFault:
      type: object
      description: |2
        A boxed array of *ReplicationDiskConfigFault*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ReplicationDiskConfigFault'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ReplicationFault:
      type: object
      description: |2
        Base type for Replication-related errors.
      allOf:
        - $ref: '#/components/schemas/VimFault'

    ArrayOfReplicationFault:
      type: object
      description: |2
        A boxed array of *ReplicationFault*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ReplicationFault'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ReplicationIncompatibleWithFT:
      type: object
      description: |2
        Used to indicate that FT cannot be enabled on a replicated virtual machine
        (returned by *VirtualMachine.QueryFaultToleranceCompatibility*).
      allOf:
        - $ref: '#/components/schemas/ReplicationFault'

    ArrayOfReplicationIncompatibleWithFT:
      type: object
      description: |2
        A boxed array of *ReplicationIncompatibleWithFT*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ReplicationIncompatibleWithFT'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ReplicationInvalidOptions:
      type: object
      description: |2
        A ReplicationInvalidOptions fault is thrown when the options
        string passed contains invalid characters or broken format.
      properties:
        options:
          description: |2
            The invalid options string.
          type: string
        entity:
          description: |2
            Entity, if any, that has invalid options.
            
            Refers instance of *ManagedEntity*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - options
      allOf:
        - $ref: '#/components/schemas/ReplicationFault'

    ArrayOfReplicationInvalidOptions:
      type: object
      description: |2
        A boxed array of *ReplicationInvalidOptions*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ReplicationInvalidOptions'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ReplicationNotSupportedOnHost:
      type: object
      description: |2
        Thrown if the replication module is not loaded in the host.
      allOf:
        - $ref: '#/components/schemas/ReplicationFault'

    ArrayOfReplicationNotSupportedOnHost:
      type: object
      description: |2
        A boxed array of *ReplicationNotSupportedOnHost*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ReplicationNotSupportedOnHost'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ReplicationVmConfigFault:
      type: object
      description: |2
        A ReplicationVmConfigFault is thrown when there is an issue with
        configuring VM-wide replication properties.
      properties:
        reason:
          description: |2
            The reason for the failure.
            
            One of the above *ReplicationVmConfigFaultReasonForFault_enum*.
          type: string
        vmRef:
          description: |2
            The virtual machine, for identification purposes.
            
            Refers instance of *VirtualMachine*.
          $ref: '#/components/schemas/ManagedObjectReference'
      allOf:
        - $ref: '#/components/schemas/ReplicationConfigFault'

    ArrayOfReplicationVmConfigFault:
      type: object
      description: |2
        A boxed array of *ReplicationVmConfigFault*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ReplicationVmConfigFault'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ReplicationVmFault:
      type: object
      description: |2
        A ReplicationVmFault is thrown when there is an issue with
        an operation performed on a replicated *VirtualMachine*
      properties:
        reason:
          description: |2
            The reason for the failure.
            
            One of the above.
          type: string
        state:
          description: |2
            The current *ReplicationVmState_enum* of the
            *VirtualMachine*
          type: string
        instanceId:
          description: |2
            The name of the instance currently being created.
          type: string
        vm:
          description: |2
            The virtual machine, for identification purposes.
            
            Refers instance of *VirtualMachine*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - reason
        - vm
      allOf:
        - $ref: '#/components/schemas/ReplicationFault'

    ArrayOfReplicationVmFault:
      type: object
      description: |2
        A boxed array of *ReplicationVmFault*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ReplicationVmFault'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ReplicationVmInProgressFault:
      type: object
      description: |2
        A ReplicationVmInProgressFault is thrown when a replication operation
        failed to perform on a *VirtualMachine* because the VM is
        in the middle of another replication activity.
      properties:
        requestedActivity:
          description: |2
            The requsted activity for VM replication
          type: string
        inProgressActivity:
          description: |2
            The in-progress activity for VM replication
          type: string
      required:
        - requestedActivity
        - inProgressActivity
      allOf:
        - $ref: '#/components/schemas/ReplicationVmFault'

    ArrayOfReplicationVmInProgressFault:
      type: object
      description: |2
        A boxed array of *ReplicationVmInProgressFault*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ReplicationVmInProgressFault'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ResourceInUse:
      type: object
      description: |2
        A ResourceInUse fault indicating that some error has occurred because a
        resource was in use.
        
        Information about the resource that is in use may
        be supplied.
      properties:
        type:
          description: |2
            Type of resource that is in use.
          type: string
        name:
          description: |2
            Name of the instance of the resource that is in use.
          type: string
      allOf:
        - $ref: '#/components/schemas/VimFault'

    ArrayOfResourceInUse:
      type: object
      description: |2
        A boxed array of *ResourceInUse*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ResourceInUse'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ResourceNotAvailable:
      type: object
      description: |2
        A ResourceNotAvailable fault indicating that some error has occurred because a
        resource was not available.
        
        Information about the resource that is in use may
        be supplied.
      properties:
        containerType:
          description: |2
            Type of container that contains the resource.
          type: string
        containerName:
          description: |2
            Name of container that contains the resource.
            
            .
          type: string
        type:
          description: |2
            Type of resource that is not available.
          type: string
      allOf:
        - $ref: '#/components/schemas/VimFault'

    ArrayOfResourceNotAvailable:
      type: object
      description: |2
        A boxed array of *ResourceNotAvailable*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ResourceNotAvailable'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    RestrictedByAdministrator:
      type: object
      description: |2
        This fault is thrown when an operation cannot complete because of some
        restriction set by the server administrator.
      properties:
        details:
          type: string
      required:
        - details
      allOf:
        - $ref: '#/components/schemas/RuntimeFault'

    ArrayOfRestrictedByAdministrator:
      type: object
      description: |2
        A boxed array of *RestrictedByAdministrator*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/RestrictedByAdministrator'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    RestrictedVersion:
      type: object
      description: |2
        Thrown when the caller is not permitted to perform the specified
        operation due to product versioning restrictions.
      allOf:
        - $ref: '#/components/schemas/SecurityError'

    ArrayOfRestrictedVersion:
      type: object
      description: |2
        A boxed array of *RestrictedVersion*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/RestrictedVersion'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    RollbackFailure:
      type: object
      description: |2
        Thrown if a Rollback operation fails
      properties:
        entityName:
          description: |2
            The entity name on which rollback failed
          type: string
        entityType:
          description: |2
            The entity type on which rollback failed
          type: string
      required:
        - entityName
        - entityType
      allOf:
        - $ref: '#/components/schemas/DvsFault'

    ArrayOfRollbackFailure:
      type: object
      description: |2
        A boxed array of *RollbackFailure*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/RollbackFailure'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    RuleViolation:
      type: object
      description: |2
        The virtual machine if powered on, would violate an
        affinity/anti-affinity rule.
        
        In this case, the VM can still be powered
        on manually by a user who knows what they are doing, but VirtualCenter
        will never automatically move or power on a VM such that it triggers
        the violation.
      properties:
        host:
          description: |2
            The host that the virtual machine can not be powered on without
            violate a rule.
            
            Refers instance of *HostSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
        rule:
          description: |2
            The rule that is violated.
            
            It can be an affinity or anti-affinity rule.
          $ref: '#/components/schemas/ClusterRuleInfo'
      required:
        - rule
      allOf:
        - $ref: '#/components/schemas/VmConfigFault'

    ArrayOfRuleViolation:
      type: object
      description: |2
        A boxed array of *RuleViolation*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/RuleViolation'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    SSLDisabledFault:
      type: object
      description: |2
        A SSLDisabledFault fault occurs when a host does not have ssl enabled.
      allOf:
        - $ref: '#/components/schemas/HostConnectFault'

    ArrayOfSSLDisabledFault:
      type: object
      description: |2
        A boxed array of *SSLDisabledFault*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/SSLDisabledFault'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    SSLVerifyFault:
      type: object
      description: |2
        SSLVerifyFault is thrown by the host connect method if the VC
        server could not verify the authenticity of the host's SSL
        certificate.
        
        Currently, we do not distinguish the various possible reasons why
        the certificate could not be verified because we don't provide a
        way for the user to overwrite these reasons other than turning off
        SSL certificate verification completely.
        The only exception is the case when the certificate was rejected
        because it was self-signed. This is the most likely case when the
        user may want to overwrite the behavior by specifying the
        certificate's thumbprint in the ConnectSpec the next time the user
        connects to the host.
      properties:
        selfSigned:
          description: |2
            Whether the host's certificate was self signed
          type: boolean
        thumbprint:
          description: |2
            The thumbprint of the host's certificate.
            
            This field is optional since vSphere 8.0u2.
          type: string
      required:
        - selfSigned
      allOf:
        - $ref: '#/components/schemas/HostConnectFault'

    ArrayOfSSLVerifyFault:
      type: object
      description: |2
        A boxed array of *SSLVerifyFault*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/SSLVerifyFault'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    SSPIChallenge:
      type: object
      description: |2
        Thrown during SSPI pass-through authentication if further
        negotiation is required.
      properties:
        base64Token:
          description: |2
            The opaque server response token, base-64 encoded.
          type: string
      required:
        - base64Token
      allOf:
        - $ref: '#/components/schemas/VimFault'

    ArrayOfSSPIChallenge:
      type: object
      description: |2
        A boxed array of *SSPIChallenge*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/SSPIChallenge'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    SecondaryVmAlreadyDisabled:
      type: object
      description: |2
        This fault is thrown when an attempt is made to disable a secondary
        virtual machine that has already been disabled.
      properties:
        instanceUuid:
          description: |2
            Instance UUID of the secondary virtual machine.
          type: string
      required:
        - instanceUuid
      allOf:
        - $ref: '#/components/schemas/VmFaultToleranceIssue'

    ArrayOfSecondaryVmAlreadyDisabled:
      type: object
      description: |2
        A boxed array of *SecondaryVmAlreadyDisabled*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/SecondaryVmAlreadyDisabled'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    SecondaryVmAlreadyEnabled:
      type: object
      description: |2
        This fault is thrown when an attempt is made to enable a secondary
        virtual machine that has already been enabled.
      properties:
        instanceUuid:
          description: |2
            Instance UUID of the secondary virtual machine.
          type: string
      required:
        - instanceUuid
      allOf:
        - $ref: '#/components/schemas/VmFaultToleranceIssue'

    ArrayOfSecondaryVmAlreadyEnabled:
      type: object
      description: |2
        A boxed array of *SecondaryVmAlreadyEnabled*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/SecondaryVmAlreadyEnabled'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    SecondaryVmAlreadyRegistered:
      type: object
      description: |2
        This fault is thrown when an attempt is made to register a secondary
        virtual machine with a primary virtual machine with whom it is
        already registered.
      properties:
        instanceUuid:
          description: |2
            Instance UUID of the secondary virtual machine.
          type: string
      required:
        - instanceUuid
      allOf:
        - $ref: '#/components/schemas/VmFaultToleranceIssue'

    ArrayOfSecondaryVmAlreadyRegistered:
      type: object
      description: |2
        A boxed array of *SecondaryVmAlreadyRegistered*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/SecondaryVmAlreadyRegistered'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    SecondaryVmNotRegistered:
      type: object
      description: |2
        This fault is thrown when an attempt is made to unregister a secondary
        virtual machine from a primary virtual machine with whom it has not
        been previously registered.
      properties:
        instanceUuid:
          description: |2
            Instance UUID of the secondary virtual machine.
          type: string
      required:
        - instanceUuid
      allOf:
        - $ref: '#/components/schemas/VmFaultToleranceIssue'

    ArrayOfSecondaryVmNotRegistered:
      type: object
      description: |2
        A boxed array of *SecondaryVmNotRegistered*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/SecondaryVmNotRegistered'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    SharedBusControllerNotSupported:
      type: object
      description: |2
        The virtual machine has one or more SCSI controllers that are engaged
        in bus sharing.
        
        This is an error when migrating a powered-on virtual machine,
        and can be returned as a subfault of DisallowedMigrationDeviceAttached.
      allOf:
        - $ref: '#/components/schemas/DeviceNotSupported'

    ArrayOfSharedBusControllerNotSupported:
      type: object
      description: |2
        A boxed array of *SharedBusControllerNotSupported*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/SharedBusControllerNotSupported'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ShrinkDiskFault:
      type: object
      description: |2
        This exception is thrown when VirtualMachine.shrinkDisk
        encounters an error
      properties:
        diskId:
          description: |2
            Disk Id of the virtual disk that caused the fault
          type: integer
          format: int32
      allOf:
        - $ref: '#/components/schemas/VimFault'

    ArrayOfShrinkDiskFault:
      type: object
      description: |2
        A boxed array of *ShrinkDiskFault*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ShrinkDiskFault'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    SnapshotCloneNotSupported:
      type: object
      description: |2
        An attempt is being made to copy a virtual machine's disk that has
        associated snapshots, and preserving the snapshots is not supported by the
        host under any circumstances.
        
        This is a warning.
      allOf:
        - $ref: '#/components/schemas/SnapshotCopyNotSupported'

    ArrayOfSnapshotCloneNotSupported:
      type: object
      description: |2
        A boxed array of *SnapshotCloneNotSupported*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/SnapshotCloneNotSupported'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    SnapshotCopyNotSupported:
      type: object
      description: |2
        An attempt is being made to move or copy a virtual machine's disk that has
        associated snapshots, and preserving the snapshots is not supported
        because of some aspect of the virtual machine configuration, virtual
        machine power state, or the requested disk placement.
        
        This is an error
        for move operations (where the source is deleted after the copy) and a
        warning for clones (where the source is preserved).
      allOf:
        - $ref: '#/components/schemas/MigrationFault'

    ArrayOfSnapshotCopyNotSupported:
      type: object
      description: |2
        A boxed array of *SnapshotCopyNotSupported*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/SnapshotCopyNotSupported'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    SnapshotDisabled:
      type: object
      description: |2
        Fault thrown if a snapshot operation cannot be performed because
        snapshots are disabled on the virtual machine.
      allOf:
        - $ref: '#/components/schemas/SnapshotFault'

    ArrayOfSnapshotDisabled:
      type: object
      description: |2
        A boxed array of *SnapshotDisabled*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/SnapshotDisabled'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    SnapshotFault:
      type: object
      description: |2
        Base type for Snapshot-related errors.
      allOf:
        - $ref: '#/components/schemas/VimFault'

    ArrayOfSnapshotFault:
      type: object
      description: |2
        A boxed array of *SnapshotFault*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/SnapshotFault'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    SnapshotIncompatibleDeviceInVm:
      type: object
      description: |2
        Thrown if a snapshot operation cannot be performed on account
        of an incompatible device.
        
        This fault can be thrown for instance
        if a virtual machine uses a raw disk or a shared bus controller.
      properties:
        fault:
          description: |2
            A fault specifies the particular device issue.
            
            This is typically
            a subclass of VirtualHardwareCompatibilityIssue, such as
            RawDiskNotSupported, or SharedBusControllerNotSupported.
          $ref: '#/components/schemas/MethodFault'
      required:
        - fault
      allOf:
        - $ref: '#/components/schemas/SnapshotFault'

    ArrayOfSnapshotIncompatibleDeviceInVm:
      type: object
      description: |2
        A boxed array of *SnapshotIncompatibleDeviceInVm*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/SnapshotIncompatibleDeviceInVm'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    SnapshotLocked:
      type: object
      description: |2
        Fault thrown when an attempt is made to create or delete a snapshot on a
        virtual machine that has its snapshot locked.
      allOf:
        - $ref: '#/components/schemas/SnapshotFault'

    ArrayOfSnapshotLocked:
      type: object
      description: |2
        A boxed array of *SnapshotLocked*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/SnapshotLocked'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    SnapshotMoveFromNonHomeNotSupported:
      type: object
      description: |2
        An attempt is being made to move a virtual machine's disk that has
        associated snapshots, and preserving the snapshots is not supported by the
        host because the disk is currently located somewhere other than the virtual
        machine's home datastore.
      allOf:
        - $ref: '#/components/schemas/SnapshotCopyNotSupported'

    ArrayOfSnapshotMoveFromNonHomeNotSupported:
      type: object
      description: |2
        A boxed array of *SnapshotMoveFromNonHomeNotSupported*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/SnapshotMoveFromNonHomeNotSupported'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    SnapshotMoveNotSupported:
      type: object
      description: |2
        An attempt is being made to move a virtual machine's disk that has
        associated snapshots, and preserving the snapshots is not supported by the
        host under any circumstances.
      allOf:
        - $ref: '#/components/schemas/SnapshotCopyNotSupported'

    ArrayOfSnapshotMoveNotSupported:
      type: object
      description: |2
        A boxed array of *SnapshotMoveNotSupported*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/SnapshotMoveNotSupported'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    SnapshotMoveToNonHomeNotSupported:
      type: object
      description: |2
        An attempt is being made to move a virtual machine's disk that has
        associated snapshots, and preserving the snapshots is not supported by the
        host because the disk is being moved to some location other than the new
        home datastore for the virtual machine.
      allOf:
        - $ref: '#/components/schemas/SnapshotCopyNotSupported'

    ArrayOfSnapshotMoveToNonHomeNotSupported:
      type: object
      description: |2
        A boxed array of *SnapshotMoveToNonHomeNotSupported*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/SnapshotMoveToNonHomeNotSupported'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    SnapshotNoChange:
      type: object
      description: |2
        This fault is for a snapshot request on a virtual machine whose state
        has not changed since a previous successful snapshot.
        
        For example, this
        occurs when you suspend the virtual machine, create a snapshot, and
        then request another snapshot of the suspended virtual machine.
      allOf:
        - $ref: '#/components/schemas/SnapshotFault'

    ArrayOfSnapshotNoChange:
      type: object
      description: |2
        A boxed array of *SnapshotNoChange*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/SnapshotNoChange'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    SnapshotRevertIssue:
      type: object
      description: |2
        If the virtual machine is migrated to the destination host, there may be
        a problem reverting to one of its snapshots.
        
        This is a warning. If the
        snapshot name is not set and the event array is empty, then it the snapshot
        might possibly revert correctly. If the name is set and the event array is not
        empty then there surely will be a problem reverting to the snapshot.
      properties:
        snapshotName:
          description: |2
            The name of the problematic snapshot.
          type: string
        event:
          description: |2
            The problem(s) that would occur on reverting to the snapshot.
            
            This
            is determined similarly to invoking validateMigration on a powered-off
            virtual machine with the snapshot's state. However, not all errors
            or warnings for virtual machine migration are guaranteed to be
            detected for snapshots.
          type: array
          items:
            $ref: '#/components/schemas/Event'
        errors:
          description: |2
            True if any of the events above are error events.
          type: boolean
      required:
        - errors
      allOf:
        - $ref: '#/components/schemas/MigrationFault'

    ArrayOfSnapshotRevertIssue:
      type: object
      description: |2
        A boxed array of *SnapshotRevertIssue*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/SnapshotRevertIssue'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    SoftRuleVioCorrectionDisallowed:
      type: object
      description: |2
        The current DRS migration priority setting prevents generating
        a recommendation to correct the soft VM/Host affinity rules constraint
        violation for the VM so the violation will not be corrected.
      properties:
        vmName:
          description: |2
            The vm for which the VM/Host soft affinity rules constraint violation
            is not being corrected by DRS.
          type: string
      required:
        - vmName
      allOf:
        - $ref: '#/components/schemas/VmConfigFault'

    ArrayOfSoftRuleVioCorrectionDisallowed:
      type: object
      description: |2
        A boxed array of *SoftRuleVioCorrectionDisallowed*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/SoftRuleVioCorrectionDisallowed'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    SoftRuleVioCorrectionImpact:
      type: object
      description: |2
        DRS has determined that correcting the soft VM/Host affinity rules
        constraint violation for the VM impacts respecting cluster constraints
        or performance goals so the violation will not be corrected.
      properties:
        vmName:
          description: |2
            The vm for which the VM/Host soft affinity rules constraint violation
            is not being corrected by DRS.
          type: string
      required:
        - vmName
      allOf:
        - $ref: '#/components/schemas/VmConfigFault'

    ArrayOfSoftRuleVioCorrectionImpact:
      type: object
      description: |2
        A boxed array of *SoftRuleVioCorrectionImpact*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/SoftRuleVioCorrectionImpact'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    SolutionUserRequired:
      type: object
      description: |2
        Thrown when an operation is denied because the entity
        invoking it is not a Solution User.
      allOf:
        - $ref: '#/components/schemas/SecurityError'

    ArrayOfSolutionUserRequired:
      type: object
      description: |2
        A boxed array of *SolutionUserRequired*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/SolutionUserRequired'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    SsdDiskNotAvailable:
      type: object
      description: |2
        A SsdDiskNotAvailable fault indicating that the specified SSD
        disk is not available.
        
        The disk either has been used or not a
        SSD disk.
      properties:
        devicePath:
          description: |2
            The device path of the disk.
            
            See also *HostScsiDisk.devicePath*.
          type: string
      required:
        - devicePath
      allOf:
        - $ref: '#/components/schemas/VimFault'

    ArrayOfSsdDiskNotAvailable:
      type: object
      description: |2
        A boxed array of *SsdDiskNotAvailable*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/SsdDiskNotAvailable'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    StorageDrsCannotMoveDiskInMultiWriterMode:
      type: object
      description: |2
        This fault is thrown because Storage DRS cannot generate recommendations
        to relocate one or more virtual disks of a VM because the disk has
        multi-writer mode enabled.
      allOf:
        - $ref: '#/components/schemas/VimFault'

    ArrayOfStorageDrsCannotMoveDiskInMultiWriterMode:
      type: object
      description: |2
        A boxed array of *StorageDrsCannotMoveDiskInMultiWriterMode*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/StorageDrsCannotMoveDiskInMultiWriterMode'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    StorageDrsCannotMoveFTVm:
      type: object
      description: |2
        This fault is thrown because Storage DRS cannot generate recommendations
        to relocate Fault Tolerant VMs across datastores.
      allOf:
        - $ref: '#/components/schemas/VimFault'

    ArrayOfStorageDrsCannotMoveFTVm:
      type: object
      description: |2
        A boxed array of *StorageDrsCannotMoveFTVm*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/StorageDrsCannotMoveFTVm'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    StorageDrsCannotMoveIndependentDisk:
      type: object
      description: |2
        This fault is thrown because Storage DRS cannot generate recommendations
        to relocate an independent disk.
      allOf:
        - $ref: '#/components/schemas/VimFault'

    ArrayOfStorageDrsCannotMoveIndependentDisk:
      type: object
      description: |2
        A boxed array of *StorageDrsCannotMoveIndependentDisk*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/StorageDrsCannotMoveIndependentDisk'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    StorageDrsCannotMoveManuallyPlacedSwapFile:
      type: object
      description: |2
        This fault is thrown because Storage DRS cannot generate recommendations
        to relocate VM because it has a manually selected fixed location for its
        swap file.
      allOf:
        - $ref: '#/components/schemas/VimFault'

    ArrayOfStorageDrsCannotMoveManuallyPlacedSwapFile:
      type: object
      description: |2
        A boxed array of *StorageDrsCannotMoveManuallyPlacedSwapFile*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/StorageDrsCannotMoveManuallyPlacedSwapFile'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    StorageDrsCannotMoveManuallyPlacedVm:
      type: object
      description: |2
        This fault is thrown because Storage DRS cannot generate recommendations
        to relocate a Vm that is placed by user to a specific datastore.
      allOf:
        - $ref: '#/components/schemas/VimFault'

    ArrayOfStorageDrsCannotMoveManuallyPlacedVm:
      type: object
      description: |2
        A boxed array of *StorageDrsCannotMoveManuallyPlacedVm*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/StorageDrsCannotMoveManuallyPlacedVm'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    StorageDrsCannotMoveSharedDisk:
      type: object
      description: |2
        This fault is thrown because Storage DRS cannot generate recommendations
        to relocate a shared virtual disk that is attached to more than one Vm.
      allOf:
        - $ref: '#/components/schemas/VimFault'

    ArrayOfStorageDrsCannotMoveSharedDisk:
      type: object
      description: |2
        A boxed array of *StorageDrsCannotMoveSharedDisk*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/StorageDrsCannotMoveSharedDisk'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    StorageDrsCannotMoveTemplate:
      type: object
      description: |2
        This fault is thrown because Storage DRS cannot generate recommendations
        to relocate template VMs across datastores.
      allOf:
        - $ref: '#/components/schemas/VimFault'

    ArrayOfStorageDrsCannotMoveTemplate:
      type: object
      description: |2
        A boxed array of *StorageDrsCannotMoveTemplate*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/StorageDrsCannotMoveTemplate'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    StorageDrsCannotMoveVmInUserFolder:
      type: object
      description: |2
        This fault is thrown because Storage DRS cannot generate recommendations
        to relocate VMs placed in user-specified folders.
      allOf:
        - $ref: '#/components/schemas/VimFault'

    ArrayOfStorageDrsCannotMoveVmInUserFolder:
      type: object
      description: |2
        A boxed array of *StorageDrsCannotMoveVmInUserFolder*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/StorageDrsCannotMoveVmInUserFolder'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    StorageDrsCannotMoveVmWithMountedCDROM:
      type: object
      description: |2
        This fault is thrown because Storage DRS cannot generate recommendations
        to relocate VMs that have a CD-ROM device mounted.
      allOf:
        - $ref: '#/components/schemas/VimFault'

    ArrayOfStorageDrsCannotMoveVmWithMountedCDROM:
      type: object
      description: |2
        A boxed array of *StorageDrsCannotMoveVmWithMountedCDROM*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/StorageDrsCannotMoveVmWithMountedCDROM'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    StorageDrsCannotMoveVmWithNoFilesInLayout:
      type: object
      description: |2
        This fault is thrown because Storage DRS cannot generate recommendations
        to relocate VMs that have no files in its file layout.
      allOf:
        - $ref: '#/components/schemas/VimFault'

    ArrayOfStorageDrsCannotMoveVmWithNoFilesInLayout:
      type: object
      description: |2
        A boxed array of *StorageDrsCannotMoveVmWithNoFilesInLayout*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/StorageDrsCannotMoveVmWithNoFilesInLayout'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    StorageDrsDatacentersCannotShareDatastore:
      type: object
      description: |2
        This fault is thrown when one datastore using Storage DRS is added to two
        different datacenters.
      allOf:
        - $ref: '#/components/schemas/VimFault'

    ArrayOfStorageDrsDatacentersCannotShareDatastore:
      type: object
      description: |2
        A boxed array of *StorageDrsDatacentersCannotShareDatastore*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/StorageDrsDatacentersCannotShareDatastore'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    StorageDrsDisabledOnVm:
      type: object
      description: |2
        This fault is thrown when Storage DRS cannot move disks of a virtual machine
        because Storage DRS is disabled on it.
      allOf:
        - $ref: '#/components/schemas/VimFault'

    ArrayOfStorageDrsDisabledOnVm:
      type: object
      description: |2
        A boxed array of *StorageDrsDisabledOnVm*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/StorageDrsDisabledOnVm'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    StorageDrsHbrDiskNotMovable:
      type: object
      description: |2
        This fault is thrown when HMS service cannot move certain secondary
        replica disks per Storage DRS move recommendations
      properties:
        nonMovableDiskIds:
          description: |2
            Comma-separated list of disk IDs that are not movable and failed
            Storage DRS recommendation action.
          type: string
      required:
        - nonMovableDiskIds
      allOf:
        - $ref: '#/components/schemas/VimFault'

    ArrayOfStorageDrsHbrDiskNotMovable:
      type: object
      description: |2
        A boxed array of *StorageDrsHbrDiskNotMovable*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/StorageDrsHbrDiskNotMovable'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    StorageDrsHmsMoveInProgress:
      type: object
      description: |2
        This fault is thrown HMS service is in the process of moving
        a subset of disks for which Storage DRS recommendation is generated.
      allOf:
        - $ref: '#/components/schemas/VimFault'

    ArrayOfStorageDrsHmsMoveInProgress:
      type: object
      description: |2
        A boxed array of *StorageDrsHmsMoveInProgress*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/StorageDrsHmsMoveInProgress'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    StorageDrsHmsUnreachable:
      type: object
      description: |2
        This fault is thrown when Storage DRS cannot connect to HMS service
        or HMS APIs invoked by Storage DRS error out due to connection issues.
      allOf:
        - $ref: '#/components/schemas/VimFault'

    ArrayOfStorageDrsHmsUnreachable:
      type: object
      description: |2
        A boxed array of *StorageDrsHmsUnreachable*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/StorageDrsHmsUnreachable'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    StorageDrsIolbDisabledInternally:
      type: object
      deprecated: true
      description: |2
        Deprecated as of vSphere8.0 U3, and there is no replacement for it.
        
        The fault occurs when Storage DRS disables IO Load balancing internally
        even though it is enabled by the user.
        
        This can happen due to one of the
        following reasons:
        1\. SIOC couldn't get enabled on at least one of the datastores
        2\. The connectivity between hosts and datastores is not uniform for all datastores.
        3\. Some statistics are not available to run IO load balancing
      allOf:
        - $ref: '#/components/schemas/VimFault'

    ArrayOfStorageDrsIolbDisabledInternally:
      type: object
      description: |2
        A boxed array of *StorageDrsIolbDisabledInternally*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/StorageDrsIolbDisabledInternally'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    StorageDrsRelocateDisabled:
      type: object
      description: |2
        This fault is thrown when Storage DRS cannot move disks of a virtual machine
        because the relocate method of the virtual machine is disabled.
      allOf:
        - $ref: '#/components/schemas/VimFault'

    ArrayOfStorageDrsRelocateDisabled:
      type: object
      description: |2
        A boxed array of *StorageDrsRelocateDisabled*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/StorageDrsRelocateDisabled'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    StorageDrsStaleHmsCollection:
      type: object
      description: |2
        This fault is thrown when Storage DRS action for relocating
        HMS collection of replica disks does not correspond to current
        HMS inventory configuration and hence, is rejected by HMS service.
      allOf:
        - $ref: '#/components/schemas/VimFault'

    ArrayOfStorageDrsStaleHmsCollection:
      type: object
      description: |2
        A boxed array of *StorageDrsStaleHmsCollection*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/StorageDrsStaleHmsCollection'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    StorageDrsUnableToMoveFiles:
      type: object
      description: |2
        This fault is thrown when Storage DRS cannot generate recommendations
        to move VM files due to pre-existing cross datastore disk backings.
      allOf:
        - $ref: '#/components/schemas/VimFault'

    ArrayOfStorageDrsUnableToMoveFiles:
      type: object
      description: |2
        A boxed array of *StorageDrsUnableToMoveFiles*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/StorageDrsUnableToMoveFiles'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    StorageVMotionNotSupported:
      type: object
      description: |2
        An operation on a powered-on virtual machine requests a change of storage
        location, but the host does not have that capability.
      allOf:
        - $ref: '#/components/schemas/MigrationFeatureNotSupported'

    ArrayOfStorageVMotionNotSupported:
      type: object
      description: |2
        A boxed array of *StorageVMotionNotSupported*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/StorageVMotionNotSupported'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    StorageVmotionIncompatible:
      type: object
      description: |2
        This fault is thrown when Storage DRS tries to migrate disks of a virtual machine to a datastore,
        but finds that the datastore is incompatible with the given virtual machine.
      properties:
        datastore:
          description: |2
            The datastore that is incompatible with a given virtual machine.
            
            Refers instance of *Datastore*.
          $ref: '#/components/schemas/ManagedObjectReference'
      allOf:
        - $ref: '#/components/schemas/VirtualHardwareCompatibilityIssue'

    ArrayOfStorageVmotionIncompatible:
      type: object
      description: |2
        A boxed array of *StorageVmotionIncompatible*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/StorageVmotionIncompatible'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    SuspendedRelocateNotSupported:
      type: object
      description: |2
        Either the source host product or the destination host product does not support
        relocation of suspended VMs.
        
        It must be supported on both, in order for the
        relocation to succeed. This fault is only applicable to suspended virtual machines.
      allOf:
        - $ref: '#/components/schemas/MigrationFault'

    ArrayOfSuspendedRelocateNotSupported:
      type: object
      description: |2
        A boxed array of *SuspendedRelocateNotSupported*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/SuspendedRelocateNotSupported'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    SwapDatastoreNotWritableOnHost:
      type: object
      description: |2
        The compute resource and/or virtual machine configurations indicate that
        when executing on the host the virtual machine should use a specific
        datastore, but host does not have read/write access to that datastore.
        
        (It may have no access at all, or read-only access.) If executing on the
        host the virtual machine would instead use its own directory for swapfile
        placement. This is a compatibility warning, not an error.
      allOf:
        - $ref: '#/components/schemas/DatastoreNotWritableOnHost'

    ArrayOfSwapDatastoreNotWritableOnHost:
      type: object
      description: |2
        A boxed array of *SwapDatastoreNotWritableOnHost*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/SwapDatastoreNotWritableOnHost'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    SwapDatastoreUnset:
      type: object
      description: |2
        The compute resource and/or virtual machine configurations indicate that
        when executing on the host the virtual machine should use a swap
        datastore, but the host does not have a swap datastore configured.
        
        If
        executing on the host the virtual machine would instead use its own directory
        for swapfile placement. This is a compatibility warning, not an error.
        Note it is actually the common case for a host to not have a configured
        swap datastore, and the problem may rest with the compute resource and/or
        virtual machine configuration; therefore this is not a HostConfigFault.
      allOf:
        - $ref: '#/components/schemas/VimFault'

    ArrayOfSwapDatastoreUnset:
      type: object
      description: |2
        A boxed array of *SwapDatastoreUnset*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/SwapDatastoreUnset'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    SwapPlacementOverrideNotSupported:
      type: object
      description: |2
        The virtual machine is configured to override the default swapfile placement
        policy, which is not supported on the host.
      allOf:
        - $ref: '#/components/schemas/InvalidVmConfig'

    ArrayOfSwapPlacementOverrideNotSupported:
      type: object
      description: |2
        A boxed array of *SwapPlacementOverrideNotSupported*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/SwapPlacementOverrideNotSupported'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    SwitchIpUnset:
      type: object
      description: |2
        The distributed virtual switch received a reconfiguration request to
        activate a feature that requires a switch IP address.
        
        However, the IP
        address for the switch has not been specified.
      allOf:
        - $ref: '#/components/schemas/DvsFault'

    ArrayOfSwitchIpUnset:
      type: object
      description: |2
        A boxed array of *SwitchIpUnset*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/SwitchIpUnset'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    SwitchNotInUpgradeMode:
      type: object
      description: |2
        Thrown if an operation is not supported while the DistributedVirtualSwitch
        is not in upgrade mode.
      allOf:
        - $ref: '#/components/schemas/DvsFault'

    ArrayOfSwitchNotInUpgradeMode:
      type: object
      description: |2
        A boxed array of *SwitchNotInUpgradeMode*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/SwitchNotInUpgradeMode'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    TaskInProgress:
      type: object
      description: |2
        The TaskInProgress data object type represents a fault when an operation tries
        to access an entity that already has another (long) operation in progress.
      properties:
        task:
          description: |2
            The task already in progress when the operation was attempted.
            
            Refers instance of *Task*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - task
      allOf:
        - $ref: '#/components/schemas/VimFault'

    ArrayOfTaskInProgress:
      type: object
      description: |2
        A boxed array of *TaskInProgress*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/TaskInProgress'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ThirdPartyLicenseAssignmentFailed:
      type: object
      description: |2
        A ThirdPartyLicenseAssignmentFailed fault is thrown when
        the license assignment to a 3rd party module fails.
        
        The 3rd-party modules are installed and ran on ESX hosts,
        so this fault provides both host and module IDs.
      properties:
        host:
          description: |2
            The ESX host where 3rd party license was applied.
            
            Refers instance of *HostSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
        module:
          description: |2
            The asset-id of 3rd party module
          type: string
        reason:
          description: |2
            The reason why the assignment failed, if known.
          type: string
      required:
        - host
        - module
      allOf:
        - $ref: '#/components/schemas/RuntimeFault'

    ArrayOfThirdPartyLicenseAssignmentFailed:
      type: object
      description: |2
        A boxed array of *ThirdPartyLicenseAssignmentFailed*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ThirdPartyLicenseAssignmentFailed'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    Timedout:
      type: object
      description: |2
        Timedout exception is thrown when a server abandons an operation that
        is taking longer than expected.
      allOf:
        - $ref: '#/components/schemas/VimFault'

    ArrayOfTimedout:
      type: object
      description: |2
        A boxed array of *Timedout*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/Timedout'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    TooManyConcurrentNativeClones:
      type: object
      description: |2
        Thrown if the number of levels in the snapshot tree exceeds
        the supported maximum.
      allOf:
        - $ref: '#/components/schemas/FileFault'

    ArrayOfTooManyConcurrentNativeClones:
      type: object
      description: |2
        A boxed array of *TooManyConcurrentNativeClones*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/TooManyConcurrentNativeClones'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    TooManyConsecutiveOverrides:
      type: object
      description: |2
        Thrown if there are too many consecutive user overrides of
        server-managed settings.
        
        There are some properties which users are
        allowed to set only in certain configurations. The system controls them
        in other configurations, and overrides all user updates. If there are
        such frequent user overrides in the system controlled state that the
        next update arrives before the previous override is complete, the
        system can enter a tight loop and appear unresponsive to the user. This
        would typically happen if the user overrides are generated by a script.
        If the number of such user overrides exceeds the supported maximum, we
        conceptually "throw" this fault. In practice, this is converted into a
        host-level ConfigIssue in VC.
      allOf:
        - $ref: '#/components/schemas/VimFault'

    ArrayOfTooManyConsecutiveOverrides:
      type: object
      description: |2
        A boxed array of *TooManyConsecutiveOverrides*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/TooManyConsecutiveOverrides'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    TooManyDevices:
      type: object
      description: |2
        Thrown when the number of virtual devices exceeds the maximum for
        a given controller.
      allOf:
        - $ref: '#/components/schemas/InvalidVmConfig'

    ArrayOfTooManyDevices:
      type: object
      description: |2
        A boxed array of *TooManyDevices*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/TooManyDevices'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    TooManyDisksOnLegacyHost:
      type: object
      deprecated: true
      description: |2
        Deprecated as of vSphere 4.1, this error condition is no longer possible.
        
        The VM has too many disks which can cause the VM to take a long time
        to power-on.
        
        This can result in migration taking a long time to complete
        or to fail due to timeout. This is a problem only for migration of
        powered-on virtual machines from or to ESX 2.x hosts.
      properties:
        diskCount:
          description: |2
            The number disks this VM has.
          type: integer
          format: int32
        timeoutDanger:
          description: |2
            Whether this number of disks will cause a timeout failure.
          type: boolean
      required:
        - diskCount
        - timeoutDanger
      allOf:
        - $ref: '#/components/schemas/MigrationFault'

    ArrayOfTooManyDisksOnLegacyHost:
      type: object
      description: |2
        A boxed array of *TooManyDisksOnLegacyHost*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/TooManyDisksOnLegacyHost'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    TooManyGuestLogons:
      type: object
      description: |2
        A TooManyGuestLogons exception is thrown when
        there are too many concurrent login sessions active
        in the guest.
        
        *GuestAuthManager.ReleaseCredentialsInGuest* can be called
        on ticketed sessions that are no longer needed. This will decrease
        the number of concurrent sessions active in the guest.
      allOf:
        - $ref: '#/components/schemas/GuestOperationsFault'

    ArrayOfTooManyGuestLogons:
      type: object
      description: |2
        A boxed array of *TooManyGuestLogons*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/TooManyGuestLogons'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    TooManyHosts:
      type: object
      description: |2
        Thrown when a computer resource does not accept any more hosts.
        
        Clusters with DRS or
        HA enabled might impose a limit on the size of the cluster.
      allOf:
        - $ref: '#/components/schemas/HostConnectFault'

    ArrayOfTooManyHosts:
      type: object
      description: |2
        A boxed array of *TooManyHosts*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/TooManyHosts'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    TooManyNativeCloneLevels:
      type: object
      description: |2
        Thrown if the number of levels in the snapshot tree exceeds
        the supported maximum.
      allOf:
        - $ref: '#/components/schemas/FileFault'

    ArrayOfTooManyNativeCloneLevels:
      type: object
      description: |2
        A boxed array of *TooManyNativeCloneLevels*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/TooManyNativeCloneLevels'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    TooManyNativeClonesOnFile:
      type: object
      description: |2
        Thrown if the number of levels in the snapshot tree exceeds
        the supported maximum.
      allOf:
        - $ref: '#/components/schemas/FileFault'

    ArrayOfTooManyNativeClonesOnFile:
      type: object
      description: |2
        A boxed array of *TooManyNativeClonesOnFile*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/TooManyNativeClonesOnFile'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    TooManySnapshotLevels:
      type: object
      description: |2
        Thrown if the number of levels in the snapshot tree exceeds
        the supported maximum.
      allOf:
        - $ref: '#/components/schemas/SnapshotFault'

    ArrayOfTooManySnapshotLevels:
      type: object
      description: |2
        A boxed array of *TooManySnapshotLevels*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/TooManySnapshotLevels'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ToolsAlreadyUpgraded:
      type: object
      description: |2
        Thrown when tools upgrade fails because the version of tools
        installed in the guest is already up-to-date.
      allOf:
        - $ref: '#/components/schemas/VmToolsUpgradeFault'

    ArrayOfToolsAlreadyUpgraded:
      type: object
      description: |2
        A boxed array of *ToolsAlreadyUpgraded*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ToolsAlreadyUpgraded'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ToolsAutoUpgradeNotSupported:
      type: object
      description: |2
        Thrown when tools upgrade fails because the virtual machine's
        guest operating system doesn't support tools auto-upgrades.
      allOf:
        - $ref: '#/components/schemas/VmToolsUpgradeFault'

    ArrayOfToolsAutoUpgradeNotSupported:
      type: object
      description: |2
        A boxed array of *ToolsAutoUpgradeNotSupported*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ToolsAutoUpgradeNotSupported'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ToolsImageCopyFailed:
      type: object
      description: |2
        Thrown when the tools image couldn't be copied to the guest
        operating system: disk out of space, file access error, etc.
      allOf:
        - $ref: '#/components/schemas/VmToolsUpgradeFault'

    ArrayOfToolsImageCopyFailed:
      type: object
      description: |2
        A boxed array of *ToolsImageCopyFailed*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ToolsImageCopyFailed'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ToolsImageNotAvailable:
      type: object
      description: |2
        Thrown when tools install or upgrade fails because the required
        tools image is not available.
      allOf:
        - $ref: '#/components/schemas/VmToolsUpgradeFault'

    ArrayOfToolsImageNotAvailable:
      type: object
      description: |2
        A boxed array of *ToolsImageNotAvailable*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ToolsImageNotAvailable'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ToolsImageSignatureCheckFailed:
      type: object
      description: |2
        Thrown when tools install or upgrade fails because the
        signature check on the tools image failed.
      allOf:
        - $ref: '#/components/schemas/VmToolsUpgradeFault'

    ArrayOfToolsImageSignatureCheckFailed:
      type: object
      description: |2
        A boxed array of *ToolsImageSignatureCheckFailed*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ToolsImageSignatureCheckFailed'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ToolsInstallationInProgress:
      type: object
      description: |2
        The virtual machine is currently in the progress of guest tools installation
        that prevents the migration operation.
      allOf:
        - $ref: '#/components/schemas/MigrationFault'

    ArrayOfToolsInstallationInProgress:
      type: object
      description: |2
        A boxed array of *ToolsInstallationInProgress*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ToolsInstallationInProgress'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ToolsUnavailable:
      type: object
      description: |2
        A ToolsUnavailableFault exception is thrown when an
        operation fails to contact VMware Tools
        running inside the virtual machine.
      allOf:
        - $ref: '#/components/schemas/VimFault'

    ArrayOfToolsUnavailable:
      type: object
      description: |2
        A boxed array of *ToolsUnavailable*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ToolsUnavailable'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ToolsUpgradeCancelled:
      type: object
      description: |2
        Thrown when tools install or upgrade fails because the
        operation was canclled by the user.
      allOf:
        - $ref: '#/components/schemas/VmToolsUpgradeFault'

    ArrayOfToolsUpgradeCancelled:
      type: object
      description: |2
        A boxed array of *ToolsUpgradeCancelled*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ToolsUpgradeCancelled'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    UnSupportedDatastoreForVFlash:
      type: object
      description: |2
        VFlash is not supported on the datastore.
      properties:
        datastoreName:
          description: |2
            The name of the Datastore.
          type: string
        type:
          description: |2
            Datastore file system volume type.
            
            See *DatastoreSummary.type*
          type: string
      required:
        - datastoreName
        - type
      allOf:
        - $ref: '#/components/schemas/UnsupportedDatastore'

    ArrayOfUnSupportedDatastoreForVFlash:
      type: object
      description: |2
        A boxed array of *UnSupportedDatastoreForVFlash*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/UnSupportedDatastoreForVFlash'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    UncommittedUndoableDisk:
      type: object
      description: |2
        Fault thrown when an attempt is made to move or clone an undoable disk with an
        uncommitted REDO log.
        
        This is an error. Undoable disks may be moved but they must
        be committed.
      allOf:
        - $ref: '#/components/schemas/MigrationFault'

    ArrayOfUncommittedUndoableDisk:
      type: object
      description: |2
        A boxed array of *UncommittedUndoableDisk*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/UncommittedUndoableDisk'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    UnconfiguredPropertyValue:
      type: object
      description: |2
        The property value has not been configured by the user, so the application
        cannot be started.
        
        This is thrown if a property value is the empty string
        and the types does not allow it. For example, for an integer type or
        a string where the minimum length is 1, and so forth.
      allOf:
        - $ref: '#/components/schemas/InvalidPropertyValue'

    ArrayOfUnconfiguredPropertyValue:
      type: object
      description: |2
        A boxed array of *UnconfiguredPropertyValue*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/UnconfiguredPropertyValue'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    UncustomizableGuest:
      type: object
      description: |2
        The specified guest operating system is not supported by the guest
        customization process.
      properties:
        uncustomizableGuestOS:
          description: |2
            The guest OS ID for the uncustomizable guest.
          type: string
      required:
        - uncustomizableGuestOS
      allOf:
        - $ref: '#/components/schemas/CustomizationFault'

    ArrayOfUncustomizableGuest:
      type: object
      description: |2
        A boxed array of *UncustomizableGuest*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/UncustomizableGuest'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    UnexpectedCustomizationFault:
      type: object
      description: |2
        Error received when customization fails, possibly due to a scripting runtime
        error or invalid script parameters.
      allOf:
        - $ref: '#/components/schemas/CustomizationFault'

    ArrayOfUnexpectedCustomizationFault:
      type: object
      description: |2
        A boxed array of *UnexpectedCustomizationFault*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/UnexpectedCustomizationFault'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    UnrecognizedHost:
      type: object
      description: |2
        A UnrecognizedHost is thrown if the VirtualCenter server fails to
        validate the identity of the host using host-key.
        
        If a reconnect is attempted on a host and if the host-key of the host
        has changed since the last successful connection attempt,
        (might be changed by another instance of VirtualCenter), VirtualCenter
        server will fail to recognize the host.
      properties:
        hostName:
          description: |2
            Host in the VirtualCenter inventory which failed the identity
            validation.
          type: string
      required:
        - hostName
      allOf:
        - $ref: '#/components/schemas/VimFault'

    ArrayOfUnrecognizedHost:
      type: object
      description: |2
        A boxed array of *UnrecognizedHost*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/UnrecognizedHost'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    UnsharedSwapVMotionNotSupported:
      type: object
      description: |2
        The compute resource and virtual machine configurations for swapfile
        placement would require the virtual machine swapfile to change location for
        this VMotion; however the host does not support this.
      allOf:
        - $ref: '#/components/schemas/MigrationFeatureNotSupported'

    ArrayOfUnsharedSwapVMotionNotSupported:
      type: object
      description: |2
        A boxed array of *UnsharedSwapVMotionNotSupported*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/UnsharedSwapVMotionNotSupported'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    UnsupportedDatastore:
      type: object
      description: |2
        The virtual machine is not supported on the target datastore.
        
        This fault is
        thrown by provisioning operations when an attempt is made to create a virtual
        machine on an unsupported datastore (for example, creating a non-legacy
        virtual machine on a legacy datastore).
      properties:
        datastore:
          description: |2
            The invalid datastore for this virtual machine.
            
            Refers instance of *Datastore*.
          $ref: '#/components/schemas/ManagedObjectReference'
      allOf:
        - $ref: '#/components/schemas/VmConfigFault'

    ArrayOfUnsupportedDatastore:
      type: object
      description: |2
        A boxed array of *UnsupportedDatastore*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/UnsupportedDatastore'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    UnsupportedGuest:
      type: object
      description: |2
        The specified guest operating system is not supported on the host
        that is the target of the operation.
      properties:
        unsupportedGuestOS:
          description: |2
            The guest OS ID for the unsupported guest.
          type: string
      required:
        - unsupportedGuestOS
      allOf:
        - $ref: '#/components/schemas/InvalidVmConfig'

    ArrayOfUnsupportedGuest:
      type: object
      description: |2
        A boxed array of *UnsupportedGuest*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/UnsupportedGuest'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    UnsupportedVimApiVersion:
      type: object
      description: |2
        This exception will be thrown if a client tries to connect with a unsupported version
        of the Vim API.
      properties:
        version:
          type: string
      allOf:
        - $ref: '#/components/schemas/VimFault'

    ArrayOfUnsupportedVimApiVersion:
      type: object
      description: |2
        A boxed array of *UnsupportedVimApiVersion*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/UnsupportedVimApiVersion'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    UnsupportedVmxLocation:
      type: object
      description: |2
        ESX 3 Server products requires the .vmx file to be stored
        on NAS or VMFS3 storage.
        
        If attempting to power on a virtual
        machine with the .vmx file stored on the service console, this
        fault will be thrown.
      allOf:
        - $ref: '#/components/schemas/VmConfigFault'

    ArrayOfUnsupportedVmxLocation:
      type: object
      description: |2
        A boxed array of *UnsupportedVmxLocation*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/UnsupportedVmxLocation'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    UnusedVirtualDiskBlocksNotScrubbed:
      type: object
      description: |2
        The unused disk blocks of the specified virtual disk have not been
        scrubbed on the file system.
        
        Typically, this fault is returned as part of a parent fault like
        *VmConfigIncompatibleForFaultTolerance*, indicating that the
        unused blocks of the virtual disk must be zeroed-out on the file system before
        before fault tolerance can be enabled on the associated virtual machine.
      allOf:
        - $ref: '#/components/schemas/DeviceBackingNotSupported'

    ArrayOfUnusedVirtualDiskBlocksNotScrubbed:
      type: object
      description: |2
        A boxed array of *UnusedVirtualDiskBlocksNotScrubbed*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/UnusedVirtualDiskBlocksNotScrubbed'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    UserNotFound:
      type: object
      description: |2
        Thrown when the request refers to a user or group name that could not
        be resolved.
      properties:
        principal:
          description: |2
            Principal value that failed lookup.
          type: string
        unresolved:
          description: |2
            Flag to indicate whether or not the lookup was unsuccessful.
            
            A false value indicates that the user does not exist in the directory. A true
            value indicates that the directory could not be contacted, possibly due to a
            network error.
          type: boolean
      required:
        - principal
        - unresolved
      allOf:
        - $ref: '#/components/schemas/VimFault'

    ArrayOfUserNotFound:
      type: object
      description: |2
        A boxed array of *UserNotFound*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/UserNotFound'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VAppConfigFault:
      type: object
      description: |2
        Base for configuration / environment issues that can be thrown when powering on or
        changing the configuration of a vApp.
      allOf:
        - $ref: '#/components/schemas/VimFault'

    ArrayOfVAppConfigFault:
      type: object
      description: |2
        A boxed array of *VAppConfigFault*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VAppConfigFault'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VAppNotRunning:
      type: object
      description: |2
        A virtual machine in a vApp cannot be powered on unless the
        parent vApp is running.
      allOf:
        - $ref: '#/components/schemas/VmConfigFault'

    ArrayOfVAppNotRunning:
      type: object
      description: |2
        A boxed array of *VAppNotRunning*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VAppNotRunning'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VAppOperationInProgress:
      type: object
      description: |2
        This fault is thrown when an operation is attempted on a target where
        a vApp operation is already in progress.
        
        E.g. when trying to move a
        virtual machine from a vApp that is being powered on.
      allOf:
        - $ref: '#/components/schemas/RuntimeFault'

    ArrayOfVAppOperationInProgress:
      type: object
      description: |2
        A boxed array of *VAppOperationInProgress*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VAppOperationInProgress'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VAppPropertyFault:
      type: object
      description: |2
        The base fault for all vApp property configuration issues
      properties:
        id:
          description: |2
            The fully-qualified id of the property, including instance and class
            identifiers.
          type: string
        category:
          description: |2
            The user-readable category
          type: string
        label:
          description: |2
            The user-readable label
          type: string
        type:
          description: |2
            The type specified for the property
          type: string
        value:
          description: |2
            The value of the property
          type: string
      required:
        - id
        - category
        - label
        - type
        - value
      allOf:
        - $ref: '#/components/schemas/VmConfigFault'

    ArrayOfVAppPropertyFault:
      type: object
      description: |2
        A boxed array of *VAppPropertyFault*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VAppPropertyFault'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VAppTaskInProgress:
      type: object
      description: |2
        A specialized TaskInProgress when an operation is performed
        on a VM and it is failed due to a vApp-level operation
        is in progress.
        
        For example, while the power-on sequence is
        executed on a vApp, individual power-on's of child VMs are
        failed.
      allOf:
        - $ref: '#/components/schemas/TaskInProgress'

    ArrayOfVAppTaskInProgress:
      type: object
      description: |2
        A boxed array of *VAppTaskInProgress*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VAppTaskInProgress'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VFlashCacheHotConfigNotSupported:
      type: object
      description: |2
        VFlash cache hot-configuration on a VMDK is not supported.
      allOf:
        - $ref: '#/components/schemas/VmConfigFault'

    ArrayOfVFlashCacheHotConfigNotSupported:
      type: object
      description: |2
        A boxed array of *VFlashCacheHotConfigNotSupported*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VFlashCacheHotConfigNotSupported'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VFlashModuleNotSupported:
      type: object
      description: |2
        vFlash module is not supported due to its configuration is not
        supported by the host.
      properties:
        vmName:
          description: |2
            VM name
          type: string
        moduleName:
          description: |2
            The vFlash module name.
          type: string
        reason:
          description: |2
            Message of reason.
          type: string
        hostName:
          description: |2
            Host name
          type: string
      required:
        - vmName
        - moduleName
        - reason
        - hostName
      allOf:
        - $ref: '#/components/schemas/VmConfigFault'

    ArrayOfVFlashModuleNotSupported:
      type: object
      description: |2
        A boxed array of *VFlashModuleNotSupported*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VFlashModuleNotSupported'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VFlashModuleVersionIncompatible:
      type: object
      description: |2
        The vFlash module version of the vFlash cache asscociated with the
        virtual disk of a VM is not compatible with the supported versions of
        the specified vFlash module on the host.
      properties:
        moduleName:
          description: |2
            The vFlash module name.
          type: string
        vmRequestModuleVersion:
          description: |2
            The VM request module version.
          type: string
        hostMinSupportedVerson:
          description: |2
            The minimum supported version of the specified module on the host.
          type: string
        hostModuleVersion:
          description: |2
            The verson of the specified module on the host.
          type: string
      required:
        - moduleName
        - vmRequestModuleVersion
        - hostMinSupportedVerson
        - hostModuleVersion
      allOf:
        - $ref: '#/components/schemas/VimFault'

    ArrayOfVFlashModuleVersionIncompatible:
      type: object
      description: |2
        A boxed array of *VFlashModuleVersionIncompatible*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VFlashModuleVersionIncompatible'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VMINotSupported:
      type: object
      description: |2
        The virtual machine is configured to use a VMI ROM, which is not
        supported on the host.
      allOf:
        - $ref: '#/components/schemas/DeviceNotSupported'

    ArrayOfVMINotSupported:
      type: object
      description: |2
        A boxed array of *VMINotSupported*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VMINotSupported'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VMOnConflictDVPort:
      type: object
      description: |2
        The virtual machine is using a conflict DVPort, which is a temporary port created
        to avoid conflict with another port.
        
        Conflict DVPort cannot be moved.
      allOf:
        - $ref: '#/components/schemas/CannotAccessNetwork'

    ArrayOfVMOnConflictDVPort:
      type: object
      description: |2
        A boxed array of *VMOnConflictDVPort*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VMOnConflictDVPort'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VMOnVirtualIntranet:
      type: object
      description: |2
        The virtual machine is using a "virtual intranet", a virtual network
        that exists only within a single host.
        
        If returned as part of a migration check, this
        is an error if the virtual machine is currently connected to the network and a
        warning otherwise.
      allOf:
        - $ref: '#/components/schemas/CannotAccessNetwork'

    ArrayOfVMOnVirtualIntranet:
      type: object
      description: |2
        A boxed array of *VMOnVirtualIntranet*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VMOnVirtualIntranet'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VMotionAcrossNetworkNotSupported:
      type: object
      description: |2
        An operation on a powered-on virtual machine requests a change of
        networks, but the host does not have that capability.
      allOf:
        - $ref: '#/components/schemas/MigrationFeatureNotSupported'

    ArrayOfVMotionAcrossNetworkNotSupported:
      type: object
      description: |2
        A boxed array of *VMotionAcrossNetworkNotSupported*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VMotionAcrossNetworkNotSupported'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VMotionInterfaceIssue:
      type: object
      description: |2
        A VMotion interface has a problem.
        
        This may be an error or warning depending
        on the specific fault subclass. This is an error or warning only when
        migrating a powered-on virtual machine.
      properties:
        atSourceHost:
          description: |2
            Whether this error is for the source host.
          type: boolean
        failedHost:
          description: |2
            The name of the host with the bad interface.
          type: string
        failedHostEntity:
          description: |2
            The host with the bad interface.
            
            Refers instance of *HostSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - atSourceHost
        - failedHost
      allOf:
        - $ref: '#/components/schemas/MigrationFault'

    ArrayOfVMotionInterfaceIssue:
      type: object
      description: |2
        A boxed array of *VMotionInterfaceIssue*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VMotionInterfaceIssue'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VMotionLinkCapacityLow:
      type: object
      description: |2
        The VMotion interface does not have the recommended capacity to support
        VMotion.
        
        VMotion is supported on links that have a speed of at least 1000
        Mbps and are full duplex. This is a warning for migrating powered-on virtual
        machines.
      properties:
        network:
          description: |2
            Name of the network being used for the VMotion interface.
          type: string
      required:
        - network
      allOf:
        - $ref: '#/components/schemas/VMotionInterfaceIssue'

    ArrayOfVMotionLinkCapacityLow:
      type: object
      description: |2
        A boxed array of *VMotionLinkCapacityLow*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VMotionLinkCapacityLow'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VMotionLinkDown:
      type: object
      description: |2
        The VMotion interface does not have any operational physical links
        associated with it.
        
        This is an error for migrating powered-on virtual
        machines.
      properties:
        network:
          description: |2
            Name of the network being used for the VMotion interface.
          type: string
      required:
        - network
      allOf:
        - $ref: '#/components/schemas/VMotionInterfaceIssue'

    ArrayOfVMotionLinkDown:
      type: object
      description: |2
        A boxed array of *VMotionLinkDown*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VMotionLinkDown'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VMotionNotConfigured:
      type: object
      description: |2
        A VMotion interface is not configured (or is misconfigured) on
        either the source or destination host.
        
        This is an error only
        when migrating a powered-on virtual machine.
      allOf:
        - $ref: '#/components/schemas/VMotionInterfaceIssue'

    ArrayOfVMotionNotConfigured:
      type: object
      description: |2
        A boxed array of *VMotionNotConfigured*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VMotionNotConfigured'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VMotionNotLicensed:
      type: object
      description: |2
        VMotion is not licensed on a source or destination host.
        
        It must be licensed on both
        hosts.
      allOf:
        - $ref: '#/components/schemas/VMotionInterfaceIssue'

    ArrayOfVMotionNotLicensed:
      type: object
      description: |2
        A boxed array of *VMotionNotLicensed*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VMotionNotLicensed'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VMotionNotSupported:
      type: object
      description: |2
        The source or the destination host does not support VMotion.
        
        This is an
        error only when migrating a powered-on virtual machine.
      allOf:
        - $ref: '#/components/schemas/VMotionInterfaceIssue'

    ArrayOfVMotionNotSupported:
      type: object
      description: |2
        A boxed array of *VMotionNotSupported*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VMotionNotSupported'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VMotionProtocolIncompatible:
      type: object
      description: |2
        VMotion protocol version incompatibility prevents VMotion from the
        virtual machine's current host to the requested destination host.
        
        (VMotion in the other direction may or may not be supported.)
      allOf:
        - $ref: '#/components/schemas/MigrationFault'

    ArrayOfVMotionProtocolIncompatible:
      type: object
      description: |2
        A boxed array of *VMotionProtocolIncompatible*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VMotionProtocolIncompatible'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VimFault:
      type: object
      description: |2
        The common base type for all virtual infrastructure management
        exceptions.
      allOf:
        - $ref: '#/components/schemas/MethodFault'

    ArrayOfVimFault:
      type: object
      description: |2
        A boxed array of *VimFault*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VimFault'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualDiskBlocksNotFullyProvisioned:
      type: object
      description: |2
        The disk blocks of the specified virtual disk have not been fully
        provisioned on the file system.
        
        Typically, this fault is returned as part of a parent fault like
        *VmConfigIncompatibleForFaultTolerance*, indicating that the
        disk blocks of the virtual disk must be fully provisioned on the file system
        before fault tolerance can be enabled on the associated virtual machine.
      allOf:
        - $ref: '#/components/schemas/DeviceBackingNotSupported'

    ArrayOfVirtualDiskBlocksNotFullyProvisioned:
      type: object
      description: |2
        A boxed array of *VirtualDiskBlocksNotFullyProvisioned*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualDiskBlocksNotFullyProvisioned'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualDiskModeNotSupported:
      type: object
      description: |2
        The disk mode of the specified virtual disk is not supported.
        
        Typically, this fault is returned as part of a parent fault like
        *VmConfigIncompatibleForFaultTolerance*, indicating that the
        virtual disk's mode needs to be changed before fault tolerance can be
        enabled on the associated virtual machine.
      properties:
        mode:
          description: |2
            Disk mode that is not supported
          type: string
      required:
        - mode
      allOf:
        - $ref: '#/components/schemas/DeviceNotSupported'

    ArrayOfVirtualDiskModeNotSupported:
      type: object
      description: |2
        A boxed array of *VirtualDiskModeNotSupported*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualDiskModeNotSupported'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualEthernetCardNotSupported:
      type: object
      description: |2
        The virtual machine's virtual ethernet card is not supported.
      allOf:
        - $ref: '#/components/schemas/DeviceNotSupported'

    ArrayOfVirtualEthernetCardNotSupported:
      type: object
      description: |2
        A boxed array of *VirtualEthernetCardNotSupported*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualEthernetCardNotSupported'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualHardwareCompatibilityIssue:
      type: object
      description: |2
        There is a problem with the compatibility between the intended execution host
        and the virtual machine.
        
        This may be an error or warning depending on
        the specific fault subclass.
      allOf:
        - $ref: '#/components/schemas/VmConfigFault'

    ArrayOfVirtualHardwareCompatibilityIssue:
      type: object
      description: |2
        A boxed array of *VirtualHardwareCompatibilityIssue*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualHardwareCompatibilityIssue'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualHardwareVersionNotSupported:
      type: object
      description: |2
        The virtual machine's virtual hardware version is not supported on the host.
      properties:
        hostName:
          type: string
        host:
          description: |2
            The host.
            
            Refers instance of *HostSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - hostName
        - host
      allOf:
        - $ref: '#/components/schemas/VirtualHardwareCompatibilityIssue'

    ArrayOfVirtualHardwareVersionNotSupported:
      type: object
      description: |2
        A boxed array of *VirtualHardwareVersionNotSupported*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualHardwareVersionNotSupported'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmAlreadyExistsInDatacenter:
      type: object
      description: |2
        Fault thrown when moving a standalone host between datacenters, and
        one or more of the virtual machines registered on the host are already
        registered to hosts in the target datacenter.
      properties:
        host:
          description: |2
            The target host.
            
            Refers instance of *HostSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
        hostname:
          description: |2
            Name of the target host.
          type: string
        vm:
          description: |2
            Virtual machines in the target datacenter which have the same
            registration information as those belonging to the target host.
            
            Refers instances of *VirtualMachine*.
          type: array
          items:
            $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - host
        - hostname
        - vm
      allOf:
        - $ref: '#/components/schemas/InvalidFolder'

    ArrayOfVmAlreadyExistsInDatacenter:
      type: object
      description: |2
        A boxed array of *VmAlreadyExistsInDatacenter*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmAlreadyExistsInDatacenter'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmConfigFault:
      type: object
      description: |2
        Base for configuration / environment issues that can be thrown when powering on or
        changing the configuration of a virtual machine.
        
        Subclasses of this fault is also
        used as recent why a migration can fail.
      allOf:
        - $ref: '#/components/schemas/VimFault'

    ArrayOfVmConfigFault:
      type: object
      description: |2
        A boxed array of *VmConfigFault*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmConfigFault'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmConfigIncompatibleForFaultTolerance:
      type: object
      description: |2
        Thrown when a virtual machine's existing or requested configuration is
        incompatible for fault tolerance.
      properties:
        fault:
          description: |2
            Fault indicating the specific configuration issue.
            
            This is typically
            a subclass of VirtualHardwareCompatibilityIssue.
          $ref: '#/components/schemas/MethodFault'
      allOf:
        - $ref: '#/components/schemas/VmConfigFault'

    ArrayOfVmConfigIncompatibleForFaultTolerance:
      type: object
      description: |2
        A boxed array of *VmConfigIncompatibleForFaultTolerance*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmConfigIncompatibleForFaultTolerance'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmConfigIncompatibleForRecordReplay:
      type: object
      deprecated: true
      description: |2
        Deprecated as of vSphere API 6.0.
        
        Thrown when a virtual machine's existing or requested configuration is
        incompatible for record and replay.
      properties:
        fault:
          description: |2
            Fault indicating the specific configuration issue.
            
            This is typically
            a subclass of VirtualHardwareCompatibilityIssue.
          $ref: '#/components/schemas/MethodFault'
      allOf:
        - $ref: '#/components/schemas/VmConfigFault'

    ArrayOfVmConfigIncompatibleForRecordReplay:
      type: object
      description: |2
        A boxed array of *VmConfigIncompatibleForRecordReplay*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmConfigIncompatibleForRecordReplay'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmFaultToleranceConfigIssue:
      type: object
      description: |2
        Configuration issues that can occur during operations
        related to fault tolerance protection for virtual machines.
      properties:
        reason:
          description: |2
            The reason for the failure.
          type: string
        entityName:
          description: |2
            The entity name.
            
            Depending on the issue, it could
            be virtual machine or host.
          type: string
        entity:
          description: |2
            The entity
            
            Refers instance of *ManagedEntity*.
          $ref: '#/components/schemas/ManagedObjectReference'
      allOf:
        - $ref: '#/components/schemas/VmFaultToleranceIssue'

    ArrayOfVmFaultToleranceConfigIssue:
      type: object
      description: |2
        A boxed array of *VmFaultToleranceConfigIssue*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmFaultToleranceConfigIssue'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmFaultToleranceConfigIssueWrapper:
      type: object
      description: |2
        Configuration issues that can occur during operations
        related to fault tolerance protection for virtual machines.
      properties:
        entityName:
          description: |2
            The entity name.
            
            Depending on the issue, it could
            be virtual machine or host.
          type: string
        entity:
          description: |2
            The entity
            
            Refers instance of *ManagedEntity*.
          $ref: '#/components/schemas/ManagedObjectReference'
        error:
          description: |2
            The nested error when the reason field is other
          $ref: '#/components/schemas/MethodFault'
      allOf:
        - $ref: '#/components/schemas/VmFaultToleranceIssue'

    ArrayOfVmFaultToleranceConfigIssueWrapper:
      type: object
      description: |2
        A boxed array of *VmFaultToleranceConfigIssueWrapper*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmFaultToleranceConfigIssueWrapper'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmFaultToleranceInvalidFileBacking:
      type: object
      description: |2
        Indicates the file backing for some device prevents fault tolerance
        protection
      properties:
        backingType:
          description: |2
            The device type of the file backing
          type: string
        backingFilename:
          type: string
      allOf:
        - $ref: '#/components/schemas/VmFaultToleranceIssue'

    ArrayOfVmFaultToleranceInvalidFileBacking:
      type: object
      description: |2
        A boxed array of *VmFaultToleranceInvalidFileBacking*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmFaultToleranceInvalidFileBacking'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmFaultToleranceIssue:
      type: object
      description: |2
        Base object type for issues that can occur during operations
        related to fault tolerance protection for virtual machines.
      allOf:
        - $ref: '#/components/schemas/VimFault'

    ArrayOfVmFaultToleranceIssue:
      type: object
      description: |2
        A boxed array of *VmFaultToleranceIssue*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmFaultToleranceIssue'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmFaultToleranceOpIssuesList:
      type: object
      description: |2
        Container for a list of configuration issues that can occur during
        operations related to fault tolerance protection for virtual machines.
      properties:
        errors:
          description: |2
            A list of faults representing errors
          type: array
          items:
            $ref: '#/components/schemas/MethodFault'
        warnings:
          type: array
          items:
            $ref: '#/components/schemas/MethodFault'
      allOf:
        - $ref: '#/components/schemas/VmFaultToleranceIssue'

    ArrayOfVmFaultToleranceOpIssuesList:
      type: object
      description: |2
        A boxed array of *VmFaultToleranceOpIssuesList*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmFaultToleranceOpIssuesList'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmFaultToleranceTooManyFtVcpusOnHost:
      type: object
      description: |2
        This fault is returned when a host has more than the recommended number of
        Fault Tolerance vCPUs running on it.
      properties:
        hostName:
          description: |2
            The name of the host
          type: string
        maxNumFtVcpus:
          description: |2
            The recommended number of FT protected vCPUs on a host.
          type: integer
          format: int32
      required:
        - maxNumFtVcpus
      allOf:
        - $ref: '#/components/schemas/InsufficientResourcesFault'

    ArrayOfVmFaultToleranceTooManyFtVcpusOnHost:
      type: object
      description: |2
        A boxed array of *VmFaultToleranceTooManyFtVcpusOnHost*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmFaultToleranceTooManyFtVcpusOnHost'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmFaultToleranceTooManyVMsOnHost:
      type: object
      description: |2
        This fault is returned when a host has more than the recommended number of
        Fault Tolerance VMs running on it.
      properties:
        hostName:
          type: string
        maxNumFtVms:
          description: |2
            The recommended number of Fault Tolerance VMs running on the host.
          type: integer
          format: int32
      required:
        - maxNumFtVms
      allOf:
        - $ref: '#/components/schemas/InsufficientResourcesFault'

    ArrayOfVmFaultToleranceTooManyVMsOnHost:
      type: object
      description: |2
        A boxed array of *VmFaultToleranceTooManyVMsOnHost*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmFaultToleranceTooManyVMsOnHost'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmHostAffinityRuleViolation:
      type: object
      description: |2
        The virtual machine if powered on or VMotioned, would violate a VM-Host affinity rule.
      properties:
        vmName:
          description: |2
            The vm that can not be powered on or VMotioned without violating a rule.
          type: string
        hostName:
          description: |2
            The host that the virtual machine can not be powered on without violating a rule.
          type: string
      required:
        - vmName
        - hostName
      allOf:
        - $ref: '#/components/schemas/VmConfigFault'

    ArrayOfVmHostAffinityRuleViolation:
      type: object
      description: |2
        A boxed array of *VmHostAffinityRuleViolation*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmHostAffinityRuleViolation'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmLimitLicense:
      type: object
      description: |2
        A VmLimitLicense fault is thrown if powering on the virtual
        machine would exceed the maximum number of running virtual
        machines allowed.
      properties:
        limit:
          description: |2
            The maximum number of running virtual machines
            limit.
          type: integer
          format: int32
      required:
        - limit
      allOf:
        - $ref: '#/components/schemas/NotEnoughLicenses'

    ArrayOfVmLimitLicense:
      type: object
      description: |2
        A boxed array of *VmLimitLicense*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmLimitLicense'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmMetadataManagerFault:
      type: object
      description: |2
        This fault indicates that some error has occurred during the processing of
        of a MetadataManager operation.
        
        This may be subclassed by a more specific
        fault.
      allOf:
        - $ref: '#/components/schemas/VimFault'

    ArrayOfVmMetadataManagerFault:
      type: object
      description: |2
        A boxed array of *VmMetadataManagerFault*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmMetadataManagerFault'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmMonitorIncompatibleForFaultTolerance:
      type: object
      description: |2
        Thrown when turning on Fault Tolerance protection on a running virtual machine
        if the virtual machine is running in a monitor mode that is incompatible.
      allOf:
        - $ref: '#/components/schemas/VimFault'

    ArrayOfVmMonitorIncompatibleForFaultTolerance:
      type: object
      description: |2
        A boxed array of *VmMonitorIncompatibleForFaultTolerance*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmMonitorIncompatibleForFaultTolerance'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmPowerOnDisabled:
      type: object
      description: |2
        This exception is thrown if the power-on of a virtual machine is attempted
        when the operation is disabled on the host
      allOf:
        - $ref: '#/components/schemas/InvalidState'

    ArrayOfVmPowerOnDisabled:
      type: object
      description: |2
        A boxed array of *VmPowerOnDisabled*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmPowerOnDisabled'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmSmpFaultToleranceTooManyVMsOnHost:
      type: object
      description: |2
        This fault is returned when a host has more than the recommended number of
        SMP Fault Tolerance VMs running on it.
      properties:
        hostName:
          description: |2
            The name of the host
          type: string
        maxNumSmpFtVms:
          description: |2
            The recommended number of SMP-Fault Tolerance VMs running on the host.
          type: integer
          format: int32
      required:
        - maxNumSmpFtVms
      allOf:
        - $ref: '#/components/schemas/InsufficientResourcesFault'

    ArrayOfVmSmpFaultToleranceTooManyVMsOnHost:
      type: object
      description: |2
        A boxed array of *VmSmpFaultToleranceTooManyVMsOnHost*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmSmpFaultToleranceTooManyVMsOnHost'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmToolsUpgradeFault:
      type: object
      description: |2
        A base fault to indicate that something went wrong when upgrading tools.
      allOf:
        - $ref: '#/components/schemas/VimFault'

    ArrayOfVmToolsUpgradeFault:
      type: object
      description: |2
        A boxed array of *VmToolsUpgradeFault*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmToolsUpgradeFault'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmValidateMaxDevice:
      type: object
      properties:
        device:
          description: |2
            The device
          type: string
        max:
          description: |2
            max count for the device
          type: integer
          format: int32
        count:
          description: |2
            number of devices found in vim.vm.ConfigSpec
          type: integer
          format: int32
      required:
        - device
        - max
        - count
      allOf:
        - $ref: '#/components/schemas/VimFault'

    ArrayOfVmValidateMaxDevice:
      type: object
      description: |2
        A boxed array of *VmValidateMaxDevice*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmValidateMaxDevice'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmWwnConflict:
      type: object
      description: |2
        Thrown if a user attempts to assign a
        WWN that is currently being used by other virtual machine or host.
      properties:
        vm:
          description: |2
            The virtual machine that is using the same WWN.
            
            Refers instance of *VirtualMachine*.
          $ref: '#/components/schemas/ManagedObjectReference'
        host:
          description: |2
            The host that is using the same WWN.
            
            Refers instance of *HostSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
        name:
          description: |2
            The name of the virtual machine/host that is using the same WWN.
          type: string
        wwn:
          description: |2
            The WWN that is in conflict.
          type: integer
          format: int64
      allOf:
        - $ref: '#/components/schemas/InvalidVmConfig'

    ArrayOfVmWwnConflict:
      type: object
      description: |2
        A boxed array of *VmWwnConflict*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmWwnConflict'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmfsAlreadyMounted:
      type: object
      description: |2
        A VmfsAlreadyMounted fault indicates that VMFS volume with same UUID
        is already mounted on the host.
      allOf:
        - $ref: '#/components/schemas/VmfsMountFault'

    ArrayOfVmfsAlreadyMounted:
      type: object
      description: |2
        A boxed array of *VmfsAlreadyMounted*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmfsAlreadyMounted'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmfsAmbiguousMount:
      type: object
      description: |2
        An 'VmfsAmbiguousMount' fault occurs when ESX is unable to resolve the
        extents of a VMFS volume unambiguously.
        
        This is thrown only when a VMFS
        volume has multiple extents and multiple copies of VMFS volumes are available.
        VMFS layer will not be able to determine how to re-construct the VMFS
        volume as multiple choices are available.
      allOf:
        - $ref: '#/components/schemas/VmfsMountFault'

    ArrayOfVmfsAmbiguousMount:
      type: object
      description: |2
        A boxed array of *VmfsAmbiguousMount*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmfsAmbiguousMount'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmfsMountFault:
      type: object
      description: |2
        This is a base class for all VMFS volume mount related faults.
      properties:
        uuid:
          description: |2
            Vmfs volume uuid
          type: string
      required:
        - uuid
      allOf:
        - $ref: '#/components/schemas/HostConfigFault'

    ArrayOfVmfsMountFault:
      type: object
      description: |2
        A boxed array of *VmfsMountFault*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmfsMountFault'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmotionInterfaceNotEnabled:
      type: object
      description: |2
        This fault is thrown when the Vmotion Interface on this host is not enabled.
        
        The Vmotion Interface is needed for waking up the host from standby mode.
      allOf:
        - $ref: '#/components/schemas/HostPowerOpFailed'

    ArrayOfVmotionInterfaceNotEnabled:
      type: object
      description: |2
        A boxed array of *VmotionInterfaceNotEnabled*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmotionInterfaceNotEnabled'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VolumeEditorError:
      type: object
      description: |2
        An error occurred in the Open Source Components applications during
        volume editing.
        
        Possibly caused by an incompatible cygwin version
        installed in the VirtualCenter server.
      allOf:
        - $ref: '#/components/schemas/CustomizationFault'

    ArrayOfVolumeEditorError:
      type: object
      description: |2
        A boxed array of *VolumeEditorError*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VolumeEditorError'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VramLimitLicense:
      type: object
      description: |2
        A VramLimitLicense fault is thrown if executing an operation
        would result in exceeding maximum allowed vRAM amount.
        
        For example, this could happen when powering on a VM,
        hot-plugging memory into a running VMm, etc.
      properties:
        limit:
          description: |2
            The maximum allowed vRAM amount.
          type: integer
          format: int32
      required:
        - limit
      allOf:
        - $ref: '#/components/schemas/NotEnoughLicenses'

    ArrayOfVramLimitLicense:
      type: object
      description: |2
        A boxed array of *VramLimitLicense*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VramLimitLicense'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VsanClusterUuidMismatch:
      type: object
      description: |2
        Fault thrown for the case that an attempt is made to move a host which
        is enabled for VSAN into a *ClusterComputeResource* whose
        VSAN cluster UUID does not match.
        
        See also *CannotMoveVsanEnabledHost*.
      properties:
        hostClusterUuid:
          description: |2
            The VSAN cluster UUID in use by the host at hand.
          type: string
        destinationClusterUuid:
          description: |2
            The VSAN cluster UUID in use by the destination
            *ClusterComputeResource*.
          type: string
      required:
        - hostClusterUuid
        - destinationClusterUuid
      allOf:
        - $ref: '#/components/schemas/CannotMoveVsanEnabledHost'

    ArrayOfVsanClusterUuidMismatch:
      type: object
      description: |2
        A boxed array of *VsanClusterUuidMismatch*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VsanClusterUuidMismatch'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VsanDiskFault:
      type: object
      description: |2
        Base exception class for VSAN disk-related faults.
      properties:
        device:
          description: |2
            The canonical name for the disk at hand, if applicable.
            
            See also *ScsiLun.canonicalName*.
          type: string
      allOf:
        - $ref: '#/components/schemas/VsanFault'

    ArrayOfVsanDiskFault:
      type: object
      description: |2
        A boxed array of *VsanDiskFault*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VsanDiskFault'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VsanFault:
      type: object
      description: |2
        Base exception class for VSAN-specific faults raised for host
        or cluster operations.
        
        See also *HostVsanSystem*, *ComputeResource.ReconfigureComputeResource_Task*.
      allOf:
        - $ref: '#/components/schemas/VimFault'

    ArrayOfVsanFault:
      type: object
      description: |2
        A boxed array of *VsanFault*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VsanFault'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VsanIncompatibleDiskMapping:
      type: object
      description: |2
        Fault used for the add operation which will result in incompatible
        disk mappings.
        
        See also *HostVsanSystem.InitializeDisks_Task*.
      allOf:
        - $ref: '#/components/schemas/VsanDiskFault'

    ArrayOfVsanIncompatibleDiskMapping:
      type: object
      description: |2
        A boxed array of *VsanIncompatibleDiskMapping*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VsanIncompatibleDiskMapping'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VspanDestPortConflict:
      type: object
      description: |2
        Thrown if a dvPort is used as destination in multiple Distributed Port Mirroring sessions.
      properties:
        vspanSessionKey1:
          description: |2
            The key of the Distributed Port Mirroring session whose destination ports include a port
            that is also used as destination ports of other Distributed Port Mirroring sessions
          type: string
        vspanSessionKey2:
          description: |2
            The key of the Distributed Port Mirroring session whose destination ports include a port
            that is also used as destination ports of other Distributed Port Mirroring sessions
          type: string
        portKey:
          description: |2
            The key of the the port that is used as destination in multiple Distributed Port Mirroring sessions
          type: string
      required:
        - vspanSessionKey1
        - vspanSessionKey2
        - portKey
      allOf:
        - $ref: '#/components/schemas/DvsFault'

    ArrayOfVspanDestPortConflict:
      type: object
      description: |2
        A boxed array of *VspanDestPortConflict*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VspanDestPortConflict'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VspanPortConflict:
      type: object
      description: |2
        Thrown if a DistributedVirtualPort appears in both the transmitted source and destination
        ports of any Distributed Port Mirroring session.
      properties:
        vspanSessionKey1:
          description: |2
            The key of the Distributed Port Mirroring session that is in conflict
          type: string
        vspanSessionKey2:
          description: |2
            The key of the Distributed Port Mirroring session that is in conflict
          type: string
        portKey:
          description: |2
            The key of the port that is both the transmitted source and destination.
          type: string
      required:
        - vspanSessionKey1
        - vspanSessionKey2
        - portKey
      allOf:
        - $ref: '#/components/schemas/DvsFault'

    ArrayOfVspanPortConflict:
      type: object
      description: |2
        A boxed array of *VspanPortConflict*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VspanPortConflict'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VspanPortMoveFault:
      type: object
      description: |2
        Thrown when moving a port used as tranmistted source or destination ports in vspan
        session to a promiscuous portgroup if this operation may change
        the non-promiscuous port to promiscuous mode.
      properties:
        srcPortgroupName:
          description: |2
            The key of the source portgroup.
          type: string
        destPortgroupName:
          description: |2
            The key of the dest portgroup.
          type: string
        portKey:
          description: |2
            The key of the port.
          type: string
      required:
        - srcPortgroupName
        - destPortgroupName
        - portKey
      allOf:
        - $ref: '#/components/schemas/DvsFault'

    ArrayOfVspanPortMoveFault:
      type: object
      description: |2
        A boxed array of *VspanPortMoveFault*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VspanPortMoveFault'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VspanPortPromiscChangeFault:
      type: object
      description: |2
        Thrown when changing a non-promiscuous port used as tranmistted source or dest
        ports in Distributed Port Mirroring session to promiscuous mode.
      properties:
        portKey:
          description: |2
            The key of the port.
          type: string
      required:
        - portKey
      allOf:
        - $ref: '#/components/schemas/DvsFault'

    ArrayOfVspanPortPromiscChangeFault:
      type: object
      description: |2
        A boxed array of *VspanPortPromiscChangeFault*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VspanPortPromiscChangeFault'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VspanPortgroupPromiscChangeFault:
      type: object
      description: |2
        Thrown when changing a non-promiscous portgroup to promiscuous mode if any port
        in this portgroup is used as tranmistted source or dest ports in vspan
        session.
      properties:
        portgroupName:
          description: |2
            The key of the port.
          type: string
      required:
        - portgroupName
      allOf:
        - $ref: '#/components/schemas/DvsFault'

    ArrayOfVspanPortgroupPromiscChangeFault:
      type: object
      description: |2
        A boxed array of *VspanPortgroupPromiscChangeFault*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VspanPortgroupPromiscChangeFault'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VspanPortgroupTypeChangeFault:
      type: object
      description: |2
        Thrown when changing a portgroup from static/dynamic binding to
        ephemeral(no binding) if any ports in this portgroup participate in
        Distributed Port Mirroring session.
      properties:
        portgroupName:
          description: |2
            The name of the portgroup.
          type: string
      required:
        - portgroupName
      allOf:
        - $ref: '#/components/schemas/DvsFault'

    ArrayOfVspanPortgroupTypeChangeFault:
      type: object
      description: |2
        A boxed array of *VspanPortgroupTypeChangeFault*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VspanPortgroupTypeChangeFault'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VspanPromiscuousPortNotSupported:
      type: object
      description: |2
        Thrown if a promiscuous port appears in transmitted source or destination
        ports of any Distributed Port Mirroring session.
      properties:
        vspanSessionKey:
          description: |2
            The key of the Distributed Port Mirroring session in which a promiscuous port is used as
            transmitted source or destination ports.
          type: string
        portKey:
          description: |2
            The key of the promiscuous port that appears in transmitted
            source or destination ports.
          type: string
      required:
        - vspanSessionKey
        - portKey
      allOf:
        - $ref: '#/components/schemas/DvsFault'

    ArrayOfVspanPromiscuousPortNotSupported:
      type: object
      description: |2
        A boxed array of *VspanPromiscuousPortNotSupported*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VspanPromiscuousPortNotSupported'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VspanSameSessionPortConflict:
      type: object
      description: |2
        Thrown if a dvPort appears in both the source and destination
        ports of the same Distributed Port Mirroring session.
      properties:
        vspanSessionKey:
          description: |2
            The key of the Distributed Port Mirroring session in which a dvPort appears in both the source and destination ports
          type: string
        portKey:
          description: |2
            The key of the port that appears in both the source and
            destination ports of the same Distributed Port Mirroring session.
          type: string
      required:
        - vspanSessionKey
        - portKey
      allOf:
        - $ref: '#/components/schemas/DvsFault'

    ArrayOfVspanSameSessionPortConflict:
      type: object
      description: |2
        A boxed array of *VspanSameSessionPortConflict*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VspanSameSessionPortConflict'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    WakeOnLanNotSupported:
      type: object
      description: |2
        The virtual machine and at least one of its virtual NICs are configured to
        use Wake-on-LAN, but the host does not support Wake-on-LAN for the
        virtual machine's selected guest OS.
      allOf:
        - $ref: '#/components/schemas/VirtualHardwareCompatibilityIssue'

    ArrayOfWakeOnLanNotSupported:
      type: object
      description: |2
        A boxed array of *WakeOnLanNotSupported*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/WakeOnLanNotSupported'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    WakeOnLanNotSupportedByVmotionNIC:
      type: object
      description: |2
        This fault is thrown when Wake-on-LAN isn't supported by the Vmotion NIC on the host.
      allOf:
        - $ref: '#/components/schemas/HostPowerOpFailed'

    ArrayOfWakeOnLanNotSupportedByVmotionNIC:
      type: object
      description: |2
        A boxed array of *WakeOnLanNotSupportedByVmotionNIC*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/WakeOnLanNotSupportedByVmotionNIC'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    WillLoseHAProtection:
      type: object
      description: |2
        This fault is reported when the execution of a storage vmotion or
        relocate operation would impact vSphere HA's ability to
        restart a VM.
        
        For storage vmotion, this fault
        is reported when HA protection will be lost after the vmotion
        completes. Consequently, HA would not restart the VM if it
        subsequently failed. For relocate, relocate is not supported on
        VMs that failed before the operation is attempted and are in the
        process of being restarted at the time the operation is performed.
      properties:
        resolution:
          description: |2
            The steps the user can take to restore protection if the
            the operation is performed.
            
            Values come from
            *WillLoseHAProtectionResolution_enum*.
          type: string
      required:
        - resolution
      allOf:
        - $ref: '#/components/schemas/MigrationFault'

    ArrayOfWillLoseHAProtection:
      type: object
      description: |2
        A boxed array of *WillLoseHAProtection*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/WillLoseHAProtection'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    WillModifyConfigCpuRequirements:
      type: object
      description: |2
        A virtual machine's total CPU feature requirements are determined by
        overlaying the requirements specified in its configuration (if any) on top
        of the requirements specified in the descriptor for its guest OS.
        
        It is
        therefore possible for a host change to implicitly change a virtual
        machine's CPU feature requirements. The guest OS descriptor may have
        different requirements on the new host. Or, if the virtual machine
        currently specifies requirements in its configuration, those requirements
        will be lost if the new host does not support this.
        
        This fault indicates that the virtual machine's CPU feature requirements
        would change because of a migration, and also that the destination host
        does support storing CPU feature requirements in the virtual machine's
        configuration. (If the destination host does not support such an action,
        *CannotModifyConfigCpuRequirements* is used instead of this fault.)
        
        This is a warning to notify the user that the migration process will
        adjust the virtual machine's configuration so that it will be operating
        under an unchanged set of CPU feature requirements on its new host. If the
        user wishes to expose the different guest OS requirements of the new host,
        the user will need to edit the virtual machine's configuration after the
        migration.
      allOf:
        - $ref: '#/components/schemas/MigrationFault'

    ArrayOfWillModifyConfigCpuRequirements:
      type: object
      description: |2
        A boxed array of *WillModifyConfigCpuRequirements*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/WillModifyConfigCpuRequirements'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    WillResetSnapshotDirectory:
      type: object
      description: |2
        This fault is reported when the execution of a storage vmotion or
        relocate operation would reset the snapshotDirectory settings
        to its default value (VM's home/config directory).
      allOf:
        - $ref: '#/components/schemas/MigrationFault'

    ArrayOfWillResetSnapshotDirectory:
      type: object
      description: |2
        A boxed array of *WillResetSnapshotDirectory*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/WillResetSnapshotDirectory'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    WipeDiskFault:
      type: object
      description: |2
        This exception is thrown when VirtualMachine.wipeDisk
        encounters an error
      allOf:
        - $ref: '#/components/schemas/VimFault'

    ArrayOfWipeDiskFault:
      type: object
      description: |2
        A boxed array of *WipeDiskFault*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/WipeDiskFault'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostActiveDirectoryInfo:
      type: object
      description: |2
        The *HostActiveDirectoryInfo* data object describes ESX host
        membership in an Active Directory domain.
        
        If the
        *HostAuthenticationStoreInfo*.*HostAuthenticationStoreInfo.enabled*
        property is <code>True</code>, the host is a member of a domain
        and the ESX Server will set the domain information properties.
      properties:
        joinedDomain:
          description: |2
            The domain that this host joined.
          type: string
        trustedDomain:
          description: |2
            List of domains with which the <code>joinedDomain</code> has a trust.
            
            The <code>joinedDomain</code> is not included in the
            <code>trustedDomain</code> list.
          type: array
          items:
            type: string
        domainMembershipStatus:
          description: |2
            Health information about the domain membership.
            
            See *HostActiveDirectoryInfoDomainMembershipStatus_enum*.
          type: string
        smartCardAuthenticationEnabled:
          deprecated: true
          description: |2
            Deprecated as of vSphere API 8.0U3, and there is no replacement for it.
            
            Whether local smart card authentication is enabled.
          type: boolean
      allOf:
        - $ref: '#/components/schemas/HostDirectoryStoreInfo'

    ArrayOfHostActiveDirectoryInfo:
      type: object
      description: |2
        A boxed array of *HostActiveDirectoryInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostActiveDirectoryInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostActiveDirectory:
      type: object
      description: |2
        The *HostActiveDirectory* data object contains
        Active Directory configuration information for an ESX host.
        
        The vSphere API supports Microsoft Active Directory management
        of authentication for ESX hosts. To integrate an ESX host
        into an Active Directory environment, you use an Active Directory
        account that has the authority to add a computer to a domain.
        The ESX Server locates the Active Directory domain controller.
        When you use the host profile to configure authentication
        for an ESX host, you specify the configuration operation (add or remove).
        To add the host to a domain, specify
        the domain, and the authorized Active Directory account user name and password.
        You do not need to specify these parameters to remove the host from a domain
        because the host has the information it needs to perform the operation.
        When you call *HostProfileManager.ApplyHostConfig_Task*
        to apply the configuration, the ESX Server will call the appropriate
        method (*HostActiveDirectoryAuthentication.JoinDomain_Task*
        or *HostActiveDirectoryAuthentication.LeaveCurrentDomain_Task*)
        on your behalf.
        
        Before you call the method to apply the host profile, check to see that the
        *HostAuthenticationManager*.*HostAuthenticationManager.supportedStore*
        array contains a *HostActiveDirectoryAuthentication* object.
        The presence of the Active Directory authentication object indicates
        that a host is capable of joining a domain.
        However, if you try to add a host to a domain when the
        *HostAuthenticationStoreInfo*.*HostAuthenticationStoreInfo.enabled*
        property is <code>True</code>, the join method will throw a fault.
        
        As an alternative to using the host profile to configure Active Directory
        authentication for an ESX host, your vSphere client application can call
        the *HostActiveDirectoryAuthentication* join and leave methods directly
        to add the host to or remove the host from a domain.
        
        To take advantage of ESX host membership in an Active Directory domain,
        grant permissions on the ESX host to users and groups in Active Directory
        who should have direct access to management of the ESX host.
        Use the *UserDirectory*.*UserDirectory.RetrieveUserGroups*
        method to obtain information about Active Directory users and groups.
        After retrieving the Active Directory data, you can use the
        *AuthorizationManager*.*AuthorizationManager.SetEntityPermissions*
        method to set the *Permission.principal* property
        to the appropriate user or group.
        
        By default, the ESX host assigns the Administrator role to the "ESX Admins" group.
        If the group does not exist when the host joins the domain, the host will
        not assign the role. In this case, you must create the "ESX Admins"
        group in the Active Directory. The host will periodically check the domain controller
        for the group and will assign the role when the group exists.
      properties:
        changeOperation:
          description: |2
            Configuration change operation to apply to the host.
            
            You can specify
            the following values:
            - *add*:
              Add the host to the domain. The ESX Server will use the
              *HostActiveDirectorySpec* information
              (domain, account user name and password) to call
              *HostActiveDirectoryAuthentication.JoinDomain_Task* and optionally
              configure smart card authentication by calling
              *HostActiveDirectoryAuthentication.DisableSmartCardAuthentication*
              and replacing the trust anchors with those provided.
            - *remove*:
              Remove the host from its current domain.
              The ESX Server will call
              *HostActiveDirectoryAuthentication.LeaveCurrentDomain_Task*, specifying
              <code>True</code> for the <code>force</code> parameter to delete
              existing permissions.
              *HostActiveDirectoryAuthentication.DisableSmartCardAuthentication*
              is also called if smart card authentication is enabled and trust
              anchors are removed.
              
            See also *HostConfigChangeOperation_enum*.
          type: string
        spec:
          description: |2
            Active Directory domain access information (domain and account
            user name and password).
          $ref: '#/components/schemas/HostActiveDirectorySpec'
      required:
        - changeOperation
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostActiveDirectory:
      type: object
      description: |2
        A boxed array of *HostActiveDirectory*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostActiveDirectory'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostActiveDirectorySpec:
      type: object
      description: |2
        The *HostActiveDirectorySpec* data object defines
        properties for Active Directory domain access.
      properties:
        domainName:
          description: |2
            Domain name.
          type: string
        userName:
          description: |2
            Name of an Active Directory account with the authority
            to add a host to the domain.
          type: string
        password:
          description: |2
            Password for the Active Directory account.
          type: string
          format: password
        camServer:
          description: |2
            If set, the CAM server will be used to join the domain
            and the <code>userName</code> and <code>password</code> fields
            will be ignored.
          type: string
        thumbprint:
          description: |2
            Thumbprint for the SSL certficate of CAM server
          type: string
        certificate:
          description: |2
            PEM-encoded certificate of the CAM server
            This field replaces *HostActiveDirectorySpec.thumbprint*.
            
            If both *HostActiveDirectorySpec.thumbprint*
            and *HostActiveDirectorySpec.certificate* fields are set, the *HostActiveDirectorySpec.thumbprint*
            should match the *HostActiveDirectorySpec.certificate*.
            
            ***Since:*** vSphere API Release 8.0.3.0
          type: string
        smartCardAuthenticationEnabled:
          deprecated: true
          description: |2
            Deprecated as of vSphere API 8.0U3, and there is no replacement for it.
            
            Support smart card authentication of local users.
          type: boolean
        smartCardTrustAnchors:
          deprecated: true
          description: |2
            Deprecated as of vSphere API 8.0U3, and there is no replacement for it.
            
            Trusted root certificates for smart cards.
          type: array
          items:
            type: string
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostActiveDirectorySpec:
      type: object
      description: |2
        A boxed array of *HostActiveDirectorySpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostActiveDirectorySpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostAssignableHardwareBinding:
      type: object
      description: |2
        Data object indicating a device instance has been allocated to a VM.
      properties:
        instanceId:
          description: |2
            Instance ID of assigned device.
          type: string
        vm:
          description: |2
            Virtual machine to which the device is assigned.
            
            Refers instance of *VirtualMachine*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - instanceId
        - vm
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostAssignableHardwareBinding:
      type: object
      description: |2
        A boxed array of *HostAssignableHardwareBinding*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostAssignableHardwareBinding'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostAssignableHardwareConfig:
      type: object
      description: |2
        The AssignableHardwareConfig data object describes properties
        of all assignable devices on the host.
      properties:
        attributeOverride:
          description: |2
            List of attribute overrides.
          type: array
          items:
            $ref: '#/components/schemas/HostAssignableHardwareConfigAttributeOverride'
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostAssignableHardwareConfig:
      type: object
      description: |2
        A boxed array of *HostAssignableHardwareConfig*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostAssignableHardwareConfig'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostAssignableHardwareConfigAttributeOverride:
      type: object
      description: |2
        An AttributeOverride provides a name-value pair that overrides
        for a particular instance node a configurable Attribute defined
        by that device.
      properties:
        instanceId:
          description: |2
            Instance ID of the Assignable Hardware instance node where
            the attribute specified by name is overridden.
          type: string
        name:
          description: |2
            Name of attribute to override.
          type: string
        value:
          description: |2
            When AssignableHardwareConfig is a returned data object:
            Value returned will always be set.
            
            When AssignableHardwareConfig is used as a parameter to
            an operation updating Assignable Hardware configuration:
            If value is set, an existing AttributeOverride with matching
            instanceId and name will have its value updated; if there is
            no existing AttributeOverride that matches, a new
            AttributeOverride is created. The type of the value must match
            the type of the attribute value being overridden.
            If value is not set, an existing AttributeOverride matching
            the specified instanceId and name is deleted.
          $ref: '#/components/schemas/Any'
      required:
        - instanceId
        - name
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostAssignableHardwareConfigAttributeOverride:
      type: object
      description: |2
        A boxed array of *HostAssignableHardwareConfigAttributeOverride*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostAssignableHardwareConfigAttributeOverride'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostAuthenticationManagerInfo:
      type: object
      description: |2
        The *HostAuthenticationManagerInfo* data object provides
        access to authentication information for the ESX host.
      properties:
        authConfig:
          description: |2
            An array containing entries for local authentication and host
            Active Directory authentication.
            - *HostLocalAuthenticationInfo* - Local authentication is always enabled.
            - *HostActiveDirectoryInfo* - Host Active Directory authentication information
              includes the name of the domain, membership status,
              and a list of other domains trusted by the membership domain.
          type: array
          items:
            $ref: '#/components/schemas/HostAuthenticationStoreInfo'
      required:
        - authConfig
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostAuthenticationManagerInfo:
      type: object
      description: |2
        A boxed array of *HostAuthenticationManagerInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostAuthenticationManagerInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostAuthenticationStoreInfo:
      type: object
      description: |2
        The *HostAuthenticationStoreInfo* base class defines status information
        for local and host Active Directory authentication.
      properties:
        enabled:
          description: |2
            Indicates whether the authentication store is configured.
            - Host Active Directory authentication - <code>enabled</code>
              is <code>True</code> if the host is a member of a domain.
            - Local authentication - <code>enabled</code> is always <code>True</code>.
          type: boolean
      required:
        - enabled
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostAuthenticationStoreInfo:
      type: object
      description: |2
        A boxed array of *HostAuthenticationStoreInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostAuthenticationStoreInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    AutoStartPowerInfo:
      type: object
      description: |2
        This object type describes the power-on / power-off behavior for a given virtual
        machine.
        
        Virtual machines can be configured to wait for a period of time before
        starting or to wait to receive a successful heartbeat from a virtual machine
        before starting the next virtual machine in the sequence.
        - For a power-on operation, if waitForHeartbeat is true, then the power-on
          sequence continues after the first heartbeat has been received. If
          waitForHeartbeat is false, the system waits for the specified delay and
          then continues the power-on sequence.
        - For a power-off operation, if delay is non-zero, the requested power-off
          action is invoked (powerOff, suspend, guestShutdown) on the virtual
          machine and the system waits until the number of seconds specified in the
          delay have passed.
          
        If startAction and stopAction for a virtual machine are both set to none, that
        virtual machine is removed from the AutoStart sequence.
        Virtual machines can be configured both to wait for a period of time before
        starting and to wait for a heartbeat. In such a case, the waiting virtual machine
        only waits until either of these conditions are met. In other words, a virtual
        machine starts in either of the following cases:
        - After receiving a heartbeat but before the start delay has elapsed
        - After the start delay has elapsed but before receiving a heartbeat
          
        This provides a better experience since as soon as one virtual machine begins
        sending heartbeats, indicating it has successfully started up, the next machine
        will begin starting up. This happens even if the startDelay has not yet elapsed.
        Similarly, if one virtual machine fails to begin sending heartbeats, perhaps
        because it could not start up, other machines are not blocked from starting up
        since the startDelay eventually elapses.
      properties:
        key:
          description: |2
            Virtual machine to power on or power off.
            
            Refers instance of *VirtualMachine*.
          $ref: '#/components/schemas/ManagedObjectReference'
        startOrder:
          description: |2
            The autostart priority of this virtual machine.
            
            Virtual machines with a lower
            number are powered on first. On host shutdown, the virtual machines are
            shut down in reverse order, meaning those with a higher number are powered off
            first.
            
            Positive values indicate a start order and -1 indicates the machine can be
            powered on at any time. Machines with a -1 value are typically powered on and
            off after all virtual machines with positive startOrder values. Failure to
            meet the following requirements results in an InvalidArgument exception:
            - startOrder must be set to -1 if startAction is set to none
            - startOrder must be -1 or positive integers. Values such as 0 or
              \-2 are not valid.
            - startOrder is relative to other virtual machines in the autostart
              sequence. Hence specifying a startOrder of 4 when there are only 3
              virtual machines in the Autostart sequence is not valid.
              
            If a newly established or changed startOrder value for a virtual machine
            matches an existing startOrder value, the newly applied value takes
            precedence, and the existing value is incremented by one. The incremented
            startOrder value is checked for collisions, and the same rule is applied if
            one is found. This simple system ensures no two virtual machines ever have the
            same order number.
            
            For example, consider the case where there are three virtual machines with
            different startOrder values. Virtual machine A has not yet established a
            startOrder, virtual machine B has a startOrder value of 1 and Virtual Machine
            C has a startOrder value of 2. If virtual machine A's startOrder is set to 1,
            then virtual machine B's startOrder is incremented to 2. This creates a
            conflict with virtual machine C's startOrder value, which is also incremented,
            this time to 3.
          type: integer
          format: int32
        startDelay:
          description: |2
            Delay in seconds before continuing with the next virtual machine in the order
            of machines to be started.
            
            If the delay is specified as -1, then the system
            default is used.
          type: integer
          format: int32
        waitForHeartbeat:
          $ref: '#/components/schemas/AutoStartWaitHeartbeatSetting_enum'
        startAction:
          description: |2
            How to start the virtual machine.
            
            Valid settings are none or powerOn.
            If set to none, then the virtual machine does not participate in auto-start.
          type: string
        stopDelay:
          description: |2
            Delay in seconds before continuing with the next virtual machine in the order
            sequence.
            
            If the delay is -1, then the system default is used.
          type: integer
          format: int32
        stopAction:
          description: |2
            Defines the stop action for the virtual machine.
            
            Can be set to none,
            systemDefault, powerOff, or suspend. If set to none, then the virtual machine
            does not participate in auto-stop.
          type: string
      required:
        - key
        - startOrder
        - startDelay
        - waitForHeartbeat
        - startAction
        - stopDelay
        - stopAction
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfAutoStartPowerInfo:
      type: object
      description: |2
        A boxed array of *AutoStartPowerInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/AutoStartPowerInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostAutoStartManagerConfig:
      type: object
      description: |2
        Contains the entire auto-start/auto-stop configuration.
      properties:
        defaults:
          description: |2
            System defaults for auto-start/auto-stop.
          $ref: '#/components/schemas/AutoStartDefaults'
        powerInfo:
          description: |2
            Lists the auto-start/auto-stop configuration.
            
            If a virtual machine is not
            mentioned in this array, it does not participate in auto-start/auto-stop
            operations.
          type: array
          items:
            $ref: '#/components/schemas/AutoStartPowerInfo'
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostAutoStartManagerConfig:
      type: object
      description: |2
        A boxed array of *HostAutoStartManagerConfig*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostAutoStartManagerConfig'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    AutoStartDefaults:
      type: object
      description: |2
        Defines the system default auto-start/auto-stop values.
      properties:
        enabled:
          description: |2
            Indicates whether or not auto-start manager is enabled.
          type: boolean
        startDelay:
          description: |2
            System-default autoStart delay in seconds.
            
            The default is 120 seconds.
          type: integer
          format: int32
        stopDelay:
          description: |2
            System-default autoStop delay in seconds.
            
            The default is 120 seconds.
          type: integer
          format: int32
        waitForHeartbeat:
          description: |2
            System-default waitForHeartbeat setting.
          type: boolean
        stopAction:
          description: |2
            System-default power-off action.
            
            Used if the stopAction string in the
            AutoPowerInfo object for a particular machine is set to systemDefault.
            If stopAction and startAction for a virtual machine are both set to none,
            that virtual machine is removed from the AutoStart sequence.
          type: string
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfAutoStartDefaults:
      type: object
      description: |2
        A boxed array of *AutoStartDefaults*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/AutoStartDefaults'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostBIOSInfo:
      type: object
      properties:
        biosVersion:
          description: |2
            The current BIOS version of the physical chassis
          type: string
        releaseDate:
          description: |2
            The release date for the BIOS.
          type: string
          format: date-time
        vendor:
          description: |2
            The vendor for the BIOS.
          type: string
        majorRelease:
          description: |2
            BIOS Major Release
          type: integer
          format: int32
        minorRelease:
          description: |2
            "BIOS Minor Release
          type: integer
          format: int32
        firmwareMajorRelease:
          type: integer
          format: int32
        firmwareMinorRelease:
          description: |2
            Embedded Controller Firmware Minor Release
          type: integer
          format: int32
        firmwareType:
          description: |2
            Firmware Type of the host.
            
            The set of supported values is described
            in *HostBIOSInfoFirmwareType_enum*
            
            ***Since:*** vSphere API Release 8.0.2.0
          type: string
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostBIOSInfo:
      type: object
      description: |2
        A boxed array of *HostBIOSInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostBIOSInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostBlockAdapterTargetTransport:
      type: object
      description: |2
        Block adapter transport information about a SCSI target.
      allOf:
        - $ref: '#/components/schemas/HostTargetTransport'

    ArrayOfHostBlockAdapterTargetTransport:
      type: object
      description: |2
        A boxed array of *HostBlockAdapterTargetTransport*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostBlockAdapterTargetTransport'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostBlockHba:
      type: object
      description: |2
        This data object type describes the host bus adapter that
        provides block devices.
      allOf:
        - $ref: '#/components/schemas/HostHostBusAdapter'

    ArrayOfHostBlockHba:
      type: object
      description: |2
        A boxed array of *HostBlockHba*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostBlockHba'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostBootDeviceInfo:
      type: object
      description: |2
        This data object represents the boot device information of the host.
      properties:
        bootDevices:
          description: |2
            The list of boot devices present on the host
          type: array
          items:
            $ref: '#/components/schemas/HostBootDevice'
        currentBootDeviceKey:
          description: |2
            The key of the current boot device that the host is configured to
            boot.
            
            This property is unset if the current boot device is disabled.
          type: string
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostBootDeviceInfo:
      type: object
      description: |2
        A boxed array of *HostBootDeviceInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostBootDeviceInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostBootDevice:
      type: object
      description: |2
        The *HostBootDevice* data object represents a boot device on the host system.
      properties:
        key:
          description: |2
            The identifier for the boot device.
          type: string
        description:
          description: |2
            The description of the boot device.
          type: string
      required:
        - key
        - description
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostBootDevice:
      type: object
      description: |2
        A boxed array of *HostBootDevice*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostBootDevice'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostCacheConfigurationInfo:
      type: object
      description: |2
        Host solid state drive cache configuration information.
      properties:
        key:
          description: |2
            Datastore used for swap performance enhancements.
            
            Refers instance of *Datastore*.
          $ref: '#/components/schemas/ManagedObjectReference'
        swapSize:
          description: |2
            Space allocated on this datastore to implement swap performance
            enhancements, in MB.
          type: integer
          format: int64
      required:
        - key
        - swapSize
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostCacheConfigurationInfo:
      type: object
      description: |2
        A boxed array of *HostCacheConfigurationInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostCacheConfigurationInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostCacheConfigurationSpec:
      type: object
      description: |2
        Host cache configuration specification.
      properties:
        datastore:
          description: |2
            Datastore used for swap performance enhancement.
            
            Refers instance of *Datastore*.
          $ref: '#/components/schemas/ManagedObjectReference'
        swapSize:
          description: |2
            Space to allocate on this datastore to implement swap performance
            enhancements, in MB.
            
            This value should be less or equal to free space
            capacity on the datastore *DatastoreSummary.freeSpace*.
          type: integer
          format: int64
      required:
        - datastore
        - swapSize
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostCacheConfigurationSpec:
      type: object
      description: |2
        A boxed array of *HostCacheConfigurationSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostCacheConfigurationSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostCapability:
      type: object
      description: |2
        Specifies the capabilities of the particular host.
        
        This set of
        capabilities is referenced in other parts of the API specification
        to indicate under what circumstances an API will throw a
        *NotSupported* fault.
      properties:
        recursiveResourcePoolsSupported:
          type: boolean
        cpuMemoryResourceConfigurationSupported:
          description: |2
            Flag indicating whether cpu and memory resource configuration is
            supported.
            
            If this is set to false,
            *ResourcePool.UpdateConfig*,
            *ResourcePool.UpdateChildResourceConfiguration*
            cannot be used for changing the cpu/memory resource configurations.
          type: boolean
        rebootSupported:
          description: |2
            Flag indicating whether rebooting the host is supported.
          type: boolean
        shutdownSupported:
          description: |2
            Flag indicating whether the host can be powered off
          type: boolean
        vmotionSupported:
          description: |2
            Flag indicating whether you can perform VMotion.
          type: boolean
        standbySupported:
          description: |2
            Flag indicating whether you can put the host in a power down
            state, from which it can be powered up automatically.
          type: boolean
        ipmiSupported:
          description: |2
            Flag indicating whether the host supports
            IPMI (Intelligent Platform Management Interface).
            
            XXX - Make ipmiSupported optional until there is a compatible hostagent.
          type: boolean
        maxSupportedVMs:
          description: |2
            The maximum number of virtual machines that can exist on this host.
            
            If this capability is not set, the number of virtual machines is
            unlimited.
          type: integer
          format: int32
        maxRunningVMs:
          description: |2
            The maximum number of virtual machines that can be running
            simultaneously on this host.
            
            If this capability is not set, the number of virtual machines
            running simultaneously is unlimited.
          type: integer
          format: int32
        maxSupportedVcpus:
          description: |2
            The maximum number of virtual CPUs supported per virtual machine.
            
            If this capability is not set, the number is unlimited.
          type: integer
          format: int32
        maxRegisteredVMs:
          description: |2
            The maximum number of registered virtual machines supported by
            the host.
            
            If this limit is exceeded, the management agent will be
            at risk of running out of system resources. *configIssue* will be posted on
            *HostSystem* in this case.
            
            If this capability is not set, the number is unknown.
          type: integer
          format: int32
        datastorePrincipalSupported:
          description: |2
            Flag indicating whether datastore principal user
            is supported on the host.
          type: boolean
        sanSupported:
          description: |2
            Flag indicating whether access to SAN devices is supported.
          type: boolean
        nfsSupported:
          description: |2
            Is access to NFS devices supported.
          type: boolean
        iscsiSupported:
          description: |2
            Is access to iSCSI devices supported.
          type: boolean
        vlanTaggingSupported:
          description: |2
            Is VLAN Tagging supported.
          type: boolean
        nicTeamingSupported:
          description: |2
            Is NIC teaming supported.
          type: boolean
        highGuestMemSupported:
          description: |2
            Is high guest memory supported.
          type: boolean
        maintenanceModeSupported:
          description: |2
            Is maintenance mode supported
          type: boolean
        suspendedRelocateSupported:
          description: |2
            Indicates whether this host supports relocation of
            suspended virtual machines.
            
            Must be true on the source
            and destination hosts for the relocation to work.
          type: boolean
        restrictedSnapshotRelocateSupported:
          description: |2
            Indicates whether this host supports relocation of
            virtual machines with snapshots.
            
            Must be true on the
            source and destination hosts for the relocation to work.
            Even if this is true, the following conditions must hold:
            1\) All the the vm's files are in one directory prior
            to the relocate.
            2\) All of the vm's files will be in one directory
            after the relocate.
            3\) The source and destination hosts are the same product
            version.
          type: boolean
        perVmSwapFiles:
          description: |2
            Flag indicating whether virtual machine execution on this host involves
            a swapfile for each virtual machine.
            
            If true, the swapfile placement
            for a powered-on virtual machine is advertised in its FileLayout by
            the *swapFile* property.
          type: boolean
        localSwapDatastoreSupported:
          description: |2
            Flag indicating whether the host supports selecting a datastore that
            that may be used to store virtual machine swapfiles.
          type: boolean
        unsharedSwapVMotionSupported:
          description: |2
            Flag indicating whether the host supports participating in a VMotion
            where the virtual machine swapfile is not visible to the destination.
          type: boolean
        backgroundSnapshotsSupported:
          description: |2
            Flag indicating whether background snapshots are supported on this host.
          type: boolean
        preAssignedPCIUnitNumbersSupported:
          description: |2
            Flag to indicate whether the server returns unit numbers in a
            pre-assigned range for devices on the PCI bus.
            
            When the server supports this flag, the device unit number namespace is
            partitioned by device type. Different types of devices will sit in
            a specific range of unit numbers that may not correspond to physical
            slots in the pci bus but present a relative ordering of the devices
            with respect to other devices of the same type.
            Note that this does not mean that the user can set the relative ordering
            between device types, but only allows stable orderings between devices
            of the same type. The unit number will now clearly represent an ordering
            between devices of the same type.
            *VirtualDevice.unitNumber*
            This property is only available for devices on the pci controller.
          type: boolean
        screenshotSupported:
          description: |2
            Indicates whether the screenshot retrival over https is supported for this host's
            virtual machines.
            
            If true, a screenshot can be retrieved at the HTTPS relative path
            _/screen?id=&lt;managed object ID of virtual machine or snapshot&gt;_.
            If any of the optional parameters 'top', 'left', 'bottom', and 'right' is
            specified, the returned image will be cropped from the rectangle with upper left
            corner (left, top) and bottom right corner (right - 1, bottom - 1). These values
            default to the top, left, bottom and right edges of the image.
            The client must use an authenticated session with privilege
            VirtualMachine.Interact.ConsoleInteract on the requested virtual machine or,
            in the case of a snapshot, the virtual machine associated with that snapshot.
          type: boolean
        scaledScreenshotSupported:
          description: |2
            Indicates whether scaling is supported for screenshots retrieved over https.
            
            If true, screenshot retrieval supports the additional optional
            parameters 'width' and 'height'. After cropping, the returned image will be scaled
            to these dimensions. If only one of these parameters is specified, default behavior
            is to return an image roughly proportional to the source image.
          type: boolean
        storageVMotionSupported:
          description: |2
            Indicates whether the storage of a powered-on virtual machine may be
            relocated.
          type: boolean
        vmotionWithStorageVMotionSupported:
          description: |2
            Indicates whether the storage of a powered-on virtual machine may be
            relocated while simultaneously changing the execution host of the
            virtual machine.
          type: boolean
        vmotionAcrossNetworkSupported:
          description: |2
            Indicates whether the network of a powered-on virtual machine can be
            changed while simultaneously changing the execution host of the
            virtual machine.
          type: boolean
        maxNumDisksSVMotion:
          description: |2
            Maximum number of migrating disks allowed of a migrating VM during SVMotion.
            
            If this capability is not set, then the maximum is considered to be 64.
          type: integer
          format: int32
        maxVirtualDiskDescVersionSupported:
          description: |2
            Maximum version of vDiskVersion supported by this host.
            
            If this capability is not set, then the maximum is considered to be 6.
            
            ***Since:*** vSphere API Release 8.0.1.0
          type: integer
          format: int32
        hbrNicSelectionSupported:
          description: |2
            Indicates whether a dedicated nic can be selected for vSphere Replication
            LWD traffic, i.e., from the primary host to the VR server.
          type: boolean
        vrNfcNicSelectionSupported:
          description: |2
            Indicates whether a dedicated nic can be selected for vSphere Replication
            NFC traffic, i.e., from the VR server to the secondary host.
          type: boolean
        recordReplaySupported:
          deprecated: true
          description: |2
            Deprecated as of vSphere API 6.0.
            
            Indicates whether this host supports record and replay
          type: boolean
        ftSupported:
          deprecated: true
          description: |2
            Deprecated as of vSphere API 6.0.
            
            Indicates whether this host supports Fault Tolerance
            There can be many reasons why a host does not support Fault
            Tolerance, which includes CPU compatibility, product
            compatibility as well as other host configuration settings.
            
            For specific reasons, look into
            *HostCapability.replayCompatibilityIssues* and
            *HostCapability.ftCompatibilityIssues*
            In releases after vSphere API 5.0, vSphere Servers might not
            generate property collector update notifications for this property.
            To obtain the latest value of the property, you can use
            PropertyCollector methods RetrievePropertiesEx or WaitForUpdatesEx.
            If you use the PropertyCollector.WaitForUpdatesEx method, specify
            an empty string for the version parameter.
            Since this property is on a DataObject, an update returned by WaitForUpdatesEx may
            contain values for this property when some other property on the DataObject changes.
            If this update is a result of a call to WaitForUpdatesEx with a non-empty
            version parameter, the value for this property may not be current.
          type: boolean
        replayUnsupportedReason:
          deprecated: true
          description: |2
            Deprecated as of vSphere API 4.1, use
            *HostCapability.replayCompatibilityIssues*.
            
            For a host whose CPU doesn't support replay, indicates the reason
            for the incompatibility.
            
            *HostReplayUnsupportedReason_enum*
            represents the set of possible values.
          type: string
        replayCompatibilityIssues:
          deprecated: true
          description: |2
            Deprecated as of vSphere API 6.0.
            
            For a host which doesn't support replay, indicates all the reasons
            for the incompatibility.
            
            *HostReplayUnsupportedReason_enum*
            lists the set of possible values.
          type: array
          items:
            type: string
        smpFtSupported:
          description: |2
            Indicates whether this host supports smp fault tolerance
          type: boolean
        ftCompatibilityIssues:
          deprecated: true
          description: |2
            Deprecated as of vSphere API 6.0.
            
            For a host which doesn't support Fault Tolerance, indicates all the reasons
            for the incompatibility.
            
            *HostCapabilityFtUnsupportedReason_enum*
            lists the set of possible values.
          type: array
          items:
            type: string
        smpFtCompatibilityIssues:
          description: |2
            For a host which doesn't support smp fault tolerance, indicates all the
            reasons for the incompatibility.
            
            *HostCapabilityFtUnsupportedReason_enum* lists the set of possible
            values.
          type: array
          items:
            type: string
        maxVcpusPerFtVm:
          description: |2
            The maximum number of vCPUs allowed for a fault-tolerant virtual machine.
          type: integer
          format: int32
        loginBySSLThumbprintSupported:
          description: |2
            Flag indicating whether this host supports SSL thumbprint authentication
          type: boolean
        cloneFromSnapshotSupported:
          description: |2
            Indicates whether or not cloning a virtual machine from a snapshot
            point is allowed.
            
            This property must be true on the host where the virtual machine
            is currently residing. This property need not be true on the
            destination host for the clone.
            
            See also *VirtualMachineCloneSpec.snapshot*.
          type: boolean
        deltaDiskBackingsSupported:
          description: |2
            Flag indicating whether explicitly creating arbirary configurations of
            delta disk backings is supported.
            
            A delta disk backing is a way to preserve a virtual disk backing
            at some point in time. A delta disk backing is a file backing which in
            turn points to the original virtual disk backing (the parent). After a delta
            disk backing is added, all writes go to the delta disk backing. All reads
            first try the delta disk backing and then try the parent backing if needed.
            
            If this property is false, then delta disk backings can only be implicitly
            created through using snapshot operations and two virtual machines cannot
            safely share a parent disk backing.
            
            If this property is true, then delta disk backings can be explicitly created
            and managed, and two virtual machines may safely share a parent disk backing.
            
            In the context above, "safely" means that performing operations on one of the
            virtual machines will not affect the operation of the other virtual machine.
            
            See also *VirtualDiskSparseVer1BackingInfo.parent*, *VirtualDiskSparseVer2BackingInfo.parent*, *VirtualDiskFlatVer1BackingInfo.parent*, *VirtualDiskFlatVer2BackingInfo.parent*, *VirtualDiskRawDiskMappingVer1BackingInfo.parent*, *VirtualMachine.PromoteDisks_Task*, *VirtualMachineRelocateSpec.diskMoveType*, *VirtualMachineRelocateSpecDiskLocator.diskMoveType*.
          type: boolean
        perVMNetworkTrafficShapingSupported:
          description: |2
            Indicates whether network traffic shaping on a
            per virtual machine basis is supported.
          type: boolean
        tpmSupported:
          description: |2
            Flag indicating whether this host supports the integrity measurement using
            a TPM device.
          type: boolean
        tpmVersion:
          description: |2
            TPM version if supported by this host.
          type: string
        txtEnabled:
          description: |2
            Flag indicating whether Intel TXT is enabled on this host.
            
            TPM attestation may be used to definitively determine the Intel TXT
            Measured Launch Environment (MLE) details.
          type: boolean
        supportedCpuFeature:
          deprecated: true
          description: |2
            Deprecated as of vSphere API 6.5 use
            *featureCapability*.
            
            CPU feature set that is supported by the virtualization platform.
            
            This
            feature set may reflect characteristics of the product capabilities and
            licensing. For any feature marked '-', reference the
            *cpuFeature* array of the host's
            HardwareInfo to determine the correct value.
          type: array
          items:
            $ref: '#/components/schemas/HostCpuIdInfo'
        virtualExecUsageSupported:
          description: |2
            Indicates whether the host supports configuring hardware
            virtualization (HV) support for virtual machines.
          type: boolean
        storageIORMSupported:
          deprecated: true
          description: |2
            Deprecated as of vSphere8.0 U3, and there is no replacement for it.
            
            Indicates whether the host supports storage I/O resource
            management.
          type: boolean
        vmDirectPathGen2Supported:
          deprecated: true
          description: |2
            Deprecated as of vSphere API 8.0. VMDirectPath Gen 2 is no longer supported and
            there is no replacement.
            
            Indicates whether the host supports network passthrough using
            VMDirectPath Gen 2.
            
            Note that this is a general capability for the host
            and is independent of support by a given physical NIC. If false, the
            reason(s) for lack of support will be provided in
            *HostCapability.vmDirectPathGen2UnsupportedReason* and/or in
            *HostCapability.vmDirectPathGen2UnsupportedReasonExtended*.
            
            See also *PhysicalNic.vmDirectPathGen2Supported*.
          type: boolean
        vmDirectPathGen2UnsupportedReason:
          deprecated: true
          description: |2
            Deprecated as of vSphere API 8.0. VMDirectPath Gen 2 is no longer supported and
            there is no replacement.
            
            If *HostCapability.vmDirectPathGen2Supported* is false, this array will be
            populated with reasons for the lack of support (chosen from
            *HostCapabilityVmDirectPathGen2UnsupportedReason_enum*).
            
            If there is a reason for
            the lack of support that cannot be described by the available constants,
            *HostCapability.vmDirectPathGen2UnsupportedReasonExtended* will be populated
            with an additional explanation provided by the platform.
            
            Note that this list of reasons is not guaranteed to be exhaustive.
            
            If the reason "hostNptIncompatibleProduct" is provided, then that will
            be the only provided reason, as the host software is incapable of
            providing additional information.
          type: array
          items:
            type: string
        vmDirectPathGen2UnsupportedReasonExtended:
          deprecated: true
          description: |2
            Deprecated as of vSphere API 8.0. VMDirectPath Gen 2 is no longer supported and
            there is no replacement.
            
            If *HostCapability.vmDirectPathGen2Supported* is false, this property may
            contain an explanation provided by the platform, beyond the reasons (if
            any) enumerated in *HostCapability.vmDirectPathGen2UnsupportedReason*.
          type: string
        supportedVmfsMajorVersion:
          description: |2
            List of VMFS major versions supported by the host.
          type: array
          items:
            type: integer
            format: int32
        vStorageCapable:
          description: |2
            Indicates whether the host supports vStorage Hardware
            acceleration.
          type: boolean
        snapshotRelayoutSupported:
          description: |2
            Indicates whether this host supports unrestricted relocation of virtual
            machines with snapshots.
            
            Only needs to be true on the destination host for
            the unrestricted relocation to work. The full snapshot relocation does not
            restrict the layout of snapshot files or disks of the virtual machine, nor
            its power state. If the virtual machine is powered on, a storage vmotion
            will be performed to relocate its snapshots and disks.
          type: boolean
        firewallIpRulesSupported:
          description: |2
            Indicates whether this host supports ip address based restrictions in
            the firewall configuration.
          type: boolean
        servicePackageInfoSupported:
          description: |2
            Indicates whether this host supports package information in service
            configuration.
          type: boolean
        maxHostRunningVms:
          description: |2
            The maximum number of virtual machines that can be run on the host.
            
            An unset value indicates that the value could not be obtained. In contrast
            to *HostCapability.maxRunningVMs*, this value is the minimum of (i) the maximum
            number supported by the hardware and (ii) the maximum number permitted by
            the host license.
          type: integer
          format: int32
        maxHostSupportedVcpus:
          description: |2
            The maximum number of virtual CPUs that can be run on the host.
            
            An unset
            value indicates that the value could not be obtained. In contrast to
            *HostCapability.maxSupportedVcpus*, this value is the minimum of (i) the maximum
            number supported by the hardware and (ii) the maximum number permitted by
            the host license.
          type: integer
          format: int32
        vmfsDatastoreMountCapable:
          description: |2
            Indicates whether the host is capable of mounting/unmounting
            VMFS datastores.
          type: boolean
        eightPlusHostVmfsSharedAccessSupported:
          description: |2
            Indicates whether the host is capable of accessing a VMFS disk
            when there are eight or more hosts accessing the disk already.
          type: boolean
        nestedHVSupported:
          description: |2
            Indicates whether the host supports nested hardware-assisted virtualization.
          type: boolean
        vPMCSupported:
          description: |2
            Indicates whether the host supports virtual CPU performance counters.
          type: boolean
        interVMCommunicationThroughVMCISupported:
          description: |2
            Indicates whether the host supports VMCI for communication
            between virtual machines.
          type: boolean
        scheduledHardwareUpgradeSupported:
          description: |2
            Indicates whether the host supports scheduled hardware upgrades.
            
            See also *VirtualMachineConfigInfo.scheduledHardwareUpgradeInfo*.
          type: boolean
        featureCapabilitiesSupported:
          description: |2
            Indicated whether the host supports feature capabilities
            for EVC mode.
          type: boolean
        latencySensitivitySupported:
          description: |2
            Indicates whether the host supports latency sensitivity for the
            virtual machines.
          type: boolean
        storagePolicySupported:
          description: |2
            Indicates that host supports Object-based Storage System and
            Storage-Profile based disk provisioning.
          type: boolean
        accel3dSupported:
          description: |2
            Indicates if 3D hardware acceleration for virtual machines is supported.
          type: boolean
        reliableMemoryAware:
          description: |2
            Indicates that this host uses a reliable memory aware allocation policy.
          type: boolean
        multipleNetworkStackInstanceSupported:
          description: |2
            Indicates whether the host supports Multiple Instance TCP/IP stack
          type: boolean
        messageBusProxySupported:
          description: |2
            Indicates whether the message bus proxy is supported
          type: boolean
        vsanSupported:
          description: |2
            Indicates whether the host supports VSAN functionality.
            
            See also *HostVsanSystem*.
          type: boolean
        vFlashSupported:
          description: |2
            Indicates whether the host supports vFlash.
          type: boolean
        hostAccessManagerSupported:
          description: |2
            Whether this host supports HostAccessManager for controlling direct
            access to the host and for better lockdown mode management.
          type: boolean
        provisioningNicSelectionSupported:
          description: |2
            Indicates whether a dedicated nic can be selected for vSphere Provisioning
            NFC traffic.
          type: boolean
        nfs41Supported:
          description: |2
            Whether this host supports NFS41 file systems.
          type: boolean
        nfs41Krb5iSupported:
          description: |2
            Whether this host support NFS41 Kerberos 5\* security type.
          type: boolean
        turnDiskLocatorLedSupported:
          description: |2
            Indicates whether turning on/off local disk LED is supported
            on the host.
            
            See also *HostStorageSystem.TurnDiskLocatorLedOn_Task*, *HostStorageSystem.TurnDiskLocatorLedOff_Task*.
          type: boolean
        virtualVolumeDatastoreSupported:
          description: |2
            Indicates whether this host supports VirtualVolume based Datastore.
          type: boolean
        markAsSsdSupported:
          description: |2
            Indicates whether mark disk as SSD or Non-SSD is supported
            on the host.
            
            See also *HostStorageSystem.MarkAsSsd_Task*, *HostStorageSystem.MarkAsNonSsd_Task*.
          type: boolean
        markAsLocalSupported:
          description: |2
            Indicates whether mark disk as local or remote is supported
            on the host.
            
            See also *HostStorageSystem.MarkAsLocal_Task*, *HostStorageSystem.MarkAsNonLocal_Task*.
          type: boolean
        smartCardAuthenticationSupported:
          deprecated: true
          description: |2
            Deprecated as of vSphere API 8.0U3, and there is no replacement for it.
            
            Indicates whether this host supports local two-factor user
            authentication using smart cards.
            
            See also *HostActiveDirectoryAuthentication.EnableSmartCardAuthentication*.
          type: boolean
        pMemSupported:
          description: |2
            Indicates whether this host supports persistent memory.
            
            If value is not specified, it should be considered as not supported.
          type: boolean
        pMemSnapshotSupported:
          description: |2
            Indicates whether this host supports snapshots for VMs with virtual
            devices backed by persistent memory.
            
            If value is not specified, it should be considered as not supported.
          type: boolean
        cryptoSupported:
          description: |2
            Flag indicating whether Cryptographer feature is supported.
          type: boolean
        oneKVolumeAPIsSupported:
          description: |2
            Indicates whether this host supports granular datastore cache update.
            
            If value is not specified, it should be considered as not supported.
          type: boolean
        gatewayOnNicSupported:
          description: |2
            Flag indicating whether default gateway can be configured on a
            vmkernel nic.
          type: boolean
        upitSupported:
          deprecated: true
          description: |2
            Deprecated as of vSphere API 8.0, and there is no replacement for it.
            
            Indicate whether this host supports UPIT
          type: boolean
        cpuHwMmuSupported:
          description: |2
            Indicates whether this host supports hardware-based MMU virtualization.
          type: boolean
        encryptedVMotionSupported:
          description: |2
            Indicates whether this host supports encrypted vMotion.
          type: boolean
        encryptionChangeOnAddRemoveSupported:
          description: |2
            Indicates whether this host supports changing the encryption state
            of a virtual disk when the disk is being added or removed from a
            virtual machine configuration.
          type: boolean
        encryptionHotOperationSupported:
          description: |2
            Indicates whether this host supports changing the encryption state
            of a virtual machine, or virtual disk, while the virtual machine
            is powered on.
          type: boolean
        encryptionWithSnapshotsSupported:
          description: |2
            Indicates whether this host supports changing the encryption state
            state of a virtual machine, or virtual disk, while the virtual
            machine has snapshots present.
          type: boolean
        encryptionFaultToleranceSupported:
          description: |2
            Indicates whether this host supports enabling Fault Tolerance on
            encrypted virtual machines.
          type: boolean
        encryptionMemorySaveSupported:
          description: |2
            Indicates whether this host supports suspending, or creating
            with-memory snapshots, encrypted virtual machines.
          type: boolean
        encryptionRDMSupported:
          description: |2
            Indicates whether this host supports encrypting RDM backed virtual
            disks.
          type: boolean
        encryptionVFlashSupported:
          description: |2
            Indicates whether this host supports encrypting virtual disks with
            vFlash cache enabled.
          type: boolean
        encryptionCBRCSupported:
          description: |2
            Indicates whether this host supports encrypting virtual disks with
            Content Based Read Cache (digest disks) enabled.
          type: boolean
        encryptionHBRSupported:
          description: |2
            Indicates whether this host supports encrypting virtual disks with
            Host Based Replication enabled.
          type: boolean
        ftEfiSupported:
          description: |2
            Indicates whether this host supports Fault Tolerance VMs that have
            specified UEFI firmware.
          type: boolean
        unmapMethodSupported:
          description: |2
            Indicates which kind of VMFS unmap method is supported.
            
            See
            *HostCapabilityUnmapMethodSupported_enum*
          type: string
        maxMemMBPerFtVm:
          description: |2
            Indicates maximum memory allowed for Fault Tolerance virtual machine.
          type: integer
          format: int32
        virtualMmuUsageIgnored:
          description: |2
            Indicates that *VirtualMachineFlagInfo.virtualMmuUsage* is
            ignored by the host, always operating as if "on" was selected.
          type: boolean
        virtualExecUsageIgnored:
          description: |2
            Indicates that *VirtualMachineFlagInfo.virtualExecUsage* is
            ignored by the host, always operating as if "hvOn" was selected.
          type: boolean
        vmCreateDateSupported:
          description: |2
            Indicates that createDate feature is supported by the host.
          type: boolean
        vmfs3EOLSupported:
          description: |2
            Indicates whether this host supports VMFS-3 EOL.
            
            If value is not specified, it should be considered as not supported.
          type: boolean
        ftVmcpSupported:
          description: |2
            Indicates whether this host supports VMCP for Fault Tolerance VMs.
          type: boolean
        quickBootSupported:
          description: |2
            Indicates whether this host supports the LoadESX feature
            which allows faster reboots.
            
            See also *HostLoadEsxManager.QueryLoadEsxSupported*.
          type: boolean
        encryptedFtSupported:
          description: |2
            Indicates whether this host supports encrypted Fault Tolerance.
            
            ***Since:*** vSphere API Release 7.0.2.0
          type: boolean
        assignableHardwareSupported:
          description: |2
            Indicates whether this host supports Assignable Hardware.
          type: boolean
        suspendToMemorySupported:
          description: |2
            Indicates whether this host supports suspending virtual machines to memory.
            
            ***Since:*** vSphere API Release 7.0.2.0
          type: boolean
        useFeatureReqsForOldHWv:
          description: |2
            Indicates whether this host uses vmFeatures for compatibility checking
            of old (&leq;8) virtual hardware version VMs.
          type: boolean
        markPerenniallyReservedSupported:
          description: |2
            Indicates whether this host supports marking specified LUN as
            perennially reserved.
          type: boolean
        hppPspSupported:
          description: |2
            Indicates whether this host supports HPP path selection policy
            settings.
          type: boolean
        deviceRebindWithoutRebootSupported:
          description: |2
            Indicates whether device rebind without reboot is supported.
            
            This is
            the capability which enables PCI passthrough and SR-IOV configuration
            without reboot.
          type: boolean
        storagePolicyChangeSupported:
          description: |2
            Indicates whether this host supports storage policy change.
          type: boolean
        precisionTimeProtocolSupported:
          description: |2
            Indicates whether this host supports date time synchronization over
            Precision Time Protocol (PTP).
          type: boolean
        remoteDeviceVMotionSupported:
          description: |2
            Indicates whether vMotion of a VM with remote devices attached is
            supported.
            
            This applies to CD-ROM and floppy devices backed by a
            remote client.
          type: boolean
        maxSupportedVmMemory:
          description: |2
            The maximum amount of virtual memory supported per virtual machine.
            
            If this capability is not set, the size is limited by hardware version
            of the virtual machine only.
          type: integer
          format: int32
        ahDeviceHintsSupported:
          description: |2
            Indicates if the host supports Assignable Hardware device hints.
            
            ***Since:*** vSphere API Release 7.0.2.0
          type: boolean
        nvmeOverTcpSupported:
          description: |2
            Indicates if access to NVMe over TCP devices is supported.
            
            ***Since:*** vSphere API Release 7.0.3.0
          type: boolean
        nvmeStorageFabricServicesSupported:
          description: |2
            Indicates whether NVMe Storage Fabrics Services (StFS) are supported.
            
            ***Since:*** vSphere API Release 7.0.3.0
          type: boolean
        assignHwPciConfigSupported:
          description: |2
            Indicates if setting hardwareLabel using PciPassThrough is supported.
            
            ***Since:*** vSphere API Release 7.0.2.0
          type: boolean
        timeConfigSupported:
          description: |2
            Indicates whether advanced timekeeping apis are supported
            
            ***Since:*** vSphere API Release 7.0.3.0
          type: boolean
        nvmeBatchOperationsSupported:
          description: |2
            Indicates whether batch NVMe controller connection/disconnection is supported.
            
            See *HostStorageSystem.ConnectNvmeControllerEx_Task* and
            *HostStorageSystem.DisconnectNvmeControllerEx_Task*.
            
            ***Since:*** vSphere API Release 7.0.3.0
          type: boolean
        pMemFailoverSupported:
          description: |2
            Indicates whether this host supports failover for VMs with virtual
            devices backed by persistent memory.
            
            If value is not specified, it should be considered as not supported.
            
            ***Since:*** vSphere API Release 7.0.2.0
          type: boolean
        hostConfigEncryptionSupported:
          description: |2
            Indicates whether this host supports host configuration encryption.
            
            ***Since:*** vSphere API Release 7.0.2.0
          type: boolean
        maxSupportedSimultaneousThreads:
          description: |2
            Max supported number of SMT (Simultaneous multithreading) threads.
            
            If value is not specified, it should be considered as not supported.
            
            ***Since:*** vSphere API Release 8.0.0.1
          type: integer
          format: int32
        ptpConfigSupported:
          description: |2
            Indicates whether this host supports PTP (Precision Time Protocol)
            service configuration.
            
            See *HostPtpConfig*. If value is
            not specified, it should be considered as not supported.
            
            ***Since:*** vSphere API Release 7.0.3.0
          type: boolean
        maxSupportedPtpPorts:
          description: |2
            Number of PTP (Precision Time Protocol) ports supported by this
            host (See *HostPtpConfig*).
            
            If this capability is not
            set, number of PTP ports in the host is 0.
            
            ***Since:*** vSphere API Release 7.0.3.0
          type: integer
          format: int32
        sgxRegistrationSupported:
          description: |2
            Indicates whether this host supports SGX registration.
            
            ***Since:*** vSphere API Release 8.0.0.1
          type: boolean
        pMemIndependentSnapshotSupported:
          description: |2
            Indicates whether this host supports snapshots of VMs configured
            with independent vNVDIMMs.
            
            If value is not specified, it should be considered as not supported.
            This support does not depend on *HostCapability.pMemSnapshotSupported*.
            
            ***Since:*** vSphere API Release 7.0.3.0
          type: boolean
        iommuSLDirtyCapable:
          description: |2
            Indicates whether this host's IOMMUs are capable of tracking pages
            written by device DMAs using dirty bits in the second-level page
            tables.
            
            If this value is not specified, it should be considered as
            not capable.
            
            ***Since:*** vSphere API Release 8.0.0.1
          type: boolean
        vmknicBindingSupported:
          description: |2
            Indicates whether vmknic binding is supported over this host.
            
            ***Since:*** vSphere API Release 8.0.1.0
          type: boolean
        ultralowFixedUnmapSupported:
          description: |2
            Indicates whether ultralow fixed unmap bandwidth is supported on this host.
            
            ***Since:*** vSphere API Release 8.0.0.1
          type: boolean
        nvmeVvolSupported:
          description: |2
            Indicates whether mounting of NVMe vvol is supported on this host.
            
            ***Since:*** vSphere API Release 8.0.0.0
          type: boolean
        fptHotplugSupported:
          description: |2
            Indicates whether FPT Hotplug is supported on this host.
            
            ***Since:*** vSphere API Release 8.0.1.0
          type: boolean
        mconnectSupported:
          description: |2
            Indicates whether MCONNECT is supported on this host.
            
            ***Since:*** vSphere API Release 8.0.1.0
          type: boolean
        vsanNicMgmtSupported:
          description: |2
            Indicates whether vSAN nic types can be managed by VirtualNicManager.
            
            ***Since:*** vSphere API Release 8.0.2.0
          type: boolean
        vvolNQNSupported:
          description: |2
            Indicates whether vVol NQN is supported on this host.
            
            ***Since:*** vSphere API Release 8.0.2.0
          type: boolean
        stretchedSCSupported:
          description: |2
            Indicates whether "stretched" vVol Storage Container is supported on this host.
            
            ***Since:*** vSphere API Release 8.0.3.0
          type: boolean
        vmknicBindingOnNFSv41:
          description: |2
            Indicates whether vmknic binding is supported on NFSv41 over this host.
            
            ***Since:*** vSphere API Release 8.0.3.0
          type: boolean
        vpStatusCheckSupported:
          description: |2
            Indicates whether VasaProvider Status can be monitored on the host.
            
            ***Since:*** vSphere API Release 8.0.3.0
          type: boolean
        nConnectSupported:
          description: |2
            Indicates whether NFS41 NCONNECT is supported on this host.
            
            ***Since:*** vSphere API Release 8.0.3.0
          type: boolean
        userKeySupported:
          description: |2
            Indicates whether user-provided private key installation is supported on this host.
            
            ***Since:*** vSphere API Release 8.0.3.0
          type: boolean
        ndcmSupported:
          description: |2
            Indicates whether non-disruptive certificate management is supported on this host.
            
            ***Since:*** vSphere API Release 8.0.3.0
          type: boolean
        uefiSecureBoot:
          description: |2
            Flag indicating that the firmware reports the use of UEFI Secure
            Boot during system boot.
            
            TPM attestation may be used to definitively determine the boot
            time UEFI Secure Boot state and its complete configuration. An
            out-of-band management channel may also be considered.
            
            ***Since:*** vSphere API Release 8.0.3.0
          type: boolean
      required:
        - recursiveResourcePoolsSupported
        - cpuMemoryResourceConfigurationSupported
        - rebootSupported
        - shutdownSupported
        - vmotionSupported
        - standbySupported
        - datastorePrincipalSupported
        - sanSupported
        - nfsSupported
        - iscsiSupported
        - vlanTaggingSupported
        - nicTeamingSupported
        - highGuestMemSupported
        - maintenanceModeSupported
        - suspendedRelocateSupported
        - restrictedSnapshotRelocateSupported
        - perVmSwapFiles
        - localSwapDatastoreSupported
        - unsharedSwapVMotionSupported
        - backgroundSnapshotsSupported
        - preAssignedPCIUnitNumbersSupported
        - screenshotSupported
        - scaledScreenshotSupported
        - storageVMotionSupported
        - vmotionWithStorageVMotionSupported
        - hbrNicSelectionSupported
        - vrNfcNicSelectionSupported
        - recordReplaySupported
        - ftSupported
        - smpFtSupported
        - cloneFromSnapshotSupported
        - deltaDiskBackingsSupported
        - perVMNetworkTrafficShapingSupported
        - tpmSupported
        - virtualExecUsageSupported
        - storageIORMSupported
        - vStorageCapable
        - snapshotRelayoutSupported
        - vmfsDatastoreMountCapable
        - eightPlusHostVmfsSharedAccessSupported
        - nestedHVSupported
        - vPMCSupported
        - interVMCommunicationThroughVMCISupported
        - featureCapabilitiesSupported
        - latencySensitivitySupported
        - accel3dSupported
        - provisioningNicSelectionSupported
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostCapability:
      type: object
      description: |2
        A boxed array of *HostCapability*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostCapability'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostCertificateManagerCertificateInfo:
      type: object
      description: |2
        This data object is used to encapsulate the X509 certificate metadata.
      properties:
        kind:
          description: |2
            Certificate kind, if unset the certificate is Machine certificate
            The list of supported values can be found in *HostCertificateManagerCertificateKind_enum*
            
            ***Since:*** vSphere API Release 8.0.1.0
          type: string
        issuer:
          description: |2
            The issuer of the certificate.
          type: string
        notBefore:
          description: |2
            The validity of the certificate.
          type: string
          format: date-time
        notAfter:
          type: string
          format: date-time
        subject:
          description: |2
            The subject of the certificate.
          type: string
        status:
          description: |2
            The status of the certificate in vCenter Server.
            
            The possible values for status are as
            described in *HostCertificateManagerCertificateInfoCertificateStatus_enum*.
            If queried directly from an ESX host, the property is set to
            *unknown*.
          type: string
      required:
        - status
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostCertificateManagerCertificateInfo:
      type: object
      description: |2
        A boxed array of *HostCertificateManagerCertificateInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostCertificateManagerCertificateInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostCertificateManagerCertificateSpec:
      type: object
      description: |2
        Represents certificate specification used for
        identifying a specific certificate supported by Host.
        
        ***Since:*** vSphere API Release 8.0.1.0
      properties:
        kind:
          description: |2
            The list of supported values can be found in *HostCertificateManagerCertificateKind_enum*
          type: string
      required:
        - kind
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostCertificateManagerCertificateSpec:
      type: object
      description: |2
        A boxed array of *HostCertificateManagerCertificateSpec*. To be used in *Any* placeholders.
        
        ***Since:*** vSphere API Release 8.0.1.0
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostCertificateManagerCertificateSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostConfigChange:
      type: object
      description: |2
        This data object type describes types and constants related to the
        specification of changes to a host configuration.
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostConfigChange:
      type: object
      description: |2
        A boxed array of *HostConfigChange*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostConfigChange'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostConfigInfo:
      type: object
      description: |2
        This data object type encapsulates a typical set of host configuration
        information that is useful for displaying and configuring a host.
        
        VirtualCenter can retrieve this set of information
        very efficiently even for a large set of hosts.
      properties:
        host:
          description: |2
            A reference to a managed object on a host.
            
            Refers instance of *HostSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
        product:
          description: |2
            Information about a product.
          $ref: '#/components/schemas/AboutInfo'
        deploymentInfo:
          description: |2
            Deployment information about the host.
          $ref: '#/components/schemas/HostDeploymentInfo'
        hyperThread:
          description: |2
            If hyperthreading is supported, this is the CPU configuration for
            optimizing hyperthreading.
          $ref: '#/components/schemas/HostHyperThreadScheduleInfo'
        cpuScheduler:
          description: |2
            Information about the CPU scheduler on the host.
            
            ***Since:*** vSphere API Release 8.0.3.0
          $ref: '#/components/schemas/HostCpuSchedulerInfo'
        consoleReservation:
          description: |2
            Memory configuration.
          $ref: '#/components/schemas/ServiceConsoleReservationInfo'
        virtualMachineReservation:
          description: |2
            Virtual machine memory configuration.
          $ref: '#/components/schemas/VirtualMachineMemoryReservationInfo'
        storageDevice:
          description: |2
            Storage system information.
          $ref: '#/components/schemas/HostStorageDeviceInfo'
        multipathState:
          description: |2
            Storage multipath state information.
          $ref: '#/components/schemas/HostMultipathStateInfo'
        fileSystemVolume:
          description: |2
            Storage system file system volume information.
          $ref: '#/components/schemas/HostFileSystemVolumeInfo'
        systemFile:
          description: |2
            Datastore paths of files used by the host system on
            mounted volumes, for instance, the COS vmdk file of the
            host.
            
            For information on datastore paths, see *Datastore*.
          type: array
          items:
            type: string
        network:
          description: |2
            Network system information.
          $ref: '#/components/schemas/HostNetworkInfo'
        vmotion:
          deprecated: true
          description: |2
            Deprecated as of VI API 4.0, use *HostConfigInfo.virtualNicManagerInfo*.
            
            VMotion system information.
          $ref: '#/components/schemas/HostVMotionInfo'
        virtualNicManagerInfo:
          description: |2
            VirtualNic manager information.
          $ref: '#/components/schemas/HostVirtualNicManagerInfo'
        capabilities:
          description: |2
            Capability vector indicating the available network features.
          $ref: '#/components/schemas/HostNetCapabilities'
        datastoreCapabilities:
          description: |2
            Capability vector indicating available datastore features.
          $ref: '#/components/schemas/HostDatastoreSystemCapabilities'
        offloadCapabilities:
          deprecated: true
          description: |2
            Deprecated as of VI API 4.0, the system defaults will be used.
            
            capabilities to offload operations either to the host or to physical
            hardware when a virtual machine is transmitting on a network
          $ref: '#/components/schemas/HostNetOffloadCapabilities'
        service:
          description: |2
            Host service configuration.
          $ref: '#/components/schemas/HostServiceInfo'
        firewall:
          description: |2
            Firewall configuration.
          $ref: '#/components/schemas/HostFirewallInfo'
        autoStart:
          description: |2
            AutoStart configuration.
          $ref: '#/components/schemas/HostAutoStartManagerConfig'
        activeDiagnosticPartition:
          description: |2
            The diagnostic partition that will be set as the current
            diagnostic partition on the host.
          $ref: '#/components/schemas/HostDiagnosticPartition'
        option:
          description: |2
            Host configuration options as defined by the
            *OptionValue* data object type.
          type: array
          items:
            $ref: '#/components/schemas/OptionValue'
        optionDef:
          description: |2
            A list of supported options.
          type: array
          items:
            $ref: '#/components/schemas/OptionDef'
        datastorePrincipal:
          description: |2
            Datastore principal user
          type: string
        localSwapDatastore:
          description: |2
            Datastore visible to this host that may be used to store virtual
            machine swapfiles, for virtual machines executing on this host.
            
            The
            value of this property is set or unset by invoking
            *HostDatastoreSystem.UpdateLocalSwapDatastore*.
            The policy for using this datastore is determined by the compute
            resource configuration's
            *vmSwapPlacement*
            property in concert with each individual virtual machine configuration's
            *swapPlacement* property.
            
            Note: Using a host-specific swap location may degrade VMotion performance.
            
            Refers instance of *Datastore*.
          $ref: '#/components/schemas/ManagedObjectReference'
        systemSwapConfiguration:
          description: |2
            The system swap configuration specifies which options are currently
            enabled.  
            
            See also *HostSystemSwapConfiguration*.
          $ref: '#/components/schemas/HostSystemSwapConfiguration'
        systemResources:
          description: |2
            Reference for the system resource hierarchy, used for configuring
            the set of resources reserved to the system and unavailable to
            virtual machines.
          $ref: '#/components/schemas/HostSystemResourceInfo'
        dateTimeInfo:
          description: |2
            Date/Time related configuration
          $ref: '#/components/schemas/HostDateTimeInfo'
        flags:
          description: |2
            Additional flags for a host.
          $ref: '#/components/schemas/HostFlagInfo'
        adminDisabled:
          deprecated: true
          description: |2
            Deprecated as of vSphere API 6.0, use *HostConfigInfo.lockdownMode*.
            
            If the flag is true, the permissions on the host have been modified such
            that it is only accessible through local console or an authorized
            centralized management application.
            
            This flag is affected by the
            *HostSystem.EnterLockdownMode* and
            *HostSystem.ExitLockdownMode* operations.
            
            This flag is supported in VirtualCenter only. The value returned from host
            should be ignored.
            
            See also *HostSystem.EnterLockdownMode*, *HostSystem.ExitLockdownMode*.
          type: boolean
        lockdownMode:
          description: |2
            Indicates the current lockdown mode of the host as reported by
            *HostAccessManager.lockdownMode*.
            
            See also *HostAccessManager.ChangeLockdownMode*.
          $ref: '#/components/schemas/HostLockdownMode_enum'
        ipmi:
          description: |2
            IPMI (Intelligent Platform Management Interface) info for the host.
          $ref: '#/components/schemas/HostIpmiInfo'
        sslThumbprintInfo:
          deprecated: true
          description: |2
            Deprecated as of vSphere API 5.0, use *HostConfigInfo.sslThumbprintData* instead.
            
            SSL Thumbprint info for hosts registered on this host.
          $ref: '#/components/schemas/HostSslThumbprintInfo'
        sslThumbprintData:
          description: |2
            SSL Thumbprints registered on this host.
          type: array
          items:
            $ref: '#/components/schemas/HostSslThumbprintInfo'
        certificate:
          description: |2
            Full Host Certificate in PEM format, if known
          type: array
          items:
            type: integer
            minimum: -128
            maximum: 127
        pciPassthruInfo:
          description: |2
            PCI passthrough information.
          type: array
          items:
            $ref: '#/components/schemas/HostPciPassthruInfo'
        authenticationManagerInfo:
          description: |2
            Current authentication configuration.
          $ref: '#/components/schemas/HostAuthenticationManagerInfo'
        featureVersion:
          description: |2
            List of feature-specific version information.
            
            Each element refers
            to the version information for a specific feature.
          type: array
          items:
            $ref: '#/components/schemas/HostFeatureVersionInfo'
        powerSystemCapability:
          description: |2
            Host power management capability.
          $ref: '#/components/schemas/PowerSystemCapability'
        powerSystemInfo:
          description: |2
            Host power management information.
          $ref: '#/components/schemas/PowerSystemInfo'
        cacheConfigurationInfo:
          description: |2
            Host solid stats drive cache configuration information.
          type: array
          items:
            $ref: '#/components/schemas/HostCacheConfigurationInfo'
        wakeOnLanCapable:
          description: |2
            Indicates if a host is wake on lan capable.
            
            A host is deemed wake on lan capable if there exists at least one
            physical network card that is both backing the vmotion interface and
            is itself wake on lan capable.
          type: boolean
        featureCapability:
          description: |2
            Array of host feature capabilities.
            
            This is expected to change
            infrequently. It may change while host is in maintenance mode
            and between reboots if hardware, firmware, or a device driver
            is changed or upgraded.
          type: array
          items:
            $ref: '#/components/schemas/HostFeatureCapability'
        maskedFeatureCapability:
          description: |2
            Array of the feature capabilities that the host has after the
            mask has been applied.
          type: array
          items:
            $ref: '#/components/schemas/HostFeatureCapability'
        vFlashConfigInfo:
          description: |2
            Host vFlash configuration information
          $ref: '#/components/schemas/HostVFlashManagerVFlashConfigInfo'
        vsanHostConfig:
          description: |2
            VSAN configuration for a host.
          $ref: '#/components/schemas/VsanHostConfigInfo'
        domainList:
          description: |2
            List of Windows domains available for user searches, if the underlying
            system supports windows domain membership.
            
            See *UserDirectory.domainList*.
          type: array
          items:
            type: string
        scriptCheckSum:
          description: |2
            A checksum of overhead computation script.
            
            (For VMware internal usage only)
          type: string
          format: byte
        hostConfigCheckSum:
          description: |2
            A checksum of host configuration option set.
            
            (For VMware internal usage only)
          type: string
          format: byte
        descriptionTreeCheckSum:
          description: |2
            A checksum of the Assignable Hardware Description Tree.
            
            (For VMware internal usage only)
          type: string
          format: byte
        graphicsInfo:
          description: |2
            The list of graphics devices available on this host.
          type: array
          items:
            $ref: '#/components/schemas/HostGraphicsInfo'
        sharedPassthruGpuTypes:
          description: |2
            Array of shared passthru GPU types.
            
            These GPU types may be enabled
            when specific host hardware is present.
          type: array
          items:
            type: string
        graphicsConfig:
          description: |2
            Graphics configuration for a host.
          $ref: '#/components/schemas/HostGraphicsConfig'
        sharedGpuCapabilities:
          description: |2
            Array of shared passthru GPU capablities.
            
            See also *HostSharedGpuCapabilities*.
          type: array
          items:
            $ref: '#/components/schemas/HostSharedGpuCapabilities'
        ioFilterInfo:
          description: |2
            Information of the IO Filters installed on the host.
            
            See *HostIoFilterInfo*.
          type: array
          items:
            $ref: '#/components/schemas/HostIoFilterInfo'
        sriovDevicePool:
          description: |2
            Information on SRIOV device pools present on host.
          type: array
          items:
            $ref: '#/components/schemas/HostSriovDevicePoolInfo'
        assignableHardwareBinding:
          description: |2
            Information describing Assignable Hardware device bindings on host.
            
            See *HostAssignableHardwareBinding*.
          type: array
          items:
            $ref: '#/components/schemas/HostAssignableHardwareBinding'
        assignableHardwareConfig:
          description: |2
            Configured assignable hardware device attributes.
          $ref: '#/components/schemas/HostAssignableHardwareConfig'
      required:
        - host
        - product
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostConfigInfo:
      type: object
      description: |2
        A boxed array of *HostConfigInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostConfigInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostConfigManager:
      type: object
      description: |2
        This data object type describes the configuration of a host
        across products and versions.
      properties:
        cpuScheduler:
          description: |2
            The CPU scheduler that determines which threads execute on a CPU
            at any given time.
            
            Refers instance of *HostCpuSchedulerSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
        datastoreSystem:
          description: |2
            The datastore manager.
            
            Refers instance of *HostDatastoreSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
        memoryManager:
          description: |2
            The memory manager on the host.
            
            Refers instance of *HostMemorySystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
        storageSystem:
          description: |2
            The storage configuration.
            
            Refers instance of *HostStorageSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
        networkSystem:
          description: |2
            The network system configuration.
            
            Refers instance of *HostNetworkSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
        vmotionSystem:
          deprecated: true
          description: |2
            Deprecated as of VI API 4.0, use *HostConfigManager.virtualNicManager*
            to manage the VMotion configuration of the host.
            
            The VMotion configuration.
            
            Refers instance of *HostVMotionSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
        virtualNicManager:
          description: |2
            The VirtualNic configuration.
            
            Refers instance of *HostVirtualNicManager*.
          $ref: '#/components/schemas/ManagedObjectReference'
        serviceSystem:
          description: |2
            The configuration of the host services (for example,
            SSH, FTP, and Telnet).
            
            Refers instance of *HostServiceSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
        firewallSystem:
          description: |2
            The firewall configuration.
            
            Refers instance of *HostFirewallSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
        advancedOption:
          description: |2
            Advanced options.
            
            Refers instance of *OptionManager*.
          $ref: '#/components/schemas/ManagedObjectReference'
        diagnosticSystem:
          description: |2
            The diagnostic for the ESX Server system.
            
            Refers instance of *HostDiagnosticSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
        autoStartManager:
          description: |2
            Auto-start and auto-stop configuration.
            
            Refers instance of *HostAutoStartManager*.
          $ref: '#/components/schemas/ManagedObjectReference'
        snmpSystem:
          description: |2
            Snmp configuration
            
            Refers instance of *HostSnmpSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
        dateTimeSystem:
          description: |2
            DateTime configuration
            
            Refers instance of *HostDateTimeSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
        patchManager:
          description: |2
            Host patch management.
            
            Refers instance of *HostPatchManager*.
          $ref: '#/components/schemas/ManagedObjectReference'
        imageConfigManager:
          description: |2
            Host image configuration management.
            
            Refers instance of *HostImageConfigManager*.
          $ref: '#/components/schemas/ManagedObjectReference'
        bootDeviceSystem:
          description: |2
            Boot device order management.
            
            Refers instance of *HostBootDeviceSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
        firmwareSystem:
          description: |2
            Firmware management.
            
            Refers instance of *HostFirmwareSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
        healthStatusSystem:
          description: |2
            System health status manager.
            
            Refers instance of *HostHealthStatusSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
        pciPassthruSystem:
          description: |2
            PciDeviceSystem for passthru.
            
            Refers instance of *HostPciPassthruSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
        licenseManager:
          description: |2
            License manager
            
            Refers instance of *LicenseManager*.
          $ref: '#/components/schemas/ManagedObjectReference'
        kernelModuleSystem:
          description: |2
            Kernel module configuration management.
            
            Refers instance of *HostKernelModuleSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
        authenticationManager:
          description: |2
            Authentication method configuration - for example, for Active Directory membership.
            
            Refers instance of *HostAuthenticationManager*.
          $ref: '#/components/schemas/ManagedObjectReference'
        powerSystem:
          description: |2
            Power System manager.
            
            Refers instance of *HostPowerSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
        cacheConfigurationManager:
          description: |2
            Host solid state drive cache configuration manager.
            
            Refers instance of *HostCacheConfigurationManager*.
          $ref: '#/components/schemas/ManagedObjectReference'
        esxAgentHostManager:
          description: |2
            Esx Agent resource configuration manager
            
            Refers instance of *HostEsxAgentHostManager*.
          $ref: '#/components/schemas/ManagedObjectReference'
        iscsiManager:
          description: |2
            Iscsi Management Operations managed entity
            
            Refers instance of *IscsiManager*.
          $ref: '#/components/schemas/ManagedObjectReference'
        vFlashManager:
          description: |2
            vFlash Manager
            
            Refers instance of *HostVFlashManager*.
          $ref: '#/components/schemas/ManagedObjectReference'
        vsanSystem:
          description: |2
            VsanSystem managed entity.
            
            Refers instance of *HostVsanSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
        messageBusProxy:
          description: |2
            Common Message Bus proxy service.
            
            This API shall always be present in vSphere API 6.0 or later.
            
            Refers instance of *MessageBusProxy*.
          $ref: '#/components/schemas/ManagedObjectReference'
        userDirectory:
          description: |2
            A user directory managed object.
            
            Refers instance of *UserDirectory*.
          $ref: '#/components/schemas/ManagedObjectReference'
        accountManager:
          description: |2
            A manager for host local user accounts.
            
            Refers instance of *HostLocalAccountManager*.
          $ref: '#/components/schemas/ManagedObjectReference'
        hostAccessManager:
          description: |2
            Host access manager
            
            Refers instance of *HostAccessManager*.
          $ref: '#/components/schemas/ManagedObjectReference'
        graphicsManager:
          description: |2
            Host graphics manager.
            
            Refers instance of *HostGraphicsManager*.
          $ref: '#/components/schemas/ManagedObjectReference'
        vsanInternalSystem:
          description: |2
            VsanInternalSystem managed entity.
            
            Refers instance of *HostVsanInternalSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
        certificateManager:
          description: |2
            Host CertificateManager.
            
            Refers instance of *HostCertificateManager*.
          $ref: '#/components/schemas/ManagedObjectReference'
        cryptoManager:
          description: |2
            Host CryptoManager.
            
            Refers instance of *CryptoManager*.
          $ref: '#/components/schemas/ManagedObjectReference'
        nvdimmSystem:
          description: |2
            Host Non-Volatile DIMM configuration manager
            
            Refers instance of *HostNvdimmSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
        assignableHardwareManager:
          description: |2
            Assignable Hardware manager.
            
            Refers instance of *HostAssignableHardwareManager*.
          $ref: '#/components/schemas/ManagedObjectReference'
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostConfigManager:
      type: object
      description: |2
        A boxed array of *HostConfigManager*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostConfigManager'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostConfigSpec:
      type: object
      description: |2
        The *HostConfigSpec* data object provides access to data objects
        that specify configuration changes to be applied to an ESX host.
      properties:
        nasDatastore:
          description: |2
            Configurations to create NAS datastores.
          type: array
          items:
            $ref: '#/components/schemas/HostNasVolumeConfig'
        network:
          description: |2
            Network system information.
          $ref: '#/components/schemas/HostNetworkConfig'
        nicTypeSelection:
          description: |2
            Type selection for different VirtualNics.
          type: array
          items:
            $ref: '#/components/schemas/HostVirtualNicManagerNicTypeSelection'
        service:
          description: |2
            Host service configuration.
          type: array
          items:
            $ref: '#/components/schemas/HostServiceConfig'
        firewall:
          description: |2
            Firewall configuration.
          $ref: '#/components/schemas/HostFirewallConfig'
        option:
          description: |2
            Host configuration options as defined by the
            *OptionValue* data object type.
          type: array
          items:
            $ref: '#/components/schemas/OptionValue'
        datastorePrincipal:
          description: |2
            Datastore principal user.
          type: string
        datastorePrincipalPasswd:
          description: |2
            Password for the datastore principal.
          type: string
        datetime:
          description: |2
            DateTime Configuration.
          $ref: '#/components/schemas/HostDateTimeConfig'
        storageDevice:
          description: |2
            Storage system information.
          $ref: '#/components/schemas/HostStorageDeviceInfo'
        license:
          description: |2
            License configuration for the host.
          $ref: '#/components/schemas/HostLicenseSpec'
        security:
          description: |2
            Security specification.
          $ref: '#/components/schemas/HostSecuritySpec'
        userAccount:
          description: |2
            List of users to create/update with new password.
          type: array
          items:
            $ref: '#/components/schemas/HostAccountSpec'
        usergroupAccount:
          description: |2
            List of users to create/update with new password.
          type: array
          items:
            $ref: '#/components/schemas/HostAccountSpec'
        memory:
          description: |2
            Memory configuration for the host.
          $ref: '#/components/schemas/HostMemorySpec'
        activeDirectory:
          description: |2
            Active Directory configuration change.
          type: array
          items:
            $ref: '#/components/schemas/HostActiveDirectory'
        genericConfig:
          description: |2
            Advanced configuration.
          type: array
          items:
            $ref: '#/components/schemas/KeyAnyValue'
        graphicsConfig:
          description: |2
            Graphics configuration for a host.
          $ref: '#/components/schemas/HostGraphicsConfig'
        assignableHardwareConfig:
          description: |2
            Assignable Hardware configuration for the host
          $ref: '#/components/schemas/HostAssignableHardwareConfig'
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostConfigSpec:
      type: object
      description: |2
        A boxed array of *HostConfigSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostConfigSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostConnectInfo:
      type: object
      description: |2
        This data object type contains information about a single host that can be used by
        the connection wizard.
        
        This can be returned without adding the host to VirtualCenter.
      properties:
        serverIp:
          description: |2
            The IP address of the VirtualCenter already managing this host, if any.
          type: string
        inDasCluster:
          description: |2
            If the host is already being managed by a vCenter Server, this property
            reports true if the host is also part of a vSphere HA enabled cluster.
            
            If
            this is the case, remove or disconnect the host
            from this cluster before adding it to another vCenter Server.
          type: boolean
        host:
          description: |2
            Summary information about the host.
            
            The status fields and managed object
            reference is not set when an object of this type is created. These fields and
            references are typically set later when these objects are associated with a host.
          $ref: '#/components/schemas/HostListSummary'
        vm:
          description: |2
            The list of virtual machines on the host.
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineSummary'
        vimAccountNameRequired:
          description: |2
            Whether or not the host requires a vimAccountName and password to be set in the
            ConnectSpec.
            
            This is normally only required for VMware Server hosts.
          type: boolean
        clusterSupported:
          description: |2
            Whether or not the host supports clustering capabilities such as HA or DRS and
            therefore can be added to a cluster.
            
            If false, the host must be added as a
            standalone host.
          type: boolean
        network:
          description: |2
            The list of network information for networks configured on this host.
          type: array
          items:
            $ref: '#/components/schemas/HostConnectInfoNetworkInfo'
        datastore:
          description: |2
            The list of datastores on the host.
          type: array
          items:
            $ref: '#/components/schemas/HostDatastoreConnectInfo'
        license:
          description: |2
            License manager information on the host
          $ref: '#/components/schemas/HostLicenseConnectInfo'
        capability:
          description: |2
            Host capabilities.
          $ref: '#/components/schemas/HostCapability'
      required:
        - host
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostConnectInfo:
      type: object
      description: |2
        A boxed array of *HostConnectInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostConnectInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostDatastoreExistsConnectInfo:
      type: object
      description: |2
        This data object type describes a datastore on the host that matches an existing
        datastore on VirtualCenter that has a different name.
      properties:
        newDatastoreName:
          description: |2
            The name of a matching datastore on VirtualCenter.
            
            The datastore on the host
            will be renamed to this name.
          type: string
      required:
        - newDatastoreName
      allOf:
        - $ref: '#/components/schemas/HostDatastoreConnectInfo'

    ArrayOfHostDatastoreExistsConnectInfo:
      type: object
      description: |2
        A boxed array of *HostDatastoreExistsConnectInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostDatastoreExistsConnectInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostDatastoreConnectInfo:
      type: object
      description: |2
        The base data object type for information about datastores on the host.
      properties:
        summary:
          description: |2
            Basic datastore information.
            
            The managed object reference is not set.
          $ref: '#/components/schemas/DatastoreSummary'
      required:
        - summary
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostDatastoreConnectInfo:
      type: object
      description: |2
        A boxed array of *HostDatastoreConnectInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostDatastoreConnectInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostDatastoreNameConflictConnectInfo:
      type: object
      description: |2
        This data object type describes a datastore on the host that has the same name as
        a different datastore on VirtualCenter.
      properties:
        newDatastoreName:
          description: |2
            To resolve a conflict with existing datastores, a suggested new name of the
            datastore can be provided.
          type: string
      required:
        - newDatastoreName
      allOf:
        - $ref: '#/components/schemas/HostDatastoreConnectInfo'

    ArrayOfHostDatastoreNameConflictConnectInfo:
      type: object
      description: |2
        A boxed array of *HostDatastoreNameConflictConnectInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostDatastoreNameConflictConnectInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostLicenseConnectInfo:
      type: object
      description: |2
        This data object type describes license information stored on the host.
      properties:
        license:
          description: |2
            License information.
          $ref: '#/components/schemas/LicenseManagerLicenseInfo'
        evaluation:
          description: |2
            Evaluation information.
          $ref: '#/components/schemas/LicenseManagerEvaluationInfo'
        resource:
          description: |2
            Licensable resources information.
            
            NOTE:
            The values in this property may not be accurate for pre-5.0 hosts when returned by vCenter 5.0
          $ref: '#/components/schemas/HostLicensableResourceInfo'
      required:
        - license
        - evaluation
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostLicenseConnectInfo:
      type: object
      description: |2
        A boxed array of *HostLicenseConnectInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostLicenseConnectInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostConnectInfoNetworkInfo:
      type: object
      description: |2
        The base data object type for information about networks on the host.
      properties:
        summary:
          description: |2
            Basic network information, such as network name.
            
            The managed object reference
            is not set.
          $ref: '#/components/schemas/NetworkSummary'
      required:
        - summary
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostConnectInfoNetworkInfo:
      type: object
      description: |2
        A boxed array of *HostConnectInfoNetworkInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostConnectInfoNetworkInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostNewNetworkConnectInfo:
      type: object
      description: |2
        Network information for a network that will be added to VirtualCenter when the
        host is added.
      allOf:
        - $ref: '#/components/schemas/HostConnectInfoNetworkInfo'

    ArrayOfHostNewNetworkConnectInfo:
      type: object
      description: |2
        A boxed array of *HostNewNetworkConnectInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostNewNetworkConnectInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostConnectSpec:
      type: object
      description: |2
        Specifies the parameters needed to add a single host.
        
        This includes
        a small set of optional information about the host configuration.
        This allows the network and datastore configuration of the host to
        be synchronized with the naming conventions of the datacenter, as well
        as the configuration of a vim account (the username/password for the
        virtual machine files that is created on disk).
      properties:
        hostName:
          description: |2
            The DNS name or IP address of the host.
            
            (Required for adding
            a host.)
          type: string
        port:
          description: |2
            The port number for the connection.
            
            If this is not specified,
            the default port number is used. For ESX 2.x hosts this is the authd
            port (902 by default). For ESX 3.x and above and VMware Server hosts
            this is the https port (443 by default).
            If this is a reconnect, the port number is unchanged.
          type: integer
          format: int32
        sslThumbprint:
          description: |2
            The thumbprint of the SSL certificate, which the host is
            expected to have.
            
            If this value is set and matches the
            certificate thumbprint presented by the host, then the host is
            authenticated. If this value is not set or does not match the
            certificate thumbprint presented by the host, then the host's
            certificate is verified by checking whether it was signed by a
            recognized CA.
            
            The thumbprint is always computed using the SHA1 hash and is
            the string representation of that hash in the format:
            xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx
            where, 'x' represents a hexadecimal digit
          type: string
        userName:
          description: |2
            The administration account on the host.
            
            (Required for adding
            a host.)
          type: string
        password:
          description: |2
            The password for the administration account.
            
            (Required for adding
            a host.)
          type: string
          format: password
        vmFolder:
          description: |2
            The folder in which to store the existing virtual machines on the host.
            
            If this folder is not specified, a default folder is chosen
            (and possibly created) by the VirtualCenter. This folder exists (or
            is possibly created) on the
            VirtualCenter server and is called "Discovered VM".
            
            Refers instance of *Folder*.
          $ref: '#/components/schemas/ManagedObjectReference'
        force:
          description: |2
            If this flag is set to "true", then the connection succeeds even
            if the host is already being managed by another VirtualCenter server.
            
            The original VirtualCenter server loses connection to the host.
          type: boolean
        vimAccountName:
          description: |2
            The username to be used for accessing the virtual
            machine files on the disk.
          type: string
        vimAccountPassword:
          description: |2
            The password to be used with the
            *vimAccountName*
            property for accessing the virtual
            machine files on the disk.
          type: string
          format: password
        managementIp:
          description: |2
            The IP address of the VirtualCenter server that will manage this host.
            
            This field can be used to control which IP address the VirtualCenter agent
            will send heartbeats to. If it is not set, VirtualCenter will use the local IP
            address used when communicating with the host. Setting this field is useful
            when the VirtualCenter server is behind a NAT in which case the external NAT
            address must be used.
          type: string
        lockdownMode:
          description: |2
            If this is set then the host will be put in the specified lockdown mode
            when the host is added and connected.
            
            It is used only when calling the APIs
            *Folder.AddStandaloneHost_Task* with parameter 'addConnected' set to true,
            or *ClusterComputeResource.AddHost_Task* with parameter 'asConnected'
            set to true.
            If the operation to add the host specifies that the host should only be
            added but not connected, then the host won't be put in lockdown mode.
            
            This is equivalent to invoking
            *HostAccessManager.ChangeLockdownMode*
            immediately after addition and connection to the host succeeds.
            
            If equal to *lockdownDisabled*
            then it is ignored.
          $ref: '#/components/schemas/HostLockdownMode_enum'
        hostGateway:
          deprecated: true
          description: |2
            Deprecated not supported since vSphere 6.5.
            
            Setting for a gateway for communication to the host.
            
            If set all trafic to the
            host will pass through this gateway.
          $ref: '#/components/schemas/HostGatewaySpec'
      required:
        - force
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostConnectSpec:
      type: object
      description: |2
        A boxed array of *HostConnectSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostConnectSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostCpuIdInfo:
      type: object
      description: |2
        The CpuIdInfo data object type is used to represent the CPU features of
        a particular host or product, or to specify what the CPU feature
        requirements are for a particular virtual machine or guest operating
        system.
        
        As of vSphere API 5.1 *FeatureMask* must be
        used for masking all hosts and is the recommended method for masking
        virtual machines with hardware version 9 and above (newer). CpuIdInfo
        should be used only to mask hardware version 8 and lower (older)
        virtual machines. Although CpuIdInfo can mask all virtual machines
        regardless of hardware version, its application is limited and has been
        superceded by FeatureMask.
        
        For each register (eax,ebx,ecx,edx), the string is a bit mask of the form:
        
                   ????:????:????:????:????:????:????:????
        
        When used to represent the features of a specific processor package
        (*HostHardwareInfo.cpuPkg*), the features common to all
        processors on a host (*HostHardwareInfo.cpuFeature*), or the
        features supported by a virtualization platform
        (*HostCapability.supportedCpuFeature*), each bit is either '0'
        or '1', or '-' for unknown/unspecified. In these feature vectors, the
        vendor field is never set.
        
        Optional values in these feature vectors default to
        '----:----:----:----:----:----:----:----'.
        
        When specifying the required feature set for a virtual machine or a guest
        operating system, the bits can take on the values as described below, and
        the vendor field may be set. The total feature requirements for a virtual
        machine are composed by using any requirements listed in the virtual
        machine's configuration to override the requirements listed in the
        descriptor for the virtual machine's guest OS.
        
        Bits used for specifying requirements:
        - **x**: Unused by guest software.
        - **T**: Feature that the guest software requires to be enabled.
        - **F**: Feature that the guest software requires to be disabled.
        - **1**: Feature will be reported as enabled if queried by the guest
          software.
        - **0**: Feature will be reported as disabled if queried by the guest
          software.
        - **R**: Feature will be reported as disabled if queried by the guest
          software; however, for VMotion the actual value of this
          feature is required to be the same on both hosts.
        - **H**: Used by guest software. For VMotion the value of this
          feature is required to be the same on both hosts.
        - **-**: This bit type is only used in the requirements stored in
          the virtual machine's configuration. It indicates that, for
          this bit position, the requirement from the guest OS
          descriptor should be used instead.
          
        The values 'F' and '1' are rarely used but included for completeness. The
        '0' and '1' values do not promise a faithful virtualization of these
        features; whether the features work when forced to 0 or 1 is highly
        dependent on the guest software.
        
        Optional values in the requirements from the virtual machine's
        configuration default to '----:----:----:----:----:----:----:----'.
        Optional values in the requirements from the guest OS descriptor default
        to 'xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx'.
        
        Once the feature requirements for a virtual machine have been composed
        from the virtual machine's configuration and guest OS descriptor, the bit
        types above are used to identify whether or not the virtual machine
        can be powered on or be migrated with VMotion to a particular host.
        The rules are as follows:
        - **Power-on**: Requirements marked as 'T' or 'F' must match bits
          '1' or '0', respectively, in the features advertised by the HardwareInfo
          of the power-on host.
        - **VMotion**: Requirements marked as 'T' or 'F' must match bits
          '1' or '0', respectively, in the features advertised by the HardwareInfo
          of the destination host. Also, at the positions where requirements are
          marked 'H' or 'R', the advertised value of that feature for the source
          host must match that of the destination host.
      properties:
        level:
          description: |2
            Level (EAX input to CPUID).
          type: integer
          format: int32
        vendor:
          description: |2
            Used if this mask is for a particular vendor.
          type: string
        eax:
          description: |2
            String representing the required EAX bits.
          type: string
        ebx:
          description: |2
            String representing the required EBX bits.
          type: string
        ecx:
          description: |2
            String representing the required ECX bits.
          type: string
        edx:
          description: |2
            String representing the required EDX bits.
          type: string
      required:
        - level
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostCpuIdInfo:
      type: object
      description: |2
        A boxed array of *HostCpuIdInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostCpuIdInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostCpuInfo:
      type: object
      description: |2
        Information about the CPUs.
      properties:
        numCpuPackages:
          description: |2
            Number of physical CPU packages on the host.
          type: integer
          minimum: -32768
          maximum: 32767
        numCpuCores:
          description: |2
            Number of physical CPU cores on the host.
          type: integer
          minimum: -32768
          maximum: 32767
        numCpuThreads:
          description: |2
            Number of physical CPU threads on the host.
          type: integer
          minimum: -32768
          maximum: 32767
        hz:
          description: |2
            CPU speed per core.
            
            This might be an averaged value if the speed
            is not uniform across all cores. The total CPU speed of the box is
            defined as hz \* numCpuCores
          type: integer
          format: int64
      required:
        - numCpuPackages
        - numCpuCores
        - numCpuThreads
        - hz
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostCpuInfo:
      type: object
      description: |2
        A boxed array of *HostCpuInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostCpuInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostCpuPackage:
      type: object
      description: |2
        Information about a physical CPU package.
      properties:
        index:
          description: |2
            Package index, starting from zero.
          type: integer
          minimum: -32768
          maximum: 32767
        vendor:
          description: |2
            CPU vendor name, possible names currently are "Intel", "AMD",
            "arm", "hygon", or "unknown".
          type: string
        hz:
          description: |2
            CPU speed in HZ.
          type: integer
          format: int64
        busHz:
          description: |2
            Bus speed in HZ.
          type: integer
          format: int64
        description:
          description: |2
            String summary description of CPU (for display purposes).
          type: string
        threadId:
          description: |2
            The logical CPU threads on this package.
          type: array
          items:
            type: integer
            minimum: -32768
            maximum: 32767
        cpuFeature:
          description: |2
            The CPU feature bit on this particular CPU.
            
            This is independent of
            the product and licensing capabilities.
          type: array
          items:
            $ref: '#/components/schemas/HostCpuIdInfo'
        family:
          description: |2
            Family ID for the CPU
            
            ***Since:*** vSphere API Release 8.0.3.0
          type: integer
          minimum: -32768
          maximum: 32767
        model:
          description: |2
            Model number of the CPU
            
            ***Since:*** vSphere API Release 8.0.3.0
          type: integer
          minimum: -32768
          maximum: 32767
        stepping:
          description: |2
            Stepping ID of the CPU
            
            ***Since:*** vSphere API Release 8.0.3.0
          type: integer
          minimum: -32768
          maximum: 32767
      required:
        - index
        - vendor
        - hz
        - busHz
        - description
        - threadId
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostCpuPackage:
      type: object
      description: |2
        A boxed array of *HostCpuPackage*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostCpuPackage'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostCpuPowerManagementInfo:
      type: object
      description: |2
        The CpuPowerManagementInfo data object type describes supported
        power management and current policy.
      properties:
        currentPolicy:
          description: |2
            Information about current CPU power management policy.
          type: string
        hardwareSupport:
          description: |2
            Information about supported CPU power management.
          type: string
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostCpuPowerManagementInfo:
      type: object
      description: |2
        A boxed array of *HostCpuPowerManagementInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostCpuPowerManagementInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostCpuSchedulerInfo:
      type: object
      description: |2
        This data object describes the information related to the CPU scheduler
        running on the Host.
        
        ***Since:*** vSphere API Release 8.0.3.0
      properties:
        policy:
          description: |2
            The *policy* active for CPU Scheduling.
          type: string
      required:
        - policy
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostCpuSchedulerInfo:
      type: object
      description: |2
        A boxed array of *HostCpuSchedulerInfo*. To be used in *Any* placeholders.
        
        ***Since:*** vSphere API Release 8.0.3.0
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostCpuSchedulerInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostHyperThreadScheduleInfo:
      type: object
      description: |2
        This data object type describes the CpuSchedulerSystem configuration
        for optimizing hyperthreading.
        
        The primary hyperthreading
        optimization employed by the CpuSchedulerSystem is to utilize
        hyperthreads as additional schedulable resources. Although
        hyperthreads provide limited additional concurrency,
        certain workloads (such as idling) can take advantage of
        these hyperthreads. This is particularly useful for SMP virtual
        machines that use gang scheduling. (Gang scheduling refers to a
        situation in which all of a parallel program's tasks are grouped
        into a "gang" and concurrently scheduled on distinct
        processors of a parallel computer system.)
        
        Changes to the hyperthreading optimization can take effect only
        after a system restart. Therefore, while it is possible to change
        the configuration at any time, the change will take effect only
        on the next boot.
      properties:
        available:
          description: |2
            The flag to indicate whether or not hyperthreading
            optimization is available on the system.
            
            This property
            is set by VMware prior to installation.
          type: boolean
        active:
          description: |2
            The flag to indicate whether or not the CPU scheduler is
            currently treating
            hyperthreads as schedulable resources.
            
            Setting this property
            involves a successful invocation of either the
            *enableHyperThreading()* method ("true") or the
            *disableHyperthreading()* method
            ("false"). The property is set once the system is rebooted.
          type: boolean
        config:
          description: |2
            The flag to indicate whether or not the CPU scheduler
            should treat hyperthreads as
            schedulable resources the next time the CPU scheduler starts.
            - This property is set to "true" by successfully invoking the
              *enableHyperThreading()* method.
            - This property is set to "false" by successfully invoking the
              *disableHyperthreading()* method.
          type: boolean
      required:
        - available
        - active
        - config
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostHyperThreadScheduleInfo:
      type: object
      description: |2
        A boxed array of *HostHyperThreadScheduleInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostHyperThreadScheduleInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostDataTransportConnectionInfo:
      type: object
      description: |2
        DataTransportConnectionInfo contains common information about data transport
        connections on a host.
        
        ***Since:*** vSphere API Release 7.0.3.0
      properties:
        staticMemoryConsumed:
          description: |2
            Static memory consumption by a connection in bytes like buffer sizes, heap sizes, etc.
          type: integer
          format: int64
      required:
        - staticMemoryConsumed
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostDataTransportConnectionInfo:
      type: object
      description: |2
        A boxed array of *HostDataTransportConnectionInfo*. To be used in *Any* placeholders.
        
        ***Since:*** vSphere API Release 7.0.3.0
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostDataTransportConnectionInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    FileInfo:
      type: object
      description: |2
        This data object type contains rudimentary information about a file in a
        datastore.
        
        The information here is not meant to cover all information in
        traditional file systems, but rather to provide sufficient information for files
        that are associated with virtual machines. Derived types describe the known file
        types for a datastore.
      properties:
        path:
          description: |2
            The path relative to the folder path in the search results.
          type: string
        friendlyName:
          description: |2
            User friendly name.
          type: string
        fileSize:
          description: |2
            The size of the file in bytes.
          type: integer
          format: int64
        modification:
          description: |2
            The last date and time the file was modified.
          type: string
          format: date-time
        owner:
          description: |2
            The user name of the owner of the file.
          type: string
      required:
        - path
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfFileInfo:
      type: object
      description: |2
        A boxed array of *FileInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/FileInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    FileQueryFlags:
      type: object
      description: |2
        The FileInfo.Details data object type is a set of flags for a search request.
        
        This search request specifies which details to return for each matching file.
        This data object type is here to ensure that there is one flag corresponding to
        each FileInfo property other than the path name, which a search always returns.
      properties:
        fileType:
          description: |2
            The flag to indicate whether or not the files that match this query
            specification are returned along with file type information.
            
            This field must
            be set to return specific details about the file type.
          type: boolean
        fileSize:
          description: |2
            The flag to indicate whether or not the size of the file is returned.
          type: boolean
        modification:
          description: |2
            The flag to indicate whether or not to return the date and time the file was
            last modified.
          type: boolean
        fileOwner:
          description: |2
            The flag to indicate whether or not to return the file owner.
          type: boolean
      required:
        - fileType
        - fileSize
        - modification
        - fileOwner
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfFileQueryFlags:
      type: object
      description: |2
        A boxed array of *FileQueryFlags*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/FileQueryFlags'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    FloppyImageFileInfo:
      type: object
      description: |2
        This data object type describes a file that is a floppy disk image.
      allOf:
        - $ref: '#/components/schemas/FileInfo'

    ArrayOfFloppyImageFileInfo:
      type: object
      description: |2
        A boxed array of *FloppyImageFileInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/FloppyImageFileInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    FloppyImageFileQuery:
      type: object
      description: |2
        This data object type describes the query specification for a floppy disk image.
      allOf:
        - $ref: '#/components/schemas/FileQuery'

    ArrayOfFloppyImageFileQuery:
      type: object
      description: |2
        A boxed array of *FloppyImageFileQuery*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/FloppyImageFileQuery'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    FolderFileInfo:
      type: object
      description: |2
        This data object type describes a file that is a folder (directory).
      allOf:
        - $ref: '#/components/schemas/FileInfo'

    ArrayOfFolderFileInfo:
      type: object
      description: |2
        A boxed array of *FolderFileInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/FolderFileInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    FolderFileQuery:
      type: object
      description: |2
        This data object type describes the query specification for a folder (directory).
      allOf:
        - $ref: '#/components/schemas/FileQuery'

    ArrayOfFolderFileQuery:
      type: object
      description: |2
        A boxed array of *FolderFileQuery*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/FolderFileQuery'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    IsoImageFileInfo:
      type: object
      description: |2
        This data object type describes a file that is an ISO CD-ROM image.
      allOf:
        - $ref: '#/components/schemas/FileInfo'

    ArrayOfIsoImageFileInfo:
      type: object
      description: |2
        A boxed array of *IsoImageFileInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/IsoImageFileInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    IsoImageFileQuery:
      type: object
      description: |2
        This data object type describes the query specification for an ISO CD-ROM image.
      allOf:
        - $ref: '#/components/schemas/FileQuery'

    ArrayOfIsoImageFileQuery:
      type: object
      description: |2
        A boxed array of *IsoImageFileQuery*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/IsoImageFileQuery'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    FileQuery:
      type: object
      description: |2
        The data object type that describes the base query specification.
        
        Contains query
        filters and details that apply to every file. Querying only file details generally
        does not require opening files and so is an efficient query. Derived types add
        query parameters specific to the type of file.
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfFileQuery:
      type: object
      description: |2
        A boxed array of *FileQuery*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/FileQuery'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostDatastoreBrowserSearchResults:
      type: object
      description: |2
        This data object type contains the results of a search method for one datastore.
        
        A
        search method typically returns a set of these objects as an array.
      properties:
        datastore:
          description: |2
            Datastore contains the results.
            
            Refers instance of *Datastore*.
          $ref: '#/components/schemas/ManagedObjectReference'
        folderPath:
          description: |2
            Relative path to the top-level folder.
          type: string
        file:
          description: |2
            Set of matching files, if any.
          type: array
          items:
            $ref: '#/components/schemas/FileInfo'
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostDatastoreBrowserSearchResults:
      type: object
      description: |2
        A boxed array of *HostDatastoreBrowserSearchResults*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostDatastoreBrowserSearchResults'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostDatastoreBrowserSearchSpec:
      type: object
      description: |2
        The data object type describes a search for files in one or more datastores.
        
        The
        properties do not include the starting datastore path because that path is a
        separate parameter to the search method.
        
        A SearchSpec contains the query parameters and some global search modifiers.
      properties:
        query:
          description: |2
            The set of file types to match, search criteria specific to the file type, and
            the amount of detail for a file.
            
            These search parameters are specific to a file
            type, meaning that they can be specified only if the file type to which they
            are associated is in the set. A file type cannot appear more than once in the
            set.
            
            If this query object is not present, then all files providing only file level
            details are matched.
          type: array
          items:
            $ref: '#/components/schemas/FileQuery'
        details:
          description: |2
            This object comprises a set of booleans that describe what details to return
            for each file.
            
            The file level details apply globally to all matched files.
          $ref: '#/components/schemas/FileQueryFlags'
        searchCaseInsensitive:
          description: |2
            This flag indicates whether or not to search using a case insensitive match on
            type.
            
            In general the algorithm used to match file types relies on file
            extensions. Although the specific file extensions used are encapsulated by this
            API, clients are still allowed to modify the filtering behavior.
            
            By default, the DatastoreBrowser uses a platform-consistent algorithm to
            determine if a file is of a type. Specifically on Linux, where case is
            important, the search is case sensitive. On Windows, case is not important, so
            the search is case insensitive.
            
            In an environment with heterogenous platforms, being platform-consistent may
            not be desirable. As a result, the default behavior can be overridden by
            setting this optional flag.
          type: boolean
        matchPattern:
          description: |2
            Specifies a list of file patterns that must match for a file to be returned.
            
            This search property is a filter that applies globally so that only files
            matching the specified patterns are returned, regardless of the other search
            parameters.
          type: array
          items:
            type: string
        sortFoldersFirst:
          description: |2
            By default, files are sorted in alphabetical order regardless of file type.
            
            If
            this flag is set to "true", folders are placed at the start of the list of
            results in alphabetical order. The remaining files follow in alphabetical
            order.
          type: boolean
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostDatastoreBrowserSearchSpec:
      type: object
      description: |2
        A boxed array of *HostDatastoreBrowserSearchSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostDatastoreBrowserSearchSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    TemplateConfigFileInfo:
      type: object
      description: |2
        This data object type describes a template virtual machine configuration file.
      allOf:
        - $ref: '#/components/schemas/VmConfigFileInfo'

    ArrayOfTemplateConfigFileInfo:
      type: object
      description: |2
        A boxed array of *TemplateConfigFileInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/TemplateConfigFileInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    TemplateConfigFileQuery:
      type: object
      description: |2
        This data object type describes the query specification for a template virtual
        machine configuration file.
      allOf:
        - $ref: '#/components/schemas/VmConfigFileQuery'

    ArrayOfTemplateConfigFileQuery:
      type: object
      description: |2
        A boxed array of *TemplateConfigFileQuery*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/TemplateConfigFileQuery'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmConfigFileInfo:
      type: object
      description: |2
        This data object type describes a virtual machine configuration file.
      properties:
        configVersion:
          type: integer
          format: int32
        encryption:
          description: |2
            The encryption information of the virtual machine
            configuration file.
            
            If encryption was selected in VmConfigFileQueryFlags then this
            field is always set. Inspect the VmConfigEncryptionInfo to
            determine if the virtual machine configuration file is encrypted.
          $ref: '#/components/schemas/VmConfigFileEncryptionInfo'
      allOf:
        - $ref: '#/components/schemas/FileInfo'

    ArrayOfVmConfigFileInfo:
      type: object
      description: |2
        A boxed array of *VmConfigFileInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmConfigFileInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmConfigFileEncryptionInfo:
      type: object
      description: |2
        The encryption information of a virtual machine configuration.
      properties:
        keyId:
          description: |2
            The key identifier for an encrypted virtual machine
            configuration file.
            
            If the virtual machine configuration file is encrypted, then
            the keyId is set and indicates the identifier that can be
            used to lookup the key material. Unset if the virtual machine
            configuration file is not encrypted.
          $ref: '#/components/schemas/CryptoKeyId'
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVmConfigFileEncryptionInfo:
      type: object
      description: |2
        A boxed array of *VmConfigFileEncryptionInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmConfigFileEncryptionInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmConfigFileQuery:
      type: object
      description: |2
        This data object type describes query specification for the virtual machine
        configuration file.
      properties:
        filter:
          description: |2
            The filter specification for the virtual machine configuration file query.
          $ref: '#/components/schemas/VmConfigFileQueryFilter'
        details:
          description: |2
            The details specification for the virtual machine configuration file query.
          $ref: '#/components/schemas/VmConfigFileQueryFlags'
      allOf:
        - $ref: '#/components/schemas/FileQuery'

    ArrayOfVmConfigFileQuery:
      type: object
      description: |2
        A boxed array of *VmConfigFileQuery*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmConfigFileQuery'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmConfigFileQueryFlags:
      type: object
      properties:
        configVersion:
          description: |2
            The flag to indicate whether or not the configuration file version number is
            returned.
          type: boolean
        encryption:
          description: |2
            The flag to indicate whether the encryption information of the
            virtual machine configuration is returned.
          type: boolean
      required:
        - configVersion
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVmConfigFileQueryFlags:
      type: object
      description: |2
        A boxed array of *VmConfigFileQueryFlags*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmConfigFileQueryFlags'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmConfigFileQueryFilter:
      type: object
      description: |2
        The filter for the virtual machine configuration file.
      properties:
        matchConfigVersion:
          description: |2
            If this property is set, only the virtual machine configuration files that
            match one of the specified configuration versions are selected.
            
            If no
            versions are specified, this search criteria is ignored.
          type: array
          items:
            type: integer
            format: int32
        encrypted:
          description: |2
            This optional property can be used to filter virtual
            machine configuration files based on whether they are
            encrypted or not.
          type: boolean
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVmConfigFileQueryFilter:
      type: object
      description: |2
        A boxed array of *VmConfigFileQueryFilter*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmConfigFileQueryFilter'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmDiskFileInfo:
      type: object
      description: |2
        This data object type describes a virtual disk primary file.
      properties:
        diskType:
          description: |2
            Disk type of the virtual disk.
            
            The specified disk type is one of the backing information types for a virtual
            disk.
            
            See also *VirtualDisk*.
          type: string
        capacityKb:
          description: |2
            The capacity of a virtual disk from the point of view of a virtual machine.
          type: integer
          format: int64
        hardwareVersion:
          description: |2
            The hardware version of the virtual disk file.
          type: integer
          format: int32
        controllerType:
          deprecated: true
          description: |2
            Deprecated as of vSphere API 5.0, this property is no longer
            relevant and should not be used.
            With the current state of emulation, we don't care about the
            adapter type a disk is connected to, as disks may be shuffled
            around. For example, a disk may be unplugged from a buslogic
            controller and plugged into an lsilogic controller.
            
            The controller type suitable for this virtual disk.
          type: string
        diskExtents:
          description: |2
            The extents of this virtual disk specified in absolute DS paths
          type: array
          items:
            type: string
        thin:
          description: |2
            Indicates if the disk is thin-provisioned
          type: boolean
        encryption:
          description: |2
            The encryption information of the virtual disk.
            
            If encryption was selected in VmDiskFileQueryFlags then this
            field is always set. Inspect the VmDiskEncryptionInfo to
            determine if the virtual disk is encrypted.
          $ref: '#/components/schemas/VmDiskFileEncryptionInfo'
      allOf:
        - $ref: '#/components/schemas/FileInfo'

    ArrayOfVmDiskFileInfo:
      type: object
      description: |2
        A boxed array of *VmDiskFileInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmDiskFileInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmDiskFileEncryptionInfo:
      type: object
      description: |2
        The encryption information of a virtual disk.
      properties:
        keyId:
          description: |2
            The key identifier for an encrypted virtual disk.
            
            If the virtual disk is encrypted, then the keyId is set and
            indicates the identifier that can be used to lookup the key
            material. Unset if the virtual disk is not encrypted.
          $ref: '#/components/schemas/CryptoKeyId'
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVmDiskFileEncryptionInfo:
      type: object
      description: |2
        A boxed array of *VmDiskFileEncryptionInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmDiskFileEncryptionInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmDiskFileQuery:
      type: object
      description: |2
        This data object type describes the query specification for the virtual disk
        primary file.
      properties:
        filter:
          description: |2
            The filter specification for the virtual disk primary file query.
          $ref: '#/components/schemas/VmDiskFileQueryFilter'
        details:
          description: |2
            Details specification for the virtual disk primary file query.
          $ref: '#/components/schemas/VmDiskFileQueryFlags'
      allOf:
        - $ref: '#/components/schemas/FileQuery'

    ArrayOfVmDiskFileQuery:
      type: object
      description: |2
        A boxed array of *VmDiskFileQuery*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmDiskFileQuery'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmDiskFileQueryFlags:
      type: object
      description: |2
        Details for the virtual disk primary file.
      properties:
        diskType:
          description: |2
            The flag to indicate whether the type of the physical disk backing
            the virtual disk is returned.
          type: boolean
        capacityKb:
          description: |2
            The flag to indicate whether the capacity of the virtual disk from
            the point of view of a virtual machine is returned.
          type: boolean
        hardwareVersion:
          description: |2
            The flag to indicate whether the hardware version of the virtual disk
            file is returned.
          type: boolean
        controllerType:
          deprecated: true
          description: |2
            Deprecated as of vSphere API 5.0, this property is no longer
            relevant and should not be used.
            With the current state of emulation, we don't care about the
            adapter type a disk is connected to, as disks may be shuffled
            around. For example, a disk may be unplugged from a buslogic
            controller and plugged into an lsilogic controller.
            
            The flag to indicate whether or not the controller type of the virtual disk
            file is returned.
          type: boolean
        diskExtents:
          description: |2
            The flag to indicate whether or not the disk extents of the virtual disk
            are returned.
          type: boolean
        thin:
          description: |2
            The flag to indicate whether the thin-ness of the disk is returned.
          type: boolean
        encryption:
          description: |2
            The flag to indicate whether the encryption information of the
            virtual disk is returned.
          type: boolean
      required:
        - diskType
        - capacityKb
        - hardwareVersion
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVmDiskFileQueryFlags:
      type: object
      description: |2
        A boxed array of *VmDiskFileQueryFlags*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmDiskFileQueryFlags'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmDiskFileQueryFilter:
      type: object
      description: |2
        The filter for the virtual disk primary file.
      properties:
        diskType:
          description: |2
            If this optional property is set, only the virtual disk primary files that
            match one of the specified disk types are selected.
            
            If no disk types are
            specified, this search criteria is ignored.
            
            The specified disk type is one of the backing information types for a
            virtual disk.
            
            See also *VirtualDisk*.
          type: array
          items:
            type: string
        matchHardwareVersion:
          description: |2
            If this optional property is set, only virtual disk primary files that match
            one of the specified hardware versions are selected.
            
            If no versions are
            specified, this search criteria is ignored.
          type: array
          items:
            type: integer
            format: int32
        controllerType:
          deprecated: true
          description: |2
            Deprecated as of vSphere API 5.0, this property is no longer
            relevant and should not be used.
            With the current state of emulation, we don't care about the
            adapter type a disk is connected to, as disks may be shuffled
            around. For example, a disk may be unplugged from a buslogic
            controller and plugged into an lsilogic controller.
            
            If this optional property is set, only virtual disk files that have a
            controller type that matches one of the controller types specified
            are returned.
            
            If no controller types are specified, this search criteria
            is ignored.
            
            The specified controller type is one of the controller types for a
            virtual disk.
            
            See also *VirtualIDEController*, *VirtualSCSIController*.
          type: array
          items:
            type: string
        thin:
          description: |2
            This optional property can be used to filter disks based on whether
            they are thin-provsioned or not: if set to true, only thin-provisioned
            disks are returned, and vice-versa.
          type: boolean
        encrypted:
          description: |2
            This optional property can be used to filter disks based on
            whether they are encrypted or not.
          type: boolean
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVmDiskFileQueryFilter:
      type: object
      description: |2
        A boxed array of *VmDiskFileQueryFilter*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmDiskFileQueryFilter'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmLogFileInfo:
      type: object
      description: |2
        This data object type describes a file that is logging output for a virtual
        machine.
      allOf:
        - $ref: '#/components/schemas/FileInfo'

    ArrayOfVmLogFileInfo:
      type: object
      description: |2
        A boxed array of *VmLogFileInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmLogFileInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmLogFileQuery:
      type: object
      description: |2
        This data object type describes the query specification for a virtual machine log
        file file.
      allOf:
        - $ref: '#/components/schemas/FileQuery'

    ArrayOfVmLogFileQuery:
      type: object
      description: |2
        A boxed array of *VmLogFileQuery*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmLogFileQuery'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmNvramFileInfo:
      type: object
      description: |2
        This data object type describes a file that is a virtual machine non-volatile
        memory file.
      allOf:
        - $ref: '#/components/schemas/FileInfo'

    ArrayOfVmNvramFileInfo:
      type: object
      description: |2
        A boxed array of *VmNvramFileInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmNvramFileInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmNvramFileQuery:
      type: object
      description: |2
        This data object type describes the query specification for a non-volatile memory
        file.
      allOf:
        - $ref: '#/components/schemas/FileQuery'

    ArrayOfVmNvramFileQuery:
      type: object
      description: |2
        A boxed array of *VmNvramFileQuery*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmNvramFileQuery'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmSnapshotFileInfo:
      type: object
      description: |2
        This data object type describes a file that is a virtual disk snapshot file.
      allOf:
        - $ref: '#/components/schemas/FileInfo'

    ArrayOfVmSnapshotFileInfo:
      type: object
      description: |2
        A boxed array of *VmSnapshotFileInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmSnapshotFileInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmSnapshotFileQuery:
      type: object
      description: |2
        This data object type describes the query specification for a virtual machine
        snapshot file.
      allOf:
        - $ref: '#/components/schemas/FileQuery'

    ArrayOfVmSnapshotFileQuery:
      type: object
      description: |2
        A boxed array of *VmSnapshotFileQuery*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmSnapshotFileQuery'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostDatastoreSystemCapabilities:
      type: object
      description: |2
        Capability vector indicating the available product features.
      properties:
        nfsMountCreationRequired:
          description: |2
            Indicates whether mounting the NFS volume is required to be done as part
            of NAS datastore creation.
            
            If this is set to true, then NAS datastores
            cannot be created for currently mounted NFS volumes.
          type: boolean
        nfsMountCreationSupported:
          description: |2
            Indicates whether mounting an NFS volume is supported
            when a NAS datastore is created.
            
            If this option is false,
            then NAS datastores corresponding to NFS volumes can be created
            only for already mounted NFS volumes.
          type: boolean
        localDatastoreSupported:
          description: |2
            Indicates whether local datastores are supported.
          type: boolean
        vmfsExtentExpansionSupported:
          description: |2
            Indicates whether vmfs extent expansion is supported.
          type: boolean
      required:
        - nfsMountCreationRequired
        - nfsMountCreationSupported
        - localDatastoreSupported
        - vmfsExtentExpansionSupported
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostDatastoreSystemCapabilities:
      type: object
      description: |2
        A boxed array of *HostDatastoreSystemCapabilities*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostDatastoreSystemCapabilities'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostDatastoreSystemDatastoreResult:
      type: object
      description: |2
        Contains result of remove datastore request.
        
        Used as return value
        by *HostDatastoreSystem.RemoveDatastoreEx_Task*
      properties:
        key:
          description: |2
            Datastore removed
            
            Refers instance of *Datastore*.
          $ref: '#/components/schemas/ManagedObjectReference'
        fault:
          description: |2
            Fault if removal fails
          $ref: '#/components/schemas/MethodFault'
      required:
        - key
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostDatastoreSystemDatastoreResult:
      type: object
      description: |2
        A boxed array of *HostDatastoreSystemDatastoreResult*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostDatastoreSystemDatastoreResult'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostDatastoreSystemVvolDatastoreSpec:
      type: object
      description: |2
        Specification for creating Virtual Volumed based datastore.
      properties:
        name:
          description: |2
            Name of the datastore.
          type: string
        scId:
          description: |2
            Storage contained Id.
            
            This is used to retrieve configuration of the
            storage container from SMS.
          type: string
      required:
        - name
        - scId
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostDatastoreSystemVvolDatastoreSpec:
      type: object
      description: |2
        A boxed array of *HostDatastoreSystemVvolDatastoreSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostDatastoreSystemVvolDatastoreSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostDateTimeConfig:
      type: object
      description: |2
        This data object represents the dateTime configuration of the host.
      properties:
        timeZone:
          description: |2
            The time zone of the host.
            
            Must be one of the values of
            *HostDateTimeSystemTimeZone.key*
          type: string
        ntpConfig:
          description: |2
            The NTP configuration on the host.
          $ref: '#/components/schemas/HostNtpConfig'
        ptpConfig:
          description: |2
            The PTP configuration on the host.
            
            ***Since:*** vSphere API Release 7.0.3.0
          $ref: '#/components/schemas/HostPtpConfig'
        protocol:
          description: |2
            Specify which network time configuration to discipline vmkernel clock.
            
            See *HostDateTimeInfoProtocol_enum* for supported values.
            
            ***Since:*** vSphere API Release 7.0.3.0
          type: string
        enabled:
          description: |2
            Bring Time services subsystem up or down.
            
            ***Since:*** vSphere API Release 7.0.3.0
          type: boolean
        disableEvents:
          description: |2
            When Network Time service or Precision Time service are enabled
            any detecteced failures will result in Events being sent to
            Virtual Center.
            
            Use this setting to disable Time Events.
            
            ***Since:*** vSphere API Release 7.0.3.0
          type: boolean
        disableFallback:
          description: |2
            When in PrecisionTimeSync, NTP configuration as set will be
            running as backup.
            
            Use this setting to prevent NTP from becoming
            the primary time protocol in the event of a PTP service failure.
            
            ***Since:*** vSphere API Release 7.0.3.0
          type: boolean
        resetToFactoryDefaults:
          description: |2
            When this property is present and set true the existing
            configuration for Time Services will be reset to factory default.
            
            The protocol property when set defines the scope of what is reset.
            If additional configuration beyond protocol is provided host
            will first perform factory reset followed by applying any configuration
            present.
            
            ***Since:*** vSphere API Release 7.0.3.0
          type: boolean
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostDateTimeConfig:
      type: object
      description: |2
        A boxed array of *HostDateTimeConfig*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostDateTimeConfig'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostDateTimeInfo:
      type: object
      description: |2
        This data object represents the dateTime configuration of the host.
      properties:
        timeZone:
          description: |2
            The time zone of the host.
          $ref: '#/components/schemas/HostDateTimeSystemTimeZone'
        systemClockProtocol:
          description: |2
            The system clock synchronization protocol.
            
            See *HostDateTimeInfoProtocol_enum* for possible values.
          type: string
        ntpConfig:
          description: |2
            The NTP configuration on the host.
          $ref: '#/components/schemas/HostNtpConfig'
        ptpConfig:
          description: |2
            The PTP configuration on the host.
            
            ***Since:*** vSphere API Release 7.0.3.0
          $ref: '#/components/schemas/HostPtpConfig'
        enabled:
          description: |2
            Present state of the time services subsystem.
            
            ***Since:*** vSphere API Release 7.0.3.0
          type: boolean
        disableEvents:
          description: |2
            When not disabled Network Time service or Precision Time service
            will send events to Virtual Center when service fails or recovers.
            
            ***Since:*** vSphere API Release 7.0.3.0
          type: boolean
        disableFallback:
          description: |2
            When not disabled, if PrecisionTimeSync is configured, then the
            NTP configuration can run as backup.
            
            ***Since:*** vSphere API Release 7.0.3.0
          type: boolean
        inFallbackState:
          description: |2
            Tracks if NTP is providing time to ESXi due to PTP service failure.
            
            This is set only if disableFallback is set to false.
            
            ***Since:*** vSphere API Release 7.0.3.0
          type: boolean
        serviceSync:
          description: |2
            Report true if time is synchronized with remote time source
            For PrecisionTimeSync this is obtained from PTP Port Status value.
            
            For NetworkTimeProtocol this obtained from Leap Indicator value.
            
            ***Since:*** vSphere API Release 7.0.3.0
          type: boolean
        lastSyncTime:
          description: |2
            Timestamp when time services were last in sync with remote clock.
            
            If not set, time services have never established synchronization.
            
            ***Since:*** vSphere API Release 7.0.3.0
          type: string
          format: date-time
        remoteNtpServer:
          description: |2
            Provides the NTP server that the host is synced with from the
            set of servers configured.
            
            ***Since:*** vSphere API Release 7.0.3.0
          type: string
        ntpRunTime:
          description: |2
            Provides the total seconds ntpd process has been running for.
            
            ***Since:*** vSphere API Release 7.0.3.0
          type: integer
          format: int64
        ptpRunTime:
          description: |2
            Provides the total seconds ptpd process has been running for.
            
            ***Since:*** vSphere API Release 7.0.3.0
          type: integer
          format: int64
        ntpDuration:
          description: |2
            Provides a duration in simplified, human-readable form
            for the lifetime of the ntp service.
            
            ***Since:*** vSphere API Release 7.0.3.0
          type: string
        ptpDuration:
          description: |2
            Provides a duration in simplified, human-readable form
            for the lifetime of the ptp service.
            
            ***Since:*** vSphere API Release 7.0.3.0
          type: string
      required:
        - timeZone
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostDateTimeInfo:
      type: object
      description: |2
        A boxed array of *HostDateTimeInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostDateTimeInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostDateTimeSystemServiceTestResult:
      type: object
      description: |2
        ***Since:*** vSphere API Release 7.0.3.0
      properties:
        workingNormally:
          description: |2
            Value is true if time services are presently working normally.
          type: boolean
        report:
          description: |2
            Returns details of the checks done to verify time services are working.
          type: array
          items:
            type: string
      required:
        - workingNormally
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostDateTimeSystemServiceTestResult:
      type: object
      description: |2
        A boxed array of *HostDateTimeSystemServiceTestResult*. To be used in *Any* placeholders.
        
        ***Since:*** vSphere API Release 7.0.3.0
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostDateTimeSystemServiceTestResult'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostDateTimeSystemTimeZone:
      type: object
      properties:
        key:
          description: |2
            The identifier for the time zone.
          type: string
        name:
          description: |2
            The time zone name.
          type: string
        description:
          description: |2
            Description of the time zone.
          type: string
        gmtOffset:
          description: |2
            The GMT offset in seconds that is currently applicable to the timezone
            (with respect to the current time on the host).
          type: integer
          format: int32
      required:
        - key
        - name
        - description
        - gmtOffset
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostDateTimeSystemTimeZone:
      type: object
      description: |2
        A boxed array of *HostDateTimeSystemTimeZone*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostDateTimeSystemTimeZone'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostDeploymentInfo:
      type: object
      description: |2
        Data object describing the deployment information for a host.
      properties:
        bootedFromStatelessCache:
          description: |2
            Flag indicating if the host was booted from stateless cache.
          type: boolean
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostDeploymentInfo:
      type: object
      description: |2
        A boxed array of *HostDeploymentInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostDeploymentInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostDevice:
      type: object
      description: |2
        This data object type defines a device on the host.
      properties:
        deviceName:
          description: |2
            The name of the device on the host.
            
            For example,
            /dev/cdrom or \\\\serverX\\device\_name.
          type: string
        deviceType:
          description: |2
            Device type when available:
            floppy, mouse, cdrom, disk, scsi device, or adapter.
          type: string
      required:
        - deviceName
        - deviceType
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostDevice:
      type: object
      description: |2
        A boxed array of *HostDevice*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostDevice'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostDhcpService:
      type: object
      description: |2
        A dynamic host control protocol (DHCP) service instance serves IP
        addresses to a single virtual network subnet.
        
        The instances may
        be handled collectively by a single server. This decision can
        be made during implementation.
      properties:
        key:
          description: |2
            The instance ID of the DHCP service.
          type: string
        spec:
          description: |2
            Configurable properties for the DHCP service.
          $ref: '#/components/schemas/HostDhcpServiceSpec'
      required:
        - key
        - spec
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostDhcpService:
      type: object
      description: |2
        A boxed array of *HostDhcpService*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostDhcpService'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostDhcpServiceConfig:
      type: object
      description: |2
        This data object type describes the configuration of a DHCP service
        instance representing both the configured properties
        on the instance and identification information.
      properties:
        changeOperation:
          description: |2
            Indicates the change operation to apply on this configuration
            specification.
            
            See also *HostConfigChangeOperation_enum*.
          type: string
        key:
          description: |2
            The instance ID of the DHCP service.
          type: string
        spec:
          description: |2
            Specification of the DHCP service.
          $ref: '#/components/schemas/HostDhcpServiceSpec'
      required:
        - key
        - spec
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostDhcpServiceConfig:
      type: object
      description: |2
        A boxed array of *HostDhcpServiceConfig*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostDhcpServiceConfig'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostDhcpServiceSpec:
      type: object
      properties:
        virtualSwitch:
          description: |2
            The name of the virtual switch to which DHCP service is connected.
          type: string
        defaultLeaseDuration:
          description: |2
            The default DHCP lease duration (minutes).
          type: integer
          format: int32
        leaseBeginIp:
          description: |2
            The start of the IP address range served by the DHCP service.
          type: string
        leaseEndIp:
          description: |2
            The end of the IP address range served by the DHCP service.
          type: string
        maxLeaseDuration:
          description: |2
            The maximum DHCP lease duration (minutes).
          type: integer
          format: int32
        unlimitedLease:
          description: |2
            A flag to indicate whether or not unlimited DHCP lease
            durations are allowed.
          type: boolean
        ipSubnetAddr:
          description: |2
            Subnet served by DHCP service.
          type: string
        ipSubnetMask:
          description: |2
            Subnet mask of network served by DHCP service.
          type: string
      required:
        - virtualSwitch
        - defaultLeaseDuration
        - leaseBeginIp
        - leaseEndIp
        - maxLeaseDuration
        - unlimitedLease
        - ipSubnetAddr
        - ipSubnetMask
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostDhcpServiceSpec:
      type: object
      description: |2
        A boxed array of *HostDhcpServiceSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostDhcpServiceSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostDiagnosticPartition:
      type: object
      description: |2
        This data object type contains information about an available or active
        diagnostic partition.
      properties:
        storageType:
          description: |2
            Indicates the storage type of the diagnostic partition.
            
            See also *DiagnosticPartitionStorageType_enum*.
          type: string
        diagnosticType:
          description: |2
            Indicates the type of the diagnostic partition.
            
            See also *DiagnosticPartitionType_enum*.
          type: string
        slots:
          description: |2
            The number of slots in the diagnostic partition.
          type: integer
          format: int32
        id:
          description: |2
            Diagnostic partition identification information.
          $ref: '#/components/schemas/HostScsiDiskPartition'
      required:
        - storageType
        - diagnosticType
        - slots
        - id
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostDiagnosticPartition:
      type: object
      description: |2
        A boxed array of *HostDiagnosticPartition*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostDiagnosticPartition'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostDiagnosticPartitionCreateDescription:
      type: object
      description: |2
        The diagnostic partition create description details what will be done
        to create a new diagnostic partition on a disk.
        
        It contains a CreateSpec
        that can be submitted to create the partition and information that can
        be shown to the user.
      properties:
        layout:
          description: |2
            Layout describing the format of the disk
            In releases after vSphere API 5.0, vSphere Servers might not
            generate property collector update notifications for this property.
            
            To obtain the latest value of the property, you can use
            PropertyCollector methods RetrievePropertiesEx or WaitForUpdatesEx.
            If you use the PropertyCollector.WaitForUpdatesEx method, specify
            an empty string for the version parameter.
            Since this property is on a DataObject, an update returned by WaitForUpdatesEx may
            contain values for this property when some other property on the DataObject changes.
            If this update is a result of a call to WaitForUpdatesEx with a non-empty
            version parameter, the value for this property may not be current.
          $ref: '#/components/schemas/HostDiskPartitionLayout'
        diskUuid:
          description: |2
            The UUID of the SCSI disk on which to create the diagnostic partition.
            
            This disk UUID will match that found in the identification field of the
            creation spec.
            
            See also *HostScsiDisk*, *ScsiLun.uuid*.
          type: string
        spec:
          description: |2
            Creation specification for diagnostic partition
          $ref: '#/components/schemas/HostDiagnosticPartitionCreateSpec'
      required:
        - layout
        - diskUuid
        - spec
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostDiagnosticPartitionCreateDescription:
      type: object
      description: |2
        A boxed array of *HostDiagnosticPartitionCreateDescription*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostDiagnosticPartitionCreateDescription'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostDiagnosticPartitionCreateOption:
      type: object
      description: |2
        This data object describes a disk that can be used to create a
        diagnostic partition.
      properties:
        storageType:
          description: |2
            Indicates the storage type of diagnostic partition to be created.
            
            See also *DiagnosticPartitionStorageType_enum*.
          type: string
        diagnosticType:
          description: |2
            Indicates the type of the diagnostic partition to be created.
            
            See also *DiagnosticPartitionType_enum*.
          type: string
        disk:
          description: |2
            The disk which has sufficient free space to contain a diagnostic
            partition.
          $ref: '#/components/schemas/HostScsiDisk'
      required:
        - storageType
        - diagnosticType
        - disk
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostDiagnosticPartitionCreateOption:
      type: object
      description: |2
        A boxed array of *HostDiagnosticPartitionCreateOption*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostDiagnosticPartitionCreateOption'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostDiagnosticPartitionCreateSpec:
      type: object
      description: |2
        The diagnostic create specification is used by the system to create a new
        diagnostic partition on a SCSI disk.
      properties:
        storageType:
          description: |2
            Indicates the storage type where the diagnostic partition
            will be created.
            
            See also *DiagnosticPartitionStorageType_enum*.
          type: string
        diagnosticType:
          description: |2
            Indicates the type of the diagnostic partition to be created.
            
            See also *DiagnosticPartitionType_enum*.
          type: string
        id:
          description: |2
            Diagnostic partition identification information.
          $ref: '#/components/schemas/HostScsiDiskPartition'
        partition:
          description: |2
            Partitioning specification.
          $ref: '#/components/schemas/HostDiskPartitionSpec'
        active:
          description: |2
            Indicates if the created diagnostic partition should be made the
            active diagnostic partition.
            
            If not supplied, the system will
            decide whether or not the created specification is active.
          type: boolean
      required:
        - storageType
        - diagnosticType
        - id
        - partition
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostDiagnosticPartitionCreateSpec:
      type: object
      description: |2
        A boxed array of *HostDiagnosticPartitionCreateSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostDiagnosticPartitionCreateSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostDigestInfo:
      type: object
      description: |2
        This data object type describes the digest information
      properties:
        digestMethod:
          description: |2
            Method in which the digest value is calculated.
            
            The set of possible
            values is described in *HostDigestInfoDigestMethodType_enum*.
          type: string
        digestValue:
          description: |2
            The variable length byte array containing the digest value calculated by
            the specified digestMethod.
          type: array
          items:
            type: integer
            minimum: -128
            maximum: 127
        objectName:
          description: |2
            The name of the object from which this digest value is calcaulated.
          type: string
      required:
        - digestMethod
        - digestValue
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostDigestInfo:
      type: object
      description: |2
        A boxed array of *HostDigestInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostDigestInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostDirectoryStoreInfo:
      type: object
      description: |2
        *HostDirectoryStoreInfo* is a base class for objects that
        provide information about directory-based authentication stores.
      allOf:
        - $ref: '#/components/schemas/HostAuthenticationStoreInfo'

    ArrayOfHostDirectoryStoreInfo:
      type: object
      description: |2
        A boxed array of *HostDirectoryStoreInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostDirectoryStoreInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostDiskConfigurationResult:
      type: object
      description: |2
        Disk configuration result returns success or fault of the
        operation on the disk.
      properties:
        devicePath:
          description: |2
            The device path.
            
            See *ScsiDisk*
          type: string
        success:
          description: |2
            Flag to indicate if the operation is successful
          type: boolean
        fault:
          description: |2
            'fault' would be set if the operation was not successful
          $ref: '#/components/schemas/MethodFault'
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostDiskConfigurationResult:
      type: object
      description: |2
        A boxed array of *HostDiskConfigurationResult*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostDiskConfigurationResult'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostDiskDimensions:
      type: object
      description: |2
        This data object type describes multiple coordinate systems
        used to refer to a location or size on a disk.
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostDiskDimensions:
      type: object
      description: |2
        A boxed array of *HostDiskDimensions*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostDiskDimensions'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostDiskDimensionsChs:
      type: object
      description: |2
        This data object type describes dimensions using the cylinder,
        head, sector (CHS) coordinate system.
        
        This coordinate system
        is generally needed for partitioning for legacy reasons. When defining
        partitions, many partitioning utilities do not function correctly when
        certain CHS constraints are not met.
      properties:
        cylinder:
          description: |2
            The number of cylinders.
          type: integer
          format: int64
        head:
          description: |2
            The number of heads per cylinders.
          type: integer
          format: int32
        sector:
          description: |2
            The number of sectors per head.
          type: integer
          format: int32
      required:
        - cylinder
        - head
        - sector
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostDiskDimensionsChs:
      type: object
      description: |2
        A boxed array of *HostDiskDimensionsChs*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostDiskDimensionsChs'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostDiskDimensionsLba:
      type: object
      description: |2
        This data object type describes the logical block addressing system
        that uses block numbers and block sizes to refer to a block.
        
        This
        scheme is employed by SCSI. If a SCSI disk is not involved,
        then blockSize is 512 bytes.
      properties:
        blockSize:
          description: |2
            The size of the blocks.
          type: integer
          format: int32
        block:
          description: |2
            The number of blocks.
          type: integer
          format: int64
      required:
        - blockSize
        - block
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostDiskDimensionsLba:
      type: object
      description: |2
        A boxed array of *HostDiskDimensionsLba*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostDiskDimensionsLba'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostDiskPartitionInfo:
      type: object
      description: |2
        Information about the partitions on a disk.
        
        A DiskPartitionInfo object
        provides two different views into the partitions on a disk:
        - A detailed specification that is used to create the partition
          table.
        - A convenient view that shows the allocations
          of blocks as a contiguous sequence of block ranges.
          
        See also *HostStorageSystem.RetrieveDiskPartitionInfo*, *HostStorageSystem.ComputeDiskPartitionInfo*, *HostStorageSystem.UpdateDiskPartitions*.
      properties:
        deviceName:
          description: |2
            The device name of the disk to which this partition information
            corresponds.
          type: string
        spec:
          description: |2
            The detailed disk partition specification.
            
            Use this specification for
            manipulating the file system.
            
            See also *HostStorageSystem.RetrieveDiskPartitionInfo*, *HostStorageSystem.UpdateDiskPartitions*.
          $ref: '#/components/schemas/HostDiskPartitionSpec'
        layout:
          description: |2
            A convenient format for describing disk layout.
            
            This layout
            specification can be converted to a Specification object.
            
            See also *HostStorageSystem.ComputeDiskPartitionInfo*.
          $ref: '#/components/schemas/HostDiskPartitionLayout'
      required:
        - deviceName
        - spec
        - layout
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostDiskPartitionInfo:
      type: object
      description: |2
        A boxed array of *HostDiskPartitionInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostDiskPartitionInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostDiskPartitionBlockRange:
      type: object
      description: |2
        A BlockRange data object type describes a contiguous set of blocks
        on a disk.
        
        A BlockRange may describe either a partition or
        unpartitioned (primordial) blocks on the disk.
      properties:
        partition:
          description: |2
            Partition number.
            
            This number is a hint from the server indicating
            what the partition number for this block range is if the range
            corresponds to a partition. The partition number should correlate to
            the one in the partition specification. If sent back to the server,
            this property is ignored.
          type: integer
          format: int32
        type:
          description: |2
            The type of data in the partition.
            
            See also *HostDiskPartitionAttributes.type*.
          type: string
        start:
          description: |2
            The starting block address of the disk range.
            
            The block numbers start
            from zero. The range is inclusive of the end address.
          $ref: '#/components/schemas/HostDiskDimensionsLba'
        end:
          description: |2
            The end block address of the disk range.
            
            The block numbers start
            from zero. The range is inclusive of the end address.
          $ref: '#/components/schemas/HostDiskDimensionsLba'
      required:
        - type
        - start
        - end
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostDiskPartitionBlockRange:
      type: object
      description: |2
        A boxed array of *HostDiskPartitionBlockRange*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostDiskPartitionBlockRange'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostDiskPartitionLayout:
      type: object
      description: |2
        This data object type describes the disk partition layout
        specified as a list of ordered BlockRanges.
        
        This
        view of the disk partitions shows the data on the disk as a contiguous
        set of BlockRanges.
      properties:
        total:
          description: |2
            Total number of blocks on a disk.
          $ref: '#/components/schemas/HostDiskDimensionsLba'
        partition:
          description: |2
            List of block ranges on the disk.
          type: array
          items:
            $ref: '#/components/schemas/HostDiskPartitionBlockRange'
      required:
        - partition
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostDiskPartitionLayout:
      type: object
      description: |2
        A boxed array of *HostDiskPartitionLayout*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostDiskPartitionLayout'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostDiskPartitionAttributes:
      type: object
      description: |2
        Information about a single disk partition.
        
        A partition is a contiguous
        set of blocks on a disk that is marked for use. The typeId identifies
        the purpose of the data in the partition.
      properties:
        partition:
          description: |2
            The partition number.
            
            Must be a positive integer.
          type: integer
          format: int32
        startSector:
          description: |2
            The start sector.
          type: integer
          format: int64
        endSector:
          description: |2
            The end sector.
          type: integer
          format: int64
        type:
          description: |2
            Type of data in the partition.
            
            If it is a well-known partition type,
            it will be one of the defined types. If it is not, then it will be
            reported as a hexadecimal number. For example, "none", "vmfs", "linux",
            and "0x20" are all valid values.
            
            See also *HostDiskPartitionInfoType_enum*.
          type: string
        guid:
          description: |2
            Globally Unique Identifier of the partition, as defined by the GUID
            Partition Table (GPT) format.
            
            This is available only for GPT formatted
            disks.
          type: string
        logical:
          description: |2
            The flag to indicate whether or not the partition is
            logical.
            
            If true, the partition
            number should be greater than 4.
          type: boolean
        attributes:
          description: |2
            The attributes on the partition.
          type: integer
          minimum: -128
          maximum: 127
        partitionAlignment:
          description: |2
            Partition alignment in bytes.
            
            If unset, partition alignment value is unknown.
          type: integer
          format: int64
      required:
        - partition
        - startSector
        - endSector
        - type
        - logical
        - attributes
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostDiskPartitionAttributes:
      type: object
      description: |2
        A boxed array of *HostDiskPartitionAttributes*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostDiskPartitionAttributes'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostDiskPartitionSpec:
      type: object
      description: |2
        This data object type describes the disk partition table
        specification used to configure the partitions on a
        disk.
        
        This data object represents the fundamental data needed to specify
        a partition table.
      properties:
        partitionFormat:
          description: |2
            Partition format type on the disk.
          type: string
        chs:
          description: |2
            Disk dimensions expressed as cylinder, head, sector (CHS)
            coordinates.
          $ref: '#/components/schemas/HostDiskDimensionsChs'
        totalSectors:
          description: |2
            Disk dimensions expressed as a total number of sectors.
            
            For sector size, see the *sectorSize* field.
          type: integer
          format: int64
        partition:
          description: |2
            List of partitions on the disk.
          type: array
          items:
            $ref: '#/components/schemas/HostDiskPartitionAttributes'
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostDiskPartitionSpec:
      type: object
      description: |2
        A boxed array of *HostDiskPartitionSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostDiskPartitionSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostDnsConfig:
      type: object
      description: |2
        This data object type describes the DNS configuration.
        
        All IPv4 addresses, subnet addresses, and netmasks are specified using
        dotted decimal notation. For example, "192.0.2.1".
        IPv6 addresses are 128-bit addresses represented as
        eight fields of up to four hexadecimal digits.
        A colon separates each field (:). For example,
        2001:DB8:101::230:6eff:fe04:d9ff. The address can also consist of the
        symbol '::' to represent multiple 16-bit groups of
        contiguous 0's only once in an address as described in RFC 2373.
      properties:
        dhcp:
          description: |2
            The flag to indicate whether or not DHCP (dynamic host control
            protocol) is used to determine DNS configuration automatically.
          type: boolean
        virtualNicDevice:
          description: |2
            If DHCP is enabled, the DHCP DNS of the vmkernel nic will override
            the system's DNS.
            
            This field applies to both IPv4 and IPv6 DNS settings
            if *ipv6VirtualNicDevice*
            is unset, otherwise it is applicable only for IPv4 setting.
            This field is ignored if DHCP is disabled by the
            *dhcp* property.
          type: string
        ipv6VirtualNicDevice:
          description: |2
            If DHCP is enabled, the IPv6 DHCP DNS of the vmkernel nic will override
            the system's IPv6 DNS.
            
            This field is ignored if DHCP is disabled by the
            *dhcp* property.
          type: string
        hostName:
          description: |2
            The host name portion of DNS name.
            
            For example, "esx01".
            
            **Note**: When DHCP is not enabled, the property can be set
            explicitly. When DHCP is enabled, the property reflects the current
            DNS configuration, but cannot be set.
            The hostName can't have character '.' in it when set explicitly.
          type: string
        domainName:
          description: |2
            The domain name portion of the DNS name.
            
            For example, "vmware.com".
            
            **Note**: When DHCP is not enabled, the property can be set
            explicitly. When DHCP is enabled, the property reflects the current
            DNS configuration, but cannot be set.
          type: string
        address:
          description: |2
            The IP addresses of the DNS servers, placed in order of preference.
            
            **Note**: When DHCP is not enabled, the property can be set
            explicitly. When DHCP is enabled, the property reflects the current
            DNS configuration, but cannot be set.
          type: array
          items:
            type: string
        searchDomain:
          description: |2
            The domain in which to search for hosts, placed in order of preference.
            
            **Note**: When DHCP is not enabled, the property can be set
            explicitly. When DHCP is enabled, the property reflects the current
            DNS configuration, but cannot be set.
          type: array
          items:
            type: string
      required:
        - dhcp
        - hostName
        - domainName
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostDnsConfig:
      type: object
      description: |2
        A boxed array of *HostDnsConfig*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostDnsConfig'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostDnsConfigSpec:
      type: object
      description: |2
        Dataobject for configuring the DNS settings on the host.
      properties:
        virtualNicConnection:
          description: |2
            Choose a Virtual nic based on what it is connected to.
          $ref: '#/components/schemas/HostVirtualNicConnection'
        virtualNicConnectionV6:
          description: |2
            Choose an IPv6 Virtual nic based on what it is connected to.
          $ref: '#/components/schemas/HostVirtualNicConnection'
      allOf:
        - $ref: '#/components/schemas/HostDnsConfig'

    ArrayOfHostDnsConfigSpec:
      type: object
      description: |2
        A boxed array of *HostDnsConfigSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostDnsConfigSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostDvxClass:
      type: object
      description: |2
        Provides information about a single Device Virtualization Extensions (DVX)
        device class.
        
        ***Since:*** vSphere API Release 8.0.0.1
      properties:
        deviceClass:
          description: |2
            The class name.
          type: string
        checkpointSupported:
          description: |2
            Indicates whether checkpointing is supported.
          type: boolean
        swDMATracingSupported:
          description: |2
            Indicates whether software Direct Memory Access (DMA)
            tracing is supported.
          type: boolean
        sriovNic:
          description: |2
            Indicates whether the devices of this class are SR-IOV NICs.
          type: boolean
      required:
        - deviceClass
        - checkpointSupported
        - swDMATracingSupported
        - sriovNic
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostDvxClass:
      type: object
      description: |2
        A boxed array of *HostDvxClass*. To be used in *Any* placeholders.
        
        ***Since:*** vSphere API Release 8.0.0.1
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostDvxClass'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostEnterMaintenanceResult:
      type: object
      description: |2
        EnterMaintenanceResult is the result returned to the
        *HostSystem.QueryWhatIfEnterMaintenance* method.
      properties:
        vmFaults:
          description: |2
            VM specific faults that would prevent host from
            entering maintenance mode.
          type: array
          items:
            $ref: '#/components/schemas/FaultsByVM'
        hostFaults:
          description: |2
            Host specific faults that would prevent host from
            entering maintenance mode.
          type: array
          items:
            $ref: '#/components/schemas/FaultsByHost'
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostEnterMaintenanceResult:
      type: object
      description: |2
        A boxed array of *HostEnterMaintenanceResult*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostEnterMaintenanceResult'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostEsxAgentHostManagerConfigInfo:
      type: object
      properties:
        agentVmDatastore:
          description: |2
            Datastore used for deploying Agent VMs on this host.
            
            Refers instance of *Datastore*.
          $ref: '#/components/schemas/ManagedObjectReference'
        agentVmNetwork:
          description: |2
            Management Network for Agent VMs on this host.
            
            Refers instance of *Network*.
          $ref: '#/components/schemas/ManagedObjectReference'
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostEsxAgentHostManagerConfigInfo:
      type: object
      description: |2
        A boxed array of *HostEsxAgentHostManagerConfigInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostEsxAgentHostManagerConfigInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostFaultToleranceManagerComponentHealthInfo:
      type: object
      description: |2
        Data structure for component health information of a virtual machine.
      properties:
        isStorageHealthy:
          description: |2
            Whether the virtual machine can access the datastores configured.
          type: boolean
        isNetworkHealthy:
          description: |2
            Whether the virtual machine can access the VM network configured.
          type: boolean
      required:
        - isStorageHealthy
        - isNetworkHealthy
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostFaultToleranceManagerComponentHealthInfo:
      type: object
      description: |2
        A boxed array of *HostFaultToleranceManagerComponentHealthInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostFaultToleranceManagerComponentHealthInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    FcoeConfig:
      type: object
      description: |2
        This data object type describes an FCoE configuration as it pertains
        to an underlying physical NIC.
        
        Terminology is borrowed from T11's working draft of the Fibre Channel
        Backbone 5 standard (FC-BB-5). The draft can be found at
        http://www.t11.org.
      properties:
        priorityClass:
          description: |2
            802.1p priority class used for FCoE traffic.
          type: integer
          format: int32
        sourceMac:
          description: |2
            Source MAC address used for FCoE traffic.
            
            This MAC address is associated with the logical construct that is a
            physical NIC's associated underlying FCoE Controller, as defined in the
            FC-BB-5 standard.
            This MAC address should be of the form "xx:xx:xx:xx:xx:xx", where 'x' is
            a hexadecimal digit. Valid MAC addresses are unicast addresses.
          type: string
        vlanRange:
          description: |2
            VLAN ranges associated with this FcoeConfig.
          type: array
          items:
            $ref: '#/components/schemas/FcoeConfigVlanRange'
        capabilities:
          description: |2
            Settable capabilities for this FcoeConfig.
          $ref: '#/components/schemas/FcoeConfigFcoeCapabilities'
        fcoeActive:
          description: |2
            Indicates whether this FcoeConfig is "active" (has been used in
            conjunction with a parent physical network adapter for FCoE
            discovery).
          type: boolean
      required:
        - priorityClass
        - sourceMac
        - vlanRange
        - capabilities
        - fcoeActive
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfFcoeConfig:
      type: object
      description: |2
        A boxed array of *FcoeConfig*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/FcoeConfig'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    FcoeConfigFcoeCapabilities:
      type: object
      description: |2
        Flags which indicate what parameters are settable for this FcoeConfig.
      properties:
        priorityClass:
          type: boolean
        sourceMacAddress:
          type: boolean
        vlanRange:
          type: boolean
      required:
        - priorityClass
        - sourceMacAddress
        - vlanRange
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfFcoeConfigFcoeCapabilities:
      type: object
      description: |2
        A boxed array of *FcoeConfigFcoeCapabilities*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/FcoeConfigFcoeCapabilities'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    FcoeConfigFcoeSpecification:
      type: object
      description: |2
        An FcoeSpecification contains values relevant to issuing FCoE discovery.
        
        Non-mandatory values are denoted '@optional'.
      properties:
        underlyingPnic:
          description: |2
            The name of this FcoeSpecification's underlying PhysicalNic
          type: string
        priorityClass:
          description: |2
            802.1p priority class to use for FCoE traffic.
          type: integer
          format: int32
        sourceMac:
          description: |2
            Source MAC address to use for FCoE traffic.
            
            This MAC address is associated with the logical construct that is a
            physical NIC's associated underlying FCoE Controller, as defined in
            the FC-BB-5 standard.
            This MAC address should be of the form "xx:xx:xx:xx:xx:xx", where 'x'
            is a hexadecimal digit. Valid MAC addresses are unicast addresses.
          type: string
        vlanRange:
          description: |2
            VLAN ranges to use for FCoE traffic.
          type: array
          items:
            $ref: '#/components/schemas/FcoeConfigVlanRange'
      required:
        - underlyingPnic
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfFcoeConfigFcoeSpecification:
      type: object
      description: |2
        A boxed array of *FcoeConfigFcoeSpecification*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/FcoeConfigFcoeSpecification'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    FcoeConfigVlanRange:
      type: object
      description: |2
        Used to represent inclusive intervals of VLAN IDs.
        
        Valid VLAN IDs fall within the range \[0,4094\], and the low value of a
        VlanRange must be less than or equal to the high value.
      properties:
        vlanLow:
          type: integer
          format: int32
        vlanHigh:
          type: integer
          format: int32
      required:
        - vlanLow
        - vlanHigh
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfFcoeConfigVlanRange:
      type: object
      description: |2
        A boxed array of *FcoeConfigVlanRange*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/FcoeConfigVlanRange'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostFeatureCapability:
      type: object
      description: |2
        A feature that the host is able to provide at a particular value.
      properties:
        key:
          description: |2
            Accessor name to the feature capability.
          type: string
        featureName:
          description: |2
            Name of the feature.
            
            Identical to the key.
          type: string
        value:
          description: |2
            Opaque value that the feature is capable at.
          type: string
      required:
        - key
        - featureName
        - value
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostFeatureCapability:
      type: object
      description: |2
        A boxed array of *HostFeatureCapability*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostFeatureCapability'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostFeatureMask:
      type: object
      description: |2
        A mask that is applied to a host feature capability.
      properties:
        key:
          description: |2
            Accessor name to the feature mask.
          type: string
        featureName:
          description: |2
            Name of the feature Identical to the key.
          type: string
        value:
          description: |2
            Opaque value to change the host feature capability to.
            
            Masking operation is contained in the value.
          type: string
      required:
        - key
        - featureName
        - value
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostFeatureMask:
      type: object
      description: |2
        A boxed array of *HostFeatureMask*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostFeatureMask'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostFeatureVersionInfo:
      type: object
      description: |2
        Feature-specific version information for a host
      properties:
        key:
          description: |2
            A unique key that identifies a feature, list of possible values are
            specified in *HostFeatureVersionKey_enum*
          type: string
        value:
          description: |2
            The version string of this feature
          type: string
      required:
        - key
        - value
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostFeatureVersionInfo:
      type: object
      description: |2
        A boxed array of *HostFeatureVersionInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostFeatureVersionInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostFibreChannelHba:
      type: object
      description: |2
        This data object type describes the Fibre Channel host bus adapter.
      properties:
        portWorldWideName:
          description: |2
            The world wide port name for the adapter.
          type: integer
          format: int64
        nodeWorldWideName:
          description: |2
            The world wide node name for the adapter.
          type: integer
          format: int64
        portType:
          description: |2
            The type of the fiber channel port.
          $ref: '#/components/schemas/FibreChannelPortType_enum'
        speed:
          description: |2
            The current operating speed of the adapter in
            bits per second.
          type: integer
          format: int64
      required:
        - portWorldWideName
        - nodeWorldWideName
        - portType
        - speed
      allOf:
        - $ref: '#/components/schemas/HostHostBusAdapter'

    ArrayOfHostFibreChannelHba:
      type: object
      description: |2
        A boxed array of *HostFibreChannelHba*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostFibreChannelHba'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostFibreChannelOverEthernetHba:
      type: object
      description: |2
        This data object type describes the FCoE host bus adapter
        interface.
        
        Terminology is borrowed from T11's working draft of the Fibre Channel
        Backbone 5 standard (FC-BB-5). The draft can be found at
        http://www.t11.org.
      properties:
        underlyingNic:
          description: |2
            The name associated with this FCoE HBA's underlying FcoeNic.
          type: string
        linkInfo:
          description: |2
            Link information that can be used to uniquely identify this FCoE HBA.
          $ref: '#/components/schemas/HostFibreChannelOverEthernetHbaLinkInfo'
        isSoftwareFcoe:
          description: |2
            True if this host bus adapter is a software based FCoE initiator.
          type: boolean
        markedForRemoval:
          deprecated: true
          description: |2
            Deprecated as of vSphere API 8.0. Software FCoE not supported.
            
            True if this host bus adapter has been marked for removal.
          type: boolean
      required:
        - underlyingNic
        - linkInfo
        - isSoftwareFcoe
      allOf:
        - $ref: '#/components/schemas/HostFibreChannelHba'

    ArrayOfHostFibreChannelOverEthernetHba:
      type: object
      description: |2
        A boxed array of *HostFibreChannelOverEthernetHba*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostFibreChannelOverEthernetHba'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostFibreChannelOverEthernetHbaLinkInfo:
      type: object
      description: |2
        Represents FCoE link information.
        
        The link information represents a VNPort to VFPort Virtual Link, as
        described in the FC-BB-5 standard, with the addition of the VLAN ID
        over which a link exists.
      properties:
        vnportMac:
          description: |2
            VNPort MAC address, as defined by the FC-BB-5 standard.
            
            This MAC address should be of the form "xx:xx:xx:xx:xx:xx", where
            'x' is a hexadecimal digit. Valid MAC addresses are unicast
            addresses.
          type: string
        fcfMac:
          description: |2
            FCF MAC address, also known as the VFPort MAC address in the FC-BB-5
            standard.
            
            This MAC address should be of the form "xx:xx:xx:xx:xx:xx", where
            'x' is a hexadecimal digit. Valid MAC addresses are unicast
            addresses.
          type: string
        vlanId:
          description: |2
            VLAN ID.
            
            This field represents the VLAN on which an FCoE HBA was
            discovered. Valid numbers fall into the range \[0,4094\].
          type: integer
          format: int32
      required:
        - vnportMac
        - fcfMac
        - vlanId
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostFibreChannelOverEthernetHbaLinkInfo:
      type: object
      description: |2
        A boxed array of *HostFibreChannelOverEthernetHbaLinkInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostFibreChannelOverEthernetHbaLinkInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostFibreChannelOverEthernetTargetTransport:
      type: object
      description: |2
        Fibre Channel Over Ethernet transport information about a SCSI target.
        
        FCoE transport information is that of: the regular FC World Wide Node
        and Port Names; the VNPort MAC address and FCF MAC address which
        constitute a VN\_Port to VF\_Port Virtual Link; and the VLAN on which
        an FCoE target resides.
        More FCoE information can be found in the working draft of the T11's
        Fibre Channel Backbone 5 standard (FC-BB-5). The draft can be found
        at http://www.t11.org.
      properties:
        vnportMac:
          description: |2
            VNPort MAC address.
            
            This MAC address should be of the form "xx:xx:xx:xx:xx:xx", where
            'x' is a hexadecimal digit. Valid MAC addresses are unicast
            addresses.
          type: string
        fcfMac:
          description: |2
            FCF MAC address.
            
            This MAC address should be of the form "xx:xx:xx:xx:xx:xx", where
            'x' is a hexadecimal digit. Valid MAC addresses are unicast
            addresses.
          type: string
        vlanId:
          description: |2
            VLAN ID.
            
            Valid VLAN IDs fall within the range \[0,4094\].
          type: integer
          format: int32
      required:
        - vnportMac
        - fcfMac
        - vlanId
      allOf:
        - $ref: '#/components/schemas/HostFibreChannelTargetTransport'

    ArrayOfHostFibreChannelOverEthernetTargetTransport:
      type: object
      description: |2
        A boxed array of *HostFibreChannelOverEthernetTargetTransport*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostFibreChannelOverEthernetTargetTransport'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostFibreChannelTargetTransport:
      type: object
      description: |2
        Fibre Channel transport information about a SCSI target.
      properties:
        portWorldWideName:
          description: |2
            The world wide port name of the target.
          type: integer
          format: int64
        nodeWorldWideName:
          description: |2
            The world wide node name of the target.
          type: integer
          format: int64
      required:
        - portWorldWideName
        - nodeWorldWideName
      allOf:
        - $ref: '#/components/schemas/HostTargetTransport'

    ArrayOfHostFibreChannelTargetTransport:
      type: object
      description: |2
        A boxed array of *HostFibreChannelTargetTransport*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostFibreChannelTargetTransport'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostFileAccess:
      type: object
      description: |2
        This data object type contains a single access control
        entry for a file permissions list.
      properties:
        who:
          description: |2
            User or group to which the access applies.
          type: string
        what:
          description: |2
            Rights given to the user or group.
          type: string
      required:
        - who
        - what
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostFileAccess:
      type: object
      description: |2
        A boxed array of *HostFileAccess*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostFileAccess'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ModeInfo:
      type: object
      description: |2
        The FileAccess.Modes data object type defines the known access modes
        for a datastore.
        
        The property values specify how to interpret
        the "what" property for a FileAccess object.
      properties:
        browse:
          description: |2
            Can see the existence of a file.
          type: string
        read:
          description: |2
            Can read a file.
          type: string
        modify:
          description: |2
            Can read and write a file.
          type: string
        use:
          description: |2
            Can execute or operate a file or look inside a directory.
          type: string
        admin:
          description: |2
            Can change permissions for a file.
          type: string
        full:
          description: |2
            Can do anything to a file, including change permissions.
          type: string
      required:
        - read
        - modify
        - use
        - full
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfModeInfo:
      type: object
      description: |2
        A boxed array of *ModeInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ModeInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostFileSystemMountInfo:
      type: object
      description: |2
        The *HostFileSystemMountInfo* data object describes
        a host mount point for a file system.
      properties:
        mountInfo:
          description: |2
            Information about the mount point.
          $ref: '#/components/schemas/HostMountInfo'
        volume:
          description: |2
            Information about the mounted volume.
          $ref: '#/components/schemas/HostFileSystemVolume'
        vStorageSupport:
          description: |2
            vStorage hardware acceleration support status.
            
            This property
            represents the volume's capability for storage acceleration.
            See *FileSystemMountInfoVStorageSupportStatus_enum* for valid
            values.
            
            If the ESX Server supports hardware acceleration, the Server
            can offload specific virtual machine management operations
            to a storage device with the hardware acceleration feature.
            With hardware assistance, the host performs storage operations
            faster and consumes less CPU, memory, and storage fabric bandwidth.
            
            For vSphere 4.0 or earlier hosts, this value will be unset.
          type: string
      required:
        - mountInfo
        - volume
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostFileSystemMountInfo:
      type: object
      description: |2
        A boxed array of *HostFileSystemMountInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostFileSystemMountInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostFileSystemVolume:
      type: object
      description: |2
        Detailed information about a file system.
        
        This is a base type for derived types
        that have more specific details about specific filesystem types.
        
        Typically a FileSystem is exposed as a datatore
        
        See also *DatastoreInfo*, *HostVmfsVolume*, *HostNasVolume*, *HostVffsVolume*, *HostLocalFileSystemVolume*
        
        However, a FileSystemVolume need not be exposed a datastore., *HostVfatVolume*.
      properties:
        type:
          description: |2
            FileSystemType of this particular file system
            See *HostFileSystemVolumeFileSystemType_enum*
          type: string
        name:
          description: |2
            Name of the file system volume.
          type: string
        capacity:
          description: |2
            The capacity of the file system volume, in bytes.
          type: integer
          format: int64
      required:
        - type
        - name
        - capacity
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostFileSystemVolume:
      type: object
      description: |2
        A boxed array of *HostFileSystemVolume*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostFileSystemVolume'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostFileSystemVolumeInfo:
      type: object
      description: |2
        The *HostFileSystemVolumeInfo* data object describes the file system volume
        information for the host.
        
        A file system volume refers to a storage abstraction that allows files
        to be created and organized. A host can have multiple file system
        volumes. File system volumes are typically mounted into a file namespace
        that allows all files in mounted file systems to be addressable from the
        host.
        
        A file system volume is backed by disk storage. It could span one or more
        disks but need not use an entire disk.
        
        A file system volume by definition must be mounted on the file system
        in order to exist.
      properties:
        volumeTypeList:
          description: |2
            The list of supported file system volume types.
          type: array
          items:
            type: string
        mountInfo:
          description: |2
            The list of file system volumes mounted on the host.
          type: array
          items:
            $ref: '#/components/schemas/HostFileSystemMountInfo'
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostFileSystemVolumeInfo:
      type: object
      description: |2
        A boxed array of *HostFileSystemVolumeInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostFileSystemVolumeInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostFirewallConfig:
      type: object
      description: |2
        DataObject used for firewall configuration
      properties:
        rule:
          description: |2
            Rules determining firewall settings.
          type: array
          items:
            $ref: '#/components/schemas/HostFirewallConfigRuleSetConfig'
        defaultBlockingPolicy:
          description: |2
            Default settings for the firewall,
            used for ports that are not explicitly opened.
          $ref: '#/components/schemas/HostFirewallDefaultPolicy'
      required:
        - defaultBlockingPolicy
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostFirewallConfig:
      type: object
      description: |2
        A boxed array of *HostFirewallConfig*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostFirewallConfig'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostFirewallConfigRuleSetConfig:
      type: object
      properties:
        rulesetId:
          description: |2
            Id of the ruleset.
          type: string
        enabled:
          description: |2
            Flag indicating if the specified ruleset should be enabled.
          type: boolean
        allowedHosts:
          description: |2
            The list of allowed ip addresses
          $ref: '#/components/schemas/HostFirewallRulesetIpList'
      required:
        - rulesetId
        - enabled
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostFirewallConfigRuleSetConfig:
      type: object
      description: |2
        A boxed array of *HostFirewallConfigRuleSetConfig*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostFirewallConfigRuleSetConfig'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostFirewallInfo:
      type: object
      description: |2
        Data object describing the firewall configuration.
      properties:
        defaultPolicy:
          description: |2
            Default firewall policy.
          $ref: '#/components/schemas/HostFirewallDefaultPolicy'
        ruleset:
          description: |2
            List of configured rulesets.
          type: array
          items:
            $ref: '#/components/schemas/HostFirewallRuleset'
      required:
        - defaultPolicy
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostFirewallInfo:
      type: object
      description: |2
        A boxed array of *HostFirewallInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostFirewallInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostFirewallDefaultPolicy:
      type: object
      description: |2
        Default settings for the firewall, used for ports
        that are not explicitly opened.
      properties:
        incomingBlocked:
          description: |2
            Flag indicating whether incoming traffic should be blocked by default.
          type: boolean
        outgoingBlocked:
          description: |2
            Flag indicating whether outgoing traffic should be blocked by default.
          type: boolean
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostFirewallDefaultPolicy:
      type: object
      description: |2
        A boxed array of *HostFirewallDefaultPolicy*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostFirewallDefaultPolicy'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostFlagInfo:
      type: object
      description: |2
        The FlagInfo data object type encapsulates the flag settings for a host.
        
        These properties are optional since the same structure is used to change
        the values during an edit or create operation.
      properties:
        backgroundSnapshotsEnabled:
          description: |2
            Flag to specify whether background snapshots are enabled.
          type: boolean
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostFlagInfo:
      type: object
      description: |2
        A boxed array of *HostFlagInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostFlagInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostForceMountedInfo:
      type: object
      description: |2
        When the system detects a copy of a VmfsVolume, it will not be
        auto-mounted on the host and it will be detected as
        'UnresolvedVmfsVolume'.
        
        If user decides to keep the original Uuid and mount it on the host,
        it will have 'forceMounted' flag and 'forceMountedInfo' set.
        'ForceMountedInfo' provides additional information specific to
        user-mounted VmfsVolume.
      properties:
        persist:
          description: |2
            Indicates if the vmfsExtent information persistent across
            host reboots.
          type: boolean
        mounted:
          description: |2
            Indicates if the volume is currently mounted on the host
          type: boolean
      required:
        - persist
        - mounted
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostForceMountedInfo:
      type: object
      description: |2
        A boxed array of *HostForceMountedInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostForceMountedInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostFru:
      type: object
      description: |2
        Data object representing the hardware vendor identity
        for a given hardware component in the host.
        
        ***Since:*** vSphere API Release 8.0.0.1
      properties:
        type:
          description: |2
            Report the FRU type if available *HostFruFruType_enum*
          type: string
        partName:
          description: |2
            Part Name is used for ordering replacement.
          type: string
        partNumber:
          description: |2
            Part Number is used for ordering replacement.
          type: string
        manufacturer:
          description: |2
            The name of the manufacturer.
          type: string
        serialNumber:
          description: |2
            The serial number of the part.
          type: string
        mfgTimeStamp:
          description: |2
            The time, if any, when this FRU entry was created by manufacturer.
          type: string
          format: date-time
      required:
        - type
        - partName
        - partNumber
        - manufacturer
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostFru:
      type: object
      description: |2
        A boxed array of *HostFru*. To be used in *Any* placeholders.
        
        ***Since:*** vSphere API Release 8.0.0.1
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostFru'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostGatewaySpec:
      type: object
      deprecated: true
      description: |2
        Deprecated not supported since vSphere 6.5.
        
        Settings for a gateway used to communicate with a host.
      properties:
        gatewayType:
          description: |2
            The type of the gateway used for the communication to the host.
          type: string
        gatewayId:
          description: |2
            Identifier of the gateway to be used for communction to the host.
            
            If
            omitted a random gateway of this type will be selected.
          type: string
        trustVerificationToken:
          description: |2
            An opaque string that the gateway may need to validate that the host
            it connects to is the correct host.
          type: string
        hostAuthParams:
          description: |2
            Additional opaque authentication data that the gateway may need to
            authenticate to the host.
          type: array
          items:
            $ref: '#/components/schemas/KeyValue'
      required:
        - gatewayType
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostGatewaySpec:
      type: object
      description: |2
        A boxed array of *HostGatewaySpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostGatewaySpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostGraphicsConfig:
      type: object
      description: |2
        Data object used for graphics configuration
      properties:
        hostDefaultGraphicsType:
          description: |2
            The host default graphics type.
            
            See *HostGraphicsConfigGraphicsType_enum* for list
            of supported values. This default value can be overridden by specifying
            graphics type for an individual device. If host supports a single
            graphics type, specifying an individual graphics device is optional.
          type: string
        sharedPassthruAssignmentPolicy:
          description: |2
            The policy for assigning shared passthrough VMs to a host graphics
            device.
            
            See *HostGraphicsConfigSharedPassthruAssignmentPolicy_enum* for list of
            supported values.
          type: string
        deviceType:
          description: |2
            Graphics devices and their associated type.
          type: array
          items:
            $ref: '#/components/schemas/HostGraphicsConfigDeviceType'
      required:
        - hostDefaultGraphicsType
        - sharedPassthruAssignmentPolicy
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostGraphicsConfig:
      type: object
      description: |2
        A boxed array of *HostGraphicsConfig*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostGraphicsConfig'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostGraphicsConfigDeviceType:
      type: object
      description: |2
        A particular graphics device with its associated type and mode.
      properties:
        deviceId:
          description: |2
            Graphics device identifier (ex.
            
            PCI ID).
          type: string
        graphicsType:
          description: |2
            Graphics type for this device.
            
            See *HostGraphicsConfigGraphicsType_enum* for list of
            supported values.
          type: string
        vgpuMode:
          description: |2
            vGPU mode for this device.
            
            See *HostGraphicsConfigVgpuMode_enum* for list of supported
            values. If this value is unset, the mode remains unchanged.
            
            ***Since:*** vSphere API Release 8.0.3.0
          type: string
      required:
        - deviceId
        - graphicsType
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostGraphicsConfigDeviceType:
      type: object
      description: |2
        A boxed array of *HostGraphicsConfigDeviceType*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostGraphicsConfigDeviceType'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostGraphicsInfo:
      type: object
      description: |2
        This data object type describes information about a single
        graphics device.
      properties:
        deviceName:
          description: |2
            The device name.
          type: string
        vendorName:
          description: |2
            The vendor name.
          type: string
        pciId:
          description: |2
            PCI ID of this device composed of "bus:slot.function".
          type: string
        graphicsType:
          description: |2
            Graphics type for this device.
            
            See *HostGraphicsInfoGraphicsType_enum* for list
            of supported values.
          type: string
        vgpuMode:
          description: |2
            vGPU mode for this device.
            
            See *HostGraphicsInfoVgpuMode_enum* for list of supported
            values. If vgpuMode is not set, it is treated as value "none".
            
            ***Since:*** vSphere API Release 8.0.3.0
          type: string
        memorySizeInKB:
          description: |2
            Memory capacity of graphics device or zero if not available.
          type: integer
          format: int64
        vm:
          description: |2
            Virtual machines using this graphics device.
            
            Refers instances of *VirtualMachine*.
          type: array
          items:
            $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - deviceName
        - vendorName
        - pciId
        - graphicsType
        - memorySizeInKB
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostGraphicsInfo:
      type: object
      description: |2
        A boxed array of *HostGraphicsInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostGraphicsInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostHardwareInfo:
      type: object
      description: |2
        The HardwareInfo data object type describes the hardware
        configuration of the host.
      properties:
        systemInfo:
          description: |2
            Information about the system as a whole.
          $ref: '#/components/schemas/HostSystemInfo'
        cpuPowerManagementInfo:
          $ref: '#/components/schemas/HostCpuPowerManagementInfo'
        cpuInfo:
          description: |2
            Overall CPU information.
          $ref: '#/components/schemas/HostCpuInfo'
        cpuPkg:
          description: |2
            Information about each of the physical CPU packages on the host.
          type: array
          items:
            $ref: '#/components/schemas/HostCpuPackage'
        memorySize:
          description: |2
            Total amount of physical memory on the host in bytes.
          type: integer
          format: int64
        numaInfo:
          description: |2
            Information about the NUMA (non-uniform memory access).
          $ref: '#/components/schemas/HostNumaInfo'
        smcPresent:
          description: |2
            Presence of System Management Controller, indicates the host is
            Apple hardware, and thus capable of running Mac OS guest as VM.
          type: boolean
        pciDevice:
          description: |2
            The list of Peripheral Component Interconnect (PCI) devices
            available on this host.
          type: array
          items:
            $ref: '#/components/schemas/HostPciDevice'
        dvxClasses:
          description: |2
            The list of Device Virtualization Extensions (DVX) classes
            available on this host.
            
            ***Since:*** vSphere API Release 8.0.0.1
          type: array
          items:
            $ref: '#/components/schemas/HostDvxClass'
        cpuFeature:
          description: |2
            CPU feature set that is supported by the hardware.
            
            This is the
            intersection of the feature sets supported by the individual CPU
            packages. This feature set is modified by the
            *supportedCpuFeature*
            array in the host capabilities to obtain the feature set supported by
            the virtualization platform.
          type: array
          items:
            $ref: '#/components/schemas/HostCpuIdInfo'
        biosInfo:
          description: |2
            Information about the system BIOS
          $ref: '#/components/schemas/HostBIOSInfo'
        reliableMemoryInfo:
          description: |2
            Information about reliable memory.
          $ref: '#/components/schemas/HostReliableMemoryInfo'
        persistentMemoryInfo:
          description: |2
            Persistent memory configuration on this host.
          $ref: '#/components/schemas/HostPersistentMemoryInfo'
        sgxInfo:
          description: |2
            SGX configuration on this host.
          $ref: '#/components/schemas/HostSgxInfo'
        sevInfo:
          description: |2
            SEV configuration on this host.
            
            ***Since:*** vSphere API Release 7.0.1.0
          $ref: '#/components/schemas/HostSevInfo'
        memoryTieringType:
          description: |2
            Type of memory tiering configured on this host.
            
            See *HostMemoryTieringType_enum* for
            supported values. This field will be unset for legacy hosts as well as
            for hosts that don't support memory tiering.
            
            ***Since:*** vSphere API Release 7.0.3.0
          type: string
        memoryTierInfo:
          description: |2
            Configuration of each memory tier on this host.
            
            The array is populated in the
            order of tiers (ie, tier 0 at array index 0, tier 1 at array index 1,
            and so on).
            
            ***Since:*** vSphere API Release 7.0.3.0
          type: array
          items:
            $ref: '#/components/schemas/HostMemoryTierInfo'
      required:
        - systemInfo
        - cpuInfo
        - cpuPkg
        - memorySize
        - smcPresent
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostHardwareInfo:
      type: object
      description: |2
        A boxed array of *HostHardwareInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostHardwareInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostHardwareStatusInfo:
      type: object
      description: |2
        Data object representing the status of the
        hardware components of the host.
      properties:
        memoryStatusInfo:
          description: |2
            Status of the physical memory
          type: array
          items:
            $ref: '#/components/schemas/HostHardwareElementInfo'
        cpuStatusInfo:
          description: |2
            Status of the CPU packages
          type: array
          items:
            $ref: '#/components/schemas/HostHardwareElementInfo'
        storageStatusInfo:
          description: |2
            Status of the physical storage system
          type: array
          items:
            $ref: '#/components/schemas/HostStorageElementInfo'
        dpuStatusInfo:
          description: |2
            Status of one or more DPU elements
            
            ***Since:*** vSphere API Release 8.0.0.1
          type: array
          items:
            $ref: '#/components/schemas/DpuStatusInfo'
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostHardwareStatusInfo:
      type: object
      description: |2
        A boxed array of *HostHardwareStatusInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostHardwareStatusInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DpuStatusInfo:
      type: object
      description: |2
        Data object describing the operational status of various DPU
        elements.
        
        ***Since:*** vSphere API Release 8.0.0.1
      properties:
        dpuId:
          description: |2
            Uniquely identify this DPU.
            
            Should be the VMware identifier
            which can be composed from pci and other identifying elements.
          type: string
        fru:
          description: |2
            The FRU this sensor monitors, if any.
          $ref: '#/components/schemas/HostFru'
        sensors:
          type: array
          items:
            $ref: '#/components/schemas/DpuStatusInfoOperationalInfo'
      required:
        - dpuId
      allOf:
        - $ref: '#/components/schemas/HostHardwareElementInfo'

    ArrayOfDpuStatusInfo:
      type: object
      description: |2
        A boxed array of *DpuStatusInfo*. To be used in *Any* placeholders.
        
        ***Since:*** vSphere API Release 8.0.0.1
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DpuStatusInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DpuStatusInfoOperationalInfo:
      type: object
      description: |2
        Sensor information provided by DPU that provides health status.
        
        ***Since:*** vSphere API Release 8.0.0.1
      properties:
        sensorId:
          description: |2
            This string uniquely identifies a sensor in the DPU.
          type: string
        healthState:
          description: |2
            The health state of the element indicated by the sensor.
            
            See also *HostNumericSensorHealthState_enum*.
          $ref: '#/components/schemas/ElementDescription'
        reading:
          description: |2
            A description of the state of the sensor
            such as: N watts, Y RPM, or other measurement.
          type: string
        units:
          description: |2
            If provided by underying API, the base units in which the sensor
            reading is specified, "RPM", "WATTS" and so forth.
          type: string
        timeStamp:
          description: |2
            Reports the ISO 8601 Timestamp when this sensor was last updated by
            management controller if the this sensor is capable of tracking
            when it was last updated.
            
            Property timeStampRaw, which comes from
            vendor firmware is convertible to DateTime, it will be provided.
          type: string
          format: date-time
      required:
        - sensorId
        - reading
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfDpuStatusInfoOperationalInfo:
      type: object
      description: |2
        A boxed array of *DpuStatusInfoOperationalInfo*. To be used in *Any* placeholders.
        
        ***Since:*** vSphere API Release 8.0.0.1
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DpuStatusInfoOperationalInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostHardwareElementInfo:
      type: object
      description: |2
        Data object describing the operational status of a physical
        element.
      properties:
        name:
          description: |2
            The name of the physical element
          type: string
        status:
          description: |2
            The operational status of the physical element.
            
            The status is one of
            the values specified in HostHardwareElementStatus.
            
            See also *HostHardwareElementStatus_enum*.
          $ref: '#/components/schemas/ElementDescription'
      required:
        - name
        - status
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostHardwareElementInfo:
      type: object
      description: |2
        A boxed array of *HostHardwareElementInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostHardwareElementInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostStorageElementInfo:
      type: object
      description: |2
        Data object describing the operational status of various storage
        elements.
      properties:
        operationalInfo:
          description: |2
            Other information regarding the operational state of the
            storage element.
          type: array
          items:
            $ref: '#/components/schemas/HostStorageOperationalInfo'
      allOf:
        - $ref: '#/components/schemas/HostHardwareElementInfo'

    ArrayOfHostStorageElementInfo:
      type: object
      description: |2
        A boxed array of *HostStorageElementInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostStorageElementInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostStorageOperationalInfo:
      type: object
      description: |2
        Data class describing operational information of a storage element
      properties:
        property:
          description: |2
            The property of interest for the storage element
          type: string
        value:
          description: |2
            The property value for the storage element
          type: string
      required:
        - property
        - value
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostStorageOperationalInfo:
      type: object
      description: |2
        A boxed array of *HostStorageOperationalInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostStorageOperationalInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostHbaCreateSpec:
      type: object
      description: |2
        A data object which specifies the parameters needed
        to create a software host bus adapter of a specific kind.
        
        ***Since:*** vSphere API Release 7.0.3.0
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostHbaCreateSpec:
      type: object
      description: |2
        A boxed array of *HostHbaCreateSpec*. To be used in *Any* placeholders.
        
        ***Since:*** vSphere API Release 7.0.3.0
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostHbaCreateSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HealthSystemRuntime:
      type: object
      description: |2
        The system health runtime information
      properties:
        systemHealthInfo:
          description: |2
            Available system health information
          $ref: '#/components/schemas/HostSystemHealthInfo'
        hardwareStatusInfo:
          description: |2
            Available hardware health information
          $ref: '#/components/schemas/HostHardwareStatusInfo'
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHealthSystemRuntime:
      type: object
      description: |2
        A boxed array of *HealthSystemRuntime*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HealthSystemRuntime'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostAccessControlEntry:
      type: object
      description: |2
        Data structure describing the access mode for a user or group.
      properties:
        principal:
          description: |2
            User or group having the described access mode.
            
            The format is "login" for local users or "DOMAIN\\login" for users
            in a Windows domain.
          type: string
        group:
          description: |2
            True if 'principal' describes a group account, false otherwise.
          type: boolean
        accessMode:
          description: |2
            Access mode for the principal.
          $ref: '#/components/schemas/HostAccessMode_enum'
      required:
        - principal
        - group
        - accessMode
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostAccessControlEntry:
      type: object
      description: |2
        A boxed array of *HostAccessControlEntry*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostAccessControlEntry'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostHostBusAdapter:
      type: object
      description: |2
        This data object type describes the bus adapter for
        the host.
        
        A host bus adapter (HBA) is a hardware
        or software adapter that connects the host to storage devices.
      properties:
        key:
          description: |2
            The linkable identifier.
          type: string
        device:
          description: |2
            The device name of host bus adapter.
          type: string
        bus:
          description: |2
            The host bus number.
          type: integer
          format: int32
        status:
          description: |2
            The operational status of the adapter.
            
            Valid values include "online",
            "offline", "unbound", and "unknown".
          type: string
        model:
          description: |2
            The model name of the host bus adapter.
          type: string
        driver:
          description: |2
            The name of the driver.
          type: string
        pci:
          description: |2
            The Peripheral Connect Interface (PCI) ID of the device
            representing the host bus adapter.
          type: string
        storageProtocol:
          description: |2
            The type of protocol supported by the host bus adapter.
            
            The list of supported values is described in
            *HostStorageProtocol_enum*.
            When unset, a default value of "scsi" is assumed.
          type: string
      required:
        - device
        - bus
        - status
        - model
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostHostBusAdapter:
      type: object
      description: |2
        A boxed array of *HostHostBusAdapter*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostHostBusAdapter'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostProxySwitch:
      type: object
      description: |2
        The HostProxySwitch is a software entity which represents the component
        of a DistributedVirtualSwitch on a particular host.
      properties:
        dvsUuid:
          description: |2
            The uuid of the DistributedVirtualSwitch that the HostProxySwitch
            is a part of.
          type: string
        dvsName:
          description: |2
            The name of the DistributedVirtualSwitch that the HostProxySwitch
            is part of.
          type: string
        key:
          description: |2
            The proxy switch key.
          type: string
        numPorts:
          description: |2
            The number of ports that this switch currently has.
          type: integer
          format: int32
        configNumPorts:
          description: |2
            The configured number of ports that this switch has.
            
            If configured number of ports is changed,
            a host reboot is required for the new value to take effect.
          type: integer
          format: int32
        numPortsAvailable:
          description: |2
            The number of ports that are available on this virtual switch.
          type: integer
          format: int32
        uplinkPort:
          description: |2
            The list of ports that can be potentially used by physical nics.
            
            This property contains the keys and names of such ports.
          type: array
          items:
            $ref: '#/components/schemas/KeyValue'
        mtu:
          description: |2
            The maximum transmission unit (MTU) associated with this switch
            in bytes.
          type: integer
          format: int32
        pnic:
          description: |2
            The set of physical network adapters associated with this switch.
          type: array
          items:
            $ref: '#/components/schemas/PhysicalNic'
        spec:
          description: |2
            The specification of the switch.
          $ref: '#/components/schemas/HostProxySwitchSpec'
        hostLag:
          description: |2
            The Link Aggregation Control Protocol group and
            Uplink ports in the group.
          type: array
          items:
            $ref: '#/components/schemas/HostProxySwitchHostLagConfig'
        networkReservationSupported:
          description: |2
            Indicates whether network reservation is supported on this switch
          type: boolean
        nsxtEnabled:
          description: |2
            Indicate whether NSX-T is enabled on this switch
          type: boolean
        ensEnabled:
          description: |2
            Is ENS enabled on this switch
          type: boolean
        ensInterruptEnabled:
          description: |2
            Is ENS interrupt mode enabled on this switch
          type: boolean
        transportZones:
          description: |2
            Transport Zones this switch joined
          type: array
          items:
            $ref: '#/components/schemas/DistributedVirtualSwitchHostMemberTransportZoneInfo'
        nsxUsedUplinkPort:
          description: |2
            Uplink port names used by NSX-T
          type: array
          items:
            type: string
        nsxtStatus:
          description: |2
            NSX-T proxy switch status
          type: string
        nsxtStatusDetail:
          description: |2
            Additional information regarding the NSX-T proxy switch status
          type: string
        ensInfo:
          description: |2
            ENS Status From VmKernal.
            
            ***Since:*** vSphere API Release 8.0.0.1
          $ref: '#/components/schemas/HostProxySwitchEnsInfo'
        networkOffloadingEnabled:
          description: |2
            Indicate if network offloading is enabled on the proxy switch of
            this host.
            
            Unset implies that network offloading is disabled.
            
            ***Since:*** vSphere API Release 8.0.0.1
          type: boolean
        hostUplinkState:
          description: |2
            Indicates the runtime state of uplinks on the host.
            
            Only set when *HostProxySwitch.networkOffloadingEnabled*
            is true.
            
            ***Since:*** vSphere API Release 8.0.3.0
          type: array
          items:
            $ref: '#/components/schemas/DistributedVirtualSwitchHostMemberHostUplinkState'
      required:
        - dvsUuid
        - dvsName
        - key
        - numPorts
        - numPortsAvailable
        - spec
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostProxySwitch:
      type: object
      description: |2
        A boxed array of *HostProxySwitch*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostProxySwitch'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostProxySwitchConfig:
      type: object
      description: |2
        This data object type describes the HostProxySwitch configuration
        containing both the configurable
        properties on a HostProxySwitch and identification information.
      properties:
        changeOperation:
          description: |2
            This property indicates the change operation to apply on
            this configuration specification.
            
            Valid values are:
            - *edit*
            - *remove* 
              
            See also *HostConfigChangeOperation_enum*.
          type: string
        uuid:
          description: |2
            The uuid of the DistributedVirtualSwitch that the HostProxySwitch
            is a part of.
          type: string
        spec:
          description: |2
            The specification of the HostProxySwitch.
          $ref: '#/components/schemas/HostProxySwitchSpec'
      required:
        - uuid
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostProxySwitchConfig:
      type: object
      description: |2
        A boxed array of *HostProxySwitchConfig*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostProxySwitchConfig'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostProxySwitchEnsInfo:
      type: object
      description: |2
        This data object type describes
        the Ens status from VmKernal.
        
        ***Since:*** vSphere API Release 8.0.0.1
      properties:
        opsVersion:
          description: |2
            ENS ops version
          type: integer
          format: int64
        numPSOps:
          description: |2
            Number of ENS portset operations
          type: integer
          format: int64
        numLcoreOps:
          description: |2
            Number of ENS Lcore operations
          type: integer
          format: int64
        errorStatus:
          description: |2
            Error status of the last ENS portset operation
          type: integer
          format: int64
        lcoreStatus:
          description: |2
            Error status of the last Lcore operation
          type: integer
          format: int64
      required:
        - opsVersion
        - numPSOps
        - numLcoreOps
        - errorStatus
        - lcoreStatus
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostProxySwitchEnsInfo:
      type: object
      description: |2
        A boxed array of *HostProxySwitchEnsInfo*. To be used in *Any* placeholders.
        
        ***Since:*** vSphere API Release 8.0.0.1
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostProxySwitchEnsInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostProxySwitchHostLagConfig:
      type: object
      description: |2
        This data object type describes the set of Uplink Ports in
        Link Aggregation Control Protocol group.
      properties:
        lagKey:
          type: string
        lagName:
          type: string
        uplinkPort:
          description: |2
            The list of Uplink Ports in the Link Aggregation Control Protocol group.
            
            This property contains the keys and names of such ports.
          type: array
          items:
            $ref: '#/components/schemas/KeyValue'
      required:
        - lagKey
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostProxySwitchHostLagConfig:
      type: object
      description: |2
        A boxed array of *HostProxySwitchHostLagConfig*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostProxySwitchHostLagConfig'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostProxySwitchSpec:
      type: object
      description: |2
        This data object type describes the HostProxySwitch specification
        representing the properties on a HostProxySwitch that can be
        configured once the object exists.
      properties:
        backing:
          description: |2
            The specification describes how physical network adapters
            are bridged to the switch.
          $ref: '#/components/schemas/DistributedVirtualSwitchHostMemberBacking'
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostProxySwitchSpec:
      type: object
      description: |2
        A boxed array of *HostProxySwitchSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostProxySwitchSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostImageProfileSummary:
      type: object
      description: |2
        Summary of an image profile
      properties:
        name:
          description: |2
            The name of the image profile
          type: string
        vendor:
          description: |2
            The organization publishing the image profile.
          type: string
      required:
        - name
        - vendor
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostImageProfileSummary:
      type: object
      description: |2
        A boxed array of *HostImageProfileSummary*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostImageProfileSummary'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostInternetScsiHba:
      type: object
      description: |2
        This data object type describes the iSCSI host bus adapter
        interface.
      properties:
        isSoftwareBased:
          description: |2
            True if this host bus adapter is a software based initiator
            utilizing the hosting system's existing TCP/IP network connection
          type: boolean
        canBeDisabled:
          description: |2
            Can this adapter be disabled
          type: boolean
        networkBindingSupport:
          description: |2
            Specifies if this iSCSI Adapter requires a bound network
            interface to function.
          $ref: '#/components/schemas/HostInternetScsiHbaNetworkBindingSupportType_enum'
        discoveryCapabilities:
          description: |2
            The discovery capabilities for this host bus adapter.
          $ref: '#/components/schemas/HostInternetScsiHbaDiscoveryCapabilities'
        discoveryProperties:
          description: |2
            The discovery settings for this host bus adapter.
          $ref: '#/components/schemas/HostInternetScsiHbaDiscoveryProperties'
        authenticationCapabilities:
          description: |2
            The authentication capabilities for this host bus adapter.
          $ref: '#/components/schemas/HostInternetScsiHbaAuthenticationCapabilities'
        authenticationProperties:
          description: |2
            The authentication settings for this host bus adapter.
            
            All static and discovery targets will inherit the use of these
            settings unless their authentication settings are explicitly set.
          $ref: '#/components/schemas/HostInternetScsiHbaAuthenticationProperties'
        digestCapabilities:
          description: |2
            The authentication capabilities for this host bus adapter.
          $ref: '#/components/schemas/HostInternetScsiHbaDigestCapabilities'
        digestProperties:
          description: |2
            The digest settings for this host bus adapter.
            
            All static and discovery targets will inherit the use of these
            properties unless their digest settings are explicitly set.
          $ref: '#/components/schemas/HostInternetScsiHbaDigestProperties'
        ipCapabilities:
          description: |2
            The IP capabilities for this host bus adapter.
          $ref: '#/components/schemas/HostInternetScsiHbaIPCapabilities'
        ipProperties:
          description: |2
            The IP settings for this host bus adapter.
          $ref: '#/components/schemas/HostInternetScsiHbaIPProperties'
        supportedAdvancedOptions:
          description: |2
            A list of supported key/value pair advanced options for the
            host bus adapter including their type information.
          type: array
          items:
            $ref: '#/components/schemas/OptionDef'
        advancedOptions:
          description: |2
            A list of the current options settings for the host bus adapter.
          type: array
          items:
            $ref: '#/components/schemas/HostInternetScsiHbaParamValue'
        iScsiName:
          description: |2
            The iSCSI name of this host bus adapter.
          type: string
        iScsiAlias:
          description: |2
            The iSCSI alias of this host bus adapter.
          type: string
        configuredSendTarget:
          description: |2
            The configured iSCSI send target entries.
          type: array
          items:
            $ref: '#/components/schemas/HostInternetScsiHbaSendTarget'
        configuredStaticTarget:
          description: |2
            The configured iSCSI static target entries.
          type: array
          items:
            $ref: '#/components/schemas/HostInternetScsiHbaStaticTarget'
        maxSpeedMb:
          description: |2
            The maximum supported link speed of the port in megabits per second.
          type: integer
          format: int32
        currentSpeedMb:
          description: |2
            The Current operating link speed of the port in megabits per second.
          type: integer
          format: int32
      required:
        - isSoftwareBased
        - discoveryCapabilities
        - discoveryProperties
        - authenticationCapabilities
        - authenticationProperties
        - ipCapabilities
        - ipProperties
        - iScsiName
      allOf:
        - $ref: '#/components/schemas/HostHostBusAdapter'

    ArrayOfHostInternetScsiHba:
      type: object
      description: |2
        A boxed array of *HostInternetScsiHba*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostInternetScsiHba'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostInternetScsiHbaAuthenticationCapabilities:
      type: object
      description: |2
        The authentication capabilities for this host bus adapter.
      properties:
        chapAuthSettable:
          description: |2
            True if this host bus adapter supports changing the configuration
            state of CHAP authentication.
            
            CHAP is mandatory, however some
            adapter may not allow disabling this authentication method.
          type: boolean
        krb5AuthSettable:
          description: |2
            Always false in this version of the API.
          type: boolean
        srpAuthSettable:
          description: |2
            Always false in this version of the API.
          type: boolean
        spkmAuthSettable:
          description: |2
            Always false in this version of the API.
          type: boolean
        mutualChapSettable:
          description: |2
            When chapAuthSettable is TRUE, this describes if Mutual CHAP
            configuration is allowed as well.
          type: boolean
        targetChapSettable:
          description: |2
            When targetChapSettable is TRUE, this describes if
            CHAP configuration is allowed on targets associated
            with the adapter.
          type: boolean
        targetMutualChapSettable:
          description: |2
            When targetMutualChapSettable is TRUE, this describes if
            Mutual CHAP configuration is allowed on targets associated
            with the adapter.
          type: boolean
      required:
        - chapAuthSettable
        - krb5AuthSettable
        - srpAuthSettable
        - spkmAuthSettable
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostInternetScsiHbaAuthenticationCapabilities:
      type: object
      description: |2
        A boxed array of *HostInternetScsiHbaAuthenticationCapabilities*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostInternetScsiHbaAuthenticationCapabilities'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostInternetScsiHbaAuthenticationProperties:
      type: object
      description: |2
        The authentication settings for this host bus adapter or target.
      properties:
        chapAuthEnabled:
          description: |2
            True if CHAP is currently enabled
          type: boolean
        chapName:
          description: |2
            The CHAP user name if enabled
          type: string
        chapSecret:
          description: |2
            The CHAP secret if enabled
          type: string
          format: password
        chapAuthenticationType:
          description: |2
            The preference for CHAP or non-CHAP protocol if CHAP is enabled
          type: string
        chapInherited:
          description: |2
            CHAP settings are inherited
          type: boolean
        mutualChapName:
          description: |2
            When Mutual-CHAP is enabled, the user name that target needs to
            use to authenticate with the initiator
          type: string
        mutualChapSecret:
          description: |2
            When Mutual-CHAP is enabled, the secret that target needs to
            use to authenticate with the initiator
          type: string
          format: password
        mutualChapAuthenticationType:
          description: |2
            The preference for CHAP or non-CHAP protocol if CHAP is enabled
          type: string
        mutualChapInherited:
          description: |2
            Mutual-CHAP settings are inherited
          type: boolean
      required:
        - chapAuthEnabled
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostInternetScsiHbaAuthenticationProperties:
      type: object
      description: |2
        A boxed array of *HostInternetScsiHbaAuthenticationProperties*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostInternetScsiHbaAuthenticationProperties'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostInternetScsiHbaDigestCapabilities:
      type: object
      description: |2
        The digest capabilities for this host bus adapter.
      properties:
        headerDigestSettable:
          description: |2
            True if this host bus adapter supports the configuration
            of the use of header digest.
            
            Defaults to false, in which
            case no header digests will be used.
          type: boolean
        dataDigestSettable:
          description: |2
            True if this host bus adapter supports the configuration
            of the use of data digest.
            
            Defaults to false, in which
            case no data digests will be used.
          type: boolean
        targetHeaderDigestSettable:
          description: |2
            True if configuration of the use of header digest is supported
            on the targets associated with the host bus adapter.
            
            Defaults to
            false, in which case no header digests will be used.
          type: boolean
        targetDataDigestSettable:
          description: |2
            True if configuration of the use of data digest is supported
            on the targets associated with the host bus adapter.
            
            Defaults to
            false, in which case no data digests will be used.
          type: boolean
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostInternetScsiHbaDigestCapabilities:
      type: object
      description: |2
        A boxed array of *HostInternetScsiHbaDigestCapabilities*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostInternetScsiHbaDigestCapabilities'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostInternetScsiHbaDigestProperties:
      type: object
      description: |2
        The digest settings for this host bus adapter.
      properties:
        headerDigestType:
          description: |2
            The header digest preference if header digest is enabled
          type: string
        headerDigestInherited:
          description: |2
            Header digest setting is inherited
          type: boolean
        dataDigestType:
          description: |2
            The data digest preference if data digest is enabled
          type: string
        dataDigestInherited:
          description: |2
            Data digest setting is inherited
          type: boolean
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostInternetScsiHbaDigestProperties:
      type: object
      description: |2
        A boxed array of *HostInternetScsiHbaDigestProperties*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostInternetScsiHbaDigestProperties'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostInternetScsiHbaDiscoveryCapabilities:
      type: object
      description: |2
        The discovery capabilities for this host bus adapter.
        
        At least one discovery mode must always be active.
        Multiple modes may be active at the same time.
      properties:
        iSnsDiscoverySettable:
          description: |2
            True if this host bus adapter supports iSNS
          type: boolean
        slpDiscoverySettable:
          description: |2
            True if this host bus adapter supports SLP
          type: boolean
        staticTargetDiscoverySettable:
          description: |2
            True if this host bus adapter supports static discovery
          type: boolean
        sendTargetsDiscoverySettable:
          description: |2
            True if this host bus adapter supports changing the configuration
            state of send targets discovery.
            
            Send targets is mandatory, however
            some adapters may not allow disabling this discovery method.
          type: boolean
      required:
        - iSnsDiscoverySettable
        - slpDiscoverySettable
        - staticTargetDiscoverySettable
        - sendTargetsDiscoverySettable
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostInternetScsiHbaDiscoveryCapabilities:
      type: object
      description: |2
        A boxed array of *HostInternetScsiHbaDiscoveryCapabilities*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostInternetScsiHbaDiscoveryCapabilities'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostInternetScsiHbaDiscoveryProperties:
      type: object
      description: |2
        The discovery settings for this host bus adapter.
        
        At least one discovery mode must always be active.
        Multiple modes may be active at the same time.
      properties:
        iSnsDiscoveryEnabled:
          description: |2
            True if iSNS is currently enabled
          type: boolean
        iSnsDiscoveryMethod:
          description: |2
            The iSNS discovery method in use when iSNS is enabled.
            
            Must be one of the values of
            *InternetScsiSnsDiscoveryMethod_enum*
          type: string
        iSnsHost:
          description: |2
            For STATIC iSNS, this is the iSNS server address
          type: string
        slpDiscoveryEnabled:
          description: |2
            True if SLP is enabled
          type: boolean
        slpDiscoveryMethod:
          description: |2
            The current SLP discovery method when SLP is enabled.
            
            Must be one of the values of
            *SlpDiscoveryMethod_enum*
          type: string
        slpHost:
          description: |2
            When the SLP discovery method is set to MANUAL, this property
            reflects the hostname, and optionally port number of the SLP DA.
          type: string
        staticTargetDiscoveryEnabled:
          description: |2
            True if static target discovery is enabled
          type: boolean
        sendTargetsDiscoveryEnabled:
          description: |2
            True if send targets discovery is enabled
          type: boolean
      required:
        - iSnsDiscoveryEnabled
        - slpDiscoveryEnabled
        - staticTargetDiscoveryEnabled
        - sendTargetsDiscoveryEnabled
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostInternetScsiHbaDiscoveryProperties:
      type: object
      description: |2
        A boxed array of *HostInternetScsiHbaDiscoveryProperties*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostInternetScsiHbaDiscoveryProperties'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostInternetScsiHbaIPCapabilities:
      type: object
      description: |2
        The IP Capabilities for the host bus adapter
      properties:
        addressSettable:
          description: |2
            True if the host bus adapter supports setting its IPv4 address.
          type: boolean
        ipConfigurationMethodSettable:
          description: |2
            True if the host bus adapter supports DHCPv4.
          type: boolean
        subnetMaskSettable:
          description: |2
            True if the host bus adapter supports setting its IPv4 subnet mask.
          type: boolean
        defaultGatewaySettable:
          description: |2
            True if the host bus adapter supports setting its IPv4 gateway.
          type: boolean
        primaryDnsServerAddressSettable:
          description: |2
            True if the host bus adapter supports setting its primary DNS.
          type: boolean
        alternateDnsServerAddressSettable:
          description: |2
            True if the host bus adapter supports setting its secondary DNS.
          type: boolean
        ipv6Supported:
          description: |2
            True if the host bus adapter supports the use of IPv6 addresses
          type: boolean
        arpRedirectSettable:
          description: |2
            True if the host bus adapter supports setting its ARP Redirect value
          type: boolean
        mtuSettable:
          description: |2
            True if the host bus adapter supports setting its MTU, (for Jumbo
            Frames, etc)
          type: boolean
        hostNameAsTargetAddress:
          description: |2
            True if the discovery and static targets can be configured with
            a host name as opposed to an IP address.
          type: boolean
        nameAliasSettable:
          description: |2
            True if the host bus adapter supports setting its name and alias
          type: boolean
        ipv4EnableSettable:
          description: |2
            True if IPv4 addresssing can be enabled or disabled on the host bus adapter.
          type: boolean
        ipv6EnableSettable:
          description: |2
            True if IPv6 addresssing can be enabled or disabled on the host bus adapter.
          type: boolean
        ipv6PrefixLengthSettable:
          description: |2
            True if the Host bus adapter supports setting IPv6 Prefix Length.
          type: boolean
        ipv6PrefixLength:
          description: |2
            Provides the value that user should be using if host bus adapter
            does not support changing of prefix length.
          type: integer
          format: int32
        ipv6DhcpConfigurationSettable:
          description: |2
            True if the Host bus adapter supports DHCPv6 configuration.
          type: boolean
        ipv6LinkLocalAutoConfigurationSettable:
          description: |2
            True if the Host bus adapter supports setting configuration of its IPv6 link local address
            User can specify link local static address if link local auto configuration is set to false.
            
            link local address usually starts with fe80: and has prefix 64.
          type: boolean
        ipv6RouterAdvertisementConfigurationSettable:
          description: |2
            True if the Host bus adapter supports router advertisement configuration method.
            
            Note: Currently Qlogic adapter does not support plumbing of any user specified
            static address if router advertisement method is enabled.
          type: boolean
        ipv6DefaultGatewaySettable:
          description: |2
            True if the Host bus adapter supports setting its IPv6 default gateway.
          type: boolean
        ipv6MaxStaticAddressesSupported:
          description: |2
            The maximum number of supported IPv6 static addresses on the
            host bus adapter that user can set.
          type: integer
          format: int32
      required:
        - addressSettable
        - ipConfigurationMethodSettable
        - subnetMaskSettable
        - defaultGatewaySettable
        - primaryDnsServerAddressSettable
        - alternateDnsServerAddressSettable
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostInternetScsiHbaIPCapabilities:
      type: object
      description: |2
        A boxed array of *HostInternetScsiHbaIPCapabilities*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostInternetScsiHbaIPCapabilities'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostInternetScsiHbaIPProperties:
      type: object
      description: |2
        The IP properties for the host bus adapter
      properties:
        mac:
          description: |2
            The MAC address.
          type: string
        address:
          description: |2
            The current IPv4 address.
          type: string
        dhcpConfigurationEnabled:
          description: |2
            True if the host bus adapter fetches its IP using DHCP.
          type: boolean
        subnetMask:
          description: |2
            The current IPv4 subnet mask.
          type: string
        defaultGateway:
          description: |2
            The current IPv4 gateway.
          type: string
        primaryDnsServerAddress:
          description: |2
            The current primary DNS address.
          type: string
        alternateDnsServerAddress:
          description: |2
            The current secondary DNS address.
          type: string
        ipv6Address:
          deprecated: true
          description: |2
            Deprecated since vSphere API 5.5 use { @link IPProperties#ipv6properties }.
            
            The current IPv6 address.
          type: string
        ipv6SubnetMask:
          deprecated: true
          description: |2
            Deprecated since vSphere API 5.5 use { @link IPProperties#ipv6properties }.
            
            The current IPv6 subnet mask.
          type: string
        ipv6DefaultGateway:
          deprecated: true
          description: |2
            Deprecated since vSphere API 5.5 use { @link IPProperties#ipv6properties }.
            
            The current IPv6 default gateway.
          type: string
        arpRedirectEnabled:
          description: |2
            True if ARP Redirect is enabled
          type: boolean
        mtu:
          description: |2
            True if the host bus adapter supports setting its MTU, (for Jumbo
            Frames, etc)
            Setting enableJumboFrames and not a numeric mtu value implies
            autoselection of appropriate MTU value for Jumbo Frames.
          type: integer
          format: int32
        jumboFramesEnabled:
          type: boolean
        ipv4Enabled:
          description: |2
            True if IPv4 is enabled.
            
            Unset value will keep existing IPv4 enabled state as is.
          type: boolean
        ipv6Enabled:
          description: |2
            True if IPv6 is enabled.
            
            Unset value will keep existing IPv6 enabled state as is.
          type: boolean
        ipv6properties:
          description: |2
            IPv6 properties.
            
            It is set only if { @link #ipv6Enabled } is true.
          $ref: '#/components/schemas/HostInternetScsiHbaIPv6Properties'
      required:
        - dhcpConfigurationEnabled
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostInternetScsiHbaIPProperties:
      type: object
      description: |2
        A boxed array of *HostInternetScsiHbaIPProperties*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostInternetScsiHbaIPProperties'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostInternetScsiHbaIPv6Properties:
      type: object
      description: |2
        The IPv6 properties for the host bus adapter.
      properties:
        iscsiIpv6Address:
          description: |2
            There can be multiple IPv6 addressed plumbed onto the Host Bus Adapter.
          type: array
          items:
            $ref: '#/components/schemas/HostInternetScsiHbaIscsiIpv6Address'
        ipv6DhcpConfigurationEnabled:
          description: |2
            True if DHCPv6 is enabled on the host bus adapter.
            
            User can keep this field unset while changing other IPv6 properties
            without altering current DHCP configuration.
          type: boolean
        ipv6LinkLocalAutoConfigurationEnabled:
          description: |2
            True if auto configuration of link local address is enabled on the host bus adapter.
            
            User can keep this field unset while changing other IPv6 properties
            without altering current link local auto configuration.
          type: boolean
        ipv6RouterAdvertisementConfigurationEnabled:
          description: |2
            True if the router advertisement configuration is enabled on the host bus adapter.
            
            User can keep this field unset while changing other IPv6 properties
            without altering current router advertisement configuration.
          type: boolean
        ipv6DefaultGateway:
          description: |2
            The current IPv6 default gateway.
            
            User can keep this field unset while changing other IPv6 properties
            without altering current default gateway configuration.
          type: string
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostInternetScsiHbaIPv6Properties:
      type: object
      description: |2
        A boxed array of *HostInternetScsiHbaIPv6Properties*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostInternetScsiHbaIPv6Properties'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostInternetScsiHbaIscsiIpv6Address:
      type: object
      description: |2
        The IPv6 address.
      properties:
        address:
          description: |2
            IPv6 address.
          type: string
        prefixLength:
          description: |2
            IPv6 address prefix length.
          type: integer
          format: int32
        origin:
          description: |2
            Type of the address.
            
            See { @Vim::Host::HostBusAdapter::IscsiIpv6Address::AddressConfigurationType }.
            Note: While setting IPv6 address, value of origin should be set to static.
          type: string
        operation:
          description: |2
            Operation to be performed with the IP address.
            
            See { @Vim::Host::HostBusAdapter::IscsiIpv6Address::IPv6AddressOperation }.
            Note: This field/operation is used only while setting the IPProperties on host bus adapter.
            This field would not have any value (Unset) while viewing IPProperties
            of the host bus adapter.
          type: string
      required:
        - address
        - prefixLength
        - origin
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostInternetScsiHbaIscsiIpv6Address:
      type: object
      description: |2
        A boxed array of *HostInternetScsiHbaIscsiIpv6Address*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostInternetScsiHbaIscsiIpv6Address'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostInternetScsiHbaParamValue:
      type: object
      description: |2
        Describes the the value of an iSCSI parameter, and whether
        the value is being inherited.
      properties:
        isInherited:
          description: |2
            Indicates if the value is inherited from some other source.
            
            If unset, the value is not inheritable.
            isInherited can be modified only if it has already been set.
            If value is to being modified, isInherited should be set to true.
            Setting isInherited to false will result in the value being
            once again inherited from the source.
          type: boolean
      allOf:
        - $ref: '#/components/schemas/OptionValue'

    ArrayOfHostInternetScsiHbaParamValue:
      type: object
      description: |2
        A boxed array of *HostInternetScsiHbaParamValue*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostInternetScsiHbaParamValue'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostInternetScsiHbaSendTarget:
      type: object
      description: |2
        The iSCSI send target.
      properties:
        address:
          description: |2
            The IP address or hostname of the storage device.
          type: string
        port:
          description: |2
            The TCP port of the storage device.
            
            If not specified, the standard default of 3260 is used.
          type: integer
          format: int32
        authenticationProperties:
          description: |2
            The authentication settings for this discovery target.
            
            All static targets discovered via this target will inherit the
            use of these settings unless the static target's authentication
            settings are explicitly set.
          $ref: '#/components/schemas/HostInternetScsiHbaAuthenticationProperties'
        digestProperties:
          description: |2
            The digest settings for this discovery target.
            
            All static targets discovered via this target will inherit the
            use of these settings unless the static target's digest
            settings are explicitly set.
          $ref: '#/components/schemas/HostInternetScsiHbaDigestProperties'
        supportedAdvancedOptions:
          description: |2
            A list of supported key/value pair advanced options for the
            host bus adapter including their type information.
          type: array
          items:
            $ref: '#/components/schemas/OptionDef'
        advancedOptions:
          description: |2
            A list of the current options settings for the host bus adapter.
          type: array
          items:
            $ref: '#/components/schemas/HostInternetScsiHbaParamValue'
        parent:
          description: |2
            The device name of the host bus adapter from which settings
            can be inherited.
          type: string
      required:
        - address
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostInternetScsiHbaSendTarget:
      type: object
      description: |2
        A boxed array of *HostInternetScsiHbaSendTarget*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostInternetScsiHbaSendTarget'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostInternetScsiHbaStaticTarget:
      type: object
      description: |2
        The iSCSI static target.
      properties:
        address:
          description: |2
            The IP address or hostname of the storage device.
          type: string
        port:
          description: |2
            The TCP port of the storage device.
            
            If not specified, the standard default of 3260 is used.
          type: integer
          format: int32
        iScsiName:
          description: |2
            The iSCSI name of the storage device.
          type: string
        discoveryMethod:
          description: |2
            Discovery method
            each static target is discovered by some method
            define in TargetDiscoveryMethod.
          type: string
        authenticationProperties:
          description: |2
            The authentication settings for this target.
          $ref: '#/components/schemas/HostInternetScsiHbaAuthenticationProperties'
        digestProperties:
          description: |2
            The digest settings for this target.
          $ref: '#/components/schemas/HostInternetScsiHbaDigestProperties'
        supportedAdvancedOptions:
          description: |2
            A list of supported key/value pair advanced options for the
            host bus adapter including their type information.
          type: array
          items:
            $ref: '#/components/schemas/OptionDef'
        advancedOptions:
          description: |2
            A list of the current options settings for the host bus adapter.
          type: array
          items:
            $ref: '#/components/schemas/HostInternetScsiHbaParamValue'
        parent:
          description: |2
            The parent entity from which settings can be inherited.
            
            It can either
            be unset, or set to the device name of the host bus adapter or the
            name of the SendTarget.
          type: string
      required:
        - address
        - iScsiName
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostInternetScsiHbaStaticTarget:
      type: object
      description: |2
        A boxed array of *HostInternetScsiHbaStaticTarget*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostInternetScsiHbaStaticTarget'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostInternetScsiHbaTargetSet:
      type: object
      description: |2
        A collection of one or more static targets or discovery addresses.
        
        At least one of the arrays must be non-empty.
      properties:
        staticTargets:
          type: array
          items:
            $ref: '#/components/schemas/HostInternetScsiHbaStaticTarget'
        sendTargets:
          type: array
          items:
            $ref: '#/components/schemas/HostInternetScsiHbaSendTarget'
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostInternetScsiHbaTargetSet:
      type: object
      description: |2
        A boxed array of *HostInternetScsiHbaTargetSet*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostInternetScsiHbaTargetSet'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostInternetScsiTargetTransport:
      type: object
      description: |2
        Internet SCSI transport information about a SCSI target.
      properties:
        iScsiName:
          description: |2
            The iSCSI name of the target.
          type: string
        iScsiAlias:
          description: |2
            The iSCSI alias of the target.
          type: string
        address:
          description: |2
            The IP addresses through which the target may be reached.
          type: array
          items:
            type: string
      required:
        - iScsiName
        - iScsiAlias
      allOf:
        - $ref: '#/components/schemas/HostTargetTransport'

    ArrayOfHostInternetScsiTargetTransport:
      type: object
      description: |2
        A boxed array of *HostInternetScsiTargetTransport*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostInternetScsiTargetTransport'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostIpConfig:
      type: object
      description: |2
        The IP configuration.
      properties:
        dhcp:
          description: |2
            The flag to indicate whether or not DHCP (dynamic host
            control protocol) is enabled.
            
            If this property is set to true,
            the ipAddress and the subnetMask strings cannot be set explicitly.
          type: boolean
        ipAddress:
          description: |2
            The IP address currently used by the network adapter.
            
            All IP addresses are specified using IPv4 dot notation.
            For example, "192.168.0.1". Subnet addresses and netmasks are
            specified using the same notation.
            
            **Note**: When DHCP is enabled, this property reflects the
            current IP configuration and cannot be set. When DHCP is not
            enabled, this property can be set explicitly.
          type: string
        subnetMask:
          description: |2
            The subnet mask.
            
            **Note**: When DHCP is not enabled, this property can be
            set explicitly. When DHCP is enabled, this property reflects the
            current IP configuration and cannot be set.
          type: string
        ipV6Config:
          description: |2
            The ipv6 configuration
          $ref: '#/components/schemas/HostIpConfigIpV6AddressConfiguration'
      required:
        - dhcp
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostIpConfig:
      type: object
      description: |2
        A boxed array of *HostIpConfig*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostIpConfig'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostIpConfigIpV6Address:
      type: object
      description: |2
        The ipv6 address specification
      properties:
        ipAddress:
          description: |2
            The ipv6 address.
            
            When DHCP is enabled, this property
            reflects the current IP configuration and cannot be set.
          type: string
        prefixLength:
          description: |2
            The prefix length.
            
            An ipv6 prefixLength is a decimal value that indicates
            the number of contiguous, higher-order bits of the address that make up the
            network portion of the address.
            For example, 10FA:6604:8136:6502::/64 is a possible IPv6 prefix. The prefix
            length in this case is 64.
          type: integer
          format: int32
        origin:
          description: |2
            The type of the ipv6 address configuration on the interface.
            
            This can be one of the types defined my the enum
            *HostIpConfigIpV6AddressConfigType_enum*.
          type: string
        dadState:
          description: |2
            The state of this ipAddress.
            
            Can be one of
            *HostIpConfigIpV6AddressStatus_enum*
          type: string
        lifetime:
          description: |2
            The time when will this address expire.
            
            If not set
            the address lifetime is unlimited.
          type: string
          format: date-time
        operation:
          description: |2
            Valid values are "add" and "remove".
            
            See *HostConfigChangeOperation_enum*.
          type: string
      required:
        - ipAddress
        - prefixLength
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostIpConfigIpV6Address:
      type: object
      description: |2
        A boxed array of *HostIpConfigIpV6Address*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostIpConfigIpV6Address'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostIpConfigIpV6AddressConfiguration:
      type: object
      description: |2
        The ipv6 address configuration
      properties:
        ipV6Address:
          description: |2
            Ipv6 adrresses configured on the interface.
            
            The global addresses can be configured
            through DHCP, stateless or manual configuration. Link local addresses can be
            only configured with the origin set to
            *other*.
          type: array
          items:
            $ref: '#/components/schemas/HostIpConfigIpV6Address'
        autoConfigurationEnabled:
          description: |2
            Specify if IPv6 address and routing information information
            be enabled or not as per RFC 2462.
          type: boolean
        dhcpV6Enabled:
          description: |2
            The flag to indicate whether or not DHCP (dynamic host
            control protocol) is enabled to obtain an ipV6 address.
            
            If this property is set to true, an ipV6 address is configured through dhcpV6.
          type: boolean
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostIpConfigIpV6AddressConfiguration:
      type: object
      description: |2
        A boxed array of *HostIpConfigIpV6AddressConfiguration*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostIpConfigIpV6AddressConfiguration'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostIpRouteConfig:
      type: object
      description: |2
        IP Route Configuration.
        
        All IPv4 addresses, subnet addresses, and
        netmasks are specified as strings using dotted decimal notation.
        For example, "192.0.2.1".
        IPv6 addresses are 128-bit addresses represented
        as eight fields of up to four hexadecimal digits. A colon separates each
        field (:). For example, 2001:DB8:101::230:6eff:fe04:d9ff. The address can
        also consist of symbol '::' to represent multiple 16-bit groups of
        contiguous 0's only once in an address as described in RFC 2373.
      properties:
        defaultGateway:
          description: |2
            The default gateway address.
          type: string
        gatewayDevice:
          description: |2
            The gateway device.
            
            This applies to service console gateway only, it
            is ignored otherwise.
          type: string
        ipV6DefaultGateway:
          description: |2
            The default ipv6 gateway address
          type: string
        ipV6GatewayDevice:
          description: |2
            The ipv6 gateway device.
            
            This applies to service console gateway only, it
          type: string
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostIpRouteConfig:
      type: object
      description: |2
        A boxed array of *HostIpRouteConfig*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostIpRouteConfig'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostIpRouteConfigSpec:
      type: object
      description: |2
        Dataobject specifying the configuration for IpRoute
      properties:
        gatewayDeviceConnection:
          description: |2
            Choose a gateway device based on what the VirtualNic is connected to.
            
            This applies to service console gateway only, it
            is ignored otherwise.
          $ref: '#/components/schemas/HostVirtualNicConnection'
        ipV6GatewayDeviceConnection:
          description: |2
            The ipv6 gateway device based on what the VirtualNic is connected to.
            
            This applies to service console gateway only, it
            is ignored otherwise.
          $ref: '#/components/schemas/HostVirtualNicConnection'
      allOf:
        - $ref: '#/components/schemas/HostIpRouteConfig'

    ArrayOfHostIpRouteConfigSpec:
      type: object
      description: |2
        A boxed array of *HostIpRouteConfigSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostIpRouteConfigSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostIpRouteEntry:
      type: object
      description: |2
        IpRouteEntry.
        
        Routing entries are individual static routes which combined
        with the default route form all of the routing rules for a host.
      properties:
        network:
          description: |2
            Network of the routing entry
            Of the format "10.20.120.0" or "2001:db8::1428:57"
          type: string
        prefixLength:
          description: |2
            Prefix length of the network (this is the 22 in 10.20.120.0/22)
          type: integer
          format: int32
        gateway:
          description: |2
            Gateway for the routing entry
          type: string
        deviceName:
          description: |2
            If available the property indicates the device associated with the
            routing entry.
            
            This property can only be read from the server.
            It will be ignored if set by the client.
          type: string
      required:
        - network
        - prefixLength
        - gateway
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostIpRouteEntry:
      type: object
      description: |2
        A boxed array of *HostIpRouteEntry*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostIpRouteEntry'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostIpRouteOp:
      type: object
      description: |2
        Routing Entry Operation.
        
        Routing entries are individual static routes
        which combined with the default route form all of the routing rules for
        a host.
      properties:
        changeOperation:
          description: |2
            This property indicates the change operation to apply on
            this configuration specification.
            
            See also *HostConfigChangeOperation_enum*.
          type: string
        route:
          description: |2
            The routing entry itself
          $ref: '#/components/schemas/HostIpRouteEntry'
      required:
        - changeOperation
        - route
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostIpRouteOp:
      type: object
      description: |2
        A boxed array of *HostIpRouteOp*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostIpRouteOp'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostIpRouteTableConfig:
      type: object
      description: |2
        IpRouteEntry.
        
        Routing entries are individual static routes which combined
        with the default route form all of the routing rules for a host.
      properties:
        ipRoute:
          description: |2
            The array of Routing ops (routes to be added/removed)
          type: array
          items:
            $ref: '#/components/schemas/HostIpRouteOp'
        ipv6Route:
          type: array
          items:
            $ref: '#/components/schemas/HostIpRouteOp'
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostIpRouteTableConfig:
      type: object
      description: |2
        A boxed array of *HostIpRouteTableConfig*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostIpRouteTableConfig'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostIpRouteTableInfo:
      type: object
      description: |2
        IpRouteTableInfo.
        
        This is the list of all static routes on the host
      properties:
        ipRoute:
          description: |2
            The array of IpRouteEntry
          type: array
          items:
            $ref: '#/components/schemas/HostIpRouteEntry'
        ipv6Route:
          type: array
          items:
            $ref: '#/components/schemas/HostIpRouteEntry'
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostIpRouteTableInfo:
      type: object
      description: |2
        A boxed array of *HostIpRouteTableInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostIpRouteTableInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostIpmiInfo:
      type: object
      description: |2
        The IpmiInfo data object contains IPMI (Intelligent Platform Management Interface)
        and BMC (Baseboard Management Controller) information for the host.
      properties:
        bmcIpAddress:
          description: |2
            IP address of the BMC on the host.
            
            It should be null terminated.
          type: string
        bmcMacAddress:
          description: |2
            MAC address of the BMC on the host.
            
            The MAC address should be of the
            form xx:xx:xx:xx:xx:xx where each x is a hex digit. It should be null
            terminated.
          type: string
        login:
          description: |2
            User ID for logging into the BMC.
            
            BMC usernames may be up to 16
            characters and must be null terminated. Hence, a login comprises
            17 or fewer characters.
          type: string
        password:
          description: |2
            Password for logging into the BMC.
            
            Only used for configuration, returned as unset
            while reading. The password can be up to 16 characters and must be null
            terminated. Hence, a password comprises 17 or fewer characters.
          type: string
          format: password
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostIpmiInfo:
      type: object
      description: |2
        A boxed array of *HostIpmiInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostIpmiInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    IscsiDependencyEntity:
      type: object
      description: |2
        Defines a dependency entity.
        
        Contains the affected Virtual NIC device name and iSCSI HBA name
        (if Virtual NIC is associated with the HBA).
        See *IscsiMigrationDependency*
      properties:
        pnicDevice:
          description: |2
            The affected Physical NIC device
          type: string
        vnicDevice:
          description: |2
            The affected Virtual NIC device
          type: string
        vmhbaName:
          description: |2
            The iSCSI HBA that the Virtual NIC is associated with, if any.
          type: string
      required:
        - pnicDevice
        - vnicDevice
        - vmhbaName
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfIscsiDependencyEntity:
      type: object
      description: |2
        A boxed array of *IscsiDependencyEntity*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/IscsiDependencyEntity'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    IscsiMigrationDependency:
      type: object
      description: |2
        Provides migration dependency information for a given Physical NIC.
        
        Lists all the iSCSI and networking resources impacted if
        migration of a given Physical NIC is to take place.
      properties:
        migrationAllowed:
          description: |2
            Indicates whether migration can be safely performed
            If migrationAllowed is False, the disallowReason will
            contain the specific condition that makes the migration
            attempt unsafe.
          type: boolean
        disallowReason:
          description: |2
            Reasons for not allowing migration.
            
            Unset if migrationAllowed is true.
          $ref: '#/components/schemas/IscsiStatus'
        dependency:
          description: |2
            Details of all the resources affected by migration.
          type: array
          items:
            $ref: '#/components/schemas/IscsiDependencyEntity'
      required:
        - migrationAllowed
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfIscsiMigrationDependency:
      type: object
      description: |2
        A boxed array of *IscsiMigrationDependency*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/IscsiMigrationDependency'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    IscsiPortInfo:
      type: object
      description: |2
        The *IscsiPortInfo* data object describes the
        Virtual NIC that are bound to an iSCSI adapter and
        also it describes the candidate Virtual NICs that
        can be bound to a given iSCSI adapter.
      properties:
        vnicDevice:
          description: |2
            Virtual NIC Name.
            
            Contains the name of the Virtual NIC device. This may be
            unset in case where the bound Virtual NIC doesn't have the system object or
            where a candidate Physical NIC isn't associated with any Virtual NIC.
          type: string
        vnic:
          description: |2
            Virtual NIC Object corresponding to the vnicDevice.
            
            May be unset if Virtual NIC object corresponding to vnicDevice doesn't
            exist in the system.
          $ref: '#/components/schemas/HostVirtualNic'
        pnicDevice:
          description: |2
            Physical NIC Name.
          type: string
        pnic:
          description: |2
            Physical NIC Object corresponding to the pnicDevice.
            
            May be unset if Physical NIC object corresponding to pnicDevice doesn't
            exist in the system or the vnicDevice doesn't have any Physical NIC
            associated with it.
          $ref: '#/components/schemas/PhysicalNic'
        switchName:
          description: |2
            Name of the virtual switch this Physical/Virtual NIC belongs.
            
            May be unset if the vnicDevice and/or pnicDevice do not have a
            virtual switch associated with them.
          type: string
        switchUuid:
          description: |2
            UUID of the virtual switch this Physical/Virtual NIC belongs.
            
            May be unset if the vnicDevice and/or pnicDevice do not have a
            virtual switch associated with them or the associated switch is not VDS.
          type: string
        portgroupName:
          description: |2
            Name of the portgroup to which this Virtual NIC belongs.
            
            May be unset if the vnicDevice and/or pnicDevice do not have a
            Portgroup associated with them.
          type: string
        portgroupKey:
          description: |2
            Portgroup key to which this Virtual NIC belongs.
            
            May be unset if the vnicDevice and/or pnicDevice do not have a
            Portgroup associated with them or the associated portgroup does
            is not of VDS type.
          type: string
        portKey:
          description: |2
            portkey to which this Virtual NIC belongs.
            
            May be unset if the vnicDevice is not assigned to a specific port or
            the switch is not VDS.
          type: string
        opaqueNetworkId:
          description: |2
            ID of the Opaque network to which the virtual NIC is connected.
            
            This property is set only when vnicDevice is associated with an
            opaque network.
          type: string
        opaqueNetworkType:
          description: |2
            Type of the Opaque network to which the virtual NIC is connected.
            
            This property is set only when vnicDevice is associated with an
            opaque network.
          type: string
        opaqueNetworkName:
          description: |2
            Name of the Opaque network to which the virtual NIC is connected.
            
            This property is set only when vnicDevice is associated with an
            opaque network.
          type: string
        externalId:
          description: |2
            An ID assigned to the vmkernel adapter by external management plane
            or controller.
            
            This property is set only when vnicDevice is associated with an
            opaque network.
          type: string
        complianceStatus:
          description: |2
            Status indicating whether the Virtual NIC is compliant with the
            network policy that is required by iSCSI port binding.
            
            May be unset in the candidate NIC list.
          $ref: '#/components/schemas/IscsiStatus'
        pathStatus:
          description: |2
            A status, as defined in *IscsiPortInfoPathStatus_enum*, indicating the
            existing storage paths dependency level on a given Virtual NIC.
            
            May be unset in the candidate NIC list.
          type: string
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfIscsiPortInfo:
      type: object
      description: |2
        A boxed array of *IscsiPortInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/IscsiPortInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    IscsiStatus:
      type: object
      description: |2
        The *IscsiStatus* data object describes the
        status of an operation.
      properties:
        reason:
          description: |2
            List of failure reason and associated remedy.
            
            An array of fault codes associated with the failure. The fault itself
            will provide an indication of the actual failure code and
            *MethodFault.faultMessage* will indicate the remedy that
            needs to be taken to correct the failure.
          type: array
          items:
            $ref: '#/components/schemas/MethodFault'
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfIscsiStatus:
      type: object
      description: |2
        A boxed array of *IscsiStatus*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/IscsiStatus'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    KernelModuleInfo:
      type: object
      description: |2
        Information about a kernel module.
      properties:
        id:
          description: |2
            Module ID.
          type: integer
          format: int32
        name:
          description: |2
            Module name.
          type: string
        version:
          description: |2
            Version string.
          type: string
        filename:
          description: |2
            Module filename, without the path.
          type: string
        optionString:
          description: |2
            Option string configured to be passed to the kernel module when loaded.
            
            Note that this is not necessarily the option string currently in use by
            the kernel module.
          type: string
        loaded:
          description: |2
            Is the module loaded?
          type: boolean
        enabled:
          description: |2
            Is the module enabled?
          type: boolean
        useCount:
          description: |2
            Number of references to this module.
          type: integer
          format: int32
        readOnlySection:
          description: |2
            Read-only section information.
          $ref: '#/components/schemas/KernelModuleSectionInfo'
        writableSection:
          description: |2
            Writable section information.
          $ref: '#/components/schemas/KernelModuleSectionInfo'
        textSection:
          description: |2
            Text section information.
          $ref: '#/components/schemas/KernelModuleSectionInfo'
        dataSection:
          description: |2
            Data section information.
          $ref: '#/components/schemas/KernelModuleSectionInfo'
        bssSection:
          description: |2
            BSS section information.
          $ref: '#/components/schemas/KernelModuleSectionInfo'
      required:
        - id
        - name
        - version
        - filename
        - optionString
        - loaded
        - enabled
        - useCount
        - readOnlySection
        - writableSection
        - textSection
        - dataSection
        - bssSection
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfKernelModuleInfo:
      type: object
      description: |2
        A boxed array of *KernelModuleInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/KernelModuleInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    KernelModuleSectionInfo:
      type: object
      description: |2
        Information about a module section.
      properties:
        address:
          description: |2
            Base address of section.
          type: integer
          format: int64
        length:
          description: |2
            Section length.
          type: integer
          format: int32
      required:
        - address
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfKernelModuleSectionInfo:
      type: object
      description: |2
        A boxed array of *KernelModuleSectionInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/KernelModuleSectionInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostLicenseSpec:
      type: object
      properties:
        source:
          description: |2
            License source to be used
          $ref: '#/components/schemas/LicenseSource'
        editionKey:
          description: |2
            License edition to use
          type: string
        disabledFeatureKey:
          description: |2
            Disabled features.
            
            When an edition is set, all the features in it
            are enabled by default. The following parameter gives a finer
            control on which features are disabled.
          type: array
          items:
            type: string
        enabledFeatureKey:
          description: |2
            Enabled features
          type: array
          items:
            type: string
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostLicenseSpec:
      type: object
      description: |2
        A boxed array of *HostLicenseSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostLicenseSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    LinkDiscoveryProtocolConfig:
      type: object
      description: |2
        Dataobject representing the link discovery protocol configuration for a
        virtual or distributed virtual switch.
      properties:
        protocol:
          description: |2
            The discovery protocol type.
            
            For valid values
            see *LinkDiscoveryProtocolConfigProtocolType_enum*.
          type: string
        operation:
          description: |2
            Whether to advertise or listen.
            
            For valid values see
            *LinkDiscoveryProtocolConfigOperationType_enum*.
          type: string
      required:
        - protocol
        - operation
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfLinkDiscoveryProtocolConfig:
      type: object
      description: |2
        A boxed array of *LinkDiscoveryProtocolConfig*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/LinkDiscoveryProtocolConfig'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostAccountSpec:
      type: object
      description: |2
        This data object type contains common parameters
        for local account creation.
        
        The password and description properties
        are not supported for group accounts on POSIX hosts.
      properties:
        id:
          description: |2
            The ID of the specified account.
          type: string
        password:
          description: |2
            The password for a user or group.
          type: string
          format: password
        description:
          description: |2
            The description of the specified account.
          type: string
      required:
        - id
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostAccountSpec:
      type: object
      description: |2
        A boxed array of *HostAccountSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostAccountSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostPosixAccountSpec:
      type: object
      description: |2
        This data object type contains a POSIX-specific parameter
        for local account creation.
      properties:
        posixId:
          deprecated: true
          description: |2
            Deprecated as of vSphere API 5.1, this property is deprecated and
            is ignored.
            
            The user ID or group ID of a specified account.
          type: integer
          format: int32
        shellAccess:
          description: |2
            Grants shell access.
            
            As of vSphere API 5.1, this property is deprecated and
            is ignored. *HostLocalAccountManager.CreateUser* will always set this to true, and
            *HostLocalAccountManager.UpdateUser* will set it to true if it is already false.
            Also shell access is granted only to users with
            Administrator role on the root folder and no other non-Admin role on
            any other inventory object.
            
            As of vSphere API 7.0.3.2, this property is no longer ignored and it must
            be true if a user with administrator permissions needs shell access.
            It can be set to true for other users only by administrators
            who themselves have this shell access.
            Administrators without shell access cannot change the passwords of
            users with shell access.
            Setting this property to false for user 'root' has no effect.
            
            If this property is not specified when creating a new user account
            then the default value depends on the following factors:
            if the calling user does not have shell access then it defaults to
            false; if the calling user has shell access then it defaults to true,
            unless overridden by host configuration settings.
          type: boolean
      allOf:
        - $ref: '#/components/schemas/HostAccountSpec'

    ArrayOfHostPosixAccountSpec:
      type: object
      description: |2
        A boxed array of *HostPosixAccountSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostPosixAccountSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostLocalAuthenticationInfo:
      type: object
      description: |2
        The *HostLocalAuthenticationInfo* data object represents
        local authentication on the ESX host.
        
        Local authentication
        is always enabled.
      allOf:
        - $ref: '#/components/schemas/HostAuthenticationStoreInfo'

    ArrayOfHostLocalAuthenticationInfo:
      type: object
      description: |2
        A boxed array of *HostLocalAuthenticationInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostLocalAuthenticationInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    LocalDatastoreInfo:
      type: object
      description: |2
        The information details about a datastore that is local to a host.
      properties:
        path:
          description: |2
            The local path on a host.
            
            May not
            be available when the datastore is not accessible.
          type: string
      allOf:
        - $ref: '#/components/schemas/DatastoreInfo'

    ArrayOfLocalDatastoreInfo:
      type: object
      description: |2
        A boxed array of *LocalDatastoreInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/LocalDatastoreInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostLocalFileSystemVolume:
      type: object
      description: |2
        Local file system volume.
      properties:
        device:
          description: |2
            The device of the local file system.
          type: string
      required:
        - device
      allOf:
        - $ref: '#/components/schemas/HostFileSystemVolume'

    ArrayOfHostLocalFileSystemVolume:
      type: object
      description: |2
        A boxed array of *HostLocalFileSystemVolume*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostLocalFileSystemVolume'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostLocalFileSystemVolumeSpec:
      type: object
      description: |2
        The specification for creating a new local file system volume.
      properties:
        device:
          description: |2
            The device of the local file system.
          type: string
        localPath:
          description: |2
            The file path on the host where the file system is mounted.
          type: string
      required:
        - device
        - localPath
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostLocalFileSystemVolumeSpec:
      type: object
      description: |2
        A boxed array of *HostLocalFileSystemVolumeSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostLocalFileSystemVolumeSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostLowLevelProvisioningManagerDiskLayoutSpec:
      type: object
      description: |2
        File layout spec of a virtual disk.
        
        The disk could be either a base-disk
        or a delta disk.
      properties:
        controllerType:
          description: |2
            Disk controller type, e.g.
            
            vim.vm.device.VirtualSCSIController or
            vim.vm.device.VirtualIDEController.
          type: string
        busNumber:
          description: |2
            Bus number associated with the controller for this disk.
          type: integer
          format: int32
        unitNumber:
          description: |2
            Unit number of this disk on its controller.
          type: integer
          format: int32
        srcFilename:
          description: |2
            Source disk filename in datastore path.
          type: string
        dstFilename:
          description: |2
            Destination filename in datastore path.
          type: string
      required:
        - controllerType
        - busNumber
        - unitNumber
        - srcFilename
        - dstFilename
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostLowLevelProvisioningManagerDiskLayoutSpec:
      type: object
      description: |2
        A boxed array of *HostLowLevelProvisioningManagerDiskLayoutSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostLowLevelProvisioningManagerDiskLayoutSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostLowLevelProvisioningManagerFileDeleteResult:
      type: object
      properties:
        fileName:
          type: string
        fault:
          $ref: '#/components/schemas/MethodFault'
      required:
        - fileName
        - fault
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostLowLevelProvisioningManagerFileDeleteResult:
      type: object
      description: |2
        A boxed array of *HostLowLevelProvisioningManagerFileDeleteResult*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostLowLevelProvisioningManagerFileDeleteResult'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostLowLevelProvisioningManagerFileDeleteSpec:
      type: object
      properties:
        fileName:
          type: string
        fileType:
          type: string
      required:
        - fileName
        - fileType
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostLowLevelProvisioningManagerFileDeleteSpec:
      type: object
      description: |2
        A boxed array of *HostLowLevelProvisioningManagerFileDeleteSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostLowLevelProvisioningManagerFileDeleteSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostLowLevelProvisioningManagerFileReserveResult:
      type: object
      description: |2
        A FileReserveResult object describles the information of a file reserved
        by the ReserveFiles method.
        
        This includes the original input ReserveFiles
        method so that the caller can map the input with the reserved file. All
        paths will be the complete local path in the url format.
      properties:
        baseName:
          type: string
        parentDir:
          type: string
        reservedName:
          type: string
      required:
        - baseName
        - parentDir
        - reservedName
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostLowLevelProvisioningManagerFileReserveResult:
      type: object
      description: |2
        A boxed array of *HostLowLevelProvisioningManagerFileReserveResult*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostLowLevelProvisioningManagerFileReserveResult'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostLowLevelProvisioningManagerFileReserveSpec:
      type: object
      properties:
        baseName:
          type: string
        parentDir:
          type: string
        fileType:
          type: string
        storageProfile:
          type: string
      required:
        - baseName
        - parentDir
        - fileType
        - storageProfile
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostLowLevelProvisioningManagerFileReserveSpec:
      type: object
      description: |2
        A boxed array of *HostLowLevelProvisioningManagerFileReserveSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostLowLevelProvisioningManagerFileReserveSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostLowLevelProvisioningManagerSnapshotLayoutSpec:
      type: object
      description: |2
        File layout spec of a snapshot, including path to the vmsn file of the
        snapshot and the layout of virtual disks when the snapshot was taken.
      properties:
        id:
          description: |2
            The unique identifier of the snapshot
          type: integer
          format: int32
        srcFilename:
          description: |2
            Name of the source snapshot file in datastore path.
          type: string
        dstFilename:
          description: |2
            Name of the destination snapshot file in datastore path.
          type: string
        disk:
          description: |2
            Layout of each virtual disk of the virtual machine when the
            snapshot was taken.
          type: array
          items:
            $ref: '#/components/schemas/HostLowLevelProvisioningManagerDiskLayoutSpec'
      required:
        - id
        - srcFilename
        - dstFilename
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostLowLevelProvisioningManagerSnapshotLayoutSpec:
      type: object
      description: |2
        A boxed array of *HostLowLevelProvisioningManagerSnapshotLayoutSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostLowLevelProvisioningManagerSnapshotLayoutSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostLowLevelProvisioningManagerVmMigrationStatus:
      type: object
      description: |2
        The status of a virtual machine migration operation.
      properties:
        migrationId:
          description: |2
            Unique identifier for this operation, currently it's unique
            within one virtual center instance.
          type: integer
          format: int64
        type:
          description: |2
            Manner in which the migration process is performed.
            
            The set of
            possible values is described in
            *HostVMotionManagerVMotionType_enum*.
          type: string
        source:
          description: |2
            Whether the virtual machine is the source of the migration.
            
            For disk only migration, the value is always true.
          type: boolean
        consideredSuccessful:
          description: |2
            Whether the operation is considered successful.
            
            A migration
            operation is considered successful if its switch over phase has
            completed successfully.
            
            More specifically, for an in-progress migration, it is considered
            successful if it has had a sucessful switch over, otherwise it is
            considered unsuccessful. Likewise, the status of a completed
            migration operation is also based on the switch over completion
            status.
            
            The difference between a completed vs. in-progress migration with
            the same consideredSuccessful property is that in the former case
            the server is able to complete the clean up process thus leaves
            nothing for the recovery process to clean up.
          type: boolean
      required:
        - migrationId
        - type
        - source
        - consideredSuccessful
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostLowLevelProvisioningManagerVmMigrationStatus:
      type: object
      description: |2
        A boxed array of *HostLowLevelProvisioningManagerVmMigrationStatus*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostLowLevelProvisioningManagerVmMigrationStatus'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostLowLevelProvisioningManagerVmRecoveryInfo:
      type: object
      description: |2
        Virtual machine information that can be used for recovery, for
        example, to decide whether to register a virtual machine with a
        server if the virtual machine is currently unregistered.
        
        This data
        object does not contain a complete virtual machine configuration,
        but a subset of information available from *VirtualMachineConfigInfo*, all of which are available via virtual machine
        configuration files.
        
        The documentation for each property in this data object describes
        the property in *VirtualMachineConfigInfo* that contains the same
        information if available.
      properties:
        version:
          description: |2
            The hardware version of this virtual machine.
            
            Same as
            *VirtualMachineConfigInfo.version*.
          type: string
        biosUUID:
          description: |2
            128-bit SMBIOS UUID of this virtual machine.
            
            Same as
            *VirtualMachineConfigInfo.uuid*.
          type: string
        instanceUUID:
          description: |2
            VirtualCenter-specific 128-bit UUID of this virtual machine.
            
            Same
            as *VirtualMachineConfigInfo.instanceUuid*.
          type: string
        ftInfo:
          description: |2
            Fault Tolerance settings for this virtual machine.
            
            Same as
            *VirtualMachineConfigInfo.ftInfo*. Unset if non FT.
          $ref: '#/components/schemas/FaultToleranceConfigInfo'
      required:
        - version
        - biosUUID
        - instanceUUID
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostLowLevelProvisioningManagerVmRecoveryInfo:
      type: object
      description: |2
        A boxed array of *HostLowLevelProvisioningManagerVmRecoveryInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostLowLevelProvisioningManagerVmRecoveryInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostMaintenanceSpec:
      type: object
      description: |2
        The *HostMaintenanceSpec* data object may be used to specify
        actions to be taken by a host upon entering maintenance mode.
        
        If the *HostMaintenanceSpec* or any of its fields are omitted in a
        call to *HostSystem.EnterMaintenanceMode_Task*, default actions
        will be chosen as documented for each field's type.
        
        See also *HostSystem.EnterMaintenanceMode_Task*, *VsanHostDecommissionMode*.
      properties:
        vsanMode:
          description: |2
            The *VsanHostDecommissionMode* for this MaintenanceSpec.
          $ref: '#/components/schemas/VsanHostDecommissionMode'
        purpose:
          description: |2
            Maintenance mode reason code.
            
            See *HostMaintenanceSpecPurpose_enum* for valid values.
          type: string
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostMaintenanceSpec:
      type: object
      description: |2
        A boxed array of *HostMaintenanceSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostMaintenanceSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ServiceConsoleReservationInfo:
      type: object
      description: |2
        The ServiceConsoleReservationInfo data object type describes the
        amount of memory that is being reserved by the service console.
        
        Memory reserved for use by the service console is a hard reservation
        that cannot be changed except across hardware restarts.
        
        This memory that is reserved for the service console is used primarily
        to provide system management services. In addition, a small overhead
        is needed by each virtual machine on the service console.
        
        The only property of the data object that can be changed directly is the
        serviceConsoleReservedCfg property. This property indicates how much
        memory should be reserved for the service console on the next boot. In
        most cases, this amount is the same as the current reservation.
      properties:
        serviceConsoleReservedCfg:
          description: |2
            The amount of memory that should be reserved for the service console on
            the next boot.
          type: integer
          format: int64
        serviceConsoleReserved:
          description: |2
            The amount of memory that is currently reserved for the service console.
          type: integer
          format: int64
        unreserved:
          description: |2
            The amount of memory that is not reserved for use by the service console.
          type: integer
          format: int64
      required:
        - serviceConsoleReservedCfg
        - serviceConsoleReserved
        - unreserved
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfServiceConsoleReservationInfo:
      type: object
      description: |2
        A boxed array of *ServiceConsoleReservationInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ServiceConsoleReservationInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualMachineMemoryReservationInfo:
      type: object
      description: |2
        The VirtualMachineReservationInfo data object type describes the
        amount of memory that is being reserved for virtual machines on
        the host, and how additional memory may be acquired.
      properties:
        virtualMachineMin:
          description: |2
            The minimum amount of memory reserved for all running virtual machines,
            in bytes.
          type: integer
          format: int64
        virtualMachineMax:
          description: |2
            The maximum amount of memory reserved for all running virtual machines,
            in bytes.
          type: integer
          format: int64
        virtualMachineReserved:
          description: |2
            The amount of memory reserved for all running virtual machines,
            in bytes.
          type: integer
          format: int64
        allocationPolicy:
          description: |2
            Policy for allocating additional memory for virtual machines.
            
            See also *VirtualMachineMemoryAllocationPolicy_enum*.
          type: string
      required:
        - virtualMachineMin
        - virtualMachineMax
        - virtualMachineReserved
        - allocationPolicy
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVirtualMachineMemoryReservationInfo:
      type: object
      description: |2
        A boxed array of *VirtualMachineMemoryReservationInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineMemoryReservationInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualMachineMemoryReservationSpec:
      type: object
      description: |2
        The VirtualMachineReservationSpec data object specifies
        configurable parameters for virtual machine memory reservation.
      properties:
        virtualMachineReserved:
          description: |2
            The amount of memory reserved for all running virtual machines, in
            bytes.
          type: integer
          format: int64
        allocationPolicy:
          description: |2
            Policy for allocating additional memory for virtual machines.
            
            See also *VirtualMachineMemoryAllocationPolicy_enum*.
          type: string
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVirtualMachineMemoryReservationSpec:
      type: object
      description: |2
        A boxed array of *VirtualMachineMemoryReservationSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineMemoryReservationSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostMemorySpec:
      type: object
      description: |2
        DataObject used for configuring the memory setting
      properties:
        serviceConsoleReservation:
          description: |2
            Service Console reservation in bytes.
          type: integer
          format: int64
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostMemorySpec:
      type: object
      description: |2
        A boxed array of *HostMemorySpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostMemorySpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostMemoryTierInfo:
      type: object
      description: |2
        Information about a memory tier on this host.
        
        ***Since:*** vSphere API Release 7.0.3.0
      properties:
        name:
          description: |2
            Descriptive name for the memory tier.
          type: string
        type:
          description: |2
            Type of the memory tier.
            
            See *HostMemoryTierType_enum* for supported values.
          type: string
        flags:
          description: |2
            Flags pertaining to the memory tier.
            
            See *HostMemoryTierFlags_enum* for supported
            values.
          type: array
          items:
            type: string
        internalFlags:
          description: |2
            System internal flags pertaining to the memory tier.
            
            See
            *HostMemoryTierInternalFlags_enum* for supported values.
            
            ***Since:*** vSphere API Release 8.0.3.0
          type: array
          items:
            type: string
        size:
          description: |2
            Size of the memory tier in bytes.
          type: integer
          format: int64
      required:
        - name
        - type
        - size
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostMemoryTierInfo:
      type: object
      description: |2
        A boxed array of *HostMemoryTierInfo*. To be used in *Any* placeholders.
        
        ***Since:*** vSphere API Release 7.0.3.0
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostMemoryTierInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostMountInfo:
      type: object
      description: |2
        The *HostMountInfo* data object provides information related
        to a configured mount point.
        
        This object does not include information
        about the mounted file system. (See *HostFileSystemMountInfo*.)
      properties:
        path:
          description: |2
            Local file path where file system volume is mounted, if applicable.
            
            This path identifies the file system volume from the point of view
            of the host.
          type: string
        accessMode:
          description: |2
            Access mode to the underlying file system for this host.
          type: string
        mounted:
          description: |2
            The mount state of this mount point.
            
            For a discovered
            volume, which is mounted, this is true. When this value is
            unset, the default value is true.
          type: boolean
        accessible:
          description: |2
            Flag that indicates if the datastore is currently accessible from
            the host.
            
            For the case of a standalone host, this property has the same value as
            *DatastoreSummary*.*DatastoreSummary.accessible*.
            You can use the *DatastoreSummary* property if the *HostMountInfo*
            property is not set. The VirtualCenter Server will always make
            sure the *DatastoreSummary* property is set correctly.
          type: boolean
        inaccessibleReason:
          description: |2
            This optional property for inaccessible reason is reported only if
            a datastore becomes inaccessible as reported by
            *HostMountInfo.accessible* and
            *DatastoreSummary*.*DatastoreSummary.accessible*.
            
            The values for inaccessible reason are defined in the enum
            *HostMountInfoInaccessibleReason_enum*
            This helps to determine host specific reason for datastore inaccessibility.
            If the datastore becomes accessible following an inaccessible condition,
            the property *HostMountInfo.inaccessibleReason* will be unset.
          type: string
        vmknicName:
          description: |2
            The name of the vmknic used during mount.
            
            Populated by the vmk control layer if the NAS
            volume is mounted successfully with a vmknic binding.
            
            ***Since:*** vSphere API Release 8.0.1.0
          type: string
        vmknicActive:
          description: |2
            Indicates whether vmknic is active or inactive.
            
            This field will be populated by vmk control layer during
            NAS volume mount, and will be set to true if the
            vmknic binding is active.
            
            ***Since:*** vSphere API Release 8.0.1.0
          type: boolean
        mountFailedReason:
          description: |2
            The optional property which gives the reason for mount operation
            failure of NFS datastore.
            
            This field is applicable for only those
            mounts for which retry mount operation is configured.
            The values for the mount failed reason are defined in the enum
            *HostMountInfoMountFailedReason_enum*.
            If mount operation on NFS volume succeeds in the retry, then
            the property *HostMountInfo.mountFailedReason* will be unset.
            
            ***Since:*** vSphere API Release 8.0.0.1
          type: string
        numTcpConnections:
          description: |2
            Maintained for each Host, it indicates the total number of TCP
            connections for the NAS datastore
            
            ***Since:*** vSphere API Release 8.0.1.0
          type: integer
          format: int32
      required:
        - accessMode
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostMountInfo:
      type: object
      description: |2
        A boxed array of *HostMountInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostMountInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostMultipathInfo:
      type: object
      description: |2
        The *HostMultipathInfo* data object describes the multipathing policy
        configuration to determine the storage failover policies
        for a SCSI logical unit.
        
        The multipathing policy configuration operates on
        SCSI logical units and the paths to the logical units.
        
        Multipath policy configuration is only possible on storage devices
        provided by the native multipathing plug-store plugin. Storage devices
        using the native multipathing storage plugin will have an entry
        in this data object. Storage devices provided by a different
        storage plugin will not appear in the inventory represented by
        this data object.
        
        Legacy note: In hosts where *HostMultipathStateInfo* is not
        defined or does not exist on the *HostStorageDeviceInfo* object,
        only native multipathing exists. That means for these hosts, the
        MultipathInfo object contains the complete set of LUNs and paths on the LUNs
        available on the host.
      properties:
        lun:
          description: |2
            List of logical units that can be configured for multipathing.
          type: array
          items:
            $ref: '#/components/schemas/HostMultipathInfoLogicalUnit'
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostMultipathInfo:
      type: object
      description: |2
        A boxed array of *HostMultipathInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostMultipathInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostMultipathInfoFixedLogicalUnitPolicy:
      type: object
      description: |2
        The *HostMultipathInfoFixedLogicalUnitPolicy* data object
        describes a multipathing policy for a logical unit which uses
        a preferred path whenever possible.
      properties:
        prefer:
          description: |2
            Preferred path used for the **fixed** policy.
          type: string
      required:
        - prefer
      allOf:
        - $ref: '#/components/schemas/HostMultipathInfoLogicalUnitPolicy'

    ArrayOfHostMultipathInfoFixedLogicalUnitPolicy:
      type: object
      description: |2
        A boxed array of *HostMultipathInfoFixedLogicalUnitPolicy*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostMultipathInfoFixedLogicalUnitPolicy'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostMultipathInfoHppLogicalUnitPolicy:
      type: object
      description: |2
        The *HostMultipathInfoHppLogicalUnitPolicy* data object
        describes a multipathing policy for a HPP claimed logical unit and
        its configuration.
      properties:
        bytes:
          description: |2
            Byte count on the paths will be used as criteria to switch path
            for the device.
            
            Allowed values 1 to (100\*1024\*1024)
            Default Value 10\*1024\*1024
          type: integer
          format: int64
        iops:
          description: |2
            IOPS count on the paths will be used as criteria to switch path
            for the device.
            
            Allowed values 1 to 10000
            Default Value 1000
          type: integer
          format: int64
        path:
          description: |2
            The preferred path for the given device.
            
            If no prefered path is specified by the user, algorithem at ESX
            side will choose the random possible path.
          type: string
        latencyEvalTime:
          description: |2
            This value can control at what interval (in ms) the latency of
            paths should be evaluated.
            
            Allowed values 10000 to (300 \* 1000) in ms
            Default Value 30 \* 1000
          type: integer
          format: int64
        samplingIosPerPath:
          description: |2
            This value will control how many sample IOs should be issued on
            each path to calculate latency of the path.
            
            Allowed values 16 to 160
            Default Value 16
          type: integer
          format: int64
      allOf:
        - $ref: '#/components/schemas/HostMultipathInfoLogicalUnitPolicy'

    ArrayOfHostMultipathInfoHppLogicalUnitPolicy:
      type: object
      description: |2
        A boxed array of *HostMultipathInfoHppLogicalUnitPolicy*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostMultipathInfoHppLogicalUnitPolicy'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostMultipathInfoLogicalUnit:
      type: object
      description: |2
        The *HostMultipathInfoLogicalUnit* data object
        represents a storage entity that provides disk blocks to a host.
      properties:
        key:
          description: |2
            Linkable identifier.
          type: string
        id:
          description: |2
            Identifier of LogicalUnit.
            
            Use this id to configure LogicalUnit multipathing policy using *HostStorageSystem.SetMultipathLunPolicy*.
          type: string
        lun:
          description: |2
            SCSI device corresponding to logical unit.
          $ref: '#/components/schemas/ScsiLun'
        path:
          description: |2
            Array of paths available to access this LogicalUnit.
          type: array
          items:
            $ref: '#/components/schemas/HostMultipathInfoPath'
        policy:
          description: |2
            Policy that the logical unit should use when selecting a path.
          $ref: '#/components/schemas/HostMultipathInfoLogicalUnitPolicy'
        storageArrayTypePolicy:
          description: |2
            Policy used to determine how a storage device is accessed.
            
            This policy
            is currently immutable.
          $ref: '#/components/schemas/HostMultipathInfoLogicalUnitStorageArrayTypePolicy'
      required:
        - key
        - id
        - lun
        - path
        - policy
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostMultipathInfoLogicalUnit:
      type: object
      description: |2
        A boxed array of *HostMultipathInfoLogicalUnit*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostMultipathInfoLogicalUnit'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostMultipathInfoLogicalUnitPolicy:
      type: object
      description: |2
        The *HostMultipathInfoLogicalUnitPolicy* data object
        describes a path selection policy for a device.
        
        This policy determines
        how paths should be utilized when accessing a device.
      properties:
        policy:
          description: |2
            String representing the path selection policy for a device.
            
            Use one of the following
            strings:
            For NMP plugin
            - <code>VMW\_PSP\_FIXED</code> - Use a preferred path whenever possible.
            - <code>VMW\_PSP\_RR</code> - Load balance.
            - <code>VMW\_PSP\_MRU</code> - Use the most recently used path.
              
            For HPP plugin
            - <code>FIXED</code> - Use a preferred path whenever possible.
            - <code>LB-RR</code> - Load Balance - round robin.
            - <code>LB-IOPS</code> - Load Balance - iops.
            - <code>LB-BYTES</code> - Load Balance - bytes.
            - <code>LB--Latency</code> - Load balance - least latency.
              
            You can also use the
            *HostStorageSystem.QueryPathSelectionPolicyOptions* method
            to retrieve the set of valid strings.
            Use the key from the resulting structure
            *HostPathSelectionPolicyOption*.
          type: string
      required:
        - policy
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostMultipathInfoLogicalUnitPolicy:
      type: object
      description: |2
        A boxed array of *HostMultipathInfoLogicalUnitPolicy*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostMultipathInfoLogicalUnitPolicy'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostMultipathInfoLogicalUnitStorageArrayTypePolicy:
      type: object
      description: |2
        The *HostMultipathInfoLogicalUnitStorageArrayTypePolicy*
        data object describes a storage array type policy for
        for a device.
        
        This policy determines how device I/O and management
        is performed.
      properties:
        policy:
          description: |2
            String indicating the storage array type policy.
          type: string
      required:
        - policy
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostMultipathInfoLogicalUnitStorageArrayTypePolicy:
      type: object
      description: |2
        A boxed array of *HostMultipathInfoLogicalUnitStorageArrayTypePolicy*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostMultipathInfoLogicalUnitStorageArrayTypePolicy'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostMultipathInfoPath:
      type: object
      description: |2
        The *HostMultipathInfoPath* data object
        is a storage entity that represents a topological path from a
        host bus adapter to a SCSI logical unit.
        
        Each path is unique although each
        host bus adapter/SCSI logical unit pair can have multiple paths.
        
        Path objects are identified by a key. The specifics of how
        the key is formatted are dependent on the implementation. Example
        implementations include using strings like "vmhba1:0:0:0".
      properties:
        key:
          description: |2
            Identifier of the path.
          type: string
        name:
          description: |2
            Name of path.
            
            Use this name to configure LogicalUnit multipathing policy using *HostStorageSystem.EnableMultipathPath* and *HostStorageSystem.DisableMultipathPath*.
          type: string
        pathState:
          deprecated: true
          description: |2
            Deprecated as of VI API 4.0:
            - System reported path states are available in *HostMultipathInfoPath.state*.
            - Paths slated for I/O can be found using *HostMultipathInfoPath.isWorkingPath*.
            
            State of the path.
            
            Must be one of the values of
            *MultipathState_enum*
            <dl>
            <dt>active</dt>
            <dd>Path can be used for I/O and is currently a working path.</dd>
            <dt>standby</dt>
            <dd>Path can be used for I/O but is not a working path or can be
            used if active paths fail.</dd>
            <dt>disabled</dt>
            <dd>Path has been administratively disabled.</dd>
            <dt>dead</dt>
            <dd>Path cannot be used for I/O.</dd>
            <dt>unknown</dt>
            <dd>Path is in unknown error state.</dd>
            </dl>
          type: string
        state:
          description: |2
            System-reported state of the path.
            
            Must be one of the values of
            *MultipathState_enum*
            <dl>
            <dt>active</dt>
            <dd>Path can be used for I/O.</dd>
            <dt>standby</dt>
            <dd>Path can be used for I/O if active paths fail.</dd>
            <dt>disabled</dt>
            <dd>Path has been administratively disabled.</dd>
            <dt>dead</dt>
            <dd>Path cannot be used for I/O.</dd>
            <dt>unknown</dt>
            <dd>Path is in unknown error state.</dd>
            </dl>
          type: string
        isWorkingPath:
          description: |2
            A path, managed by a given path selection policy(psp) plugin, is
            denoted to be a Working Path if the psp plugin is likely to select the
            path for performing I/O in the near future.
          type: boolean
        adapter:
          description: |2
            The host bus adapter at one endpoint of this path.
          $ref: '#/components/schemas/HostHostBusAdapter'
        lun:
          description: |2
            The logical unit at one endpoint of this path.
          $ref: '#/components/schemas/HostMultipathInfoLogicalUnit'
        transport:
          description: |2
            Transport information for the target end of the path.
          $ref: '#/components/schemas/HostTargetTransport'
      required:
        - key
        - name
        - pathState
        - adapter
        - lun
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostMultipathInfoPath:
      type: object
      description: |2
        A boxed array of *HostMultipathInfoPath*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostMultipathInfoPath'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostMultipathStateInfo:
      type: object
      description: |2
        This data object type describes the state of storage paths on the host.
        
        All storage paths on the host are enumerated in this data object.
        
        The reason all path state information is encapsulated in this data
        object is because the path may actively change. This data object
        ensures that a request to gather path state changes only needs to
        fetch this data object.
      properties:
        path:
          description: |2
            List of paths on the system and their path states.
          type: array
          items:
            $ref: '#/components/schemas/HostMultipathStateInfoPath'
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostMultipathStateInfo:
      type: object
      description: |2
        A boxed array of *HostMultipathStateInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostMultipathStateInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostMultipathStateInfoPath:
      type: object
      description: |2
        Data object indicating state of storage path for a named path.
      properties:
        name:
          description: |2
            Name of path.
            
            Use this name to enable or disable storage paths *HostStorageSystem.EnableMultipathPath* and *HostStorageSystem.DisableMultipathPath*.
            
            In addition to being the identifier for the path state
            operations, the name is used to correlate this object to the
            corresponding Path object in other contexts.
            
            See also *HostPlugStoreTopologyPath.name*.
          type: string
        pathState:
          description: |2
            The state of the path.
            
            Must be one of the values of
            *MultipathState_enum*.
          type: string
      required:
        - name
        - pathState
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostMultipathStateInfoPath:
      type: object
      description: |2
        A boxed array of *HostMultipathStateInfoPath*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostMultipathStateInfoPath'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    NasDatastoreInfo:
      type: object
      description: |2
        Information details about a network-attached storage
        (NAS) datastore.
      properties:
        nas:
          description: |2
            The NFS mount information for the datastore.
            
            May not
            be available when the datastore is not accessible.
          $ref: '#/components/schemas/HostNasVolume'
      allOf:
        - $ref: '#/components/schemas/DatastoreInfo'

    ArrayOfNasDatastoreInfo:
      type: object
      description: |2
        A boxed array of *NasDatastoreInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/NasDatastoreInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostNasVolume:
      type: object
      properties:
        remoteHost:
          description: |2
            The host that runs the NFS/CIFS server.
            
            Clients must plan to use remoteHostNames for both NFS v3
            as well as NFS v4.1 because this field remoteHost may be
            deprecated in future.
          type: string
        remotePath:
          description: |2
            The remote path of NFS/CIFS mount point.
          type: string
        userName:
          description: |2
            In case of CIFS, the user name used while connecting to the server.
          type: string
        remoteHostNames:
          description: |2
            This field will hold host names (or ip addresses) of all
            remote hosts configured for the datastore.
            
            In case of NFS v3 it will have one hostname which will be
            the same value as in remoteHost defined above.
            In case of NFS v4.1 if the NFS Client detects additional
            hostnames or ip addresses during its negotiations with the
            NFS server, those additional host names (connections) will be
            added to this list after the datastore is created.
            Addition of hostnames to this list is limited to MDS server host names
            or the IP addresses. In other words, the Data Server host names IP addresses
            will not be appended to this list.
          type: array
          items:
            type: string
        securityType:
          description: |2
            Security type the volume is currently using.
            
            See *HostNasVolumeSecurityType_enum*
          type: string
        protocolEndpoint:
          description: |2
            Indicates that this NAS volume is protocol endpoint.
            
            This
            property will be populated if and only if host supports
            VirtualVolume based Datastore. Check the host capability
            *HostCapability.virtualVolumeDatastoreSupported*.
            See *HostProtocolEndpoint*.
          type: boolean
      required:
        - remoteHost
        - remotePath
      allOf:
        - $ref: '#/components/schemas/HostFileSystemVolume'

    ArrayOfHostNasVolume:
      type: object
      description: |2
        A boxed array of *HostNasVolume*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostNasVolume'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostNasVolumeConfig:
      type: object
      description: |2
        This describes the NAS Volume configuration containing
        the configurable properties on a NAS Volume
      properties:
        changeOperation:
          description: |2
            Indicates the change operation to apply on this configuration
            specification.
            
            See also *HostConfigChangeOperation_enum*.
          type: string
        spec:
          description: |2
            The specification volume.
          $ref: '#/components/schemas/HostNasVolumeSpec'
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostNasVolumeConfig:
      type: object
      description: |2
        A boxed array of *HostNasVolumeConfig*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostNasVolumeConfig'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostNasVolumeSpec:
      type: object
      description: |2
        Specification for creating NAS volume.
        
        When mounting a NAS volume on multiple hosts, the same remoteHost and remotePath
        values should be used on every host, otherwise it will be treated as different
        datastores. For example, if one host references the remotePath of a NAS volume
        as "/mnt/mount1" and another references it as "/mnt/mount1/", it will not be
        recognized as the same datastore.
      properties:
        remoteHost:
          description: |2
            The host that runs the NFS v3 or CIFS server.
            
            For NFS v4.1
            and beyond use remoteHostNames defined later. The field remotehost
            may be deprecated in future for NFS, so clients should plan to use the
            property remoteHostNames to send in the host name(s) for both NFS v3
            and v4.1
          type: string
        remotePath:
          description: |2
            The remote path of the NFS mount point.
          type: string
        localPath:
          description: |2
            The localPath refers to the name of the NAS datastore to be created
            using this specification.
            
            In the case of ESX Server, the datastore name is a component in the
            file system path at which the NAS volume can be found. For example,
            if localPath is set to "nas\_volume" the created NAS datastore will be
            named "nas\_volume" and it can be accessed via the file system path
            "/vmfs/volumes/nas\_volume".
            
            In the case of VMware Server, the localPath will also be used as the
            datastore name, but the datastore name may not necessarily be
            reflected in the file system path where the NAS volume may be
            accessed.
          type: string
        accessMode:
          description: |2
            Access mode for the mount point.
            
            Mounting in read-write mode would be successful irregardless on
            how the mount point is exported or access permissions. For
            example, mounting a volume that is exported as read-only as
            readWrite will succeed. Hence, that a readWrite mount succeeds
            should not be taken as an indication that all files on a mount
            is writable.
            
            If a file system is mounted readOnly, the system cannot create
            or modify any files on the file system. This is mostly useful
            for storing ISO images and templates, since a virtual machine
            cannot be powered on from a readOnly volume.
            
            The access mode of a mounted NFS volume can be obtained at
            *HostMountInfo.accessMode*.
            
            See also *HostMountMode_enum*.
          type: string
        type:
          description: |2
            Specifies the type of the the NAS volume.
            
            Supported types are
            *CIFS*,
            *NFS*,
            *NFS41*
            If not specified, defaults to
            *NFS*
          type: string
        userName:
          description: |2
            If type is CIFS, the user name to use when connecting to the
            CIFS server.
            
            If type is NFS, this field will be ignored.
          type: string
        password:
          description: |2
            If type is CIFS, the password to use when connecting to the
            CIFS server.
            
            If type is NFS, this field will be ignored.
          type: string
          format: password
        remoteHostNames:
          description: |2
            Hostnames or IP addresses of remote NFS server.
            
            In case
            of NFS v4.1 this may have multiple entries. For NFS v3 the
            input should be same in both remoteHost and remoteHostNames.
            In case of NFS v4.1, if vmknic binding is enabled,
            then input can be in format {hostip1:vmknic1, hostip2:vmknic2}.
          type: array
          items:
            type: string
        securityType:
          description: |2
            Provided during mount indicating what security type,
            if any, to use
            See *HostNasVolumeSecurityType_enum*
          type: string
        vmknicToBind:
          description: |2
            Name of the vmknic to be used by this mount.
            
            This field will be updated by a client with vmknic that will be used
            for NAS volume mount operation for vmknic binding for NFSv3
            
            ***Since:*** vSphere API Release 8.0.1.0
          type: string
        vmknicBound:
          description: |2
            Indicates whether a client wants to bind this mount to vmknic.
            
            This field will be set to true by a client if vmknic should bind
            during NAS volume mount operation for NFSv3
            else it will be set to false
            
            ***Since:*** vSphere API Release 8.0.1.0
          type: boolean
        connections:
          description: |2
            Indicates the number of TCP connections for the particular
            NFSv3 Server during NAS volume mount operation.
            
            If unset or set to 0, it defaults to one connection
            
            ***Since:*** vSphere API Release 8.0.1.0
          type: integer
          format: int32
      required:
        - remoteHost
        - remotePath
        - localPath
        - accessMode
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostNasVolumeSpec:
      type: object
      description: |2
        A boxed array of *HostNasVolumeSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostNasVolumeSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostNasVolumeUserInfo:
      type: object
      description: |2
        NFS user authentication information
      properties:
        user:
          description: |2
            User name for authentication.
          type: string
      required:
        - user
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostNasVolumeUserInfo:
      type: object
      description: |2
        A boxed array of *HostNasVolumeUserInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostNasVolumeUserInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostNatService:
      type: object
      description: |2
        A network address translation (NAT) service instance provides
        firewall and network address translation services for a virtual
        network.
      properties:
        key:
          description: |2
            The instance ID of the NAT service.
          type: string
        spec:
          description: |2
            The configurable properties for the NatService object.
          $ref: '#/components/schemas/HostNatServiceSpec'
      required:
        - key
        - spec
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostNatService:
      type: object
      description: |2
        A boxed array of *HostNatService*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostNatService'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostNatServiceConfig:
      type: object
      description: |2
        This data object type describes the network address
        translation (NAT) service configuration
        representing both the configured properties
        on a NAT Service and identification information.
      properties:
        changeOperation:
          description: |2
            Indicates the change operation to apply on this configuration
            specification.
            
            See also *HostConfigChangeOperation_enum*.
          type: string
        key:
          description: |2
            The instance ID of the NAT service.
          type: string
        spec:
          description: |2
            The specification of the NAT service.
          $ref: '#/components/schemas/HostNatServiceSpec'
      required:
        - key
        - spec
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostNatServiceConfig:
      type: object
      description: |2
        A boxed array of *HostNatServiceConfig*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostNatServiceConfig'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostNatServiceNameServiceSpec:
      type: object
      description: |2
        This data object type specifies the information for the
        name servers.
      properties:
        dnsAutoDetect:
          description: |2
            The flag to indicate whether or not the DNS server should
            be automatically detected or specified explicitly.
          type: boolean
        dnsPolicy:
          description: |2
            The policy to use when multiple DNS addresses are available
            on the host.
          type: string
        dnsRetries:
          description: |2
            The number of retries before giving up on a DNS request
            from a virtual network.
          type: integer
          format: int32
        dnsTimeout:
          description: |2
            The time (in seconds) before retrying a DNS request to an external
            network.
          type: integer
          format: int32
        dnsNameServer:
          description: |2
            The list of DNS servers.
          type: array
          items:
            type: string
        nbdsTimeout:
          description: |2
            The time (in seconds) allotted for queries to the NetBIOS
            Datagram Server (NBDS).
          type: integer
          format: int32
        nbnsRetries:
          description: |2
            Number of retries for each query to the NBNS.
          type: integer
          format: int32
        nbnsTimeout:
          description: |2
            The time (in seconds) allotted for queries to the NBNS.
          type: integer
          format: int32
      required:
        - dnsAutoDetect
        - dnsPolicy
        - dnsRetries
        - dnsTimeout
        - nbdsTimeout
        - nbnsRetries
        - nbnsTimeout
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostNatServiceNameServiceSpec:
      type: object
      description: |2
        A boxed array of *HostNatServiceNameServiceSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostNatServiceNameServiceSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostNatServicePortForwardSpec:
      type: object
      description: |2
        This data object type describes the
        Network Address Translation (NAT) port forwarding specification.
      properties:
        type:
          description: |2
            Either "tcp" or "udp".
          type: string
        name:
          description: |2
            The user-defined name to identify the service being forwarded.
            
            No white spaces are allowed in the string.
          type: string
        hostPort:
          description: |2
            The port number on the host.
            
            Network traffic sent to the host on this
            TCP/UDP port is forwarded to the guest at the specified IP address
            and port.
          type: integer
          format: int32
        guestPort:
          description: |2
            The port number for the guest.
            
            Network traffic from the host is
            forwarded to this port.
          type: integer
          format: int32
        guestIpAddress:
          description: |2
            The IP address for the guest.
            
            Network traffic from the host is
            forwarded to this IP address.
          type: string
      required:
        - type
        - name
        - hostPort
        - guestPort
        - guestIpAddress
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostNatServicePortForwardSpec:
      type: object
      description: |2
        A boxed array of *HostNatServicePortForwardSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostNatServicePortForwardSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostNatServiceSpec:
      type: object
      description: |2
        This data object type provides the details about the
        Network Address Translation (NAT) service.
      properties:
        virtualSwitch:
          description: |2
            The name of the virtual switch to which nat service is connected.
          type: string
        activeFtp:
          description: |2
            The flag to indicate whether or not non-passive mode FTP
            connections should be allowed.
          type: boolean
        allowAnyOui:
          description: |2
            The flag to indicate whether or not the NAT
            Service allows media access control traffic from any
            Organizational Unique Identifier (OUI)?
            By default, it does not allow traffic that originated
            from the host to avoid packet loops.
          type: boolean
        configPort:
          description: |2
            The flag to indicate whether or not the NAT Service
            should open a configuration port.
          type: boolean
        ipGatewayAddress:
          description: |2
            The IP address that the NAT Service should use on
            the virtual network.
          type: string
        udpTimeout:
          description: |2
            The time allotted for UDP packets.
          type: integer
          format: int32
        portForward:
          description: |2
            The port forwarding specifications to allow network
            connections to be initiated from outside the firewall.
          type: array
          items:
            $ref: '#/components/schemas/HostNatServicePortForwardSpec'
        nameService:
          description: |2
            The configuration of naming services.
            
            These parameters are
            specific to Windows.
          $ref: '#/components/schemas/HostNatServiceNameServiceSpec'
      required:
        - virtualSwitch
        - activeFtp
        - allowAnyOui
        - configPort
        - ipGatewayAddress
        - udpTimeout
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostNatServiceSpec:
      type: object
      description: |2
        A boxed array of *HostNatServiceSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostNatServiceSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostNetCapabilities:
      type: object
      description: |2
        Capability vector indicating the available product features.
      properties:
        canSetPhysicalNicLinkSpeed:
          description: |2
            The flag to indicate whether or not a physical network
            adapter's link speed and duplex settings can be changed through
            this API.
            
            For a hosted product, the host uses its physical network
            adapters for network connectivity. Configuration of link speed is
            done through regular host operations. In ESX Server, the configuration
            can be changed through this API.
          type: boolean
        supportsNicTeaming:
          description: |2
            The flag to indicate whether or not network adapter teaming is
            available.
            
            Multiple network adapters can be bridged to a
            virtual switch through a BondBridge. Also, network adapter teaming
            policies such as failover order and detection are enabled.
          type: boolean
        nicTeamingPolicy:
          description: |2
            The available teaming policies if the platform supports network
            adapter teaming.
          type: array
          items:
            type: string
        supportsVlan:
          description: |2
            The flag to indicate whether or not VLANs can be configured on
            PortGroups attached to VirtualSwitch objects.
            
            This allows VLANs for virtual machines without requiring special VLAN
            capable hardware switches.
          type: boolean
        usesServiceConsoleNic:
          description: |2
            The flag to indicate whether or not a service
            console network adapter
            is used or required.
            
            This means that the system
            software has two TCP/IP stacks. As a result, at least two types of
            VirtualNics may be created -- the normal VirtualNic and the service
            console VirtualNic. If this is not set, then only the VirtualNic type is
            supported.
          type: boolean
        supportsNetworkHints:
          description: |2
            The flag to indicate whether or not the host is able
            to support
            the querying of network hints.
          type: boolean
        maxPortGroupsPerVswitch:
          description: |2
            The maximum number of port groups supported per virtual switch.
            
            This property will not be set if this value is unlimited.
          type: integer
          format: int32
        vswitchConfigSupported:
          description: |2
            The flag to indicate whether virtual switch configuration is
            supported.
            
            This means that operations to add, remove, update virtual
            switches are supported.
          type: boolean
        vnicConfigSupported:
          description: |2
            The flag to indicate whether Virtual NIC configuration is supported.
            
            This means that operations to add, remove, update virtualNic are
            supported.
          type: boolean
        ipRouteConfigSupported:
          description: |2
            The flag to indicate whether ip route configuration for the host
            is supported.
          type: boolean
        dnsConfigSupported:
          description: |2
            The flag to indicate whether DNS configuration for the host is
            supported.
          type: boolean
        dhcpOnVnicSupported:
          description: |2
            This flag indicates whether or not the host is able to support
            dhcp configuration for vnics.
          type: boolean
        ipV6Supported:
          description: |2
            The flag to indicate whether the host is capable of communicating
            using ipv6 protocol
          type: boolean
        backupNfcNiocSupported:
          description: |2
            The flag to indicate whether the host supports Backup NFC NIOC system
            traffic, Unset means Backup NFC NIOC system traffic is not supported.
            
            ***Since:*** vSphere API Release 7.0.1.0
          type: boolean
      required:
        - canSetPhysicalNicLinkSpeed
        - supportsNicTeaming
        - supportsVlan
        - usesServiceConsoleNic
        - supportsNetworkHints
        - vswitchConfigSupported
        - vnicConfigSupported
        - ipRouteConfigSupported
        - dnsConfigSupported
        - dhcpOnVnicSupported
        - ipV6Supported
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostNetCapabilities:
      type: object
      description: |2
        A boxed array of *HostNetCapabilities*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostNetCapabilities'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostNetOffloadCapabilities:
      type: object
      deprecated: true
      description: |2
        Deprecated as of VI API 4.0, the system defaults will be used.
        
        Offload capabilities are used to optimize virtual machine network
        performance.
        
        When a virtual machine is transmitting on a network,
        some operations can be offloaded either to the host or to physical
        hardware. This data object type defines the set of offload capabilities
        that may be available on a host.
        
        This data object type is used both to publish the list of offload capabilities
        and to contain offload capability policy settings. The network
        policy logic is built on a two-level inheritance scheme which
        requires that all settings be optional. As a result, all properties
        on the NetOffloadCapabilities object must be optional.
        
        See also *HostNetworkPolicy*.
      properties:
        csumOffload:
          description: |2
            (Optional) The flag to indicate whether or not checksum
            offloading is supported.
          type: boolean
        tcpSegmentation:
          description: |2
            (Optional) The flag to indicate whether or not TCP segmentation
            offloading (TSO) is supported.
          type: boolean
        zeroCopyXmit:
          description: |2
            (Optional) The flag to indicate whether or not zero copy
            transmits are supported.
          type: boolean
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostNetOffloadCapabilities:
      type: object
      description: |2
        A boxed array of *HostNetOffloadCapabilities*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostNetOffloadCapabilities'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostNetStackInstance:
      type: object
      description: |2
        This class describes Network Stack Instance configuration
      properties:
        key:
          description: |2
            Key of instance
            For instance which created by host, its value should be *HostNetStackInstanceSystemStackKey_enum*.
          type: string
        name:
          description: |2
            The display name
          type: string
        dnsConfig:
          description: |2
            DNS configuration
          $ref: '#/components/schemas/HostDnsConfig'
        ipRouteConfig:
          description: |2
            IP Route configuration
          $ref: '#/components/schemas/HostIpRouteConfig'
        requestedMaxNumberOfConnections:
          description: |2
            The maximum number of socket connection that are requested on this instance
          type: integer
          format: int32
        congestionControlAlgorithm:
          description: |2
            The TCP congest control algorithm used by this instance,
            See *HostNetStackInstanceCongestionControlAlgorithmType_enum* for valid values.
          type: string
        ipV6Enabled:
          description: |2
            Enable or disable IPv6 protocol on this stack instance.
            
            This property is not supported currently.
          type: boolean
        routeTableConfig:
          $ref: '#/components/schemas/HostIpRouteTableConfig'
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostNetStackInstance:
      type: object
      description: |2
        A boxed array of *HostNetStackInstance*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostNetStackInstance'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostNetworkConfig:
      type: object
      description: |2
        This data object type describes networking host configuration data objects.
        
        These objects contain only the configuration information for networking.
        The runtime information is available from the
        *NetworkInfo* data object type.
        
        See also *HostNetworkInfo*.
      properties:
        vswitch:
          description: |2
            Virtual switches configured on the host.
          type: array
          items:
            $ref: '#/components/schemas/HostVirtualSwitchConfig'
        proxySwitch:
          description: |2
            Host proxy switches configured on the host.
          type: array
          items:
            $ref: '#/components/schemas/HostProxySwitchConfig'
        portgroup:
          description: |2
            Port groups configured on the host.
          type: array
          items:
            $ref: '#/components/schemas/HostPortGroupConfig'
        pnic:
          description: |2
            Physical network adapters as seen by the primary operating system.
          type: array
          items:
            $ref: '#/components/schemas/PhysicalNicConfig'
        vnic:
          description: |2
            Virtual network adapters configured for use by the host
            operating system network adapter.
          type: array
          items:
            $ref: '#/components/schemas/HostVirtualNicConfig'
        consoleVnic:
          description: |2
            Virtual network adapters configured for use by the Service
            Console.
          type: array
          items:
            $ref: '#/components/schemas/HostVirtualNicConfig'
        dnsConfig:
          deprecated: true
          description: |2
            Deprecated as of vSphere API 5.5, which is moved to
            the default NetStackInstance.
            
            Client-side DNS configuration for the host.
            
            The DNS configuration is
            global to the entire host.
          $ref: '#/components/schemas/HostDnsConfig'
        ipRouteConfig:
          deprecated: true
          description: |2
            Deprecated as of vSphere API 5.5, which is moved to
            the default NetStackInstance.
            
            IP route configuration of the host.
          $ref: '#/components/schemas/HostIpRouteConfig'
        consoleIpRouteConfig:
          description: |2
            IP route configuration of the service console.
          $ref: '#/components/schemas/HostIpRouteConfig'
        routeTableConfig:
          deprecated: true
          description: |2
            Deprecated as of vSphere API 5.5, which is moved to
            the default NetStackInstance.
            
            IP routing table configuration of the host.
          $ref: '#/components/schemas/HostIpRouteTableConfig'
        dhcp:
          description: |2
            Dynamic Host Control Protocol (DHCP) Service instances configured
            on the host.
          type: array
          items:
            $ref: '#/components/schemas/HostDhcpServiceConfig'
        nat:
          description: |2
            Network address translation (NAT) Service instances configured
            on the host.
          type: array
          items:
            $ref: '#/components/schemas/HostNatServiceConfig'
        ipV6Enabled:
          description: |2
            Enable or disable IPv6 protocol on this system.
            
            This property must be set by itself, no other property can accompany
            this change. Following the successful change, the system should be rebooted to
            have the change take effect.
          type: boolean
        netStackSpec:
          description: |2
            The list of network stack instance spec
          type: array
          items:
            $ref: '#/components/schemas/HostNetworkConfigNetStackSpec'
        migrationStatus:
          description: |2
            Current status of NVDS to VDS migration.
            
            See *HostNetworkConfig*.*HostNetworkConfigMigrationStatus_enum*
            for supported values.
            
            ***Since:*** vSphere API Release 7.0.2.0
          type: string
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostNetworkConfig:
      type: object
      description: |2
        A boxed array of *HostNetworkConfig*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostNetworkConfig'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostNetworkConfigNetStackSpec:
      type: object
      description: |2
        This data type describes Network Stack Spec
      properties:
        netStackInstance:
          description: |2
            Network stack instance
          $ref: '#/components/schemas/HostNetStackInstance'
        operation:
          description: |2
            Operation type, see
            *ConfigSpecOperation_enum* for valid values.
            
            Only edit operation is supported currently.
          type: string
      required:
        - netStackInstance
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostNetworkConfigNetStackSpec:
      type: object
      description: |2
        A boxed array of *HostNetworkConfigNetStackSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostNetworkConfigNetStackSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostNetworkConfigResult:
      type: object
      description: |2
        The result returned by updateNetworkConfig call.
        
        See also *HostNetworkSystem.UpdateNetworkConfig*.
      properties:
        vnicDevice:
          description: |2
            Virtual network adapter keys.
          type: array
          items:
            type: string
        consoleVnicDevice:
          description: |2
            Service console virtual network adapter keys.
          type: array
          items:
            type: string
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostNetworkConfigResult:
      type: object
      description: |2
        A boxed array of *HostNetworkConfigResult*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostNetworkConfigResult'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostNetworkInfo:
      type: object
      description: |2
        This data object type describes networking host
        configuration data objects.
      properties:
        vswitch:
          description: |2
            Virtual switches configured on the host.
          type: array
          items:
            $ref: '#/components/schemas/HostVirtualSwitch'
        proxySwitch:
          description: |2
            Proxy switches configured on the host.
          type: array
          items:
            $ref: '#/components/schemas/HostProxySwitch'
        portgroup:
          description: |2
            Port groups configured on the host.
          type: array
          items:
            $ref: '#/components/schemas/HostPortGroup'
        pnic:
          description: |2
            Physical network adapters as seen by the primary operating system.
          type: array
          items:
            $ref: '#/components/schemas/PhysicalNic'
        rdmaDevice:
          description: |2
            Remote direct memory access devices, if any are present on the host.
          type: array
          items:
            $ref: '#/components/schemas/HostRdmaDevice'
        vnic:
          description: |2
            Virtual network adapters configured on the host (hosted products)
            or the vmkernel.
            
            In the hosted architecture, these network adapters are used by the
            host to
            communicate with the virtual machines running on that host. In the
            VMkernel architecture, these virtual network adapters provide the
            ESX Server with
            external network access through a virtual switch that is bridged to a
            physical network adapter. The VMkernel uses these network adapters
            for features such as VMotion, NAS, iSCSI, and remote MKS connections.
          type: array
          items:
            $ref: '#/components/schemas/HostVirtualNic'
        consoleVnic:
          description: |2
            Virtual network adapters configured for use by the service console.
            
            The service
            console uses this network access for system management and bootstrapping
            services like network boot.
            The two sets of virtual network adapters are mutually exclusive.
            A virtual network adapter
            in this list cannot be used for things like VMotion. Likewise, a
            virtual network adapter in the other list cannot be used by the
            service console.
          type: array
          items:
            $ref: '#/components/schemas/HostVirtualNic'
        dnsConfig:
          deprecated: true
          description: |2
            Deprecated as of vSphere API 5.5, which is moved to
            each NetStackInstance. For this property in NetworkInfo,
            Get operation will only return its value of default NetStackInstance.
            
            Client-side DNS configuration.
          $ref: '#/components/schemas/HostDnsConfig'
        ipRouteConfig:
          deprecated: true
          description: |2
            Deprecated as of vSphere API 5.5, which is moved to
            each NetStackInstance. For this property in NetworkInfo,
            Get operation will only return its value of default NetStackInstance.
            
            IP route configuration.
          $ref: '#/components/schemas/HostIpRouteConfig'
        consoleIpRouteConfig:
          description: |2
            IP route configuration of the service console.
          $ref: '#/components/schemas/HostIpRouteConfig'
        routeTableInfo:
          deprecated: true
          description: |2
            Deprecated as of vSphere API 5.5, which is moved to
            each NetStackInstance. For this property in NetworkInfo,
            Get operation will only return its value of default NetStackInstance.
            
            IP routing table
          $ref: '#/components/schemas/HostIpRouteTableInfo'
        dhcp:
          description: |2
            DHCP Service instances configured on the host.
          type: array
          items:
            $ref: '#/components/schemas/HostDhcpService'
        nat:
          description: |2
            NAT service instances configured on the host.
          type: array
          items:
            $ref: '#/components/schemas/HostNatService'
        ipV6Enabled:
          description: |2
            Enable or disable IPv6 protocol on this system.
          type: boolean
        atBootIpV6Enabled:
          description: |2
            If true then dual IPv4/IPv6 stack enabled else IPv4 only.
          type: boolean
        netStackInstance:
          description: |2
            List of NetStackInstances
          type: array
          items:
            $ref: '#/components/schemas/HostNetStackInstance'
        opaqueSwitch:
          description: |2
            List of opaque switches configured on the host.
          type: array
          items:
            $ref: '#/components/schemas/HostOpaqueSwitch'
        opaqueNetwork:
          description: |2
            List of opaque networks
          type: array
          items:
            $ref: '#/components/schemas/HostOpaqueNetworkInfo'
        nsxTransportNodeId:
          description: |2
            The nsx transport node Id
          type: string
        nvdsToVdsMigrationRequired:
          description: |2
            Whether NSX N-VDS to VDS migration is required
            
            ***Since:*** vSphere API Release 7.0.2.0
          type: boolean
        migrationStatus:
          description: |2
            Current status of NVDS to VDS migration.
            
            See *HostNetworkConfig*.*HostNetworkConfigMigrationStatus_enum*
            for supported values.
            
            ***Since:*** vSphere API Release 7.0.2.0
          type: string
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostNetworkInfo:
      type: object
      description: |2
        A boxed array of *HostNetworkInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostNetworkInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostNetworkPolicy:
      type: object
      description: |2
        This data object type describes network policies that can be configured for
        both virtual switches and port groups.
        
        The policy settings on the
        port group can inherit policy settings from their containing virtual
        switch. These policy settings are inherited if
        the settings on the port group are not set. Since every policy
        setting on a port group is optional, every individual policy setting
        can be inherited.
        
        By contrast, if a host is capable of implementing a policy setting, every
        virtual switch has some value assigned to the policy setting. In this
        case, although all of the policy settings are optional,
        they always have some value either by inheritance or by direct
        setting.
        
        Policy settings are organized into policy groups such as SecurityPolicy.
        Policy groups are optional since it is possible that a host may not implement
        such policies. If a host does not support a policy group, the policy group
        is not set on both the virtual switches and the port groups.
        
        See also *HostNetCapabilities*.
      properties:
        security:
          description: |2
            The security policy governing ports on this virtual switch.
          $ref: '#/components/schemas/HostNetworkSecurityPolicy'
        nicTeaming:
          description: |2
            The network adapter teaming policy.
            
            The bridge must be BondBridge
            for this property to be valid.
          $ref: '#/components/schemas/HostNicTeamingPolicy'
        offloadPolicy:
          deprecated: true
          description: |2
            Deprecated as of VI API 4.0, the system defaults will be used.
            
            Offload capabilities are used to optimize virtual machine network
            performance.
            
            When a virtual machine is transmitting on a network,
            some operations can be offloaded to either the host or the physical
            hardware. This policy indicates what networking related operations
            should be offloaded.
            
            All virtual machines using this PortGroup are subject to this
            policy. There is no setting for an individual virtual machine
            to determine if an operation should be offloaded.
          $ref: '#/components/schemas/HostNetOffloadCapabilities'
        shapingPolicy:
          description: |2
            The traffic shaping policy.
          $ref: '#/components/schemas/HostNetworkTrafficShapingPolicy'
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostNetworkPolicy:
      type: object
      description: |2
        A boxed array of *HostNetworkPolicy*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostNetworkPolicy'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostNicFailureCriteria:
      type: object
      description: |2
        This data object type describes the network adapter failover
        detection algorithm for a network adapter team.
      properties:
        checkSpeed:
          deprecated: true
          description: |2
            Deprecated as of VI API 5.1, this property is not supported.
            
            To use link speed as the criteria, _checkSpeed_ must be one of
            the following values:
            - **exact**: Use exact speed to detect link failure.
              **speed** is the configured exact speed in megabits per second.
            - **minimum**: Use minimum speed to detect failure.
              **speed** is the configured minimum speed in megabits per second.
            - **empty string**: Do not use link speed to detect failure.
              **speed** is unused in this case.
          type: string
        speed:
          deprecated: true
          description: |2
            Deprecated as of VI API 5.1, this property is not supported.
            
            Speed.
            
            See also *HostNicFailureCriteria.checkSpeed*.
          type: integer
          format: int32
        checkDuplex:
          deprecated: true
          description: |2
            Deprecated as of VI API 5.1, this property is not supported.
            
            The flag to indicate whether or not to use the link duplex reported
            by the driver as link selection criteria.
            
            If **checkDuplex** is true, then fullDuplex is the configured
            duplex mode. The link is considered bad if the link duplex reported
            by driver is not the same as fullDuplex.
            
            If **checkDuplex** is false, then fullDuplex is unused, and
            link duplexity is not used as a detection method.
          type: boolean
        fullDuplex:
          deprecated: true
          description: |2
            Deprecated as of VI API 5.1, this property is not supported.
            
            Full duplex.
            
            See also *HostNicFailureCriteria.checkDuplex*.
          type: boolean
        checkErrorPercent:
          deprecated: true
          description: |2
            Deprecated as of VI API 5.1, this property is not supported.
            
            The flag to indicate whether or not to use link error percentage
            to detect failure.
            
            If **checkErrorPercent** is true, then percentage is the configured
            error percentage that is tolerated. The link is considered bad
            if error rate exceeds percentage.
            
            If **checkErrorPercent** is false, percentage is unused, and
            error percentage is not used as a detection method.
          type: boolean
        percentage:
          deprecated: true
          description: |2
            Deprecated as of VI API 5.1, this property is not supported.
            
            Percentage.
            
            See also *HostNicFailureCriteria.checkErrorPercent*.
          type: integer
          format: int32
        checkBeacon:
          description: |2
            The flag to indicate whether or not to enable this property to
            enable beacon probing as a method to validate
            the link status of a physical network adapter.
            
            **checkBeacon** can be enabled only if the VirtualSwitch has been
            configured to use the beacon. Attempting to set **checkBeacon**
            on a PortGroup or VirtualSwitch that does not have beacon probing
            configured for the applicable VirtualSwitch results in an error.
            
            See also *HostVirtualSwitchBondBridge.beacon*, *HostVirtualSwitchBeaconConfig*.
          type: boolean
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostNicFailureCriteria:
      type: object
      description: |2
        A boxed array of *HostNicFailureCriteria*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostNicFailureCriteria'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostNicOrderPolicy:
      type: object
      description: |2
        This data object type describes network adapter ordering policy for a
        network adapter team.
        
        A physical network adapter can be in the active
        list, the standby list, or neither. It cannot be in both lists.
        For a virtual switch, the NicOrderPolicy property is never null when
        retrieved from the server. When creating a new virtual switch or
        updating an existing virtual switch, the NicOrderPolicy can be null,
        in which case the default NicOrderPolicy from the server will be
        used.
        For a portgroup, a null NicOrderPolicy property means the portgroup
        inherits the policy from its parent. Otherwise, the NicOrderPolicy
        property defined in the portgroup takes precedence.
        In all cases where the NicOrderPolicy property is set, an empty
        activeNic array means there are no active Ethernet adapters in the team. An
        empty standbyNic array means there are no standby Ethernet adapters.
      properties:
        activeNic:
          description: |2
            List of active network adapters used for load balancing.
          type: array
          items:
            type: string
        standbyNic:
          description: |2
            Standby network adapters used for failover.
          type: array
          items:
            type: string
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostNicOrderPolicy:
      type: object
      description: |2
        A boxed array of *HostNicOrderPolicy*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostNicOrderPolicy'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostNicTeamingPolicy:
      type: object
      description: |2
        Policy for a network adapter team.
      properties:
        policy:
          description: |2
            Network adapter teaming policy includes failover and load balancing,
            It can be one of the following:
            - **loadbalance\_ip**: route based on ip hash.
            - **loadbalance\_srcmac**: route based on source MAC hash.
            - **loadbalance\_srcid**: route based on the source of the port ID.
            - **failover\_explicit**: use explicit failover order.
              
            See also *HostNetCapabilities.nicTeamingPolicy*.
          type: string
        reversePolicy:
          deprecated: true
          description: |2
            Deprecated as of VI API 5.1, the system default (true) will be used.
            
            The flag to indicate whether or not the teaming policy is applied
            to inbound frames as well.
            
            For example, if the policy is explicit failover, a broadcast request goes
            through uplink1 and comes back through uplink2. Then if the
            reverse policy is set, the frame is dropped when it is
            received from
            uplink2. This reverse policy is useful to prevent the virtual machine
            from getting reflections.
          type: boolean
        notifySwitches:
          description: |2
            Flag to specify whether or not to notify the physical switch
            if a link fails.
            
            If this property is true, ESX Server will
            respond to the failure by sending a RARP packet from a different
            physical adapter, causing the switch to update its cache.
          type: boolean
        rollingOrder:
          description: |2
            The flag to indicate whether or not to use a rolling policy when
            restoring links.
            
            For example, assume the explicit link order is
            (vmnic9, vmnic0), therefore vmnic9 goes down, vmnic0 comes
            up. However, when vmnic9 comes backup, if rollingOrder is set
            to be true, vmnic0 continues to be used, otherwise, vmnic9
            is restored as specified in the explicitly order.
          type: boolean
        failureCriteria:
          description: |2
            Failover detection policy for this network adapter team.
            
            The bridge must be BondBridge for this property to be valid.
          $ref: '#/components/schemas/HostNicFailureCriteria'
        nicOrder:
          description: |2
            Failover order policy for network adapters on this switch.
            
            The bridge must be BondBridge for this property to be valid.
          $ref: '#/components/schemas/HostNicOrderPolicy'
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostNicTeamingPolicy:
      type: object
      description: |2
        A boxed array of *HostNicTeamingPolicy*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostNicTeamingPolicy'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostNetworkSecurityPolicy:
      type: object
      description: |2
        This data object type describes security policy governing ports.
      properties:
        allowPromiscuous:
          description: |2
            The flag to indicate whether or not all traffic is seen
            on the port.
          type: boolean
        macChanges:
          description: |2
            The flag to indicate whether or not the Media Access
            Control (MAC) address can be changed.
          type: boolean
        forgedTransmits:
          description: |2
            The flag to indicate whether or not the virtual network adapter
            should be allowed to send network traffic with a different MAC
            address than that of the virtual network adapter.
          type: boolean
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostNetworkSecurityPolicy:
      type: object
      description: |2
        A boxed array of *HostNetworkSecurityPolicy*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostNetworkSecurityPolicy'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostNetworkTrafficShapingPolicy:
      type: object
      description: |2
        This data object type describes traffic shaping policy.
      properties:
        enabled:
          description: |2
            The flag to indicate whether or not traffic shaper is enabled on
            the port.
          type: boolean
        averageBandwidth:
          description: |2
            The average bandwidth in bits per second if shaping is enabled on
            the port.
          type: integer
          format: int64
        peakBandwidth:
          description: |2
            The peak bandwidth during bursts in bits per second if traffic
            shaping is enabled on the port.
          type: integer
          format: int64
        burstSize:
          description: |2
            The maximum burst size allowed in bytes if shaping is enabled on
            the port.
          type: integer
          format: int64
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostNetworkTrafficShapingPolicy:
      type: object
      description: |2
        A boxed array of *HostNetworkTrafficShapingPolicy*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostNetworkTrafficShapingPolicy'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostNfcConnectionInfo:
      type: object
      description: |2
        NfcConnectionInfo contains information about an NFC connection on the host.
        
        ***Since:*** vSphere API Release 7.0.3.0
      properties:
        streamingMemoryConsumed:
          description: |2
            NFC streaming memory used by the connection in bytes.
          type: integer
          format: int64
      allOf:
        - $ref: '#/components/schemas/HostDataTransportConnectionInfo'

    ArrayOfHostNfcConnectionInfo:
      type: object
      description: |2
        A boxed array of *HostNfcConnectionInfo*. To be used in *Any* placeholders.
        
        ***Since:*** vSphere API Release 7.0.3.0
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostNfcConnectionInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostNtpConfig:
      type: object
      description: |2
        Configuration information for the NTP (Network Time Protocol) service.
      properties:
        server:
          description: |2
            List of time servers, specified as either IP addresses or
            fully qualified domain names (FQDNs).
            
            Each entry may optionally
            specify one or more space separated 'server' ntp.conf command options.
            Any comments appended to an entry after a '#' will not be retained.
            To reset any previously configured servers, submit an NtpConfig
            without the server or configFile property set to method
            *HostDateTimeSystem.UpdateDateTimeConfig*
          type: array
          items:
            type: string
        configFile:
          description: |2
            Content of ntp.conf host configuration file, split by lines for ntpd version 4.2.8.
            
            Comment lines start with comment marker '#' as per ntp.conf are kept.
            When submitting a new ntp commands to this property via
            *HostDateTimeSystem.UpdateDateTimeConfig* method, any 'restrict'
            or 'drift' commands will be ignored as the those are set to fixed defaults.
          type: array
          items:
            type: string
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostNtpConfig:
      type: object
      description: |2
        A boxed array of *HostNtpConfig*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostNtpConfig'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostNumaInfo:
      type: object
      description: |2
        Information about NUMA (non-uniform memory access).
      properties:
        type:
          deprecated: true
          description: |2
            Deprecated as of vSphere API 5.1, this property is always
            set to "NUMA".
            
            The type of NUMA technology.
          type: string
        numNodes:
          description: |2
            The number of NUMA nodes on the host.
            
            The value is 0 if the
            host is not NUMA-capable.
          type: integer
          format: int32
        numaNode:
          description: |2
            Information about each of the NUMA nodes on the host.
            
            The array is empty if the host is not NUMA-capable.
          type: array
          items:
            $ref: '#/components/schemas/HostNumaNode'
      required:
        - type
        - numNodes
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostNumaInfo:
      type: object
      description: |2
        A boxed array of *HostNumaInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostNumaInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostNumaNode:
      type: object
      description: |2
        Information about a single NUMA node.
      properties:
        typeId:
          description: |2
            Zero-based NUMA ID for the node.
          type: integer
          minimum: -128
          maximum: 127
        cpuID:
          description: |2
            Information about each of the CPUs associated with the node.
          type: array
          items:
            type: integer
            minimum: -32768
            maximum: 32767
        memorySize:
          description: |2
            The total amount of memory in this NUMA node, in bytes.
            
            ***Since:*** vSphere API Release 8.0.0.0
          type: integer
          format: int64
        memoryRangeBegin:
          deprecated: true
          description: |2
            Deprecated as of vSphere 8.0, this property is always set to
            zero. The memory of a NUMA node is not necessarily a single
            physically contiguous range.
            
            Beginning memory range for this NUMA node.
          type: integer
          format: int64
        memoryRangeLength:
          deprecated: true
          description: |2
            Deprecated as of vSphere 8.0, this property is replaced by
            *HostNumaNode.memorySize* and is set to the same value. The memory of
            a NUMA node is not necessarily a single physically contiguous
            range.
            
            Length of the memory range for this node in bytes, that is, the amount
            of memory on the node.
          type: integer
          format: int64
        pciId:
          description: |2
            Information about each of the pci devices associated with the node.
            
            The string is of SBDF format, "Segment:Bus:Device.Function".
          type: array
          items:
            type: string
      required:
        - typeId
        - cpuID
        - memoryRangeBegin
        - memoryRangeLength
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostNumaNode:
      type: object
      description: |2
        A boxed array of *HostNumaNode*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostNumaNode'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostNumericSensorInfo:
      type: object
      description: |2
        Base class for numeric sensor information.
      properties:
        name:
          description: |2
            The name of the physical element associated with the sensor
            It consists of a string of the form:
            "description --- state/identifer".
          type: string
        healthState:
          description: |2
            The health state of the of the element indicated by the sensor.
            
            This property is populated only for sensors that support threshold
            settings and for discrete sensors using control file.
            
            See also *HostNumericSensorHealthState_enum*.
          $ref: '#/components/schemas/ElementDescription'
        currentReading:
          description: |2
            The current reading of the element indicated by the sensor.
            
            The actual
            sensor reading is obtained by multiplying the current reading by the
            scale factor.
          type: integer
          format: int64
        unitModifier:
          description: |2
            The unit multiplier for the values returned by the sensor.
            
            All values
            returned by the sensor are current reading \* 10 raised to the power of
            the UnitModifier. If no unitModifier applies the value returned is 0.
          type: integer
          format: int32
        baseUnits:
          description: |2
            The base units in which the sensor reading is specified.
            
            If rateUnits
            is set the units of the current reading is further qualified by the
            rateUnits. Otherwise the value returned is 'unspecified'.
            
            See also *HostNumericSensorInfo.rateUnits*.
          type: string
        rateUnits:
          description: |2
            The rate units in which the sensor reading is specified.
            
            For example if
            the baseUnits is Volts and the rateUnits is per second the value
            returned by the sensor are in Volts/second. If no rate applies
            the value returned is 'none'.
          type: string
        sensorType:
          description: |2
            The type of the sensor.
            
            If the sensor type is set to Other the sensor
            name can be used to further identify the type of sensor. The sensor
            units can also be used to further implicitly determine the type of the
            sensor.
            
            See also *HostNumericSensorType_enum*.
          type: string
        id:
          description: |2
            A unique sensor identifier.
            
            A four part value consisting of:
            BMC device.Entity ID.Instance.SensorNumber
            Can be used to match a NumericSensorInfo object to
            esxcli hardware ipmi sdr list
          type: string
        sensorNumber:
          description: |2
            The IPMI Sensor/probe that is reporting this event.
            
            Use this value
            to locate System Event Log (SEL) entries for this Sensor. It is also
            reported in 'id' in string format. This property is intended to
            be used with vim.host.SystemEventInfo.sensorNumber
            
            ***Since:*** vSphere API Release 8.0.0.1
          type: integer
          format: int64
        timeStamp:
          description: |2
            Reports the ISO 8601 Timestamp when this sensor was last updated by
            management controller if the this sensor is capable of tracking
            when it was last updated.
          type: string
        fru:
          description: |2
            The FRU this sensor monitors if any.
            
            ***Since:*** vSphere API Release 8.0.0.1
          $ref: '#/components/schemas/HostFru'
      required:
        - name
        - currentReading
        - unitModifier
        - baseUnits
        - sensorType
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostNumericSensorInfo:
      type: object
      description: |2
        A boxed array of *HostNumericSensorInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostNumericSensorInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    NvdimmDimmInfo:
      type: object
      description: |2
        Get detailed information of a nvdimm
      properties:
        dimmHandle:
          description: |2
            Unique device identifier
          type: integer
          format: int32
        healthInfo:
          description: |2
            Health status of nvdimm.
            
            *NvdimmHealthInfo*
          $ref: '#/components/schemas/NvdimmHealthInfo'
        totalCapacity:
          description: |2
            Total capacity of NVDIMM in bytes
          type: integer
          format: int64
        persistentCapacity:
          description: |2
            Total persistent capacity in DIMM (in bytes)
          type: integer
          format: int64
        availablePersistentCapacity:
          description: |2
            Persistent Capacity in DIMM currently not allocated
          type: integer
          format: int64
        volatileCapacity:
          description: |2
            Total volatile capacity in DIMM (in bytes)
          type: integer
          format: int64
        availableVolatileCapacity:
          description: |2
            Volatile capacity in DIMM currently not allocated
          type: integer
          format: int64
        blockCapacity:
          description: |2
            Total block capacity in DIMM (in bytes)
          type: integer
          format: int64
        regionInfo:
          description: |2
            NVDIMM region information.
            
            List of regions in the NVDIMM. These regions may or maynot
            be a part of an interleave set.
          type: array
          items:
            $ref: '#/components/schemas/NvdimmRegionInfo'
        representationString:
          description: |2
            NVDIMM Representation string which is a sequence of
            numbers to uniquely identify the DIMM.
          type: string
      required:
        - dimmHandle
        - healthInfo
        - totalCapacity
        - persistentCapacity
        - availablePersistentCapacity
        - volatileCapacity
        - availableVolatileCapacity
        - blockCapacity
        - representationString
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfNvdimmDimmInfo:
      type: object
      description: |2
        A boxed array of *NvdimmDimmInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/NvdimmDimmInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    NvdimmGuid:
      type: object
      description: |2
        A unique identifier used for namespaces
      properties:
        uuid:
          description: |2
            Universally unique identifier in string format
          type: string
      required:
        - uuid
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfNvdimmGuid:
      type: object
      description: |2
        A boxed array of *NvdimmGuid*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/NvdimmGuid'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    NvdimmHealthInfo:
      type: object
      description: |2
        \\brief NVDIMM health information
      properties:
        healthStatus:
          description: |2
            Device health status.
          type: string
        healthInformation:
          description: |2
            Health status description.
          type: string
        stateFlagInfo:
          description: |2
            State flag information.
            
            This information is the cumulation of state flags of all the
            NVDIMM region state flags. It must be one or more of
            *NvdimmNvdimmHealthInfoState_enum*
          type: array
          items:
            type: string
        dimmTemperature:
          description: |2
            Current Nvdimm temperature in degree Celsius.
          type: integer
          format: int32
        dimmTemperatureThreshold:
          description: |2
            Nvdimm temperature threshold.
            
            Default value is 0, indicating threshold has not reached,
            if set to 1, reached threshold limit.
          type: integer
          format: int32
        spareBlocksPercentage:
          description: |2
            Percentage of spare capavity as a percentage of
            factory configured space (valid range 0 to 100)
          type: integer
          format: int32
        spareBlockThreshold:
          description: |2
            Spare block threshold.
            
            Default value is 0, indicating threshold has not reached,
            if set to 1, reached threshold limit.
          type: integer
          format: int32
        dimmLifespanPercentage:
          description: |2
            Lifespan of Nvdimm as percentage.
            
            100% = Warranted life span has reached.
          type: integer
          format: int32
        esTemperature:
          description: |2
            Energy source current temperature in degree Celsius.
            
            Default value is 0, indicating there is no
            energy source for these nvdimms.
          type: integer
          format: int32
        esTemperatureThreshold:
          description: |2
            Energy source temperature threshold.
            
            Default value is 0, indicating threshold has not reached,
            if set to 1, reached threshold limit.
          type: integer
          format: int32
        esLifespanPercentage:
          description: |2
            Lifespan of Energy source as percentage.
            
            100% = Warranted life span has reached.
            Default value is 0, indicating there is no energy
            source.
          type: integer
          format: int32
      required:
        - healthStatus
        - healthInformation
        - dimmTemperature
        - dimmTemperatureThreshold
        - spareBlocksPercentage
        - spareBlockThreshold
        - dimmLifespanPercentage
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfNvdimmHealthInfo:
      type: object
      description: |2
        A boxed array of *NvdimmHealthInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/NvdimmHealthInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    NvdimmInterleaveSetInfo:
      type: object
      description: |2
        Characteristics of an interleave set of a NVDIMM
      properties:
        setId:
          description: |2
            Unique set ID
          type: integer
          format: int32
        rangeType:
          description: |2
            Volatile or persistent interleave set.
            
            Must be one of the values of
            *NvdimmRangeType_enum*
          type: string
        baseAddress:
          description: |2
            Start address of range
          type: integer
          format: int64
        size:
          description: |2
            Length of range in bytes
          type: integer
          format: int64
        availableSize:
          description: |2
            Capacity currently not allocated to namespace in bytes
          type: integer
          format: int64
        deviceList:
          description: |2
            List of nvdimms contributing to this interleave set
          type: array
          items:
            type: integer
            format: int32
        state:
          description: |2
            State of interleave set.
            
            Must be one of the values in
            *NvdimmInterleaveSetState_enum*
          type: string
      required:
        - setId
        - rangeType
        - baseAddress
        - size
        - availableSize
        - state
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfNvdimmInterleaveSetInfo:
      type: object
      description: |2
        A boxed array of *NvdimmInterleaveSetInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/NvdimmInterleaveSetInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    NvdimmNamespaceCreateSpec:
      type: object
      deprecated: true
      description: |2
        Deprecated as of vSphere 6.7u1, use PMemNamespaceCreateReq.
        
        Arguments for creating a namespace.
      properties:
        friendlyName:
          description: |2
            Friendly name of the namespace to be created.
            
            A friendly name can be provided by user to assosiate a name to
            the created namespace, but such a name is not mandatory and is
            empty string by default.
          type: string
        blockSize:
          description: |2
            Size of block in the namespace.
            
            For persistent region type, block size is one.
            For block region, block size represents one of the logical block sizes
            of 512, 4096 etc.
          type: integer
          format: int64
        blockCount:
          description: |2
            Number of blocks in the namespace.
            
            For persistent region type, blockCount is the size of persistent
            region in bytes.
            For block region type, block count represent number of bytes per
            block size.
          type: integer
          format: int64
        type:
          description: |2
            Type of the namespace to be created - block or persistent.
            
            Must be one of the values in
            *NvdimmNamespaceType_enum*
          type: string
        locationID:
          description: |2
            This identifier is the interleave set ID if the namespace
            is being used in persistent mode.
            
            If in block mode, this
            is a device handle.
          type: integer
          format: int32
      required:
        - blockSize
        - blockCount
        - type
        - locationID
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfNvdimmNamespaceCreateSpec:
      type: object
      description: |2
        A boxed array of *NvdimmNamespaceCreateSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/NvdimmNamespaceCreateSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    NvdimmNamespaceDeleteSpec:
      type: object
      description: |2
        Arguments for deleting a namespace
      properties:
        uuid:
          description: |2
            Universally unique identifier of the namespace to be deleted
          type: string
      required:
        - uuid
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfNvdimmNamespaceDeleteSpec:
      type: object
      description: |2
        A boxed array of *NvdimmNamespaceDeleteSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/NvdimmNamespaceDeleteSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    NvdimmNamespaceDetails:
      type: object
      description: |2
        Detailed information about a particular namespace.
      properties:
        uuid:
          description: |2
            Universally unique identifier assigned to namespace
            in string format
          type: string
        friendlyName:
          description: |2
            Human readable name of namespace
          type: string
        size:
          description: |2
            Size of namespace in bytes.
          type: integer
          format: int64
        type:
          description: |2
            Type of the namespace to be created - block or persistent.
            
            Must be one of the values in
            *NvdimmNamespaceType_enum*
          type: string
        namespaceHealthStatus:
          description: |2
            Health status of DIMM(s) part of the namespace.
            
            Must be one of the values of
            *NvdimmNamespaceDetailsHealthStatus_enum*
          type: string
        interleavesetID:
          description: |2
            The interleave set ID of the namespace.
          type: integer
          format: int32
        state:
          description: |2
            State of namespace.
            
            Must be one of
            *NvdimmNamespaceDetailsState_enum*
          type: string
      required:
        - uuid
        - friendlyName
        - size
        - type
        - namespaceHealthStatus
        - interleavesetID
        - state
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfNvdimmNamespaceDetails:
      type: object
      description: |2
        A boxed array of *NvdimmNamespaceDetails*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/NvdimmNamespaceDetails'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    NvdimmNamespaceInfo:
      type: object
      deprecated: true
      description: |2
        Deprecated as of vSphere 6.7u1, use NamespaceDetails.
        
        Detailed information about a particular namespace.
      properties:
        uuid:
          description: |2
            Universally unique identifier assigned to namespace
            in string format
          type: string
        friendlyName:
          description: |2
            Friendly name of namespace
          type: string
        blockSize:
          description: |2
            Size of logical block size.
            
            For persistent region type, block size is one.
            For block region, block size represents one of the logical block sizes
            of 512, 4096 etc.
          type: integer
          format: int64
        blockCount:
          description: |2
            Number of blocks in the namespace.
            
            For persistent region type, blockCount is the size of persistent
            region in bytes.
            For block region type, block count represent number of bytes per
            block size.
          type: integer
          format: int64
        type:
          description: |2
            Type of the namespace to be created - block or persistent.
            
            Must be one of the values in
            *NvdimmNamespaceType_enum*
          type: string
        namespaceHealthStatus:
          description: |2
            Health status of DIMM(s) part of the namespace.
            
            Must be one of the values of
            *NvdimmNamespaceHealthStatus_enum*
          type: string
        locationID:
          description: |2
            This identifier is the interleave set ID if this namespace
            is being used in persistent mode.
            
            If in block mode, this
            is a nvdimm device handle.
          type: integer
          format: int32
        state:
          description: |2
            State of namespace.
            
            Must be one of
            *NvdimmNamespaceState_enum*
          type: string
      required:
        - uuid
        - friendlyName
        - blockSize
        - blockCount
        - type
        - namespaceHealthStatus
        - locationID
        - state
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfNvdimmNamespaceInfo:
      type: object
      description: |2
        A boxed array of *NvdimmNamespaceInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/NvdimmNamespaceInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    NvdimmSystemInfo:
      type: object
      description: |2
        This data object represents Non-Volatile DIMMs host
        configuration.
      properties:
        summary:
          description: |2
            Host NVDIMM system summary.
            
            Summary is unset if the system does not support PMem feature.
          $ref: '#/components/schemas/NvdimmSummary'
        dimms:
          description: |2
            List of NVDIMMs on the host.
            
            NVDIMM list unset if the system does not support PMem feature.
          type: array
          items:
            type: integer
            format: int32
        dimmInfo:
          description: |2
            List of DIMM information of all NVDIMMs on the host.
            
            Dimm information is unset if the system does not support PMem feature.
          type: array
          items:
            $ref: '#/components/schemas/NvdimmDimmInfo'
        interleaveSet:
          description: |2
            List of NVDIMM Interleave sets on the host.
            
            Interleave set is unset if the system does not support PMem feature.
          type: array
          items:
            type: integer
            format: int32
        iSetInfo:
          description: |2
            List of information of all NVDIMM interleave sets on the host.
            
            Interleave set information is unset if the system does not
            support PMem feature.
          type: array
          items:
            $ref: '#/components/schemas/NvdimmInterleaveSetInfo'
        namespace:
          description: |2
            List of NVDIMM namespaces on the host.
            
            Namespace is unset if the system does not support PMem feature.
          type: array
          items:
            $ref: '#/components/schemas/NvdimmGuid'
        nsInfo:
          deprecated: true
          description: |2
            Deprecated as of vSphere 6.7u1, use nsDetails.
            
            List of information of all NVDIMM namespaces on the host.
            
            Namespace information is unset if the system does not support
            PMem feature.
          type: array
          items:
            $ref: '#/components/schemas/NvdimmNamespaceInfo'
        nsDetails:
          description: |2
            List of details of all NVDIMM namespaces on the host.
            
            Namespace details is unset if the system does not support
            PMem feature.
          type: array
          items:
            $ref: '#/components/schemas/NvdimmNamespaceDetails'
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfNvdimmSystemInfo:
      type: object
      description: |2
        A boxed array of *NvdimmSystemInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/NvdimmSystemInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    NvdimmPMemNamespaceCreateSpec:
      type: object
      description: |2
        Arguments for creating a persistent memory mode namespace
      properties:
        friendlyName:
          description: |2
            Friendly name of the namespace to be created.
            
            A friendly name can be provided by user to associate a name to
            the created namespace, but such a name is not mandatory and is
            empty string by default.
          type: string
        size:
          description: |2
            Size of the namespace in bytes.
          type: integer
          format: int64
        interleavesetID:
          description: |2
            The interleave set ID of the namespace.
          type: integer
          format: int32
      required:
        - size
        - interleavesetID
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfNvdimmPMemNamespaceCreateSpec:
      type: object
      description: |2
        A boxed array of *NvdimmPMemNamespaceCreateSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/NvdimmPMemNamespaceCreateSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    NvdimmRegionInfo:
      type: object
      description: |2
        \\brief NVDIMM region information.
        
        This represents a region which is a part of NVDIMM.
      properties:
        regionId:
          description: |2
            NVDIMM region ID
          type: integer
          format: int32
        setId:
          description: |2
            Interleave set ID.
            
            Interleave set to which this region belongs. A value
            of 0 indicates that this region is not a part of any
            interleave set.
          type: integer
          format: int32
        rangeType:
          description: |2
            Type of region.
            
            Must be one of the values of
            *NvdimmRangeType_enum*
          type: string
        startAddr:
          description: |2
            Region start address.
            
            This represents the address within the NVDIMM to which this
            NVDIMM region belongs (Dimm physical address).
            If *NvdimmRegionInfo.setId* is 0, this field is not valid.
          type: integer
          format: int64
        size:
          description: |2
            Size of region in bytes.
            
            If this region is part of interleave set (represented by non zero
            *NvdimmRegionInfo.setId*) and the region is interleaved across
            multiple dimms (represented by more that one element in
            *NvdimmInterleaveSetInfo.deviceList* for assosiated set id
            *NvdimmRegionInfo.setId*), this size represents part of the
            interleave set size - (total interleave set size / number
            of dimms in *NvdimmInterleaveSetInfo.deviceList*).
            Example: If Interleave set with set id 5, has a size of 2TB
            and has 2 NVDIMMs contributing to it (size of
            *NvdimmInterleaveSetInfo.deviceList* is 2), then this size
            parameter is 2TB/2 = 1TB.
            If *NvdimmRegionInfo.setId* is 0, this field is not valid.
          type: integer
          format: int64
        offset:
          description: |2
            Offset of nvdimm within interleave set.
            
            This represents offset with respect to base address
            in *NvdimmInterleaveSetInfo.baseAddress*.
            If *NvdimmRegionInfo.setId* is 0, this field is not valid.
          type: integer
          format: int64
      required:
        - regionId
        - setId
        - rangeType
        - startAddr
        - size
        - offset
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfNvdimmRegionInfo:
      type: object
      description: |2
        A boxed array of *NvdimmRegionInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/NvdimmRegionInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    NvdimmSummary:
      type: object
      description: |2
        \\brief Get summary of nvdimm
      properties:
        numDimms:
          description: |2
            Number of NVDIMMs in the system
          type: integer
          format: int32
        healthStatus:
          description: |2
            Summary of health status of all NVDIMMs in the system.
          type: string
        totalCapacity:
          description: |2
            Total capacity of all NVDIMMs in bytes
          type: integer
          format: int64
        persistentCapacity:
          description: |2
            Persistent region capacity in bytes
          type: integer
          format: int64
        blockCapacity:
          description: |2
            Block region capacity in bytes
          type: integer
          format: int64
        availableCapacity:
          description: |2
            Capacity not covered by namespace in bytes
          type: integer
          format: int64
        numInterleavesets:
          description: |2
            Total number of interleave sets in the system
          type: integer
          format: int32
        numNamespaces:
          description: |2
            Total number of namespaces in the system
          type: integer
          format: int32
      required:
        - numDimms
        - healthStatus
        - totalCapacity
        - persistentCapacity
        - blockCapacity
        - availableCapacity
        - numInterleavesets
        - numNamespaces
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfNvdimmSummary:
      type: object
      description: |2
        A boxed array of *NvdimmSummary*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/NvdimmSummary'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostNvmeConnectSpec:
      type: object
      description: |2
        Specifies the parameters necessary to connect to a regular NVME over Fabrics
        controller.
        
        Here the transportParameters are used to establish a transport level
        connection to the specified controller. For reference, see:
        - "NVM Express over Fabrics 1.0", Section 3.3,
          "Connect command and response"
      properties:
        subnqn:
          description: |2
            NVME Qualified Name of the NVM subsystem to connect to.
            
            Corresponds to the SUBNQN field in the Connect command as
            referenced above.
          type: string
        controllerId:
          description: |2
            ID of the controller to connect to within the NVM subsystem.
            
            This field corresponds to CNTLID in the Connect command.
            Its usage depends on whether the NVM Subsystem supports
            a static or dynamic controller model.
            In the static model, a number of controllers
            may be exposed. A connection to a specific one may be requested
            by specifying its controller ID (which is unique only within the
            NVM subsystem). If a value of 0xFFFE (65534 in decimal) is provided,
            any one of the controllers may be allocated for the connection. In
            the static model a value of 0xFFFF (65535 in decimal) or above is
            invalid.
            In the dynamic model, the NVM Subsystem will dynamically allocate
            a controller. Any value other than 0xFFFF (65535 in decimal) specified
            will be consider invalid.
            If the controllerId is unset, it defaults to 0xFFFF (the value used in
            the dynamic model).
            Whether the NVM subsystem supports the dynamic or static model can be
            determined by examining the corresponding
            *HostNvmeDiscoveryLogEntry* returned for it.
          type: integer
          format: int32
        adminQueueSize:
          description: |2
            Size of the admin queue which will be created once connection
            is established.
            
            This field corresponds to SQSIZE in the Connect command (see above).
            If unset, it defaults to a reasonable value which may vary between
            releases (currently 16).
          type: integer
          format: int32
        keepAliveTimeout:
          description: |2
            Timeout for the keep alive feature in seconds.
            
            This field corresponds to KATO in the Connect command (see above).
            If unset, it defaults to a reasonable value which may vary between
            releases (currently 30 seconds).
            For further information, see:
            - "NVM Express 1.3", Section 5.21.1.15, "Keep Alive Timer"
          type: integer
          format: int32
      required:
        - subnqn
      allOf:
        - $ref: '#/components/schemas/HostNvmeSpec'

    ArrayOfHostNvmeConnectSpec:
      type: object
      description: |2
        A boxed array of *HostNvmeConnectSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostNvmeConnectSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostNvmeController:
      type: object
      description: |2
        This data object represents an NVME controller.
        
        Some terminology is borrowed from the NVM Express over Fabrics
        and the NVM Express 1.3 specifications, which are available
        at the following address:
        https://nvmexpress.org/resources/specifications/
      properties:
        key:
          description: |2
            The linkable identifier.
          type: string
        controllerNumber:
          description: |2
            The controller number uniquely identifies the NVME Controller
            within its HostSystem.
            
            This should not be confused with Controller ID (see
            "NVM Express over Fabrics 1.0", Section 4.2, "Controller model"
            for details), which only serves as an identifier
            within a particular NVME subsystem.
          type: integer
          format: int32
        subnqn:
          description: |2
            The NVME subsystem qualified name.
            
            Each NVME controller is associated with an NVME subsystem
            which can present a collection of controllers to the adapter.
            For more details, refer to:
            - "NVM Express over Fabrics 1.0", Section 1.5.2,
              "NVM Subsystem".
          type: string
        name:
          description: |2
            Name of the controller.
            
            Each controller has a name. For NVME over Fabrics controllers,
            it is generated when the controller is connected to an NVME
            over Fabrics adapter.
          type: string
        associatedAdapter:
          description: |2
            Associated NVME over Fabrics host bus adapter.
            
            A controller is associated with exactly one host at a time through
            an NVME over Fabrics host bus adapter.
          $ref: '#/components/schemas/HostHostBusAdapter'
        transportType:
          description: |2
            The transport type supported by the controller.
            
            The set of possible values is described in *HostNvmeTransportType_enum*.
            For details, see:
            - "NVM Express over Fabrics 1.0", Section 1.5.1,
              "Fabrics and Transports".
          type: string
        fusedOperationSupported:
          description: |2
            Indicates whether fused operations are supported by the controller.
            
            An NVME controller may support fused operations. This is required
            to support shared storage, otherwise data corruption may occur.
            For more details, see:
            - "NVM Express 1.3", Section 6.2, "Fused Operations".
          type: boolean
        numberOfQueues:
          description: |2
            The number of I/O queues allocated for the controller.
          type: integer
          format: int32
        queueSize:
          description: |2
            The size of each of the I/O queues.
            
            This will not be greater than the Maximum Queue Entries Supported
            (mqes) value for the controller. For more information, see:
            - "NVM Express 1.3", section 3.1, "Register definition".
          type: integer
          format: int32
        attachedNamespace:
          description: |2
            List of NVME namespaces attached to the controller.
            
            Namespaces provide access to a non-volatile storage medium
            which is part of the NVM subsystem. For an overview, see:
            - "NVM Express over Fabrics 1.0", Section 1.5.2,
              "NVM Subsystem".
            - "NVM Express 1.3", section 6.1, "Namespaces".
          type: array
          items:
            $ref: '#/components/schemas/HostNvmeNamespace'
        vendorId:
          description: |2
            The vendor ID of the controller, if available.
          type: string
        model:
          description: |2
            The model name of the controller, if available.
          type: string
        serialNumber:
          description: |2
            The serial number of the controller, if available.
          type: string
        firmwareVersion:
          description: |2
            The firmware version of the controller, if available.
          type: string
      required:
        - key
        - controllerNumber
        - subnqn
        - name
        - associatedAdapter
        - transportType
        - fusedOperationSupported
        - numberOfQueues
        - queueSize
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostNvmeController:
      type: object
      description: |2
        A boxed array of *HostNvmeController*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostNvmeController'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostNvmeDisconnectSpec:
      type: object
      description: |2
        Specifies the parameters necessary to disconnect an NVME controller
        from a given NVME over Fabrics adapter.
      properties:
        hbaName:
          description: |2
            The device name of the NVME over Fabrics host bus adapter.
          type: string
        subnqn:
          description: |2
            NVME Qualified Name of the NVM subsystem to disconnect from.
            
            If controllerNumber is not specified, the subsystem qualified
            name has to be specified and any controllers exposed by that
            subsystem will be disconnected from the specified adapter. This
            is particularly convenient for the dynamic controller model, where
            the mapping subsystemNQN &lt;-&gt; ctrlNumber is expected to be 1:1.
            If controllerNumber is also specified, this value is ignored.
          type: string
        controllerNumber:
          description: |2
            Controller number of the controller to be disconnected.
            
            If this value is set, the subsystemQualifiedName can be left unset
            and the controller whose controllerNumber field matches this value
            will be disconnected from the specified adapter.
            If this value is not set, subsystemQualifiedName must be set.
          type: integer
          format: int32
      required:
        - hbaName
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostNvmeDisconnectSpec:
      type: object
      description: |2
        A boxed array of *HostNvmeDisconnectSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostNvmeDisconnectSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostNvmeDiscoverSpec:
      type: object
      description: |2
        Specifies the parameters necessary to connect to a Discovery Service and
        retrieve a Discovery Log Page.
        
        Here the transportParameters are used to establish a transport level
        connection to a Discovery Controller. Further details can be found here:
        - "NVM Express over Fabrics 1.0", Section 5, "Discovery service"
      properties:
        autoConnect:
          description: |2
            Indicates whether the specified adapter should automatically be
            connected to all the discovered controllers.
            
            It is possible to automatically connect to all discovered controllers.
            This will only be attempted if this flag is set to true. Whether the
            connection attempt for an entry succeeded can then be determined
            via the corresponding *HostNvmeDiscoveryLogEntry.connected* field.
          type: boolean
        rootDiscoveryController:
          description: |2
            If set to true, this flag indicates we are connecting to a root/central
            discovery controller (RDC/CDC).
            
            This will create a persistent connection between the host and the
            root discovery controller, thus enabling some advanced features.
            
            ***Since:*** vSphere API Release 7.0.3.0
          type: boolean
      allOf:
        - $ref: '#/components/schemas/HostNvmeSpec'

    ArrayOfHostNvmeDiscoverSpec:
      type: object
      description: |2
        A boxed array of *HostNvmeDiscoverSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostNvmeDiscoverSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostNvmeDiscoveryLog:
      type: object
      description: |2
        This data object represents the Discovery Log returned by
        an NVME over Fabrics Discovery controller.
        
        The Discovery Log consists of pages which contain a number
        of entries. It provides an inventory of NVM subsystems with
        which the host may attempt to form an association through
        an NVME over Fabrics adapter. For details, see:
        - "NVM Express over Fabrics 1.0", Section 5.3,
          Discovery Log Page
      properties:
        entry:
          description: |2
            The list of entries that make up the Discovery Log.
          type: array
          items:
            $ref: '#/components/schemas/HostNvmeDiscoveryLogEntry'
        complete:
          description: |2
            Indicates whether the NvmeDiscoveryLog object completely
            represents the underlying Discovery Log returned by the
            controller.
            
            It is possible some of the entries returned by the Discovery
            Controller contain unsupported transport types or data that
            cannot be interpreted - in that case, those entries will be
            skipped and the log will be marked as incomplete.
          type: boolean
      required:
        - complete
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostNvmeDiscoveryLog:
      type: object
      description: |2
        A boxed array of *HostNvmeDiscoveryLog*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostNvmeDiscoveryLog'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostNvmeDiscoveryLogEntry:
      type: object
      description: |2
        This data object represents a single entry in the Discovery
        Log returned by a Discovery controller.
      properties:
        subnqn:
          description: |2
            NVME Qualified name of the discovered subsystem.
            
            Corresponds to the SUBNQN field in the Discovery Log
            Page Entry as specified by the NVME over Fabrics spec.
          type: string
        subsystemType:
          description: |2
            NVM Subsystem type.
            
            Corresponds to the SUBTYPE field in the Discovery Log
            Page Entry as specified by the NVME over Fabrics spec.
            The set of supported values is described in
            *HostNvmeDiscoveryLogSubsystemType_enum*.
          type: string
        subsystemPortId:
          description: |2
            NVM subsystem port ID.
            
            Corresponds to the PORTID field in the Discovery Log
            Page Entry as specified by the NVME over Fabrics spec.
            For an overview, see:
            - "NVM Express over Fabrics 1.0", Section 1.5.2,
              NVM Subsystem
          type: integer
          format: int32
        controllerId:
          description: |2
            NVME Controller ID within the NVM subsystem.
            
            Corresponds to the CNTLID field in the Discovery Log
            Page Entry as specified by the NVME over Fabrics spec.
            In the static controller model, this field may be set
            to a specific controller ID which can be used to connect
            to that particular controller. It could also be set
            to 0xFFFE (65534 in decimal), in which case the controller
            ID will be allocated when a connection is established.
            In the dynamic controller model, this field shall be set
            to 0xFFFF (65535 in decimal).
            Note that this is different from the controllerNumber
            *HostNvmeController.controllerNumber*,
            which is the unique identifier of the NVMe controller
            within the entire host and is allocated only after a
            connection is established.
          type: integer
          format: int32
        adminQueueMaxSize:
          description: |2
            The maximum size of the Admin Submission Queue.
            
            Corresponds to the ASQSZ field in the Discovery Log
            Page Entry as specified by the NVME over Fabrics spec.
            This applies to all controllers within the NVM Subsystem.
            When establishing a connection, the value of
            *HostNvmeConnectSpec.adminQueueSize* may not exceed
            this value.
          type: integer
          format: int32
        transportParameters:
          description: |2
            Transport specific parameters necessary to establish
            a connection.
            
            Different types of fabrics transports and different
            means to specify a connection target may be supported.
            The transport specific parameters object is constructed
            based on the data in the Transport Type (TRTYPE),
            Address Family (ADRFAM), Transport Service Identifier
            (TRSVCID), Transport Address (TRADDR) and Transport
            Specific Address Subtype (TSAS) fields in the Discovery
            Log Page Entry as specified by the NVME over Fabrics spec.
            When connecting to the controller represented by this
            Discovery Log Page Entry, the transport specific
            parameters can be passed directly as
            *HostNvmeSpec.transportParameters*.
          $ref: '#/components/schemas/HostNvmeTransportParameters'
        transportRequirements:
          description: |2
            The requirements for NVME Transport.
            
            Corresponds to the TREQ field in the Discovery Log
            Page Entry as specified by the NVME over Fabrics spec
            The set of possible values is described in
            *HostNvmeDiscoveryLogTransportRequirements_enum*
          type: string
        connected:
          description: |2
            Indicates whether the controller represented
            by this Discovery Log Page Entry is already connected
            to the adapter through which the discovery is initiated.
          type: boolean
      required:
        - subnqn
        - subsystemType
        - subsystemPortId
        - controllerId
        - adminQueueMaxSize
        - transportParameters
        - transportRequirements
        - connected
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostNvmeDiscoveryLogEntry:
      type: object
      description: |2
        A boxed array of *HostNvmeDiscoveryLogEntry*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostNvmeDiscoveryLogEntry'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostNvmeNamespace:
      type: object
      description: |2
        This data object represents an NVM Express Namespace.
        
        In the NVME model, the underlying non-volatile storage medium
        is exposed via namespaces. For further information, see:
        - "NVM Express over Fabrics 1.0", Section 1.5.2,
          "NVM Subsystem".
        - "NVM Express 1.3", section 6.1, "Namespaces".
      properties:
        key:
          description: |2
            The linkable identifier.
            
            This is a unique identifier of the NVME namespace within
            the host system.
          type: string
        name:
          description: |2
            The name of the namespace.
            
            The name identifies the underlying storage exposed
            by the NvmeNamespace. In multipath scenarios, two
            namespaces can have the same name if they expose the
            same underlying storage through different NVME controllers.
          type: string
        id:
          description: |2
            The namespace ID is an identifier used by an NVME controller
            to provide access to a namespace.
            
            The namespace ID is only unique among the namespaces
            attached to the same controller. For details, see:
            - "NVM Express 1.3", section 6.1, "Namespaces".
          type: integer
          format: int32
        blockSize:
          description: |2
            Block size of the namespace in bytes.
            
            Namespaces are comprised of a number of logical blocks with
            a fixed size - the smallest units of data that may be
            read or written by the NVME controller.
          type: integer
          format: int32
        capacityInBlocks:
          description: |2
            The maximum number of logical blocks that may be allocated
            in the namespace at any point in time.
            
            Corresponds to the NCAP field in the Identify Namespace data
            structure:
            - "NVM Express 1.3", Section 5.15, Figure 114,
              "Identify Namespace Data Structure"
          type: integer
          format: int64
      required:
        - key
        - name
        - id
        - blockSize
        - capacityInBlocks
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostNvmeNamespace:
      type: object
      description: |2
        A boxed array of *HostNvmeNamespace*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostNvmeNamespace'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostNvmeOpaqueTransportParameters:
      type: object
      description: |2
        This data object represents the raw transport specific parameters
        returned in a Discovery Log Page Entry, when they cannot be
        interpreted as one of the known common types of parameters.
        
        For details, see:
        - "NVM Express over Fabrics 1.0", Section 5.3,
          Discovery Log Page
      properties:
        trtype:
          description: |2
            The transport type.
            
            Corresponds to the TRTYPE field in the Discovery Log Page Entry
            as specified by the NVME over Fabrics spec.
            The set of possible values is desribed in *HostNvmeTransportType_enum*.
          type: string
        traddr:
          description: |2
            The transport address.
            
            Corresponds to the TRADDR field in the Discovery Log Page Entry
            as specified by the NVME over Fabrics spec.
          type: string
        adrfam:
          description: |2
            Indicates the address family of the address specified above.
            
            Corresponds to the ADRFAM field in the Discovery Log Page Entry
            as specified by the NVME over Fabrics spec.
            The set of supported values is described in
            *HostNvmeTransportParametersNvmeAddressFamily_enum*.
          type: string
        trsvcid:
          description: |2
            Transport service identifier.
            
            Corresponds to the TRSVCID field in the Discovery Log Page Entry
            as specified by the NVME over Fabrics spec.
            Its interpretation varies depending on the transport type.
          type: string
        tsas:
          description: |2
            Transport specific address subtype.
            
            Corresponds to the TSAS field in the Discovery Log Page Entry
            as specified by the NVME over Fabrics spec.
            Its interpretation varies depending on the transport type.
          type: string
          format: byte
      required:
        - trtype
        - traddr
        - adrfam
        - trsvcid
        - tsas
      allOf:
        - $ref: '#/components/schemas/HostNvmeTransportParameters'

    ArrayOfHostNvmeOpaqueTransportParameters:
      type: object
      description: |2
        A boxed array of *HostNvmeOpaqueTransportParameters*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostNvmeOpaqueTransportParameters'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostNvmeOverFibreChannelParameters:
      type: object
      description: |2
        This data object represents the transport specific parameters
        necessary to establish an NVME over Fibre Channel connection.
      properties:
        nodeWorldWideName:
          description: |2
            The world wide node name for the connection target.
          type: integer
          format: int64
        portWorldWideName:
          description: |2
            The world wide port name for the connection target.
          type: integer
          format: int64
      required:
        - nodeWorldWideName
        - portWorldWideName
      allOf:
        - $ref: '#/components/schemas/HostNvmeTransportParameters'

    ArrayOfHostNvmeOverFibreChannelParameters:
      type: object
      description: |2
        A boxed array of *HostNvmeOverFibreChannelParameters*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostNvmeOverFibreChannelParameters'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostNvmeOverRdmaParameters:
      type: object
      description: |2
        This data object represents the transport specific parameters
        necessary to establish an NVME over RDMA connection.
      properties:
        address:
          description: |2
            The address of the connection target.
          type: string
        addressFamily:
          description: |2
            Indicates the type of the address specified above.
            
            If unset, it is assumed to be an IPv4 address. The set of possible
            values is described in
            *HostNvmeTransportParametersNvmeAddressFamily_enum*.
            Note that not all of the address families may be supported for
            establishing a connection over RDMA.
          type: string
        portNumber:
          description: |2
            The port number of the RDMA target port.
            
            When IPv4/IPv6 is used as address family above, the port number
            needs to be specified. If this field is unset, a default
            value of 4420 is assumed as per the IANA assignment:
            https://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xhtml
          type: integer
          format: int32
      required:
        - address
      allOf:
        - $ref: '#/components/schemas/HostNvmeTransportParameters'

    ArrayOfHostNvmeOverRdmaParameters:
      type: object
      description: |2
        A boxed array of *HostNvmeOverRdmaParameters*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostNvmeOverRdmaParameters'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostNvmeOverTcpParameters:
      type: object
      description: |2
        This data object represents the transport specific parameters
        necessary to establish an NVME over TCP connection.
        
        ***Since:*** vSphere API Release 7.0.3.0
      properties:
        address:
          description: |2
            The address of the connection target.
            
            It is expected to be an IPv4 or IPv6 address.
          type: string
        portNumber:
          description: |2
            The port number of the TCP target port.
            
            If this field is unset, the default value of 8009
            is assumed as per the IANA assignment:
            https://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xhtml
          type: integer
          format: int32
        digestVerification:
          description: |2
            Digest verification parameter.
            
            When used in a discovery or connect spec, this parameter specifies
            the requested digest verification setting. The list of supported values is
            described in *HostDigestVerificationSetting_enum*. If unset,
            a default value of disabled is assumed.
            For details, see:
            - NVM Express Technical Proposal 8000 - NVMe/TCP Transport,
              Section 7.4.10.2, "Initialize Connection Request PDU (ICReq)" - DGST field.
              
            When part of *HostNvmeDiscoveryLogEntry*, this value is unset.
          type: string
      required:
        - address
      allOf:
        - $ref: '#/components/schemas/HostNvmeTransportParameters'

    ArrayOfHostNvmeOverTcpParameters:
      type: object
      description: |2
        A boxed array of *HostNvmeOverTcpParameters*. To be used in *Any* placeholders.
        
        ***Since:*** vSphere API Release 7.0.3.0
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostNvmeOverTcpParameters'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostNvmeSpec:
      type: object
      description: |2
        Specifies the main parameters needed when connecting to
        an NVMe over Fabrics controller or Discovery Service.
      properties:
        hbaName:
          description: |2
            The device name of the NVME over Fabrics host bus adapter.
          type: string
        transportParameters:
          description: |2
            Transport specific information necessary to connect to the controller.
          $ref: '#/components/schemas/HostNvmeTransportParameters'
      required:
        - hbaName
        - transportParameters
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostNvmeSpec:
      type: object
      description: |2
        A boxed array of *HostNvmeSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostNvmeSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostNvmeTopology:
      type: object
      description: |2
        This data object type describes the NVME topology information.
        
        The data objects in this data object type model the NVME storage objects
        from a topological point of view. The NVME topological view organizes
        objects by NVME interface, which contains connected controllers,
        which in turn contain attached namespaces.
        
        Only storage adapters which support the NVME protocol will be represented
        as NVME interfaces in this data object. In particular, an NVME interface
        will be created for each NVME over Fabrics adapter in the system.
        
        Note that it is possible for an adapter to be represented by both
        an NVME interface in the NVME topology and a SCSI interface in the SCSI
        topology. This can happen when an adapter supporting the NVME protocol is
        also presented as a SCSI adapter and SCSI to NVME translation is performed.
      properties:
        adapter:
          description: |2
            The list of NVME interfaces (could be empty).
          type: array
          items:
            $ref: '#/components/schemas/HostNvmeTopologyInterface'
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostNvmeTopology:
      type: object
      description: |2
        A boxed array of *HostNvmeTopology*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostNvmeTopology'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostNvmeTopologyInterface:
      type: object
      description: |2
        This data object describes the NVME interface that is
        associated with a list of connected NVME controllers.
      properties:
        key:
          description: |2
            The identifier for the NVME interface.
          type: string
        adapter:
          description: |2
            The link to data for the NVME interface.
          $ref: '#/components/schemas/HostHostBusAdapter'
        connectedController:
          description: |2
            The list of connected NVME controllers.
            
            This list can be empty if am NVME interface is not connected
            to any controllers. Each NvmeController object contains
            a list of its attached NVME namespaces in
            *HostNvmeController.attachedNamespace*.
          type: array
          items:
            $ref: '#/components/schemas/HostNvmeController'
      required:
        - key
        - adapter
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostNvmeTopologyInterface:
      type: object
      description: |2
        A boxed array of *HostNvmeTopologyInterface*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostNvmeTopologyInterface'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostNvmeTransportParameters:
      type: object
      description: |2
        This data object represents the transport specific parameters
        necessary to establish an NVM Express over Fabrics connection.
        
        For some further information, see:
        - "NVM Express over Fabrics 1.0", Section 1.5.7, "Connection"
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostNvmeTransportParameters:
      type: object
      description: |2
        A boxed array of *HostNvmeTransportParameters*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostNvmeTransportParameters'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostOpaqueNetworkInfo:
      type: object
      description: |2
        Information on opaque networks that are available on the host.
      properties:
        dynamicProperty:
          description: |2
            Set of dynamic properties.
            
            This property is optional because only the
            properties of an object that are unknown to a client will be part of this set.
            This property is not readonly just in case we want to send such properties
            from a client in the future.
          type: array
          items:
            $ref: '#/components/schemas/DynamicProperty'
        opaqueNetworkId:
          description: |2
            The ID of the opaque network.
          type: string
        opaqueNetworkName:
          description: |2
            The name of the opaque network.
          type: string
        opaqueNetworkType:
          description: |2
            The type of the opaque network.
          type: string
        pnicZone:
          description: |2
            IDs of networking zones that back the opaque network.
          type: array
          items:
            type: string
        capability:
          description: |2
            The capability of the opaque network.
            
            Refer *OpaqueNetworkCapability*
          $ref: '#/components/schemas/OpaqueNetworkCapability'
        extraConfig:
          description: |2
            Extra NSX specific properties for opaque networks.
          type: array
          items:
            $ref: '#/components/schemas/OptionValue'
      required:
        - opaqueNetworkId
        - opaqueNetworkName
        - opaqueNetworkType
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostOpaqueNetworkInfo:
      type: object
      description: |2
        A boxed array of *HostOpaqueNetworkInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostOpaqueNetworkInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostOpaqueSwitch:
      type: object
      description: |2
        The OpaqueSwitch contains basic information about virtual switches that are
        managed by a management plane outside of vSphere.
      properties:
        dynamicProperty:
          description: |2
            Set of dynamic properties.
            
            This property is optional because only the
            properties of an object that are unknown to a client will be part of this set.
            This property is not readonly just in case we want to send such properties
            from a client in the future.
          type: array
          items:
            $ref: '#/components/schemas/DynamicProperty'
        key:
          description: |2
            The opaque switch ID.
          type: string
        name:
          description: |2
            The opaque switch name.
          type: string
        pnic:
          description: |2
            The set of physical network adapters associated with this switch.
          type: array
          items:
            $ref: '#/components/schemas/PhysicalNic'
        pnicZone:
          description: |2
            The IDs of networking zones associated with this switch.
          type: array
          items:
            $ref: '#/components/schemas/HostOpaqueSwitchPhysicalNicZone'
        status:
          description: |2
            Opaque switch status.
            
            See
            *OpaqueSwitchState* for valid values.
          type: string
        vtep:
          description: |2
            List of VTEPs associated with this switch.
          type: array
          items:
            $ref: '#/components/schemas/HostVirtualNic'
        extraConfig:
          description: |2
            Extra NSX specific properties for opaque switch.
          type: array
          items:
            $ref: '#/components/schemas/OptionValue'
        featureCapability:
          description: |2
            Array of host specific feature capabilities that the switch has.
          type: array
          items:
            $ref: '#/components/schemas/HostFeatureCapability'
      required:
        - key
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostOpaqueSwitch:
      type: object
      description: |2
        A boxed array of *HostOpaqueSwitch*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostOpaqueSwitch'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostOpaqueSwitchPhysicalNicZone:
      type: object
      properties:
        key:
          description: |2
            The zone ID
          type: string
        pnicDevice:
          description: |2
            Whenever an OpaqueSwitch is associated with a PhysicalNicZone, then by default,
            the zone will consist of all physical nics that are linked to the switch.
            
            However, if this property is set, then the zone will be considered to be
            consisting of only those physical nics that are listed here.
          type: array
          items:
            type: string
      required:
        - key
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostOpaqueSwitchPhysicalNicZone:
      type: object
      description: |2
        A boxed array of *HostOpaqueSwitchPhysicalNicZone*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostOpaqueSwitchPhysicalNicZone'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PMemDatastoreInfo:
      type: object
      properties:
        pmem:
          $ref: '#/components/schemas/HostPMemVolume'
      required:
        - pmem
      allOf:
        - $ref: '#/components/schemas/DatastoreInfo'

    ArrayOfPMemDatastoreInfo:
      type: object
      description: |2
        A boxed array of *PMemDatastoreInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PMemDatastoreInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostPMemVolume:
      type: object
      description: |2
        The VMFS file system.
      properties:
        uuid:
          description: |2
            The universally unique identifier assigned to PMem volume.
          type: string
        version:
          description: |2
            Version of the PMem FS
          type: string
      required:
        - uuid
        - version
      allOf:
        - $ref: '#/components/schemas/HostFileSystemVolume'

    ArrayOfHostPMemVolume:
      type: object
      description: |2
        A boxed array of *HostPMemVolume*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostPMemVolume'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostParallelScsiHba:
      type: object
      description: |2
        The ParallelScsiHba data object type describes a
        parallel SCSI host bus adapter.
      allOf:
        - $ref: '#/components/schemas/HostHostBusAdapter'

    ArrayOfHostParallelScsiHba:
      type: object
      description: |2
        A boxed array of *HostParallelScsiHba*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostParallelScsiHba'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostParallelScsiTargetTransport:
      type: object
      description: |2
        Parallel SCSI transport information about a SCSI target.
      allOf:
        - $ref: '#/components/schemas/HostTargetTransport'

    ArrayOfHostParallelScsiTargetTransport:
      type: object
      description: |2
        A boxed array of *HostParallelScsiTargetTransport*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostParallelScsiTargetTransport'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostPartialMaintenanceModeRuntimeInfo:
      type: object
      description: |2
        This data object contains information about the runtime status of
        a partial maintenance mode.
        
        ***Since:*** vSphere API Release 8.0.3.0
      properties:
        key:
          description: |2
            The unique identifier of the partial maintenance mode.
            
            The values of the identifiers for the most common kinds of partial
            maintenance modes are enumerated in *HostPartialMaintenanceModeId_enum*.
          type: string
        hostStatus:
          description: |2
            The current runtime status for the particular partial maintenance mode.
            
            The list of supported values is specified in
            *HostPartialMaintenanceModeStatus_enum*.
          type: string
      required:
        - key
        - hostStatus
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostPartialMaintenanceModeRuntimeInfo:
      type: object
      description: |2
        A boxed array of *HostPartialMaintenanceModeRuntimeInfo*. To be used in *Any* placeholders.
        
        ***Since:*** vSphere API Release 8.0.3.0
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostPartialMaintenanceModeRuntimeInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostPatchManagerLocator:
      type: object
      properties:
        url:
          description: |2
            The URL that will be used to access the patch repository.
          type: string
        proxy:
          description: |2
            The proxy setting required to access the URL from the host.
            
            If unset, a direct URL connection will be attempted.
          type: string
      required:
        - url
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostPatchManagerLocator:
      type: object
      description: |2
        A boxed array of *HostPatchManagerLocator*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostPatchManagerLocator'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostPatchManagerPatchManagerOperationSpec:
      type: object
      description: |2
        Optional parameters for hostd to pass to exupdate.
      properties:
        proxy:
          description: |2
            The name of the possible proxy for esxupdate to use to connect to a server.
            
            The patch and metadata may be cached within the proxy server.
          type: string
        port:
          description: |2
            The port of the possible proxy for esxupdate to use to connect to a server.
            
            The patch and metadata may be cached within the proxy server.
          type: integer
          format: int32
        userName:
          description: |2
            The user name used for the proxy server.
          type: string
        password:
          description: |2
            The password used for the proxy server.
            
            This is passed with ssl through a
            trusted channel.
          type: string
          format: password
        cmdOption:
          description: |2
            Possible command line options when calling esxupdate.
          type: string
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostPatchManagerPatchManagerOperationSpec:
      type: object
      description: |2
        A boxed array of *HostPatchManagerPatchManagerOperationSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostPatchManagerPatchManagerOperationSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostPatchManagerResult:
      type: object
      description: |2
        The result of the operation.
        
        Some of the fields are only valid for
        specific operations.
      properties:
        version:
          description: |2
            The version of the scan result schema.
          type: string
        status:
          description: |2
            The scan results for each patch.
          type: array
          items:
            $ref: '#/components/schemas/HostPatchManagerStatus'
        xmlResult:
          description: |2
            The scan results in XML format.
          type: string
      required:
        - version
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostPatchManagerResult:
      type: object
      description: |2
        A boxed array of *HostPatchManagerResult*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostPatchManagerResult'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostPatchManagerStatus:
      type: object
      properties:
        id:
          description: |2
            Unique identifier for this update.
          type: string
        applicable:
          description: |2
            Whether or not this update is applicable to this host.
            
            An update
            may not be applicable to the ESX host for many reasons - for
            example, it is obsolete, it conflicts with other installed
            patches or libraries, and so on. The *HostPatchManagerStatus.reason* shows some of the reasons
            why the update is not applicable.
            An update could be inapplicable with no reason listed. This is
            because the prerequisite install state is not correct. For example,
            update A is one of the prerequisites of update B. B not only
            requires A to be installed, but also requires the host is
            rebooted after A is installed. When A is installed and the host
            has not been restarted after the installation, B will not be
            applicable. In such a case, the scan on both updates A and B
            would yield a whole picture of the update applicable status.
          type: boolean
        reason:
          description: |2
            Possible reasons why an update is not applicable to the ESX host.
            
            See also *HostPatchManagerReason_enum*.
          type: array
          items:
            type: string
        integrity:
          description: |2
            The integrity status of the update's metadata.
            
            The value would
            be unset if the integrity status is unknown to the server.
            
            See also *HostPatchManagerIntegrityStatus_enum*.
          type: string
        installed:
          description: |2
            Whether the update is installed on the server.
          type: boolean
        installState:
          description: |2
            The installation state of the update.
            
            Unset if the update is not
            installed on the server.
            
            See also *HostPatchManagerInstallState_enum*.
          type: array
          items:
            type: string
        prerequisitePatch:
          description: |2
            Prerequisite update.
          type: array
          items:
            $ref: '#/components/schemas/HostPatchManagerStatusPrerequisitePatch'
        restartRequired:
          description: |2
            Whether or not this update requires a host restart to take effect.
          type: boolean
        reconnectRequired:
          description: |2
            Whether or not this update requires caller to reconnect to the
            host.
            
            This is usually because the update is on the agent that
            running on the host, the agent would thus be restarted when the
            update is applied. Caller can reconnect (and possibly relogin) to
            the host after the agent has been restarted.
          type: boolean
        vmOffRequired:
          description: |2
            Whether or not this update requires the host in maintenance mode.
          type: boolean
        supersededPatchIds:
          description: |2
            Patches that are superseded by this update.
          type: array
          items:
            type: string
      required:
        - id
        - applicable
        - installed
        - restartRequired
        - reconnectRequired
        - vmOffRequired
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostPatchManagerStatus:
      type: object
      description: |2
        A boxed array of *HostPatchManagerStatus*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostPatchManagerStatus'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostPatchManagerStatusPrerequisitePatch:
      type: object
      description: |2
        Updates that are required to be installed before this update can
        be installed on the server.
        
        In addition to being installed on the server, an update can have
        additional requirement on the server or services running on the
        server pertaining to the prerequisite update.
      properties:
        id:
          description: |2
            Unique identifier of the prerequisite update.
          type: string
        installState:
          description: |2
            The requirement on the server or services running on the
            server pertaining to the prerequisite update.
            
            For example,
            this update could require the server to be rebooted after the
            prerequisite update is installed. Unset if there is no
            additional requirement on the prerequisite update.
            
            See also *HostPatchManagerInstallState_enum*.
          type: array
          items:
            type: string
      required:
        - id
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostPatchManagerStatusPrerequisitePatch:
      type: object
      description: |2
        A boxed array of *HostPatchManagerStatusPrerequisitePatch*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostPatchManagerStatusPrerequisitePatch'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostPathSelectionPolicyOption:
      type: object
      description: |2
        Description of options associated with a native multipathing
        path selection policy plugin.
      properties:
        policy:
          description: |2
            Description of the paths selection policy.
            
            Use the key as the
            identifier.
          $ref: '#/components/schemas/ElementDescription'
      required:
        - policy
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostPathSelectionPolicyOption:
      type: object
      description: |2
        A boxed array of *HostPathSelectionPolicyOption*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostPathSelectionPolicyOption'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostPciDevice:
      type: object
      description: |2
        This data object type describes information about
        a single Peripheral Component Interconnect (PCI) device.
      properties:
        id:
          description: |2
            The name ID of this PCI, composed of "bus:slot.function".
          type: string
        classId:
          description: |2
            The class of this PCI.
          type: integer
          minimum: -32768
          maximum: 32767
        bus:
          description: |2
            The bus ID of this PCI.
          type: integer
          minimum: -128
          maximum: 127
        slot:
          description: |2
            The slot ID of this PCI.
          type: integer
          minimum: -128
          maximum: 127
        function:
          description: |2
            The function ID of this PCI.
          type: integer
          minimum: -128
          maximum: 127
        vendorId:
          description: |2
            The vendor ID of this PCI.
            
            The vendor ID might be a negative value. A vSphere Server uses an unsigned
            short integer to represent a PCI vendor ID. The WSDL representation of the ID
            is a signed short integer. If the vendor ID is greater than 32767, the Server
            will convert the ID to its two's complement for the WSDL representation.
            When you specify a PCI device vendor ID for a virtual machine
            (*VirtualPCIPassthroughDeviceBackingInfo*.vendorId),
            you must use the retrieved *HostPciDevice*.deviceId value.
          type: integer
          minimum: -32768
          maximum: 32767
        subVendorId:
          description: |2
            The subvendor ID of this PCI.
            
            The subvendor ID might be a negative value. A vSphere Server uses an unsigned
            short integer to represent a PCI subvendor ID. The WSDL representation of the ID
            is a signed short integer. If the subvendor ID is greater than 32767, the Server
            will convert the ID to its two's complement for the WSDL representation.
          type: integer
          minimum: -32768
          maximum: 32767
        vendorName:
          description: |2
            The vendor name of this PCI.
          type: string
        deviceId:
          description: |2
            The device ID of this PCI.
            
            The device ID might be a negative value. A vSphere Server uses an unsigned
            short integer to represent a PCI device ID. The WSDL representation of the ID
            is a signed short integer. If the PCI ID is greater than 32767, the Server
            will convert the ID to its two's complement for the WSDL representation.
            When you specify a PCI device ID for a virtual machine
            (*VirtualPCIPassthroughDeviceBackingInfo*.deviceId),
            you must use the *HostPciDevice*.deviceId value as retrieved
            and convert it to a string.
          type: integer
          minimum: -32768
          maximum: 32767
        subDeviceId:
          description: |2
            The subdevice ID of this PCI.
            
            The subdevice ID might be a negative value. A vSphere Server uses an unsigned
            short integer to represent a PCI subdevice ID. The WSDL representation of the ID
            is a signed short integer. If the subdevice ID is greater than 32767, the Server
            will convert the ID to its two's complement for the WSDL representation.
          type: integer
          minimum: -32768
          maximum: 32767
        parentBridge:
          description: |2
            The parent bridge of this PCI.
          type: string
        deviceName:
          description: |2
            The device name of this PCI.
          type: string
        deviceClassName:
          description: |2
            The name for the PCI device class representing this PCI.
            
            For example: "Host bridge", "iSCSI device", "Fibre channel HBA".
            
            ***Since:*** vSphere API Release 8.0.3.0
          type: string
      required:
        - id
        - classId
        - bus
        - slot
        - function
        - vendorId
        - subVendorId
        - vendorName
        - deviceId
        - subDeviceId
        - deviceName
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostPciDevice:
      type: object
      description: |2
        A boxed array of *HostPciDevice*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostPciDevice'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostPciPassthruConfig:
      type: object
      description: |2
        This data object provides information about the state of PciPassthru
        for all pci devices.
      properties:
        id:
          description: |2
            The name ID of this PCI, composed of "bus:slot.function".
          type: string
        passthruEnabled:
          description: |2
            Whether passThru has been configured for this device
          type: boolean
        applyNow:
          description: |2
            Whether the passThru config should take effect without rebooting ESX.
            
            When unset, the behavior will be determined automatically
            based on *HostCapability.deviceRebindWithoutRebootSupported*.
            If the configuration can be applied immediately, it
            will be, otherwise the changes will take effect after reboot.
          type: boolean
        hardwareLabel:
          description: |2
            The hardware label of the this PCI device.
            
            ***Since:*** vSphere API Release 7.0.2.0
          type: string
      required:
        - id
        - passthruEnabled
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostPciPassthruConfig:
      type: object
      description: |2
        A boxed array of *HostPciPassthruConfig*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostPciPassthruConfig'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostPciPassthruInfo:
      type: object
      description: |2
        This data object provides information about the state of PciPassthru
        for all pci devices.
      properties:
        id:
          description: |2
            The name ID of this PCI, composed of "bus:slot.function".
          type: string
        dependentDevice:
          description: |2
            Device which needs to be unclaimed by vmkernel (may be bridge)
          type: string
        passthruEnabled:
          description: |2
            Whether passThru has been configured by the user
          type: boolean
        passthruCapable:
          description: |2
            Whether passThru is even possible for this device (decided by vmkctl)
          type: boolean
        passthruActive:
          description: |2
            Whether passThru is active for this device (meaning enabled + rebooted)
          type: boolean
        hardwareLabel:
          description: |2
            The hardware label of this PCI device.
            
            ***Since:*** vSphere API Release 7.0.2.0
          type: string
      required:
        - id
        - dependentDevice
        - passthruEnabled
        - passthruCapable
        - passthruActive
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostPciPassthruInfo:
      type: object
      description: |2
        A boxed array of *HostPciPassthruInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostPciPassthruInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostPcieHba:
      type: object
      description: |2
        This data object describes the Peripheral Component Interconnect Express
        (PCIe) host bus adapter interface.
      allOf:
        - $ref: '#/components/schemas/HostHostBusAdapter'

    ArrayOfHostPcieHba:
      type: object
      description: |2
        A boxed array of *HostPcieHba*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostPcieHba'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostPcieTargetTransport:
      type: object
      description: |2
        Peripheral Component Interconnect Express (PCIe)
        transport information about a target.
      allOf:
        - $ref: '#/components/schemas/HostTargetTransport'

    ArrayOfHostPcieTargetTransport:
      type: object
      description: |2
        A boxed array of *HostPcieTargetTransport*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostPcieTargetTransport'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostPersistentMemoryInfo:
      type: object
      description: |2
        Host Hardware information about configured and available
        persistent memory on a host.
      properties:
        capacityInMB:
          description: |2
            Amount of configured persistent memory available on a host in MB.
          type: integer
          format: int64
        volumeUUID:
          description: |2
            Unique persistent memory host indentifier.
          type: string
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostPersistentMemoryInfo:
      type: object
      description: |2
        A boxed array of *HostPersistentMemoryInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostPersistentMemoryInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PhysicalNic:
      type: object
      description: |2
        This data object type describes the physical network adapter
        as seen by the primary operating system.
      properties:
        key:
          description: |2
            The linkable identifier.
          type: string
        device:
          description: |2
            The device name of the physical network adapter.
          type: string
        pci:
          description: |2
            Device hash of the PCI device corresponding to this
            physical network adapter.
          type: string
        driver:
          description: |2
            The name of the driver.
            
            From command line: esxcli network nic get
          type: string
        driverVersion:
          description: |2
            The version of the physical network adapter operating system driver.
            
            ***Since:*** vSphere API Release 8.0.0.1
          type: string
        firmwareVersion:
          description: |2
            The version of the firmware running in the network adapter.
            
            ***Since:*** vSphere API Release 8.0.0.1
          type: string
        linkSpeed:
          description: |2
            The current link state of the physical network adapter.
            
            If this object is not set, then the link is down.
          $ref: '#/components/schemas/PhysicalNicLinkInfo'
        validLinkSpecification:
          description: |2
            The valid combinations of speed and duplexity for this
            physical network adapter.
            
            The speed and the duplex settings usually must be configured
            as a pair. This array lists all the valid combinations available
            for a physical network adapter.
            
            Autonegotiate is not listed as one of the combinations supported.
            If is implicitly supported by the physical network adapter
            unless *PhysicalNic.autoNegotiateSupported* is set to false.
          type: array
          items:
            $ref: '#/components/schemas/PhysicalNicLinkInfo'
        spec:
          description: |2
            The specification of the physical network adapter.
          $ref: '#/components/schemas/PhysicalNicSpec'
        wakeOnLanSupported:
          description: |2
            Flag indicating whether the NIC is wake-on-LAN capable
          type: boolean
        mac:
          description: |2
            The media access control (MAC) address of the physical
            network adapter.
          type: string
        fcoeConfiguration:
          description: |2
            The FCoE configuration of the physical network adapter.
          $ref: '#/components/schemas/FcoeConfig'
        vmDirectPathGen2Supported:
          deprecated: true
          description: |2
            Deprecated as of vSphere API 8.0. VMDirectPath Gen 2 is no longer supported and
            there is no replacement.
            
            Flag indicating whether the NIC supports VMDirectPath Gen 2.
            
            Note that
            this is only an indicator of the capabilities of this NIC, not of the
            whole host.
            
            If the host software is not capable of VMDirectPath Gen 2,
            this property will be unset, as the host cannot provide information on
            the NIC capability.
            
            See also *HostCapability.vmDirectPathGen2Supported*.
          type: boolean
        vmDirectPathGen2SupportedMode:
          deprecated: true
          description: |2
            Deprecated as of vSphere API 8.0. VMDirectPath Gen 2 is no longer supported and
            there is no replacement.
            
            If *PhysicalNic.vmDirectPathGen2Supported* is true, this property advertises
            the VMDirectPath Gen 2 mode supported by this NIC (chosen from
            *PhysicalNicVmDirectPathGen2SupportedMode_enum*).
            
            A mode may require that the associated vSphere Distributed Switch have
            a particular ProductSpec in order for network passthrough to be possible.
          type: string
        resourcePoolSchedulerAllowed:
          description: |2
            Flag indicating whether the NIC allows resource pool based scheduling
            for network I/O control.
          type: boolean
        resourcePoolSchedulerDisallowedReason:
          description: |2
            If *PhysicalNic.resourcePoolSchedulerAllowed* is false, this property
            advertises the reason for disallowing resource scheduling on
            this NIC.
            
            The reasons may be one of
            *PhysicalNicResourcePoolSchedulerDisallowedReason_enum*
          type: array
          items:
            type: string
        autoNegotiateSupported:
          description: |2
            If set the flag indicates if the physical network adapter supports
            autonegotiate.
          type: boolean
        enhancedNetworkingStackSupported:
          description: |2
            If set the flag indicates whether a physical nic supports Enhanced
            Networking Stack driver
          type: boolean
        ensInterruptSupported:
          description: |2
            If set the flag indicates whether a physical nic supports Enhanced
            Networking Stack interrupt mode
          type: boolean
        rdmaDevice:
          description: |2
            Associated RDMA device, if any.
          $ref: '#/components/schemas/HostRdmaDevice'
        dpuId:
          description: |2
            The identifier of the DPU by which the physical NIC is backed.
            
            When physical NIC is not backed by DPU, dpuId will be unset.
            
            ***Since:*** vSphere API Release 8.0.0.1
          type: string
      required:
        - device
        - pci
        - spec
        - wakeOnLanSupported
        - mac
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfPhysicalNic:
      type: object
      description: |2
        A boxed array of *PhysicalNic*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PhysicalNic'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PhysicalNicCdpDeviceCapability:
      type: object
      description: |2
        The capability of the CDP-awared device that connects to a Physical NIC.
        
        *PhysicalNicCdpInfo*
      properties:
        router:
          description: |2
            The CDP-awared device has the capability of a routing for
            at least one network layer protocol
          type: boolean
        transparentBridge:
          description: |2
            The CDP-awared device has the capability of transparent
            bridging
          type: boolean
        sourceRouteBridge:
          description: |2
            The CDP-awared device has the capability of source-route
            bridging
          type: boolean
        networkSwitch:
          description: |2
            The CDP-awared device has the capability of switching.
            
            The
            difference between this capability and transparentBridge is
            that a switch does not run the Spanning-Tree Protocol. This
            device is assumed to be deployed in a physical loop-free topology.
          type: boolean
        host:
          description: |2
            The CDP-awared device has the capability of a host, which
            Sends and receives packets for at least one network layer protocol.
          type: boolean
        igmpEnabled:
          description: |2
            The CDP-awared device is IGMP-enabled, which does not forward IGMP
            Report packets on nonrouter ports.
          type: boolean
        repeater:
          description: |2
            The CDP-awared device has the capability of a repeater
          type: boolean
      required:
        - router
        - transparentBridge
        - sourceRouteBridge
        - networkSwitch
        - host
        - igmpEnabled
        - repeater
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfPhysicalNicCdpDeviceCapability:
      type: object
      description: |2
        A boxed array of *PhysicalNicCdpDeviceCapability*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PhysicalNicCdpDeviceCapability'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PhysicalNicCdpInfo:
      type: object
      description: |2
        CDP (Cisco Discovery Protocol) is a link level protocol that allows
        for discovering the CDP-awared network hardware at either end of a
        DIRECT connection.
        
        It's only good for direct connection because CDP
        doesn't get forwarded through switches.
        It's a simple advertisement protocol which beacons information about
        the switch or host along with some port information. The CDP information
        allows ESX Server admins to know which Cisco switch port is connected to
        any given virtual switch uplink (PNIC).
      properties:
        cdpVersion:
          description: |2
            CDP version.
            
            The value is always 1.
          type: integer
          format: int32
        timeout:
          description: |2
            This is the periodicity of advertisement, the time between two
            successive CDP message transmissions
          type: integer
          format: int32
        ttl:
          description: |2
            Time-To-Live.
            
            the amount of time, in seconds, that a receiver should
            retain the information contained in the CDP packet.
          type: integer
          format: int32
        samples:
          description: |2
            The number of CDP messages we have received from the device.
          type: integer
          format: int32
        devId:
          description: |2
            Device ID which identifies the device.
            
            By default, the device ID is
            either the device's fully-qualified host name (including the domain
            name) or the device's hardware serial number in ASCII.
          type: string
        address:
          description: |2
            The advertised IP address that is assigned to the interface of the device
            on which the CDP message is sent.
            
            The device can advertise all addresses for
            a given protocol suite and, optionally, can advertise one or more loopback
            IP addresses. But this property only show the first address.
          type: string
        portId:
          description: |2
            Port ID.
            
            An ASCII character string that identifies the port on which
            the CDP message is sent, e.g. "FastEthernet0/8"
          type: string
        deviceCapability:
          description: |2
            Device Capability
            *PhysicalNicCdpDeviceCapability*
          $ref: '#/components/schemas/PhysicalNicCdpDeviceCapability'
        softwareVersion:
          description: |2
            Software version on the device.
            
            A character string that provides
            information about the software release version that the device is
            running. e.g. "Cisco Internetwork Operating Syscisco WS-C2940-8TT-S"
          type: string
        hardwarePlatform:
          description: |2
            Hardware platform.
            
            An ASCII character string that describes the
            hardware platform of the device , e.g. "cisco WS-C2940-8TT-S"
          type: string
        ipPrefix:
          description: |2
            IP prefix.
            
            Each IP prefix represents one of the directly connected
            IP network segments of the local route.
          type: string
        ipPrefixLen:
          description: |2
            ipPrefix length.
          type: integer
          format: int32
        vlan:
          description: |2
            The native VLAN of advertising port.
            
            The native VLAN is the VLAN to
            which a port returns when it is not trunking. Also, the native VLAN
            is the untagged VLAN on an 802.1Q trunk.
          type: integer
          format: int32
        fullDuplex:
          description: |2
            Half/full duplex setting of the advertising port.
          type: boolean
        mtu:
          description: |2
            MTU, the maximum transmission unit for the advertising port.
            
            Possible
            values are 1500 through 18190.
          type: integer
          format: int32
        systemName:
          description: |2
            The configured SNMP system name of the device.
          type: string
        systemOID:
          description: |2
            The configured SNMP system OID of the device.
          type: string
        mgmtAddr:
          description: |2
            The configured IP address of the SNMP management interface for the
            device.
          type: string
        location:
          description: |2
            The configured location of the device.
          type: string
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfPhysicalNicCdpInfo:
      type: object
      description: |2
        A boxed array of *PhysicalNicCdpInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PhysicalNicCdpInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PhysicalNicConfig:
      type: object
      description: |2
        The configuration of the physical network adapter containing
        both the configurable properties and identification information.
      properties:
        device:
          description: |2
            PhysicalNic device to which configuration applies.
          type: string
        spec:
          description: |2
            The specification of the physical network adapter.
          $ref: '#/components/schemas/PhysicalNicSpec'
      required:
        - device
        - spec
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfPhysicalNicConfig:
      type: object
      description: |2
        A boxed array of *PhysicalNicConfig*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PhysicalNicConfig'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PhysicalNicLinkInfo:
      type: object
      description: |2
        The *PhysicalNicLinkInfo* data object describes
        the link speed and the type of duplex communication.
        
        The link speed indicates
        the bit rate in megabits per second. The duplex boolean indicates if the link
        is capable of full-duplex or half-duplex communication.
      properties:
        speedMb:
          description: |2
            Bit rate on the link.
          type: integer
          format: int32
        duplex:
          description: |2
            Flag to indicate whether or not the link is capable of
            full-duplex ("true") or only half-duplex ("false").
          type: boolean
      required:
        - speedMb
        - duplex
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfPhysicalNicLinkInfo:
      type: object
      description: |2
        A boxed array of *PhysicalNicLinkInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PhysicalNicLinkInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    LinkLayerDiscoveryProtocolInfo:
      type: object
      description: |2
        The Link Layer Discovery Protocol information.
      properties:
        chassisId:
          description: |2
            ChassisId represents the chassis identification for the device that
            transmitted the LLDP frame.
            
            The receiving LLDP agent combines the
            Chassis ID and portId to represent the entity connected to the port
            where the frame was received.
          type: string
        portId:
          description: |2
            This property identifies the specific port that transmitted the LLDP
            frame.
            
            The receiving LLDP agent combines the Chassis ID and Port to
            represent the entity connected to the port where the frame was received.
          type: string
        timeToLive:
          description: |2
            It is the duration of time in seconds for which information contained
            in the received LLDP frame shall be valid.
            
            If a value of zero is sent
            it can also identify a device that has shut down or is no longer
            transmitting, prompting deletion of the record from the local database.
          type: integer
          format: int32
        parameter:
          description: |2
            LLDP parameters
          type: array
          items:
            $ref: '#/components/schemas/KeyAnyValue'
      required:
        - chassisId
        - portId
        - timeToLive
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfLinkLayerDiscoveryProtocolInfo:
      type: object
      description: |2
        A boxed array of *LinkLayerDiscoveryProtocolInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/LinkLayerDiscoveryProtocolInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PhysicalNicHintInfo:
      type: object
      description: |2
        The NetworkHint data object type is some information about
        the network to which the
        physical network adapter is attached.
      properties:
        device:
          description: |2
            The physical network adapter device to which
            this hint applies.
          type: string
        subnet:
          description: |2
            The list of subnets that were detected on this
            physical network adapter.
          type: array
          items:
            $ref: '#/components/schemas/PhysicalNicIpHint'
        network:
          description: |2
            The list of network names that were detected on this
            physical network adapter.
          type: array
          items:
            $ref: '#/components/schemas/PhysicalNicNameHint'
        connectedSwitchPort:
          description: |2
            If the uplink directly connects to a CDP-awared network device
            and the device's CDP broadcast is enabled, this property will be
            set to return the CDP information that vmkernel received on this
            Physical NIC.
            
            CDP data contains the device information and port ID that
            the Physical NIC connects to. If the uplink is not connecting to a
            CDP-awared device or CDP is not enabled on the device, this
            property will be unset.
            *PhysicalNicCdpInfo*
          $ref: '#/components/schemas/PhysicalNicCdpInfo'
        lldpInfo:
          description: |2
            If the uplink directly connects to an LLDP-aware network device and
            the device's LLDP broadcast is enabled, this property will be set to
            return the LLDP information that is received on this physical network
            adapter.
            
            If the uplink is not connecting to a LLDP-aware device or
            LLDP is not enabled on the device, this property will be unset.
          $ref: '#/components/schemas/LinkLayerDiscoveryProtocolInfo'
      required:
        - device
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfPhysicalNicHintInfo:
      type: object
      description: |2
        A boxed array of *PhysicalNicHintInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PhysicalNicHintInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PhysicalNicHint:
      type: object
      description: |2
        This data object type describes each network of a physical
        network adapter's network hint.
      properties:
        vlanId:
          description: |2
            The optional VLAN Id of the network.
          type: integer
          format: int32
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfPhysicalNicHint:
      type: object
      description: |2
        A boxed array of *PhysicalNicHint*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PhysicalNicHint'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PhysicalNicIpHint:
      type: object
      description: |2
        This data object type describes a network in network hint where
        the network is specified using IP addresses, for example,
        10.27.49.1-10.27.49.254
      properties:
        ipSubnet:
          description: |2
            The network IP addresses.
          type: string
      required:
        - ipSubnet
      allOf:
        - $ref: '#/components/schemas/PhysicalNicHint'

    ArrayOfPhysicalNicIpHint:
      type: object
      description: |2
        A boxed array of *PhysicalNicIpHint*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PhysicalNicIpHint'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PhysicalNicNameHint:
      type: object
      description: |2
        This data object type describes a network in network hint where
        the network describes the color, label, or the name of the
        network.
      properties:
        network:
          description: |2
            The network name.
          type: string
      required:
        - network
      allOf:
        - $ref: '#/components/schemas/PhysicalNicHint'

    ArrayOfPhysicalNicNameHint:
      type: object
      description: |2
        A boxed array of *PhysicalNicNameHint*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PhysicalNicNameHint'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PhysicalNicSpec:
      type: object
      description: |2
        This data object type describes the physical network adapter specification
        representing the properties on a physical network adapter that
        can be configured once the object exists.
      properties:
        ip:
          description: |2
            The IP configuration on the physical network adapter (applies
            only to a hosted network adapter).
            
            The data object will be NULL on an ESX Server system.
          $ref: '#/components/schemas/HostIpConfig'
        linkSpeed:
          description: |2
            The link speed and duplexity that this physical network
            adapter is currently
            configured to use.
            
            If this property is not set, the physical
            network adapter autonegotiates its proper settings.
          $ref: '#/components/schemas/PhysicalNicLinkInfo'
        enableEnhancedNetworkingStack:
          description: |2
            If set the flag indicates if the physical network adapter is
            configured for Enhanced Networking Stack
          type: boolean
        ensInterruptEnabled:
          description: |2
            If set the flag indicates if the physical network adapter is
            configured for Enhanced Networking Stack interrupt mode
          type: boolean
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfPhysicalNicSpec:
      type: object
      description: |2
        A boxed array of *PhysicalNicSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PhysicalNicSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostPlugStoreTopology:
      type: object
      description: |2
        This data object represents the plug-store topology on a host
        system.
        
        Through this data object, the storage structure of a system
        that utilizes the plug-store architecture can be presented.
        
        The object entity-relationship diagram is modeled below:
        
              ------------------------------------------------------------
              |             0..N             0..N      0..N              |
              |   Plugin ----->  Device  ------>  Path  <------  Adapter |
              |                          <------   |    ------>          |
              |                          0,1       |          1          |
              |                                    |                     |
              |                                    | 0,1                 |
              |                                   \|/                    |
              |                                  Target                  |
              ------------------------------------------------------------
        Description and reasoning behind the relationships:
        
        When a storage device driver is loaded, it claims a PCI device as a
        host bus adapter. This host bus adapter is represented as an Adapter.
        The PCI device identifier is a property on the HostBusAdapter in the
        Adapter.
        
        Once the host bus adapter is on the system, the hardware bus is scanned.
        If a storage Device is found on the bus, the communication path to the
        Device from the the host bus adapter is represented by a Path. A Device
        may have more than one Path. How those Paths are composed to create a
        Device is determined by a storage Plugin.
        
        When a storage Plugin is loaded, it claims a set of Paths. It groups these
        Paths into a set of Devices. Devices are hence associated with a set of
        Paths that might be used to provide a single logical device such as in the
        case of multipathing. Devices may be also composed of zero Paths meaning
        that they do not directly use a host bus adapter for communication with
        underlying storage.
        
        The purpose of this data object is to represent the topology of storage
        as seen by the base plug-store system. There is some overlap
        with information in other objects such as ScsiTopology which is only
        applicable when a particular "native multipathing" plugin is used. This
        data object provides the complete inventory of Devices and Paths. Hence
        it provides a superset of Device mappings over data object such as
        ScsiTopology and Multipa
        
        The use cases that this data object accommodates includes the following
        non-exhaustive list:
        - Enumerate paths on a host bus adapter.
        - Enumerate paths on a storage device.
        - Conveniently access the devices a host bus adapter is
          associated with by traversing the path.
        - Determine which plugin a device belongs.
        - Determine which paths are claimed by a plugin by
          accumulating the paths of all device of the plugin.
        - Determine which plugin a path belongs to by accessing its
          device and finding that device in the Plugin list.
      properties:
        adapter:
          description: |2
            List of host bus adapters in the plug store inventory.
          type: array
          items:
            $ref: '#/components/schemas/HostPlugStoreTopologyAdapter'
        path:
          description: |2
            List of paths in the plug store inventory.
          type: array
          items:
            $ref: '#/components/schemas/HostPlugStoreTopologyPath'
        target:
          description: |2
            Partial list of targets as seen by the host.
            
            The list of targets
            may not be exhaustive on the host.
          type: array
          items:
            $ref: '#/components/schemas/HostPlugStoreTopologyTarget'
        device:
          description: |2
            List of devices in the plug store inventory.
          type: array
          items:
            $ref: '#/components/schemas/HostPlugStoreTopologyDevice'
        plugin:
          description: |2
            List of plugins in the plug store inventory.
          type: array
          items:
            $ref: '#/components/schemas/HostPlugStoreTopologyPlugin'
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostPlugStoreTopology:
      type: object
      description: |2
        A boxed array of *HostPlugStoreTopology*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostPlugStoreTopology'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostPlugStoreTopologyAdapter:
      type: object
      description: |2
        This data object type is an association class that describes a host bus
        adapter and its associated storage Paths.
        
        The set of Paths on all the
        host bus adapters is the complete set of Paths in the system.
      properties:
        key:
          description: |2
            The identifier for the host bus adapter.
          type: string
        adapter:
          description: |2
            The link to the host bus adapter for this inebtrface.
          $ref: '#/components/schemas/HostHostBusAdapter'
        path:
          description: |2
            The list of paths to which the host bus adapter is associated.
          type: array
          items:
            $ref: '#/components/schemas/HostPlugStoreTopologyPath'
      required:
        - key
        - adapter
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostPlugStoreTopologyAdapter:
      type: object
      description: |2
        A boxed array of *HostPlugStoreTopologyAdapter*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostPlugStoreTopologyAdapter'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostPlugStoreTopologyDevice:
      type: object
      description: |2
        This data object type is an association class that describes a ScsiLun
        and its associated Path objects.
        
        The ScsiLun is a Device that is formed
        from a set of Paths.
      properties:
        key:
          description: |2
            Linkable identifier.
          type: string
        lun:
          description: |2
            The SCSI device corresponding to logical unit.
          $ref: '#/components/schemas/ScsiLun'
        path:
          description: |2
            The array of paths available to access this LogicalUnit.
          type: array
          items:
            $ref: '#/components/schemas/HostPlugStoreTopologyPath'
      required:
        - key
        - lun
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostPlugStoreTopologyDevice:
      type: object
      description: |2
        A boxed array of *HostPlugStoreTopologyDevice*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostPlugStoreTopologyDevice'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostPlugStoreTopologyPath:
      type: object
      description: |2
        This data object type is an association class that describes a Path and
        its associated Device.
        
        A Path may be claimed by at most one Device.
      properties:
        key:
          description: |2
            The identifier for the Path.
          type: string
        name:
          description: |2
            Name of path.
            
            Use this property to correlate this path object to other
            path objects.
            
            The state of the Path can be retrieved from the data object (@link
            vim.host.MultipathStateInfo.Path} on the *HostMultipathStateInfo* data object.
            
            Use this name to configure LogicalUnit multipathing policy using *HostStorageSystem.EnableMultipathPath* and *HostStorageSystem.DisableMultipathPath*.
          type: string
        channelNumber:
          description: |2
            The channel number for a path if applicable.
          type: integer
          format: int32
        targetNumber:
          description: |2
            The target number for a path if applicable.
            
            The target number is not
            guaranteed to be consistent across reboots or rescans of the adapter.
          type: integer
          format: int32
        lunNumber:
          description: |2
            The LUN number for a path if applicable.
          type: integer
          format: int32
        adapter:
          description: |2
            The adapter that provided the Path.
          $ref: '#/components/schemas/HostPlugStoreTopologyAdapter'
        target:
          description: |2
            The target of the Path if any.
          $ref: '#/components/schemas/HostPlugStoreTopologyTarget'
        device:
          description: |2
            The device that claimed the Path if any.
          $ref: '#/components/schemas/HostPlugStoreTopologyDevice'
      required:
        - key
        - name
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostPlugStoreTopologyPath:
      type: object
      description: |2
        A boxed array of *HostPlugStoreTopologyPath*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostPlugStoreTopologyPath'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostPlugStoreTopologyPlugin:
      type: object
      description: |2
        This data object type represents a Plugin in the plug store architecture.
        
        A Plugin claims a set of paths and groups them into Devices.
      properties:
        key:
          description: |2
            The identifier of the plugin.
          type: string
        name:
          description: |2
            The name of the plugin.
          type: string
        device:
          description: |2
            The set of devices formed by this plugin.
          type: array
          items:
            $ref: '#/components/schemas/HostPlugStoreTopologyDevice'
        claimedPath:
          description: |2
            The set of paths claimed by this plugin.
            
            Not every claimed path
            will necessarily appear as part of a Device. Claimed paths will
            only appear under Devices if the device identifier of the path
            matches up with the device identifier exposed by the Device.
          type: array
          items:
            $ref: '#/components/schemas/HostPlugStoreTopologyPath'
      required:
        - key
        - name
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostPlugStoreTopologyPlugin:
      type: object
      description: |2
        A boxed array of *HostPlugStoreTopologyPlugin*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostPlugStoreTopologyPlugin'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostPlugStoreTopologyTarget:
      type: object
      description: |2
        This data object represents target information.
      properties:
        key:
          description: |2
            The identifier of the target.
            
            This will be a string representing the
            transport information of the target.
          type: string
        transport:
          description: |2
            Detailed, transport-specific information about the target of a path.
          $ref: '#/components/schemas/HostTargetTransport'
      required:
        - key
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostPlugStoreTopologyTarget:
      type: object
      description: |2
        A boxed array of *HostPlugStoreTopologyTarget*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostPlugStoreTopologyTarget'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostPortGroup:
      type: object
      description: |2
        This data object type is used to describe port groups.
        
        Port groups are used to group virtual network adapters on a virtual switch,
        associating them with networks and network policies.
      properties:
        key:
          description: |2
            The linkable identifier.
          type: string
        port:
          description: |2
            The ports that currently exist and are used on this port group.
          type: array
          items:
            $ref: '#/components/schemas/HostPortGroupPort'
        vswitch:
          description: |2
            The virtual switch that contains this port group.
          $ref: '#/components/schemas/HostVirtualSwitch'
        computedPolicy:
          description: |2
            Computed network policies that are applicable for a port group.
            
            The
            inheritance scheme for PortGroup requires knowledge about the
            NetworkPolicy for a port group and its parent virtual switch as well as
            the logic for computing the results. This information is provided as
            a convenience so that callers need not duplicate the inheritance logic
            to determine the proper values for a network policy.
            
            See the description of the
            *NetworkPolicy* data object type
            for more information.
          $ref: '#/components/schemas/HostNetworkPolicy'
        spec:
          description: |2
            The specification of a port group.
          $ref: '#/components/schemas/HostPortGroupSpec'
      required:
        - computedPolicy
        - spec
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostPortGroup:
      type: object
      description: |2
        A boxed array of *HostPortGroup*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostPortGroup'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostPortGroupConfig:
      type: object
      description: |2
        This describes the port group configuration containing both
        the configurable properties on a port group and the associated
        virtual switch.
      properties:
        changeOperation:
          description: |2
            Indicates the change operation to apply on this configuration
            specification.
            
            See also *HostConfigChangeOperation_enum*.
          type: string
        spec:
          description: |2
            The specification of the port group.
          $ref: '#/components/schemas/HostPortGroupSpec'
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostPortGroupConfig:
      type: object
      description: |2
        A boxed array of *HostPortGroupConfig*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostPortGroupConfig'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostPortGroupPort:
      type: object
      description: |2
        A Port data object type is a runtime representation of network
        connectivity between a network service or virtual machine and a
        virtual switch.
        
        This is different from a port group in that
        the port group represents the configuration aspects of the
        network connection. The Port object provides runtime statistics.
      properties:
        key:
          description: |2
            The linkable identifier.
          type: string
        mac:
          description: |2
            The Media Access Control (MAC) address of network service of
            the virtual machine connected on this port.
          type: array
          items:
            type: string
        type:
          description: |2
            The type of component connected on this port.
            
            Must be one of the
            values of *PortGroupConnecteeType_enum*.
          type: string
      required:
        - type
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostPortGroupPort:
      type: object
      description: |2
        A boxed array of *HostPortGroupPort*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostPortGroupPort'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostPortGroupSpec:
      type: object
      description: |2
        This data object type describes the PortGroup specification
        representing the properties on a PortGroup that
        can be configured.
      properties:
        name:
          description: |2
            The name of the port group.
          type: string
        vlanId:
          description: |2
            The VLAN ID for ports using this port group.
            
            Possible values:
            - A value of 0 specifies that you do not want the port group associated
              with a VLAN.
            - A value from 1 to 4094 specifies a VLAN ID for the port group.
            - A value of 4095 specifies that the port group should use trunk mode,
              which allows the guest operating system to manage its own VLAN tags.
          type: integer
          format: int32
        vswitchName:
          description: |2
            The identifier of the virtual switch on which
            this port group is located.
          type: string
        policy:
          description: |2
            Policies on the port group take precedence over the ones specified
            on the virtual switch.
          $ref: '#/components/schemas/HostNetworkPolicy'
      required:
        - name
        - vlanId
        - vswitchName
        - policy
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostPortGroupSpec:
      type: object
      description: |2
        A boxed array of *HostPortGroupSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostPortGroupSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PowerSystemCapability:
      type: object
      description: |2
        Power System Capability data object.
        
        Exposes policies available in power management system.
      properties:
        availablePolicy:
          description: |2
            List of available host power policies.
          type: array
          items:
            $ref: '#/components/schemas/HostPowerPolicy'
      required:
        - availablePolicy
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfPowerSystemCapability:
      type: object
      description: |2
        A boxed array of *PowerSystemCapability*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PowerSystemCapability'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PowerSystemInfo:
      type: object
      description: |2
        Power System Info data object.
        
        Shows current state of power management system.
      properties:
        currentPolicy:
          description: |2
            Currently selected host power management policy.
            
            This property can have one of the values from
            *PowerSystemCapability.availablePolicy*.
          $ref: '#/components/schemas/HostPowerPolicy'
      required:
        - currentPolicy
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfPowerSystemInfo:
      type: object
      description: |2
        A boxed array of *PowerSystemInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PowerSystemInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostPowerPolicy:
      type: object
      description: |2
        Power Management Policy data object.
        
        Used to retrieve and specify current host power management policy.
      properties:
        key:
          description: |2
            Power Policy Key.
            
            Internally generated key which uniquely identifies power management
            policy on a host.
          type: integer
          format: int32
        name:
          description: |2
            Power Policy Name.
          type: string
        shortName:
          description: |2
            Power Policy Short Name.
            
            This is not localizable property which can be used to identify specific
            power managing policies like "custom" power policy. Custom power policy
            has short name set to "custom".
          type: string
        description:
          description: |2
            Power Policy Description.
          type: string
      required:
        - key
        - name
        - shortName
        - description
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostPowerPolicy:
      type: object
      description: |2
        A boxed array of *HostPowerPolicy*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostPowerPolicy'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostProtocolEndpoint:
      type: object
      description: |2
        ProtocolEndpoint is configured LUN or NFS directory
        This is used for io path to actual virtual disks (VVols)
      properties:
        peType:
          deprecated: true
          description: |2
            Deprecated from all vmodl version above @released("6.0")
            Use type instead.
            
            Type of ProtocolEndpoint
            See *HostProtocolEndpointPEType_enum*
          type: string
        type:
          description: |2
            Type of ProtocolEndpoint
            See *HostProtocolEndpointProtocolEndpointType_enum*
          type: string
        uuid:
          description: |2
            Identifier for PE assigned by VASA Provider
          type: string
        hostKey:
          description: |2
            Set of ESX hosts which can see the same PE
            
            Refers instances of *HostSystem*.
          type: array
          items:
            $ref: '#/components/schemas/ManagedObjectReference'
        storageArray:
          description: |2
            Associated Storage Array
          type: string
        nfsServer:
          description: |2
            NFSv3 and NFSv4x PE will contain information about NFS Server
            For NFSv4x this field may contain comma separated list of IP addresses
            which are associated with the NFS Server
          type: string
        nfsDir:
          description: |2
            NFSv3 and NFSv4x PE will contain information about NFS directory
          type: string
        nfsServerScope:
          description: |2
            NFSv4x PE will contain information about NFSv4x Server Scope
          type: string
        nfsServerMajor:
          description: |2
            NFSv4x PE will contain information about NFSv4x Server Major
          type: string
        nfsServerAuthType:
          description: |2
            NFSv4x PE will contain information about NFSv4x Server Auth-type
          type: string
        nfsServerUser:
          description: |2
            NFSv4x PE will contain information about NFSv4x Server User
          type: string
        deviceId:
          description: |2
            SCSI PE will contain information about SCSI device ID
          type: string
        usedByStretchedContainer:
          description: |2
            Indicates whether the PE is being used to access a stretch-capable container
            
            ***Since:*** vSphere API Release 8.0.3.0
          type: boolean
      required:
        - peType
        - uuid
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostProtocolEndpoint:
      type: object
      description: |2
        A boxed array of *HostProtocolEndpoint*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostProtocolEndpoint'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostPtpConfig:
      type: object
      description: |2
        Configuration information for the host PTP (Precision Time
        Protocol) service.
        
        ***Since:*** vSphere API Release 7.0.3.0
      properties:
        domain:
          description: |2
            PTP domain number as defined in the IEEE 1588 standard.
            
            Supported
            values are in the range 0-255.
          type: integer
          format: int32
        port:
          description: |2
            List of PTP port configurations.
            
            See *HostPtpConfigPtpPort*.
          type: array
          items:
            $ref: '#/components/schemas/HostPtpConfigPtpPort'
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostPtpConfig:
      type: object
      description: |2
        A boxed array of *HostPtpConfig*. To be used in *Any* placeholders.
        
        ***Since:*** vSphere API Release 7.0.3.0
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostPtpConfig'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostPtpConfigPtpPort:
      type: object
      description: |2
        Configuration of a PTP port, a logical entity providing an
        interface to the network for sending and receiving PTP messages
        with timestamping.
        
        ***Since:*** vSphere API Release 7.0.3.0
      properties:
        index:
          description: |2
            Index into the list of PTP ports.
            
            Supported values are in the
            range 0 through *HostCapability.maxSupportedPtpPorts*-1.
          type: integer
          format: int32
        deviceType:
          description: |2
            Type of network device to be used with this port.
            
            See *HostPtpConfigDeviceType_enum* for supported values. A device type
            of *none* indicates that this port is
            inactive.
          type: string
        device:
          description: |2
            Name of PTP capable network device to be used with this port.
            
            Supported values depend on the type of network device used.
            For *virtualNic* this field is the name of
            a valid virtual NIC. See *HostVirtualNic*.
            For *pciPassthruNic* this field is a valid
            PCI device ID composed of "bus:slot.function", enabled for
            PCI passthru. See *HostPciPassthruInfo*.
            For *none* this field is ignored.
          type: string
        ipConfig:
          description: |2
            IP configuration of this port.
            
            For *pciPassthruNic*, this field reflects
            current IP configuration, and it can be set.
            For *virtualNic*, this field reflects current
            IP configuration, but it cannot be set. To configure IP settings
            of a virtual NIC, see *HostVirtualNic*.
            For *none*, this field is ignored.
          $ref: '#/components/schemas/HostIpConfig'
      required:
        - index
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostPtpConfigPtpPort:
      type: object
      description: |2
        A boxed array of *HostPtpConfigPtpPort*. To be used in *Any* placeholders.
        
        ***Since:*** vSphere API Release 7.0.3.0
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostPtpConfigPtpPort'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostQualifiedName:
      type: object
      description: |2
        This data object describes a qualified name of the host used to
        identify it in a particular context.
        
        ***Since:*** vSphere API Release 7.0.3.0
      properties:
        value:
          description: |2
            The qualified name.
          type: string
        type:
          description: |2
            The type of the qualified name.
            
            The list of supported values is specified in *HostQualifiedNameType_enum*.
          type: string
      required:
        - value
        - type
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostQualifiedName:
      type: object
      description: |2
        A boxed array of *HostQualifiedName*. To be used in *Any* placeholders.
        
        ***Since:*** vSphere API Release 7.0.3.0
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostQualifiedName'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostRdmaDevice:
      type: object
      description: |2
        This data object represents a Remote Direct Memory Access
        device as seen by the primary operating system.
      properties:
        key:
          description: |2
            The linkable identifier.
          type: string
        device:
          description: |2
            The device name of the RDMA device.
          type: string
        driver:
          description: |2
            The short string name of the device driver, if available.
          type: string
        description:
          description: |2
            Device description, if available.
          type: string
        backing:
          description: |2
            If set, represents the physical backing for the RDMA device.
            
            Not all RDMA devices are required to have a physical backing.
          $ref: '#/components/schemas/HostRdmaDeviceBacking'
        connectionInfo:
          description: |2
            Current device connection state.
          $ref: '#/components/schemas/HostRdmaDeviceConnectionInfo'
        capability:
          description: |2
            Supported capabilies of the RDMA device.
          $ref: '#/components/schemas/HostRdmaDeviceCapability'
      required:
        - key
        - device
        - connectionInfo
        - capability
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostRdmaDevice:
      type: object
      description: |2
        A boxed array of *HostRdmaDevice*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostRdmaDevice'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostRdmaDeviceBacking:
      type: object
      description: |2
        This data object represents the physical
        backing of an RDMA device.
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostRdmaDeviceBacking:
      type: object
      description: |2
        A boxed array of *HostRdmaDeviceBacking*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostRdmaDeviceBacking'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostRdmaDeviceCapability:
      type: object
      description: |2
        Represents device capabilies, e.g.
        
        supported protocols.
      properties:
        roceV1Capable:
          description: |2
            Indicates whether ROCEv1 is supported by the device.
          type: boolean
        roceV2Capable:
          description: |2
            Indicates whether ROCEv2 is supported by the device.
          type: boolean
        iWarpCapable:
          description: |2
            Indicates whether iWARP is supported by the device.
          type: boolean
      required:
        - roceV1Capable
        - roceV2Capable
        - iWarpCapable
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostRdmaDeviceCapability:
      type: object
      description: |2
        A boxed array of *HostRdmaDeviceCapability*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostRdmaDeviceCapability'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostRdmaDeviceConnectionInfo:
      type: object
      description: |2
        Represents connection information for the RDMA device.
      properties:
        state:
          description: |2
            RDMA device connection state.
            
            The set of possible values
            is described in *HostRdmaDeviceConnectionState_enum*.
          type: string
        mtu:
          description: |2
            Maximum Transmission Unit in bytes.
          type: integer
          format: int32
        speedInMbps:
          description: |2
            Bit rate in Mbps.
          type: integer
          format: int32
      required:
        - state
        - mtu
        - speedInMbps
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostRdmaDeviceConnectionInfo:
      type: object
      description: |2
        A boxed array of *HostRdmaDeviceConnectionInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostRdmaDeviceConnectionInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostRdmaDevicePnicBacking:
      type: object
      description: |2
        This data object represents a physical NIC backing
        for an RDMA device.
        
        When an RDMA device is backed by a physical NIC, it
        can be associated with the virtual NICs
        connected to a virtual switch which has the
        backing physical NIC as an uplink. The actual bindings
        are created and destroyed dynamically based on application
        usage of the RDMA device.
      properties:
        pairedUplink:
          description: |2
            The associated physical NIC
          $ref: '#/components/schemas/PhysicalNic'
      required:
        - pairedUplink
      allOf:
        - $ref: '#/components/schemas/HostRdmaDeviceBacking'

    ArrayOfHostRdmaDevicePnicBacking:
      type: object
      description: |2
        A boxed array of *HostRdmaDevicePnicBacking*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostRdmaDevicePnicBacking'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostRdmaHba:
      type: object
      description: |2
        This data object describes the Remote Direct Memory Access
        (RDMA) host bus adapter interface.
      properties:
        associatedRdmaDevice:
          description: |2
            Device name of the associated RDMA device, if any.
            
            Should match the *HostRdmaDevice.device* property
            of the corresponding RDMA device.
          type: string
      allOf:
        - $ref: '#/components/schemas/HostHostBusAdapter'

    ArrayOfHostRdmaHba:
      type: object
      description: |2
        A boxed array of *HostRdmaHba*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostRdmaHba'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostRdmaTargetTransport:
      type: object
      description: |2
        Remote Direct Memory Access (RDMA) transport
        information about a target.
      allOf:
        - $ref: '#/components/schemas/HostTargetTransport'

    ArrayOfHostRdmaTargetTransport:
      type: object
      description: |2
        A boxed array of *HostRdmaTargetTransport*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostRdmaTargetTransport'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostReliableMemoryInfo:
      type: object
      description: |2
        Information about reliable memory installed on this host.
      properties:
        memorySize:
          type: integer
          format: int64
      required:
        - memorySize
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostReliableMemoryInfo:
      type: object
      description: |2
        A boxed array of *HostReliableMemoryInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostReliableMemoryInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostResignatureRescanResult:
      type: object
      description: |2
        The *HostResignatureRescanResult* data object
        identifies the newly created volume that is the result of a
        resignature operation.
        
        This data object is contained in the
        task object returned by the
        *HostDatastoreSystem.ResignatureUnresolvedVmfsVolume_Task*
        method.
        
        When a client calls the resignature method, the Server
        resignatures the volume, rescans the specified list of hosts,
        and auto-mounts the volume on the other hosts that share the same
        underlying storage LUNs.
      properties:
        rescan:
          deprecated: true
          description: |2
            Deprecated as of vSphere API 5.1, the results of the operation
            are available when the task completes. That is, for shared volumes,
            the new volume is mounted on all of the connected hosts.
            
            List of VMFS Rescan operation results.
          type: array
          items:
            $ref: '#/components/schemas/HostVmfsRescanResult'
        result:
          description: |2
            When an UnresolvedVmfsVolume has been resignatured, we want to return the
            newly created VMFS Datastore.
            
            Refers instance of *Datastore*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - result
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostResignatureRescanResult:
      type: object
      description: |2
        A boxed array of *HostResignatureRescanResult*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostResignatureRescanResult'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostFirewallRuleset:
      type: object
      description: |2
        Data object that describes a single network ruleset that can be
        allowed or blocked by the firewall using the *HostFirewallSystem* object.
      properties:
        key:
          description: |2
            Brief identifier for the ruleset.
          type: string
        label:
          description: |2
            Display label for the ruleset.
          type: string
        required:
          description: |2
            Flag indicating whether the ruleset is required and cannot be disabled.
          type: boolean
        rule:
          description: |2
            List of rules within the ruleset.
          type: array
          items:
            $ref: '#/components/schemas/HostFirewallRule'
        service:
          description: |2
            Managed service (if any) that uses this ruleset.
            
            Must be one of
            the services listed in *HostServiceInfo.service*.
          type: string
        enabled:
          description: |2
            Flag indicating whether the ruleset is enabled.
            
            If the
            ruleset is enabled, all ports specified in the ruleset are
            opened by the firewall.
          type: boolean
        allowedHosts:
          description: |2
            List of ipaddress to allow access to the service
          $ref: '#/components/schemas/HostFirewallRulesetIpList'
        userControllable:
          description: |2
            Flag indicating whether user can enable/disable the firewall ruleset.
            
            ***Since:*** vSphere API Release 8.0.2.0
          type: boolean
        ipListUserConfigurable:
          description: |2
            Flag indicating whether user can modify the allowed IP list of the
            firewall ruleset.
            
            ***Since:*** vSphere API Release 8.0.2.0
          type: boolean
      required:
        - key
        - label
        - required
        - rule
        - enabled
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostFirewallRuleset:
      type: object
      description: |2
        A boxed array of *HostFirewallRuleset*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostFirewallRuleset'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostFirewallRulesetIpList:
      type: object
      properties:
        ipAddress:
          description: |2
            The list of ipAddresses.
            
            All IPv4 addresses are specified as strings using dotted
            decimal format. For example, "192.0.20.10".
            IPv6 addresses are 128-bit addresses represented
            as eight fields of up to four hexadecimal digits. A colon separates each
            field (:). For example, 2001:DB8:101::230:6eff:fe04:d9ff. The address can
            also consist of symbol '::' to represent multiple 16-bit groups of
            contiguous 0's only once in an address as described in RFC 2373.
          type: array
          items:
            type: string
        ipNetwork:
          description: |2
            The list of networks
          type: array
          items:
            $ref: '#/components/schemas/HostFirewallRulesetIpNetwork'
        allIp:
          description: |2
            Flag indicating whether the ruleset works for all ip addresses.
          type: boolean
      required:
        - allIp
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostFirewallRulesetIpList:
      type: object
      description: |2
        A boxed array of *HostFirewallRulesetIpList*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostFirewallRulesetIpList'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostFirewallRulesetIpNetwork:
      type: object
      properties:
        network:
          description: |2
            The IPv4 or IPv6 network.
            
            All IPv4 subnet addresses are specified as strings using dotted
            decimal format. For example, "192.0.20.0".
            IPv6 addresses are 128-bit addresses represented
            as eight fields of up to four hexadecimal digits. A colon separates each
            field (:). For example, 2001:DB8:101::230:6eff:fe04:d9ff. The address can
            also consist of symbol '::' to represent multiple 16-bit groups of
            contiguous 0's only once in an address as described in RFC 2373.
          type: string
        prefixLength:
          description: |2
            The prefix length for the network.
            
            For example the prefix length for a network 10.20.120/22 is 22
          type: integer
          format: int32
      required:
        - network
        - prefixLength
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostFirewallRulesetIpNetwork:
      type: object
      description: |2
        A boxed array of *HostFirewallRulesetIpNetwork*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostFirewallRulesetIpNetwork'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostFirewallRule:
      type: object
      description: |2
        This data object type describes a port (or range of ports),
        identified by port number(s), direction and protocol.
        
        It is
        used as a convenient way for users to express what ports they
        want to permit through the firewall.
      properties:
        port:
          description: |2
            The port number.
          type: integer
          format: int32
        endPort:
          description: |2
            For a port range, the ending port number.
          type: integer
          format: int32
        direction:
          description: |2
            The port direction.
          $ref: '#/components/schemas/HostFirewallRuleDirection_enum'
        portType:
          description: |2
            The port type.
          $ref: '#/components/schemas/HostFirewallRulePortType_enum'
        protocol:
          description: |2
            The port protocol.
            
            Valid values are defined by the
            *HostFirewallRuleProtocol_enum* enumeration.
          type: string
      required:
        - port
        - direction
        - protocol
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostFirewallRule:
      type: object
      description: |2
        A boxed array of *HostFirewallRule*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostFirewallRule'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostFirewallRulesetRulesetSpec:
      type: object
      description: |2
        The ruleset update specification.
      properties:
        allowedHosts:
          description: |2
            The list of allowed ip addresses
          $ref: '#/components/schemas/HostFirewallRulesetIpList'
      required:
        - allowedHosts
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostFirewallRulesetRulesetSpec:
      type: object
      description: |2
        A boxed array of *HostFirewallRulesetRulesetSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostFirewallRulesetRulesetSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostRuntimeInfo:
      type: object
      description: |2
        This data object type describes the runtime state of a host.
      properties:
        connectionState:
          description: |2
            The host connection state.
            
            See the description in the enums for the
            *ConnectionState* data object type.
          $ref: '#/components/schemas/HostSystemConnectionState_enum'
        powerState:
          description: |2
            The host power state.
            
            See the description in the enums for the
            *PowerState* data object type.
          $ref: '#/components/schemas/HostSystemPowerState_enum'
        standbyMode:
          description: |2
            The host's standby mode.
            
            For valid values see
            *HostStandbyMode_enum*. The property is only populated by
            vCenter server. If queried directly from a ESX host, the property is
            is unset.
          type: string
        inMaintenanceMode:
          description: |2
            The flag to indicate whether or not the host is in maintenance mode.
            
            This
            flag is set when the host has entered the maintenance mode. It is not set
            during the entering phase of maintenance mode.
            
            See also *HostSystem.EnterMaintenanceMode_Task*, *HostSystem.ExitMaintenanceMode_Task*.
          type: boolean
        inQuarantineMode:
          description: |2
            The flag to indicate whether or not the host is in quarantine mode.
            
            InfraUpdateHa will recommend to set this flag based on the HealthUpdates
            received by the HealthUpdateProviders configured for the cluster. A
            host that is reported as degraded will be recommended to enter quarantine
            mode, while a host that is reported as healthy will be recommended to
            exit quarantine mode. Execution of these recommended actions will set
            this flag. Hosts in quarantine mode will be avoided by vSphere DRS as
            long as the increased consolidation in the cluster does not negatively
            affect VM performance.
            
            See also *HealthUpdateManager*, *ClusterInfraUpdateHaConfigInfo*, *ClusterHostInfraUpdateHaModeAction*.
          type: boolean
        bootTime:
          description: |2
            The time when the host was booted.
          type: string
          format: date-time
        healthSystemRuntime:
          description: |2
            Available system health status
          $ref: '#/components/schemas/HealthSystemRuntime'
        dasHostState:
          description: |2
            The availability state of an active host in a vSphere HA enabled
            cluster.
            
            A host is inactive if it is in maintenance or standby mode, or
            it has been disconnected from vCenter Server. The active hosts in a cluster
            form a vSphere HA fault domain.
            
            The property is unset if vSphere HA is disabled, the host is
            in maintenance or standby mode, or the host is disconnected from
            vCenter Server. The property is set to hostDown if the host has crashed.
          $ref: '#/components/schemas/ClusterDasFdmHostState'
        tpmPcrValues:
          deprecated: true
          description: |2
            Deprecated as of @released("5.1") this information should be
            considered to be neither complete nor reliable.
            
            The array of PCR digest values stored in the TPM device since the last
            host boot time.
          type: array
          items:
            $ref: '#/components/schemas/HostTpmDigestInfo'
        vsanRuntimeInfo:
          description: |2
            Host Runtime information related to the VSAN service.
            
            See also *VsanHostRuntimeInfo*.
          $ref: '#/components/schemas/VsanHostRuntimeInfo'
        networkRuntimeInfo:
          description: |2
            This property is for getting network related runtime info
          $ref: '#/components/schemas/HostRuntimeInfoNetworkRuntimeInfo'
        vFlashResourceRuntimeInfo:
          description: |2
            Runtime information of vFlash resource of the host.
          $ref: '#/components/schemas/HostVFlashManagerVFlashResourceRunTimeInfo'
        hostMaxVirtualDiskCapacity:
          description: |2
            The maximum theoretical virtual disk capacity supported by this host
          type: integer
          format: int64
        cryptoState:
          description: |2
            Encryption state of the host.
            
            Valid values are enumerated by the
            *CryptoState* type.
          type: string
        cryptoKeyId:
          description: |2
            Crypto Key used for coredump encryption
          $ref: '#/components/schemas/CryptoKeyId'
        statelessNvdsMigrationReady:
          description: |2
            Indicating the host is ready for NVDS to VDS migration.
            
            See *HostRuntimeInfoStatelessNvdsMigrationState_enum* for supported values.
            
            ***Since:*** vSphere API Release 7.0.2.0
          type: string
        partialMaintenanceMode:
          description: |2
            The following list contains the runtime status for all the partial
            maintenance modes currently supported on the host.
            
            ***Since:*** vSphere API Release 8.0.3.0
          type: array
          items:
            $ref: '#/components/schemas/HostPartialMaintenanceModeRuntimeInfo'
        stateEncryption:
          description: |2
            Host persistent state encryption information.
            
            ***Since:*** vSphere API Release 7.0.3.0
          $ref: '#/components/schemas/HostRuntimeInfoStateEncryptionInfo'
      required:
        - connectionState
        - powerState
        - inMaintenanceMode
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostRuntimeInfo:
      type: object
      description: |2
        A boxed array of *HostRuntimeInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostRuntimeInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostRuntimeInfoNetStackInstanceRuntimeInfo:
      type: object
      description: |2
        This data type describes network stack instance runtime info
      properties:
        netStackInstanceKey:
          description: |2
            Key of the instance
          type: string
        state:
          description: |2
            State of the instance
            See *HostRuntimeInfoNetStackInstanceRuntimeInfoState_enum* for valid values.
          type: string
        vmknicKeys:
          description: |2
            The keys of vmknics that are using this stack
          type: array
          items:
            type: string
        maxNumberOfConnections:
          description: |2
            The maximum number of socket connections can be worked on this
            instance currently after booting up.
          type: integer
          format: int32
        currentIpV6Enabled:
          description: |2
            If true then dual IPv4/IPv6 stack enabled else IPv4 only.
          type: boolean
      required:
        - netStackInstanceKey
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostRuntimeInfoNetStackInstanceRuntimeInfo:
      type: object
      description: |2
        A boxed array of *HostRuntimeInfoNetStackInstanceRuntimeInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostRuntimeInfoNetStackInstanceRuntimeInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostNetworkResourceRuntime:
      type: object
      description: |2
        This data type describes the network resource runtime information
      properties:
        pnicResourceInfo:
          description: |2
            The network resource related information on each
            physical NIC
          type: array
          items:
            $ref: '#/components/schemas/HostPnicNetworkResourceInfo'
      required:
        - pnicResourceInfo
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostNetworkResourceRuntime:
      type: object
      description: |2
        A boxed array of *HostNetworkResourceRuntime*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostNetworkResourceRuntime'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostRuntimeInfoNetworkRuntimeInfo:
      type: object
      description: |2
        This data type describes network related runtime info
      properties:
        netStackInstanceRuntimeInfo:
          description: |2
            The list of network stack runtime info
          type: array
          items:
            $ref: '#/components/schemas/HostRuntimeInfoNetStackInstanceRuntimeInfo'
        networkResourceRuntime:
          description: |2
            The network resource runtime information
          $ref: '#/components/schemas/HostNetworkResourceRuntime'
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostRuntimeInfoNetworkRuntimeInfo:
      type: object
      description: |2
        A boxed array of *HostRuntimeInfoNetworkRuntimeInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostRuntimeInfoNetworkRuntimeInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostPlacedVirtualNicIdentifier:
      type: object
      description: |2
        This data type describes the Virtual Machine and
        Virtual NIC to identify virtual adapters placed
        on a physical NIC
      properties:
        vm:
          description: |2
            The Virtual Machine
            
            Refers instance of *VirtualMachine*.
          $ref: '#/components/schemas/ManagedObjectReference'
        vnicKey:
          description: |2
            The virtual NIC key
          type: string
        reservation:
          description: |2
            The virtual NIC reservation
          type: integer
          format: int32
      required:
        - vm
        - vnicKey
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostPlacedVirtualNicIdentifier:
      type: object
      description: |2
        A boxed array of *HostPlacedVirtualNicIdentifier*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostPlacedVirtualNicIdentifier'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostPnicNetworkResourceInfo:
      type: object
      description: |2
        This data type describes the avaialable capacity
        for VM traffic on a physical NIC
      properties:
        pnicDevice:
          description: |2
            The physical NIC device
          type: string
        availableBandwidthForVMTraffic:
          description: |2
            The total bandwidth available for VM traffic
          type: integer
          format: int64
        unusedBandwidthForVMTraffic:
          description: |2
            The unused bandwidth for VM traffic
          type: integer
          format: int64
        placedVirtualNics:
          description: |2
            The connected virtual NICs of powered on Virtual Machines
            that are placed on this physical NIC
          type: array
          items:
            $ref: '#/components/schemas/HostPlacedVirtualNicIdentifier'
      required:
        - pnicDevice
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostPnicNetworkResourceInfo:
      type: object
      description: |2
        A boxed array of *HostPnicNetworkResourceInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostPnicNetworkResourceInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostRuntimeInfoStateEncryptionInfo:
      type: object
      description: |2
        This data type describes the host's persistent state encryption.
        
        ***Since:*** vSphere API Release 7.0.3.0
      properties:
        protectionMode:
          description: |2
            The state encryption key protection mode.
            
            The host state is encrypted with a key that is protected using
            one of the modes specified by *HostRuntimeInfoStateEncryptionInfoProtectionMode_enum*.
          type: string
        requireSecureBoot:
          description: |2
            Indicates if UEFI Secure Boot must be enabled in order for the
            state encryption key to be accessible.
          type: boolean
        requireExecInstalledOnly:
          description: |2
            Indicates if the "execInstalledOnly" enforcement must be active
            for the state encryption key to be accessible.
          type: boolean
      required:
        - protectionMode
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostRuntimeInfoStateEncryptionInfo:
      type: object
      description: |2
        A boxed array of *HostRuntimeInfoStateEncryptionInfo*. To be used in *Any* placeholders.
        
        ***Since:*** vSphere API Release 7.0.3.0
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostRuntimeInfoStateEncryptionInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostScsiDisk:
      type: object
      description: |2
        This data object type describes a SCSI disk.
        
        A SCSI disk contains a
        partition table which can be changed.
        To change a SCSI disk, use the device name and the partition specification.
        
        See also *HostStorageSystem.RetrieveDiskPartitionInfo*, *HostStorageSystem.UpdateDiskPartitions*.
      properties:
        capacity:
          description: |2
            The size of SCSI disk using the Logical Block Addressing scheme.
          $ref: '#/components/schemas/HostDiskDimensionsLba'
        devicePath:
          description: |2
            The device path of the ScsiDisk.
            
            This device path is a file path
            that can be opened to create partitions on the disk.
            
            See also *HostStorageSystem.RetrieveDiskPartitionInfo*, *HostStorageSystem.UpdateDiskPartitions*.
          type: string
        ssd:
          description: |2
            Indicates whether the ScsiDisk is SSD backed.
            
            If unset, the information whether the ScsiDisk is SSD backed
            is unknown.
          type: boolean
        localDisk:
          description: |2
            Indicates whether the ScsiDisk is local.
            
            If unset, the information whether the ScsiDisk is local is unknown.
          type: boolean
        physicalLocation:
          description: |2
            The physical location of the ScsiDisk if can be determined, otherwise
            unset.
            
            If the ScsiDisk is a logical drive, it should be the
            location of all constituent physical drives of the logical drive.
            If the ScsiDisk is a physical drive, it's an array of one element.
          type: array
          items:
            type: string
        emulatedDIXDIFEnabled:
          description: |2
            Indicates whether the ScsiDisk has emulated Data Integrity Extension
            (DIX) / Data Integrity Field (DIF) enabled.
            
            If unset, the default value is false.
          type: boolean
        vsanDiskInfo:
          description: |2
            Indicates the additional VSAN information
            if this disk is used by VSAN.
          $ref: '#/components/schemas/VsanHostVsanDiskInfo'
        scsiDiskType:
          description: |2
            The type of disk drives.
            
            See *ScsiDiskType_enum*
            for definitions of supported types.
          type: string
        usedByMemoryTiering:
          description: |2
            Indicate whether the disk is used for
            memory tiering or not.
            
            If unset, the default value is false.
            
            ***Since:*** vSphere API Release 8.0.3.0
          type: boolean
      required:
        - capacity
        - devicePath
      allOf:
        - $ref: '#/components/schemas/ScsiLun'

    ArrayOfHostScsiDisk:
      type: object
      description: |2
        A boxed array of *HostScsiDisk*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostScsiDisk'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostScsiDiskPartition:
      type: object
      description: |2
        This data object type describes the specification of a Disk partition.
      properties:
        diskName:
          description: |2
            The SCSI disk device on which a VMware File System (VMFS)
            extent resides.
            
            See also *HostScsiDisk*, *ScsiLun.canonicalName*.
          type: string
        partition:
          description: |2
            The partition number of the partition on the ScsiDisk.
          type: integer
          format: int32
      required:
        - diskName
        - partition
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostScsiDiskPartition:
      type: object
      description: |2
        A boxed array of *HostScsiDiskPartition*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostScsiDiskPartition'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ScsiLun:
      type: object
      description: |2
        The *ScsiLun* data object describes a SCSI logical unit.
        
        A SCSI logical unit is a host device that an ESX Server or virtual machine
        can use for I/O operations.
        
        An ESX Server creates SCSI logical unit objects to represent
        devices in the host configuration. (See the definition of
        *ScsiLunType_enum* for a list of the supported device types.)
        The vSphere API uses one of two object types to represent a SCSI
        logical unit, depending on the device type.
        - Disks containing file system volumes or parts of volumes for hosts
          or raw disks for virtual machines. To represent disks, the ESX Server
          creates a *HostScsiDisk* object, which inherits properties from
          the *ScsiLun* base class.
        - Other SCSI devices, for example SCSI passthrough devices
          for virtual machines. To represent one of these devices,
          the ESX Server creates a *ScsiLun* object.
          
        When the Server creates a *HostScsiDisk* or *ScsiLun* object,
        it specifies a valid device name and type:
        - *HostDevice.deviceName* - A string representing the name of the device
          that is meaningful to the host. The following are some examples of
          device names.  
          &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<code>/dev/cdrom</code>  
          &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<code>/vmkdev/vmhba0:0:1:0</code>  
          &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<code>PhysicalDrive0</code>
        - *HostDevice.deviceType* - A string describing the type of device.
          The following are some examples of device types.  
          &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<code>scsi-cdrom</code>  
          &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<code>scsi-tape</code>  
          &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<code>scsi-disk</code>  
          &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<code>scsi-processor</code>  
          &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<code>scsi-unknown</code>
      properties:
        key:
          description: |2
            Linkable identifier
          type: string
        uuid:
          description: |2
            Universally unique identifier for the LUN used to identify ScsiLun across
            multiple servers.
            
            This identifier can be used to identify analogous objects in other views
            such as *HostMultipathInfoLogicalUnit* and *HostScsiTopologyLun*.
            
            See also *HostMultipathInfoLogicalUnit*, *HostScsiTopologyLun*.
          type: string
        descriptor:
          description: |2
            List of descriptors that can be used to identify the LUN object.
            
            The
            uuid will also appear as a descriptor.
            
            The id field in the descriptor is a string that can be used to correlate
            the ScsiLun across multiple servers. A ScsiLun may have multiple
            descriptors. The choice and order of these descriptors may be different
            on different servers.
            
            Not all descriptors are suitable for correlation. Some descriptors are
            only sufficient to identify the ScsiLun within a single host. Each
            descriptor contains a quality property that indicates whether or not
            the descriptor is suitable for correlation.
          type: array
          items:
            $ref: '#/components/schemas/ScsiLunDescriptor'
        canonicalName:
          description: |2
            Canonical name of the SCSI logical unit.
            
            Disk partition or extent identifiers refer to this name when
            referring to a disk. Use this property to correlate a partition
            or extent to a specific SCSI disk.
            
            See also *HostScsiDiskPartition.diskName*.
          type: string
        displayName:
          description: |2
            User configurable display name of the SCSI logical unit.
            
            A default
            display name will be used if available. If the display name is not
            supported, it will be unset. The display name does not have to be
            unique but it is recommended that it be unique.
          type: string
        lunType:
          description: |2
            The type of SCSI device.
            
            Must be one of the values of
            *ScsiLunType_enum*.
          type: string
        vendor:
          description: |2
            The vendor of the SCSI device.
          type: string
        model:
          description: |2
            The model number of the SCSI device.
          type: string
        revision:
          description: |2
            The revision of the SCSI device.
          type: string
        scsiLevel:
          description: |2
            The SCSI level of the SCSI device.
          type: integer
          format: int32
        serialNumber:
          description: |2
            The serial number of the SCSI device.
            
            For a device that is SCSI-3 compliant, this property is derived
            from page 80h of the Vital Product Data (VPD), as defined by the
            SCSI-3 Primary Commands (SPC-3) spec. Not all SCSI-3 compliant
            devices provide this information. For devices that are not
            SCSI-3 compliant, this property is not defined.
          type: string
        durableName:
          description: |2
            The durable name of the SCSI device.
            
            For a SCSI-3 compliant device this property is derived from the
            payloads of pages 80h and 83h of the Vital Product Data (VPD) as
            defined by the T10 and SMI standards. For devices that do not provide
            this information, this property is not defined.
          $ref: '#/components/schemas/ScsiLunDurableName'
        alternateName:
          description: |2
            Alternate durable names.
            
            Records all available durable names derived from page 80h of the Vital
            Product Data (VPD) and the Identification Vital Product Data (VPD) page
            83h as defined by the SCSI-3 Primary Commands. For devices that are not
            SCSI-3 compliant this property is not defined.
          type: array
          items:
            $ref: '#/components/schemas/ScsiLunDurableName'
        standardInquiry:
          description: |2
            Standard Inquiry payload.
            
            For a SCSI-3 compliant device this property is derived from the
            standard inquiry data. For devices that are not SCSI-3 compliant this
            property is not defined.
          type: array
          items:
            type: integer
            minimum: -128
            maximum: 127
        queueDepth:
          description: |2
            The queue depth of SCSI device.
          type: integer
          format: int32
        operationalState:
          description: |2
            The operational states of the LUN.
            
            When more than one item is present in the array, the first state
            should be considered the primary state. For example, a LUN may
            be "ok" and "degraded" indicating I/O is still possible to the LUN, but
            it is operating in a degraded mode.
            
            See also *ScsiLunState_enum*.
          type: array
          items:
            type: string
        capabilities:
          description: |2
            Capabilities of SCSI device.
          $ref: '#/components/schemas/ScsiLunCapabilities'
        vStorageSupport:
          description: |2
            vStorage hardware acceleration support status.
            
            This property
            represents storage acceleration provided by the SCSI logical unit.
            See *ScsiLunVStorageSupportStatus_enum* for valid values.
            
            If a storage device supports hardware acceleration,
            the ESX host can offload specific virtual machine management
            operations to the storage device. With hardware assistance,
            the host performs storage operations faster and consumes
            less CPU, memory, and storage fabric bandwidth.
            
            For vSphere 4.0 or earlier hosts, this value will be unset.
          type: string
        protocolEndpoint:
          description: |2
            Indicates that this SCSI LUN is protocol endpoint.
            
            This
            property will be populated if and only if host supports
            VirtualVolume based Datastore. Check the host capability
            *HostCapability.virtualVolumeDatastoreSupported*.
            See *HostProtocolEndpoint*.
          type: boolean
        perenniallyReserved:
          description: |2
            Indicates the state of a perennially reserved flag for a LUN.
            
            If
            set for Raw Device Mapped (RDM) LUNs, the host startup or LUN rescan
            take comparatively shorter duration than when it is unset.
          type: boolean
        clusteredVmdkSupported:
          description: |2
            Indicates if LUN has the prequisite properties to enable Clustered Vmdk
            feature once formatted into VMFS Datastore.
          type: boolean
        applicationProtocol:
          description: |2
            Indicates the current device protocol.
            
            Application protocol for a device which is set based on input
            from vmkctl storage control plane. Must be one of the values of
            *DeviceProtocol_enum*.
            
            ***Since:*** vSphere API Release 8.0.1.0
          type: string
        dispersedNs:
          description: |2
            Indicates whether namespace is dispersed.
            
            Set to true when the namespace of LUN is dispersed.
            
            ***Since:*** vSphere API Release 8.0.1.0
          type: boolean
        deviceReservation:
          description: |2
            Indicates whether a device is under SCSI/NVMe reservation.
            
            Device reservation for a SCSI/NVMe device set based on
            values received from vmkernel. The list of supported values is defined in
            *ScsiLunLunReservationStatus_enum*.
            If unset, the reservation status is unknown.
            
            ***Since:*** vSphere API Release 8.0.3.0
          type: string
      required:
        - uuid
        - lunType
        - operationalState
      allOf:
        - $ref: '#/components/schemas/HostDevice'

    ArrayOfScsiLun:
      type: object
      description: |2
        A boxed array of *ScsiLun*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ScsiLun'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ScsiLunCapabilities:
      type: object
      description: |2
        Scsi device specific capabilities.
      properties:
        updateDisplayNameSupported:
          description: |2
            Can the display name of the SCSI device be updated?
          type: boolean
      required:
        - updateDisplayNameSupported
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfScsiLunCapabilities:
      type: object
      description: |2
        A boxed array of *ScsiLunCapabilities*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ScsiLunCapabilities'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ScsiLunDescriptor:
      type: object
      description: |2
        A structure that encapsulates an identifier and its properties for the
        ScsiLun object.
      properties:
        quality:
          description: |2
            An indicator of the utility of the descriptor as an identifier that
            is stable, unique, and correlatable.
            
            See also *ScsiLunDescriptorQuality_enum*.
          type: string
        id:
          description: |2
            The identifier represented as a string.
          type: string
      required:
        - quality
        - id
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfScsiLunDescriptor:
      type: object
      description: |2
        A boxed array of *ScsiLunDescriptor*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ScsiLunDescriptor'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ScsiLunDurableName:
      type: object
      description: |2
        This data object type represents an SMI-S "Correlatable and
        Durable Name" which is an
        identifier for a logical unit number (LUN) that is generated using
        a common algorithm.
        
        The algorithm divides the identifier into
        multiple namespaces where each
        namespace uses a different set of properties of the LUN to generate
        the identifier. The namespace itself is encoded in the identifier.
      properties:
        namespace:
          description: |2
            The string describing the namespace used for the durable name.
          type: string
        namespaceId:
          description: |2
            The byte used by the ESX Server product to represent the namespace.
          type: integer
          minimum: -128
          maximum: 127
        data:
          description: |2
            The variable length byte array containing the namespace-specific data.
            
            For a SCSI-3 compliant device this field is the descriptor header
            along with the payload for data obtained from page 83h, and is the
            payload for data obtained from page 80h of the Vital Product Data
            (VPD).
          type: array
          items:
            type: integer
            minimum: -128
            maximum: 127
      required:
        - namespace
        - namespaceId
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfScsiLunDurableName:
      type: object
      description: |2
        A boxed array of *ScsiLunDurableName*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ScsiLunDurableName'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostScsiTopology:
      type: object
      description: |2
        This data object type describes the SCSI topology information.
        
        The
        data objects in this data object type model the
        SCSI storage objects from a topological point of view. The SCSI topological
        view organizes objects by SCSI interface, which contain targets, which in
        turn contain logical units.
        
        SCSI Topology information is not guaranteed to exhaustively enumerate all
        storage devices on the system. It only shows storage devices that are
        actually enumerable from a host bus adapter. This means that only storage
        devices that are composed from one or more paths, which are in turn provided
        by a host bus adapter, will appear in this inventory.
        
        Storage devices provided by the native multipathing plugin (NMP) will always
        be represented in this inventory since NMP uses a simple policy to create
        devices out of the paths it claims.
        
        Examples of storage devices that will not appear in this inventory are
        logical devices that are not formed from directly claiming paths. Specific
        examples of devices that will not appear in this inventory include a device
        backed by a ramdisk or formed from a software RAID plugin.
        
        Legacy note: In hosts where *HostPlugStoreTopology* is not
        defined or does not exist on the *HostStorageDeviceInfo* object,
        only native multipathing exists. That means for these hosts, the
        ScsiTopology object contains the complete set of LUNs and targets
        available on the host.
      properties:
        adapter:
          description: |2
            The list of SCSI interfaces.
          type: array
          items:
            $ref: '#/components/schemas/HostScsiTopologyInterface'
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostScsiTopology:
      type: object
      description: |2
        A boxed array of *HostScsiTopology*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostScsiTopology'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostScsiTopologyInterface:
      type: object
      description: |2
        This data object type describes the SCSI interface that is associated
        with a list of targets.
      properties:
        key:
          description: |2
            The identifier for the SCSI interface
          type: string
        adapter:
          description: |2
            The link to data for this SCSI interface.
          $ref: '#/components/schemas/HostHostBusAdapter'
        target:
          description: |2
            The list of targets to which the SCSI interface is associated.
          type: array
          items:
            $ref: '#/components/schemas/HostScsiTopologyTarget'
      required:
        - key
        - adapter
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostScsiTopologyInterface:
      type: object
      description: |2
        A boxed array of *HostScsiTopologyInterface*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostScsiTopologyInterface'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostScsiTopologyLun:
      type: object
      description: |2
        This data object type describes the SCSI logical unit.
      properties:
        key:
          description: |2
            The identifier for the SCSI Lun
          type: string
        lun:
          description: |2
            The logical unit number of the SCSI logical unit.
          type: integer
          format: int32
        scsiLun:
          description: |2
            The link to data for this SCSI logical unit.
          $ref: '#/components/schemas/ScsiLun'
      required:
        - key
        - lun
        - scsiLun
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostScsiTopologyLun:
      type: object
      description: |2
        A boxed array of *HostScsiTopologyLun*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostScsiTopologyLun'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostScsiTopologyTarget:
      type: object
      description: |2
        This data object type describes the SCSI target that is associated
        with a list of logical units.
      properties:
        key:
          description: |2
            The identifier for the SCSI target
          type: string
        target:
          description: |2
            The target identifier.
          type: integer
          format: int32
        lun:
          description: |2
            The list of SCSI logical units with which a target is associated.
          type: array
          items:
            $ref: '#/components/schemas/HostScsiTopologyLun'
        transport:
          description: |2
            SCSI Transport information about the target.
          $ref: '#/components/schemas/HostTargetTransport'
      required:
        - key
        - target
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostScsiTopologyTarget:
      type: object
      description: |2
        A boxed array of *HostScsiTopologyTarget*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostScsiTopologyTarget'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostSecuritySpec:
      type: object
      description: |2
        DataObject used for configuring the Security settings
      properties:
        adminPassword:
          description: |2
            Administrator password to configure
          type: string
          format: password
        removePermission:
          description: |2
            Permissions to remove
          type: array
          items:
            $ref: '#/components/schemas/Permission'
        addPermission:
          description: |2
            Permissions to add
          type: array
          items:
            $ref: '#/components/schemas/Permission'
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostSecuritySpec:
      type: object
      description: |2
        A boxed array of *HostSecuritySpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostSecuritySpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostSerialAttachedHba:
      type: object
      description: |2
        The data object type describes the
        Serial Attached Scsi(SAS) interface.
      properties:
        nodeWorldWideName:
          description: |2
            The world wide node name for the adapter.
          type: string
      required:
        - nodeWorldWideName
      allOf:
        - $ref: '#/components/schemas/HostHostBusAdapter'

    ArrayOfHostSerialAttachedHba:
      type: object
      description: |2
        A boxed array of *HostSerialAttachedHba*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostSerialAttachedHba'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostSerialAttachedTargetTransport:
      type: object
      description: |2
        Serial attached adapter transport information about a SCSI target.
      allOf:
        - $ref: '#/components/schemas/HostTargetTransport'

    ArrayOfHostSerialAttachedTargetTransport:
      type: object
      description: |2
        A boxed array of *HostSerialAttachedTargetTransport*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostSerialAttachedTargetTransport'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostService:
      type: object
      description: |2
        Data object that describes a single service that runs on the host.
      properties:
        key:
          description: |2
            Brief identifier for the service.
          type: string
        label:
          description: |2
            Display label for the service.
          type: string
        required:
          description: |2
            Flag indicating whether the service is required and cannot be disabled.
          type: boolean
        uninstallable:
          deprecated: true
          description: |2
            Deprecated this flag is unimplemented and will always be set to false.
            
            Flag indicating whether the service can be uninstalled.
          type: boolean
        running:
          description: |2
            Flag indicating whether the service is currently running.
          type: boolean
        ruleset:
          description: |2
            List of firewall rulesets used by this service.
            
            Must come from the
            list of rulesets in *HostFirewallInfo.ruleset*.
          type: array
          items:
            type: string
        policy:
          description: |2
            Service activation policy.
            
            See also *HostServicePolicy_enum*.
          type: string
        sourcePackage:
          description: |2
            The source package associated with the service
          $ref: '#/components/schemas/HostServiceSourcePackage'
      required:
        - key
        - label
        - required
        - uninstallable
        - running
        - policy
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostService:
      type: object
      description: |2
        A boxed array of *HostService*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostService'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostServiceSourcePackage:
      type: object
      properties:
        sourcePackageName:
          description: |2
            The name of the source package
          type: string
        description:
          description: |2
            The description of the source package
          type: string
      required:
        - sourcePackageName
        - description
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostServiceSourcePackage:
      type: object
      description: |2
        A boxed array of *HostServiceSourcePackage*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostServiceSourcePackage'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostServiceConfig:
      type: object
      description: |2
        DataObject representing configuration for a particular
        service.
      properties:
        serviceId:
          description: |2
            Key of the service to configure.
          type: string
        startupPolicy:
          description: |2
            Startup policy which defines how the service be configured.
            
            See @link Service.Policy for possible values.
          type: string
      required:
        - serviceId
        - startupPolicy
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostServiceConfig:
      type: object
      description: |2
        A boxed array of *HostServiceConfig*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostServiceConfig'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostServiceInfo:
      type: object
      description: |2
        Data object describing the host service configuration.
      properties:
        service:
          description: |2
            List of configured services.
          type: array
          items:
            $ref: '#/components/schemas/HostService'
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostServiceInfo:
      type: object
      description: |2
        A boxed array of *HostServiceInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostServiceInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostSevInfo:
      type: object
      description: |2
        ***Since:*** vSphere API Release 7.0.1.0
      properties:
        sevState:
          description: |2
            State of SEV on the host.
            
            The set of supported values are described
            in *HostSevInfoSevState_enum*.
          type: string
        maxSevEsGuests:
          description: |2
            The maximum number of SEV-ES and SEV-SNP guests supported on this host.
          type: integer
          format: int64
      required:
        - sevState
        - maxSevEsGuests
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostSevInfo:
      type: object
      description: |2
        A boxed array of *HostSevInfo*. To be used in *Any* placeholders.
        
        ***Since:*** vSphere API Release 7.0.1.0
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostSevInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostSgxInfo:
      type: object
      description: |2
        Data object describing the Software Guard Extension (SGX)
        configuration on the ESXi host.
      properties:
        sgxState:
          description: |2
            SGX state of the host.
            
            The set of supported values are described
            in *HostSgxInfoSgxStates_enum*.
          type: string
        totalEpcMemory:
          description: |2
            Size of physical EPC in bytes.
          type: integer
          format: int64
        flcMode:
          description: |2
            FLC mode of the host.
            
            The set of supported values are
            described in *HostSgxInfoFlcModes_enum*.
          type: string
        lePubKeyHash:
          description: |2
            Public key hash of the provider launch enclave.
            
            This is the SHA256
            digest of the SIGSTRUCT.MODULUS(MR\_SIGNER) of the provider launch
            enclave. This attribute is set only if attribute flcMode is
            locked.
          type: string
        registrationInfo:
          description: |2
            ***Since:*** vSphere API Release 8.0.0.1
          $ref: '#/components/schemas/HostSgxRegistrationInfo'
      required:
        - sgxState
        - totalEpcMemory
        - flcMode
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostSgxInfo:
      type: object
      description: |2
        A boxed array of *HostSgxInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostSgxInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostSgxRegistrationInfo:
      type: object
      description: |2
        Data object describing SGX host registration information.
        
        ***Since:*** vSphere API Release 8.0.0.1
      properties:
        status:
          description: |2
            SGX host registration status.
            
            Valid values come from *HostSgxRegistrationInfoRegistrationStatus_enum* enum.
            Set, except in case of an internal error.
          type: string
        biosError:
          description: |2
            BIOS error related to SGX host registration.
            
            Set only if SGX registration status is incomplete.
          type: integer
          format: int32
        registrationUrl:
          description: |2
            SGX host registration URL.
            
            Unset if SGX registration status is not applicable
            or in case of an internal error.
          type: string
        type:
          description: |2
            SGX host registration type.
            
            Valid values come from *HostSgxRegistrationInfoRegistrationType_enum* enum.
            Unset if SGX registration status is not applicable,
            complete, or in case of an internal error.
          type: string
        ppid:
          description: |2
            Platform Provisioning ID (PPID).
            
            Hex-encoded representation of the the PPID
            (Platform Provisioning ID), returned as the response
            to a successful registration request. This field
            is populated only on the vCenter through which
            the host has been registered.
          type: string
        lastRegisteredTime:
          description: |2
            Timestamp of last successful registration
            from this vCenter.
          type: string
          format: date-time
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostSgxRegistrationInfo:
      type: object
      description: |2
        A boxed array of *HostSgxRegistrationInfo*. To be used in *Any* placeholders.
        
        ***Since:*** vSphere API Release 8.0.0.1
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostSgxRegistrationInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostSharedGpuCapabilities:
      type: object
      description: |2
        Capability vector indicating the available shared graphics features.
      properties:
        vgpu:
          description: |2
            Name of a particular VGPU available as a shared GPU device.
            
            See also *VirtualMachinePciSharedGpuPassthroughInfo*.
          type: string
        diskSnapshotSupported:
          description: |2
            Indicates whether the GPU plugin on this host is capable of
            disk-only snapshots when VM is not powered off.
            
            Disk Snaphosts
            on powered off VM are always supported.
          type: boolean
        memorySnapshotSupported:
          description: |2
            Indicates whether the GPU plugin on this host is capable of
            memory snapshots.
          type: boolean
        suspendSupported:
          description: |2
            Indicates whether the GPU plugin on this host is capable of
            suspend-resume.
          type: boolean
        migrateSupported:
          description: |2
            Indicates whether the GPU plugin on this host is capable of
            migration.
          type: boolean
      required:
        - vgpu
        - diskSnapshotSupported
        - memorySnapshotSupported
        - suspendSupported
        - migrateSupported
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostSharedGpuCapabilities:
      type: object
      description: |2
        A boxed array of *HostSharedGpuCapabilities*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostSharedGpuCapabilities'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostSnmpSystemAgentLimits:
      type: object
      properties:
        maxReadOnlyCommunities:
          description: |2
            number of allowed communities
          type: integer
          format: int32
        maxTrapDestinations:
          description: |2
            number of allowed destinations for notifications
          type: integer
          format: int32
        maxCommunityLength:
          description: |2
            Max length of community
          type: integer
          format: int32
        maxBufferSize:
          description: |2
            SNMP input buffer size
          type: integer
          format: int32
        capability:
          description: |2
            Supported Capability for this agent
          $ref: '#/components/schemas/HostSnmpAgentCapability_enum'
      required:
        - maxReadOnlyCommunities
        - maxTrapDestinations
        - maxCommunityLength
        - maxBufferSize
        - capability
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostSnmpSystemAgentLimits:
      type: object
      description: |2
        A boxed array of *HostSnmpSystemAgentLimits*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostSnmpSystemAgentLimits'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostSnmpConfigSpec:
      type: object
      properties:
        enabled:
          type: boolean
        port:
          type: integer
          format: int32
        readOnlyCommunities:
          type: array
          items:
            type: string
        trapTargets:
          type: array
          items:
            $ref: '#/components/schemas/HostSnmpDestination'
        option:
          type: array
          items:
            $ref: '#/components/schemas/KeyValue'
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostSnmpConfigSpec:
      type: object
      description: |2
        A boxed array of *HostSnmpConfigSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostSnmpConfigSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostSnmpDestination:
      type: object
      description: |2
        Defines a receiver for SNMP Notifications
      properties:
        hostName:
          description: |2
            A system listening for SNMP notifications.
            
            These must be a IPv4 unicast address or resolvable dns name.
          type: string
        port:
          description: |2
            UDP port to Notification receiver is listening on.
            
            udp/162 is
            the reserved port
          type: integer
          format: int32
        community:
          type: string
      required:
        - hostName
        - port
        - community
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostSnmpDestination:
      type: object
      description: |2
        A boxed array of *HostSnmpDestination*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostSnmpDestination'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    SoftwarePackage:
      type: object
      description: |2
        Software Packages provide discrete version and packaging.
        
        This data is reported by CLI:: esxcli software vib get -n ...
      properties:
        name:
          description: |2
            Identifier that uniquely identifies the software package.
          type: string
        version:
          description: |2
            Version string uniquely identifies this package.
          type: string
        type:
          description: |2
            Type of vib installed.
            
            See *SoftwarePackageVibType_enum*.
          type: string
        vendor:
          description: |2
            The corporate entity that created this package.
          type: string
        acceptanceLevel:
          description: |2
            See also *HostImageAcceptanceLevel_enum*.
          type: string
        summary:
          description: |2
            A brief description of the package contents.
          type: string
        description:
          description: |2
            A full account of the package contents.
          type: string
        referenceURL:
          description: |2
            The list of SupportReference objects with in-depth support information.
          type: array
          items:
            type: string
        creationDate:
          description: |2
            The time when the package was installed.
            
            On Autodeploy stateless installs
            there is no set value.
          type: string
          format: date-time
        depends:
          description: |2
            A list of VIBs that must be installed at the same time as this VIB.
          type: array
          items:
            $ref: '#/components/schemas/Relation'
        conflicts:
          description: |2
            A list of VIBs that cannot be installed at the same time as
            this VIB for a given version.
          type: array
          items:
            $ref: '#/components/schemas/Relation'
        replaces:
          description: |2
            A list of SoftwareConstraint objects that identify VIBs that
            replace this VIB or make it obsolete.
            
            VIBs automatically replace VIBs with
            the same name but lower versions.
          type: array
          items:
            $ref: '#/components/schemas/Relation'
        provides:
          description: |2
            A list of virtual packages or interfaces this VIB provides.
          type: array
          items:
            type: string
        maintenanceModeRequired:
          description: |2
            True if hosts must be in maintenance mode for installation of this VIB.
          type: boolean
        hardwarePlatformsRequired:
          description: |2
            A list of hardware platforms this package is supported on.
          type: array
          items:
            type: string
        capability:
          description: |2
            A set of optional attributes for this package.
          $ref: '#/components/schemas/SoftwarePackageCapability'
        tag:
          description: |2
            A list of string tags for this package defined by the vendor
            or publisher.
            
            Tags can be used to identify characteristics of a package.
          type: array
          items:
            type: string
        payload:
          description: |2
            A list of string tags to indicate one or more of what is
            contained: may be one of bootloader, upgrade, bootisobios, bootisoefi,
            vgz, tgz, boot or other values.
          type: array
          items:
            type: string
      required:
        - name
        - version
        - type
        - vendor
        - acceptanceLevel
        - summary
        - description
        - capability
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfSoftwarePackage:
      type: object
      description: |2
        A boxed array of *SoftwarePackage*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/SoftwarePackage'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    SoftwarePackageCapability:
      type: object
      properties:
        liveInstallAllowed:
          description: |2
            True if live installs of this VIB are supported.
          type: boolean
        liveRemoveAllowed:
          description: |2
            True if live removals of this VIB are supported.
          type: boolean
        statelessReady:
          description: |2
            True if the package supports host profiles or other technologies
            that make it suitable for use in conjunction with vSphere Auto Deploy.
          type: boolean
        overlay:
          description: |2
            True if this vib will supplant files from another package at runtime.
            
            When False this prevents two packages from installing the same file.
          type: boolean
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfSoftwarePackageCapability:
      type: object
      description: |2
        A boxed array of *SoftwarePackageCapability*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/SoftwarePackageCapability'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    Relation:
      type: object
      properties:
        constraint:
          description: |2
            If contraint is not set, the relation holds for all versions.
            
            and if a constraint is defined it will be one of
            *SoftwarePackageConstraint_enum*.
          type: string
        name:
          type: string
        version:
          type: string
      required:
        - name
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfRelation:
      type: object
      description: |2
        A boxed array of *Relation*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/Relation'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostSriovConfig:
      type: object
      description: |2
        This data object allows configuration of SR-IOV device.
      properties:
        sriovEnabled:
          description: |2
            enable SR-IOV for this device
          type: boolean
        numVirtualFunction:
          description: |2
            Number of SR-IOV virtual functions to enable on this device
          type: integer
          format: int32
      required:
        - sriovEnabled
        - numVirtualFunction
      allOf:
        - $ref: '#/components/schemas/HostPciPassthruConfig'

    ArrayOfHostSriovConfig:
      type: object
      description: |2
        A boxed array of *HostSriovConfig*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostSriovConfig'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostSriovDevicePoolInfo:
      type: object
      properties:
        key:
          type: string
      required:
        - key
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostSriovDevicePoolInfo:
      type: object
      description: |2
        A boxed array of *HostSriovDevicePoolInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostSriovDevicePoolInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostSriovInfo:
      type: object
      description: |2
        This data object provides information about the state of SR-IOV device.
      properties:
        sriovEnabled:
          description: |2
            Whether SRIOV has been enabled by the user
          type: boolean
        sriovCapable:
          description: |2
            Whether SRIOV is possible for this device
          type: boolean
        sriovActive:
          description: |2
            Whether SRIOV is active for this device (meaning enabled + rebooted)
          type: boolean
        numVirtualFunctionRequested:
          description: |2
            Number of SRIOV virtual functions requested for this device
          type: integer
          format: int32
        numVirtualFunction:
          description: |2
            Number of SRIOV virtual functions present on this device
          type: integer
          format: int32
        maxVirtualFunctionSupported:
          description: |2
            Maximum number of SRIOV virtual functions supported on this device
          type: integer
          format: int32
      required:
        - sriovEnabled
        - sriovCapable
        - sriovActive
        - numVirtualFunctionRequested
        - numVirtualFunction
        - maxVirtualFunctionSupported
      allOf:
        - $ref: '#/components/schemas/HostPciPassthruInfo'

    ArrayOfHostSriovInfo:
      type: object
      description: |2
        A boxed array of *HostSriovInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostSriovInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostSriovNetworkDevicePoolInfo:
      type: object
      description: |2
        Information on networking specific SR-IOV device pools
      properties:
        switchKey:
          description: |2
            vSwitch key
          type: string
        switchUuid:
          description: |2
            DVS Uuid
          type: string
        pnic:
          description: |2
            List of SR-IOV enabled physical nics that are backing the portgroup
            identified by above key
          type: array
          items:
            $ref: '#/components/schemas/PhysicalNic'
      allOf:
        - $ref: '#/components/schemas/HostSriovDevicePoolInfo'

    ArrayOfHostSriovNetworkDevicePoolInfo:
      type: object
      description: |2
        A boxed array of *HostSriovNetworkDevicePoolInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostSriovNetworkDevicePoolInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostSslThumbprintInfo:
      type: object
      description: |2
        The SSL thumbprint information for a host managed by a vCenter Server
        or a vCenter extension to login into other hosts without
        username/password authentication.
      properties:
        principal:
          description: |2
            The principal used for the login session
          type: string
        ownerTag:
          description: |2
            The tag associated with this registration.
            
            Owner tags allow
            multiple entities to register the same thumbprint without
            interfering with each other on the life cycle of the thumbprint with
            their unique tags.
            Each solution should use a unique tag to identify itself.
          type: string
        sslThumbprints:
          description: |2
            Specify the SSL thumbprints to register on the host.
          type: array
          items:
            type: string
      required:
        - principal
        - ownerTag
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostSslThumbprintInfo:
      type: object
      description: |2
        A boxed array of *HostSslThumbprintInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostSslThumbprintInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostStorageArrayTypePolicyOption:
      type: object
      description: |2
        Description of options associated with a native multipathing
        storage array type plugin.
      properties:
        policy:
          description: |2
            Description of the paths selection policy.
            
            Use the key as the
            identifier.
          $ref: '#/components/schemas/ElementDescription'
      required:
        - policy
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostStorageArrayTypePolicyOption:
      type: object
      description: |2
        A boxed array of *HostStorageArrayTypePolicyOption*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostStorageArrayTypePolicyOption'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostStorageDeviceInfo:
      type: object
      description: |2
        This data object type describes the storage subsystem configuration.
      properties:
        hostBusAdapter:
          description: |2
            The list of host bus adapters available on the host.
          type: array
          items:
            $ref: '#/components/schemas/HostHostBusAdapter'
        scsiLun:
          description: |2
            The list of SCSI logical units available on the host.
          type: array
          items:
            $ref: '#/components/schemas/ScsiLun'
        scsiTopology:
          description: |2
            Storage topology view of SCSI storage devices.
            
            This data object
            exists only if storage topology information is available. See the
            *ScsiTopology* data object type for
            more information.
          $ref: '#/components/schemas/HostScsiTopology'
        nvmeTopology:
          description: |2
            Topology view of NVME storage devices.
            
            This data object exists
            only if storage topology information is available. See the
            *HostNvmeTopology* data object type for more information.
          $ref: '#/components/schemas/HostNvmeTopology'
        multipathInfo:
          description: |2
            The multipath configuration that controls multipath policy for ScsiLuns.
            
            This data object exists only if path information is available and is
            configurable.
          $ref: '#/components/schemas/HostMultipathInfo'
        plugStoreTopology:
          description: |2
            The plug-store topology on the host system.
            
            This data object exists only if
            the plug-store system is available and configurable.
          $ref: '#/components/schemas/HostPlugStoreTopology'
        softwareInternetScsiEnabled:
          description: |2
            Indicates if the software iSCSI initiator is enabled on this system
          type: boolean
      required:
        - softwareInternetScsiEnabled
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostStorageDeviceInfo:
      type: object
      description: |2
        A boxed array of *HostStorageDeviceInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostStorageDeviceInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostStorageSystemDiskLocatorLedResult:
      type: object
      description: |2
        Contains the result of turn Disk Locator Led On/Off request.
        
        Used as return value
        by *HostStorageSystem.TurnDiskLocatorLedOn_Task* and
        *HostStorageSystem.TurnDiskLocatorLedOff_Task*.
      properties:
        key:
          description: |2
            UUID of LUN that has failed to turn on/off disk locator LED.
          type: string
        fault:
          description: |2
            The reason why the operation did not succeed.
          $ref: '#/components/schemas/MethodFault'
      required:
        - key
        - fault
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostStorageSystemDiskLocatorLedResult:
      type: object
      description: |2
        A boxed array of *HostStorageSystemDiskLocatorLedResult*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostStorageSystemDiskLocatorLedResult'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostStorageSystemScsiLunResult:
      type: object
      description: |2
        Contains the result of SCSI LUN operation requests.
        
        Used as return value
        by *HostStorageSystem.AttachScsiLunEx_Task*,
        *HostStorageSystem.DetachScsiLunEx_Task* and
        *HostStorageSystem.MarkPerenniallyReservedEx_Task*
      properties:
        key:
          description: |2
            UUID of LUN on which the LUN operation was requested.
          type: string
        fault:
          description: |2
            Fault if operation fails
          $ref: '#/components/schemas/MethodFault'
      required:
        - key
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostStorageSystemScsiLunResult:
      type: object
      description: |2
        A boxed array of *HostStorageSystemScsiLunResult*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostStorageSystemScsiLunResult'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostStorageSystemVmfsVolumeResult:
      type: object
      description: |2
        Contains the result of the operation performed on a VMFS volume.
      properties:
        key:
          description: |2
            UUID of VMFS volume
          type: string
        fault:
          description: |2
            Fault if volume operation fails, unset if operation succeeds
          $ref: '#/components/schemas/MethodFault'
      required:
        - key
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostStorageSystemVmfsVolumeResult:
      type: object
      description: |2
        A boxed array of *HostStorageSystemVmfsVolumeResult*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostStorageSystemVmfsVolumeResult'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostListSummary:
      type: object
      description: |2
        This data object type encapsulates a typical set of host information that is useful
        for list views and summary pages.
        
        VirtualCenter can retrieve this information very efficiently, even for a large set
        of hosts.
      properties:
        host:
          description: |2
            The reference to the host-managed object.
            
            Refers instance of *HostSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
        hardware:
          description: |2
            Basic hardware information, if known.
          $ref: '#/components/schemas/HostHardwareSummary'
        runtime:
          description: |2
            Basic runtime information, if known.
          $ref: '#/components/schemas/HostRuntimeInfo'
        config:
          description: |2
            Basic configuration information, if known.
          $ref: '#/components/schemas/HostConfigSummary'
        quickStats:
          description: |2
            Basic host statistics.
          $ref: '#/components/schemas/HostListSummaryQuickStats'
        overallStatus:
          description: |2
            The overall alarm status of the host.
            
            In releases after vSphere API 5.0, vSphere Servers might not
            generate property collector update notifications for this property.
            To obtain the latest value of the property, you can use
            PropertyCollector methods RetrievePropertiesEx or WaitForUpdatesEx.
            If you use the PropertyCollector.WaitForUpdatesEx method, specify
            an empty string for the version parameter.
            Since this property is on a DataObject, an update returned by WaitForUpdatesEx may
            contain values for this property when some other property on the DataObject changes.
            If this update is a result of a call to WaitForUpdatesEx with a non-empty
            version parameter, the value for this property may not be current.
          $ref: '#/components/schemas/ManagedEntityStatus_enum'
        rebootRequired:
          description: |2
            Indicates whether or not the host requires a reboot due to a configuration
            change.
          type: boolean
        customValue:
          description: |2
            The customized field values.
          type: array
          items:
            $ref: '#/components/schemas/CustomFieldValue'
        managementServerIp:
          description: |2
            IP address of the VirtualCenter server managing this host, if any.
          type: string
        maxEVCModeKey:
          description: |2
            The most capable Enhanced VMotion Compatibility mode supported by the
            host hardware and software; unset if this host cannot participate in
            any EVC mode.
            
            See also *Capability.supportedEVCMode*.
          type: string
        currentEVCModeKey:
          description: |2
            The Enhanced VMotion Compatibility mode that is currently in effect
            for this host.
            
            If the host is in a cluster where EVC is active, this
            will match the cluster's EVC mode; otherwise this will be unset.
            
            See also *Capability.supportedEVCMode*.
          type: string
        currentEVCGraphicsModeKey:
          description: |2
            The Enhanced VMotion Compatibility Graphics mode that is currently in
            effect for this host.
            
            If the host is in a cluster where EVC is active,
            this will match the cluster's EVC Graphics mode; otherwise this will
            be unset.
            
            See also *Capability.supportedEVCGraphicsMode*.
            
            ***Since:*** vSphere API Release 7.0.1.0
          type: string
        gateway:
          description: |2
            Gateway configuration, if vCenter server manages the host via a gateway
          $ref: '#/components/schemas/HostListSummaryGatewaySummary'
        tpmAttestation:
          $ref: '#/components/schemas/HostTpmAttestationInfo'
        trustAuthorityAttestationInfos:
          description: |2
            The attestation information for the host as retrieved from any Trust
            Authority attestation services configured in the host's parent compute
            resource.
            
            This field will be set only if there is any Trust Authority
            attestation service configured for the host's parent compute resource,
            and unset otherwise.
            
            ***Since:*** vSphere API Release 7.0.1.0
          type: array
          items:
            $ref: '#/components/schemas/HostTrustAuthorityAttestationInfo'
      required:
        - config
        - quickStats
        - overallStatus
        - rebootRequired
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostListSummary:
      type: object
      description: |2
        A boxed array of *HostListSummary*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostListSummary'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostConfigSummary:
      type: object
      description: |2
        An overview of the key configuration parameters.
      properties:
        name:
          description: |2
            The name of the host.
          type: string
        port:
          description: |2
            The port number.
          type: integer
          format: int32
        sslThumbprint:
          description: |2
            The SSL thumbprint of the host, if known.
          type: string
        product:
          description: |2
            Information about the software running on the host, if known.
            
            The current supported hosts are ESX Server 2.0.1 (and later) and VMware Server
            2.0.0 (and later).
          $ref: '#/components/schemas/AboutInfo'
        vmotionEnabled:
          description: |2
            The flag to indicate whether or not VMotion is enabled on this host.
          type: boolean
        faultToleranceEnabled:
          description: |2
            The flag to indicate whether or not Fault Tolerance logging is enabled on this host.
          type: boolean
        featureVersion:
          description: |2
            List of feature-specific version information.
            
            Each element refers
            to the version information for a specific feature.
          type: array
          items:
            $ref: '#/components/schemas/HostFeatureVersionInfo'
        agentVmDatastore:
          description: |2
            Datastore used to deploy Agent VMs on for this host.
            
            Refers instance of *Datastore*.
          $ref: '#/components/schemas/ManagedObjectReference'
        agentVmNetwork:
          description: |2
            Management network for Agent VMs.
            
            Refers instance of *Network*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - name
        - port
        - vmotionEnabled
        - faultToleranceEnabled
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostConfigSummary:
      type: object
      description: |2
        A boxed array of *HostConfigSummary*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostConfigSummary'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostListSummaryGatewaySummary:
      type: object
      description: |2
        This data object type describes information about a host gateway server
        that is used for the connection between vCenter Server and the host.
        
        Gateway servers are identified by type and id. In order to use
        a gateway server it has to be registered with the respective type and id
        in the vCenter Lookup Service.
      properties:
        gatewayType:
          description: |2
            The type of the gateway server used for communication with the host.
            
            This is an opaque string that depends on how the gateway server is
            registered with the vCenter Component Manager Service. There might be
            several gateway servers for the same type.
          type: string
        gatewayId:
          description: |2
            Unique ID of the gateway server used for communication with the host.
            
            This ID must be a unique identifier for the gateway server as
            registered in the vCenter Component Manager Service. There must be
            only one gateway server with the same ID.
          type: string
      required:
        - gatewayType
        - gatewayId
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostListSummaryGatewaySummary:
      type: object
      description: |2
        A boxed array of *HostListSummaryGatewaySummary*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostListSummaryGatewaySummary'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostHardwareSummary:
      type: object
      description: |2
        This data object type summarizes hardware used by the host.
      properties:
        vendor:
          description: |2
            The hardware vendor identification.
          type: string
        model:
          description: |2
            The system model identification.
          type: string
        uuid:
          description: |2
            The hardware BIOS identification.
          type: string
        otherIdentifyingInfo:
          description: |2
            Other identification information.
            
            This information may be vendor
            specific.
          type: array
          items:
            $ref: '#/components/schemas/HostSystemIdentificationInfo'
        memorySize:
          description: |2
            The physical memory size in bytes.
          type: integer
          format: int64
        cpuModel:
          description: |2
            The CPU model.
          type: string
        cpuMhz:
          description: |2
            The speed of the CPU cores.
            
            This is an average value if there are multiple
            speeds. The product of cpuMhz and numCpuCores is approximately equal to the
            sum of the MHz for all the individual cores on the host.
          type: integer
          format: int32
        numCpuPkgs:
          description: |2
            Number of physical CPU packages on the host.
            
            Physical CPU packages are chips
            that contain one or more processors. Processors contained by a package are
            also known as CPU cores. For example, one dual-core package is comprised of
            one chip that contains two CPU cores.
          type: integer
          minimum: -32768
          maximum: 32767
        numCpuCores:
          description: |2
            Number of physical CPU cores on the host.
            
            Physical CPU cores are the
            processors contained by a CPU package.
          type: integer
          minimum: -32768
          maximum: 32767
        numCpuThreads:
          description: |2
            Number of physical CPU threads on the host.
          type: integer
          minimum: -32768
          maximum: 32767
        numNics:
          description: |2
            The number of network adapters.
          type: integer
          format: int32
        numHBAs:
          description: |2
            The number of host bus adapters (HBAs).
          type: integer
          format: int32
      required:
        - vendor
        - model
        - uuid
        - memorySize
        - cpuModel
        - cpuMhz
        - numCpuPkgs
        - numCpuCores
        - numCpuThreads
        - numNics
        - numHBAs
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostHardwareSummary:
      type: object
      description: |2
        A boxed array of *HostHardwareSummary*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostHardwareSummary'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostListSummaryQuickStats:
      type: object
      description: |2
        Basic host statistics.
        
        Included in the host statistics are fairness scores. Fairness scores are
        represented in units with relative values, meaning they are evaluated relative to
        the scores of other hosts. They should not be thought of as having any particular
        absolute value. Each fairness unit represents an increment of 0.001 in a fairness
        score. The further the fairness score diverges from 1, the less fair the
        allocation. Therefore, a fairness score of 990, representing 0.990, is more fair
        than a fairness score of 1015, which represents 1.015. This is because 1.015 is
        further from 1 than 0.990.
      properties:
        overallCpuUsage:
          description: |2
            Aggregated CPU usage across all cores on the host in MHz.
            
            This is only
            available if the host is connected.
          type: integer
          format: int32
        overallMemoryUsage:
          description: |2
            Physical memory usage on the host in MB.
            
            This is only available if the
            host is connected.
          type: integer
          format: int32
        distributedCpuFairness:
          description: |2
            The fairness of distributed CPU resource allocation on the host.
          type: integer
          format: int32
        distributedMemoryFairness:
          description: |2
            The fairness of distributed memory resource allocation on the host.
          type: integer
          format: int32
        availablePMemCapacity:
          description: |2
            The available capacity in MB.
          type: integer
          format: int32
        uptime:
          description: |2
            The system uptime of the host in seconds.
          type: integer
          format: int32
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostListSummaryQuickStats:
      type: object
      description: |2
        A boxed array of *HostListSummaryQuickStats*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostListSummaryQuickStats'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    SystemEventInfo:
      type: object
      description: |2
        IPMI System Event Log (SEL) provides a history of hardware sensor states.
        
        This is defined in IPMI specification, section 32.1 SEL Event Records.
        CLI:: esxcli hardware ipmi sel list
      properties:
        recordId:
          description: |2
            The recordId uniquely identifies an entry in IPMI System Event Log.
          type: integer
          format: int64
        when:
          description: |2
            A ISO 8601 timestamp when the event was added to IPMI System Event Log.
            
            This timestamp comes from the IPMI subsystem clock and may not be
            the same as hypervisor's clock.
          type: string
        selType:
          description: |2
            The IPMI SEL type defines the if the SEL event uses
            the system event format format or is OEM defined.
            
            A value of 2 indicates system event.
            Values 0xC0-0xDF, 0xE0-0xFF are OEM event ranges.
          type: integer
          format: int64
        message:
          description: |2
            A description of what the event is about.
          type: string
        sensorNumber:
          description: |2
            The IPMI Sensor/probe that is reporting this event.
            
            A value of zero (0) indicates event has no related sensor.
          type: integer
          format: int64
      required:
        - recordId
        - when
        - selType
        - message
        - sensorNumber
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfSystemEventInfo:
      type: object
      description: |2
        A boxed array of *SystemEventInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/SystemEventInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostSystemHealthInfo:
      type: object
      description: |2
        This data object provides information about the health of the phyical
        system.
        
        The data is retrieved from numeric sensor probes.
      properties:
        numericSensorInfo:
          description: |2
            Health information provided by the power probes.
          type: array
          items:
            $ref: '#/components/schemas/HostNumericSensorInfo'
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostSystemHealthInfo:
      type: object
      description: |2
        A boxed array of *HostSystemHealthInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostSystemHealthInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostSystemIdentificationInfo:
      type: object
      description: |2
        This data object describes system identifying information of the host.
        
        This
        information may be vendor specific.
      properties:
        identifierValue:
          description: |2
            The system identification information
          type: string
        identifierType:
          description: |2
            The description of the identifying information.
            
            See also *HostSystemIdentificationInfoIdentifier_enum*.
          $ref: '#/components/schemas/ElementDescription'
      required:
        - identifierValue
        - identifierType
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostSystemIdentificationInfo:
      type: object
      description: |2
        A boxed array of *HostSystemIdentificationInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostSystemIdentificationInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostSystemInfo:
      type: object
      description: |2
        Information about the system as a whole.
      properties:
        vendor:
          description: |2
            Hardware vendor identification.
          type: string
        model:
          description: |2
            System model identification.
          type: string
        uuid:
          description: |2
            Hardware BIOS identification.
          type: string
        otherIdentifyingInfo:
          description: |2
            Other System identification information.
            
            This information may be vendor
            specific
          type: array
          items:
            $ref: '#/components/schemas/HostSystemIdentificationInfo'
        serialNumber:
          type: string
        qualifiedName:
          description: |2
            List of qualified names used to identify the host in a specific context.
            
            Unlike the other types of system identification information, these can
            potentially change as a result of configuration.
            
            ***Since:*** vSphere API Release 7.0.3.0
          type: array
          items:
            $ref: '#/components/schemas/HostQualifiedName'
        vvolHostNQN:
          description: |2
            NVMe qualified name used by Vvol.
            
            A unique name, assigned to each host used by Vvol.
            Obtained through vmkctl storage control path while fetching the NVMe info.
            
            ***Since:*** vSphere API Release 8.0.0.0
          $ref: '#/components/schemas/HostQualifiedName'
        vvolHostId:
          description: |2
            Host id used by Vvol.
            
            The hostd id, obtained through vmkctl storage control path while
            fetching the NVMe info.
            
            ***Since:*** vSphere API Release 8.0.0.0
          type: string
        bootCommandLine:
          description: |2
            Command line string to identify different boot options used for host.
            
            Example of different boot options are:
            - "runweasel": "System is booted for weasel installation"
            - "ks": "System is booted for kickstart installation"
              
            ***Since:*** vSphere API Release 8.0.3.0
          type: string
      required:
        - vendor
        - model
        - uuid
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostSystemInfo:
      type: object
      description: |2
        A boxed array of *HostSystemInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostSystemInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostSystemResourceInfo:
      type: object
      description: |2
        The SystemResourceInfo data object describes the configuration of
        a single system resource group.
        
        System resource groups are analogous
        to *ResourcePool* objects for virtual machines; however,
        their structure is fixed and groups may not be created nor destroyed,
        only configured.
      properties:
        key:
          description: |2
            ID of the system resource group.
          type: string
        config:
          description: |2
            Configuration of this system resource group.
          $ref: '#/components/schemas/ResourceConfigSpec'
        child:
          description: |2
            List of child resource groups.
          type: array
          items:
            $ref: '#/components/schemas/HostSystemResourceInfo'
      required:
        - key
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostSystemResourceInfo:
      type: object
      description: |2
        A boxed array of *HostSystemResourceInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostSystemResourceInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostSystemSwapConfiguration:
      type: object
      description: |2
        Information and specification for control of the system swap configuration
        on the current host.
      properties:
        option:
          description: |2
            The currently enabled options.
            
            When this property contains only one value and this value is *HostSystemSwapConfigurationDisabledOption*,
            this indicates that the system swap is disabled.  
            If the *HostSystemSwapConfigurationDisabledOption* option is
            used together with some other option in call to *HostSystem.UpdateSystemSwapConfiguration*, a
            *InvalidArgument* is thrown.  
            It is not allowed to have duplicate values in this array. If so a
            *InvalidArgument* is thrown.
          type: array
          items:
            $ref: '#/components/schemas/HostSystemSwapConfigurationSystemSwapOption'
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostSystemSwapConfiguration:
      type: object
      description: |2
        A boxed array of *HostSystemSwapConfiguration*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostSystemSwapConfiguration'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostSystemSwapConfigurationDatastoreOption:
      type: object
      description: |2
        Use option to indicate that a user specified datastore may be used for
        system swap.
      properties:
        datastore:
          description: |2
            The datastore to be used with this swap option.
            
            This value should be always set when the encapsulating option is used,
            otherwise a call to *HostSystem.UpdateSystemSwapConfiguration* will
            result in a *InvalidArgument* fault.
          type: string
      required:
        - datastore
      allOf:
        - $ref: '#/components/schemas/HostSystemSwapConfigurationSystemSwapOption'

    ArrayOfHostSystemSwapConfigurationDatastoreOption:
      type: object
      description: |2
        A boxed array of *HostSystemSwapConfigurationDatastoreOption*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostSystemSwapConfigurationDatastoreOption'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostSystemSwapConfigurationDisabledOption:
      type: object
      description: |2
        Indicates that the system swap on the host is currently disabled.
        
        This value is used with the
        *HostSystem.UpdateSystemSwapConfiguration* managed method to
        disable system swap. Presence of this value in *HostSystemSwapConfiguration.option* excludes appearance of any other
        options. Specifying additional options will result in a *InvalidArgument* fault being thrown from the *HostSystem.UpdateSystemSwapConfiguration* method.
      allOf:
        - $ref: '#/components/schemas/HostSystemSwapConfigurationSystemSwapOption'

    ArrayOfHostSystemSwapConfigurationDisabledOption:
      type: object
      description: |2
        A boxed array of *HostSystemSwapConfigurationDisabledOption*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostSystemSwapConfigurationDisabledOption'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostSystemSwapConfigurationHostCacheOption:
      type: object
      description: |2
        Use option to indicate that the host cache may be used for system
        swap.
        
        See also *HostCacheConfigurationManager*for more details..
      allOf:
        - $ref: '#/components/schemas/HostSystemSwapConfigurationSystemSwapOption'

    ArrayOfHostSystemSwapConfigurationHostCacheOption:
      type: object
      description: |2
        A boxed array of *HostSystemSwapConfigurationHostCacheOption*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostSystemSwapConfigurationHostCacheOption'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostSystemSwapConfigurationHostLocalSwapOption:
      type: object
      description: |2
        Use option to indicate that the datastore configured for host local swap
        may be used for system swap.
      allOf:
        - $ref: '#/components/schemas/HostSystemSwapConfigurationSystemSwapOption'

    ArrayOfHostSystemSwapConfigurationHostLocalSwapOption:
      type: object
      description: |2
        A boxed array of *HostSystemSwapConfigurationHostLocalSwapOption*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostSystemSwapConfigurationHostLocalSwapOption'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostSystemSwapConfigurationSystemSwapOption:
      type: object
      description: |2
        Base class for all system swap options.
        
        This class is not supposed to be used directly.  
        These values are to be used in a *SystemSwapConfiguration.option*
        array.
      properties:
        key:
          description: |2
            Specifies the order the options are preferred among each other.
            
            The lower the value the more important.
          type: integer
          format: int32
      required:
        - key
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostSystemSwapConfigurationSystemSwapOption:
      type: object
      description: |2
        A boxed array of *HostSystemSwapConfigurationSystemSwapOption*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostSystemSwapConfigurationSystemSwapOption'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostTargetTransport:
      type: object
      description: |2
        Transport information about a SCSI target.
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostTargetTransport:
      type: object
      description: |2
        A boxed array of *HostTargetTransport*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostTargetTransport'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostTcpHba:
      type: object
      description: |2
        This data object describes the Transmission Control Protocol
        (TCP) host bus adapter interface.
        
        ***Since:*** vSphere API Release 7.0.3.0
      properties:
        associatedPnic:
          description: |2
            Device name of the associated physical NIC, if any.
            
            Should match the *PhysicalNic.device* property
            of the corresponding physical NIC.
          type: string
      allOf:
        - $ref: '#/components/schemas/HostHostBusAdapter'

    ArrayOfHostTcpHba:
      type: object
      description: |2
        A boxed array of *HostTcpHba*. To be used in *Any* placeholders.
        
        ***Since:*** vSphere API Release 7.0.3.0
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostTcpHba'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostTcpHbaCreateSpec:
      type: object
      description: |2
        A data object which specifies the parameters needed
        to create an NVME over TCP host bus adapter.
        
        ***Since:*** vSphere API Release 7.0.3.0
      properties:
        pnic:
          description: |2
            Device name of the associated physical NIC.
            
            Should match the *PhysicalNic.device* property
            of the corresponding physical NIC.
          type: string
      required:
        - pnic
      allOf:
        - $ref: '#/components/schemas/HostHbaCreateSpec'

    ArrayOfHostTcpHbaCreateSpec:
      type: object
      description: |2
        A boxed array of *HostTcpHbaCreateSpec*. To be used in *Any* placeholders.
        
        ***Since:*** vSphere API Release 7.0.3.0
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostTcpHbaCreateSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostTcpTargetTransport:
      type: object
      description: |2
        Transmission Control Protocol (TCP) transport
        information about a target.
        
        ***Since:*** vSphere API Release 7.0.3.0
      allOf:
        - $ref: '#/components/schemas/HostTargetTransport'

    ArrayOfHostTcpTargetTransport:
      type: object
      description: |2
        A boxed array of *HostTcpTargetTransport*. To be used in *Any* placeholders.
        
        ***Since:*** vSphere API Release 7.0.3.0
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostTcpTargetTransport'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostTpmAttestationInfo:
      type: object
      description: |2
        This data object type represents result of TPM attestation.
      properties:
        time:
          description: |2
            Time of TPM attestation.
          type: string
          format: date-time
        status:
          description: |2
            Attestation status.
            
            Valid values are enumerated by the
            *HostTpmAttestationInfoAcceptanceStatus_enum* type.
          $ref: '#/components/schemas/HostTpmAttestationInfoAcceptanceStatus_enum'
        message:
          description: |2
            Message explaining TPM attestation failure.
          $ref: '#/components/schemas/LocalizableMessage'
      required:
        - time
        - status
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostTpmAttestationInfo:
      type: object
      description: |2
        A boxed array of *HostTpmAttestationInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostTpmAttestationInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostTpmAttestationReport:
      type: object
      description: |2
        This class is used to report Trusted Platform Module (TPM) attestation
        information - values of the Platform Configuration Registers (PCRs) and
        the TPM event log to the external clients.
        
        This information can be used to determine the integrity of the software
        stack running as reported by the platform.
        
        The TPM stores digests (hashes) of the software stack components running on
        the host. Both binary modules and configuration information can be hashed.
        The calculated hash values are stored in special-purpose hardware registers
        called PCRs. Each PCR is defined to hold cumulative digest(s) of specific
        part(s) of the software stack.
        
        Due to the limited amount of PCRs available a hash-chaining scheme is implemented.
        When adding new information to a PCR the new value of hash is computed according
        to the following formula:
        NewHash = hash\_function(OldHash + hash\_function(NewData))
        This scheme allows storing measurements of an unlimited amount of components.
        
        The TPM event log provides an exact sequence of the events that contributed
        to the value of a PCR. It contains information about the type of the event
        and event-specific information. The presence of the log allows verification of
        both the final PCR state and the entire attestation path that formed it.
        
        It is possible for this report to be unreliable. This could be due to missing package
        information in the host database, errors in creation of the events. Only first 1000
        events are recorded by the kernel. Further events will not be recorded in the log and
        will cause the log to be marked as incomplete.
      properties:
        tpmPcrValues:
          description: |2
            The array of PCR digest values stored in the TPM device since the last
            host boot time.
          type: array
          items:
            $ref: '#/components/schemas/HostTpmDigestInfo'
        tpmEvents:
          description: |2
            Log of TPM software stack attestation events.
          type: array
          items:
            $ref: '#/components/schemas/HostTpmEventLogEntry'
        tpmLogReliable:
          description: |2
            This flag indicates whether the provided TPM events are a complete and reliable
            information about host boot status.
            
            TPM event log may be incomplete (and therfore unreliable) if certain modules have
            inappropriate origin or if the package information is incomplete. Only first 1000
            events are recorded by the kernel. Further events will not be recorded in the log
            and will cause the log to be marked as unreliable.
          type: boolean
      required:
        - tpmPcrValues
        - tpmEvents
        - tpmLogReliable
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostTpmAttestationReport:
      type: object
      description: |2
        A boxed array of *HostTpmAttestationReport*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostTpmAttestationReport'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostTpmBootCompleteEventDetails:
      type: object
      description: |2
        Details of a Trusted Platform Module (TPM) event recording the
        measurement of boot complete event.
        
        The event digest is hash of
        the string "Boot Complete" including the nul character.
        
        ***Since:*** vSphere API Release 8.0.1.0
      allOf:
        - $ref: '#/components/schemas/HostTpmEventDetails'

    ArrayOfHostTpmBootCompleteEventDetails:
      type: object
      description: |2
        A boxed array of *HostTpmBootCompleteEventDetails*. To be used in *Any* placeholders.
        
        ***Since:*** vSphere API Release 8.0.1.0
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostTpmBootCompleteEventDetails'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostTpmBootSecurityOptionEventDetails:
      type: object
      description: |2
        Details of a Trusted Platform Module (TPM) event recording kernel security
        option passed at boot time and currently in effect.
        
        This event type exists to simplify parsing of the security-related information
        by internal and third-party solutions. Each boot option may be passed to kernel
        multiple times and/or in different forms. Replicating the parsing logic of the
        kernel would be neither convinient, nor secure for the client applications.
        
        Each instance of this event reports details of a single security-related
        boot option, as set in the kernel.
      properties:
        bootSecurityOption:
          description: |2
            Security-related options string, reflecting the state of an option set
            in the kernel.
            
            This string is in the form of a KEY=VALUE pair.
          type: string
      required:
        - bootSecurityOption
      allOf:
        - $ref: '#/components/schemas/HostTpmEventDetails'

    ArrayOfHostTpmBootSecurityOptionEventDetails:
      type: object
      description: |2
        A boxed array of *HostTpmBootSecurityOptionEventDetails*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostTpmBootSecurityOptionEventDetails'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostTpmCommandEventDetails:
      type: object
      description: |2
        Details of an Trusted Platform Module (TPM) event recording options entered
        manually on the command line prompt at boot time.
      properties:
        commandLine:
          description: |2
            Boot options as entered on the command line prompt at boot time.
          type: string
      required:
        - commandLine
      allOf:
        - $ref: '#/components/schemas/HostTpmEventDetails'

    ArrayOfHostTpmCommandEventDetails:
      type: object
      description: |2
        A boxed array of *HostTpmCommandEventDetails*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostTpmCommandEventDetails'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostTpmDigestInfo:
      type: object
      description: |2
        This data object type describes the digest values in the Platform
        Configuration Register (PCR) of a Trusted Platform Module (TPM) device.
      properties:
        pcrNumber:
          description: |2
            Index of the PCR that stores the TPM digest value.
          type: integer
          format: int32
      required:
        - pcrNumber
      allOf:
        - $ref: '#/components/schemas/HostDigestInfo'

    ArrayOfHostTpmDigestInfo:
      type: object
      description: |2
        A boxed array of *HostTpmDigestInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostTpmDigestInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostTpmEventDetails:
      type: object
      description: |2
        This is a base data object for describing an event generated by
        Trusted Platform Module (TPM).
        
        It contains parameters common to
        all TPM event types.
      properties:
        dataHash:
          description: |2
            Value of the Platform Configuration Register (PCR) for this event.
          type: array
          items:
            type: integer
            minimum: -128
            maximum: 127
        dataHashMethod:
          description: |2
            Method in which the digest hash is calculated.
            
            The set of possible
            values is described in *HostDigestInfoDigestMethodType_enum*.
          type: string
      required:
        - dataHash
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostTpmEventDetails:
      type: object
      description: |2
        A boxed array of *HostTpmEventDetails*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostTpmEventDetails'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostTpmEventLogEntry:
      type: object
      description: |2
        This data object represents a single entry of an event log created by
        Trusted Platform Module (TPM).
        
        An TPM event log entry represents a single change to the value of
        a Platform Configuration Register (PCR). It contains detailed information
        about the reason of PCR value change, and the specifics of the event.
        
        Multiple objects of this type form an TPM event log. This log allows for
        verification of the both the software stack running on a host and the attestation
        process itself.
      properties:
        pcrIndex:
          description: |2
            Index of the PCR that was affected by the event.
          type: integer
          format: int32
        eventDetails:
          description: |2
            The details of the event.
          $ref: '#/components/schemas/HostTpmEventDetails'
      required:
        - pcrIndex
        - eventDetails
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostTpmEventLogEntry:
      type: object
      description: |2
        A boxed array of *HostTpmEventLogEntry*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostTpmEventLogEntry'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostTpmNvTagEventDetails:
      type: object
      description: |2
        Details of an Trusted Platform Module (TPM) event recording TPM NVRAM tag.
        
        ***Since:*** vSphere API Release 7.0.2.0
      allOf:
        - $ref: '#/components/schemas/HostTpmBootSecurityOptionEventDetails'

    ArrayOfHostTpmNvTagEventDetails:
      type: object
      description: |2
        A boxed array of *HostTpmNvTagEventDetails*. To be used in *Any* placeholders.
        
        ***Since:*** vSphere API Release 7.0.2.0
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostTpmNvTagEventDetails'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostTpmOptionEventDetails:
      type: object
      description: |2
        Details of a Trusted Platform Module (TPM) event recording boot-time options.
        
        The boot-time options set on the system are packaged into a file that is supplied
        to the kernel at boot time. The boot options may be a string of key=value pairs
        (possibly separated by a new line) or a blob of arbitrary data.
      properties:
        optionsFileName:
          description: |2
            Name of the file containing the boot options.
          type: string
        bootOptions:
          description: |2
            Options set by the boot option package.
            
            This array exposes the raw contents of the settings file (or files) that were
            passed to kernel during the boot up process, and, therefore, should be treated
            accordingly.
          type: array
          items:
            type: integer
            minimum: -128
            maximum: 127
      required:
        - optionsFileName
      allOf:
        - $ref: '#/components/schemas/HostTpmEventDetails'

    ArrayOfHostTpmOptionEventDetails:
      type: object
      description: |2
        A boxed array of *HostTpmOptionEventDetails*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostTpmOptionEventDetails'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostTpmSignerEventDetails:
      type: object
      description: |2
        Details of a Trusted Platform Module (TPM) event recording the measurement
        of a signing key.
        
        ***Since:*** vSphere API Release 8.0.0.1
      allOf:
        - $ref: '#/components/schemas/HostTpmBootSecurityOptionEventDetails'

    ArrayOfHostTpmSignerEventDetails:
      type: object
      description: |2
        A boxed array of *HostTpmSignerEventDetails*. To be used in *Any* placeholders.
        
        ***Since:*** vSphere API Release 8.0.0.1
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostTpmSignerEventDetails'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostTpmSoftwareComponentEventDetails:
      type: object
      description: |2
        Details of a Trusted Platform Module (TPM) event recording a software component
        related event.
        
        This event is created when measuring a software component installed on the system.
        A software component may be a tardisk, a kernel module or any other type supported
        by the package system.
        
        Some software components are not packaged as VIBs (currently the package database
        and persistent state information of ESXi). For these components the VIB fields
        will contain empty strings.
      properties:
        componentName:
          description: |2
            Name of the software component that caused this TPM event.
          type: string
        vibName:
          description: |2
            Name of the VIB containing the software component.
          type: string
        vibVersion:
          description: |2
            Version of the VIB containing the software component.
          type: string
        vibVendor:
          description: |2
            Vendor of the VIB containing the software component.
          type: string
      required:
        - componentName
        - vibName
        - vibVersion
        - vibVendor
      allOf:
        - $ref: '#/components/schemas/HostTpmEventDetails'

    ArrayOfHostTpmSoftwareComponentEventDetails:
      type: object
      description: |2
        A boxed array of *HostTpmSoftwareComponentEventDetails*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostTpmSoftwareComponentEventDetails'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostTpmVersionEventDetails:
      type: object
      description: |2
        Details of a Trusted Platform Module (TPM) event recording the
        measurement of a module version.
        
        ***Since:*** vSphere API Release 8.0.0.1
      properties:
        version:
          description: |2
            A packed structure containing the module version.
          type: string
          format: byte
      required:
        - version
      allOf:
        - $ref: '#/components/schemas/HostTpmEventDetails'

    ArrayOfHostTpmVersionEventDetails:
      type: object
      description: |2
        A boxed array of *HostTpmVersionEventDetails*. To be used in *Any* placeholders.
        
        ***Since:*** vSphere API Release 8.0.0.1
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostTpmVersionEventDetails'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostTrustAuthorityAttestationInfo:
      type: object
      description: |2
        This data object type represents result of the attestation done by
        Trust Authority attestation service.
        
        ***Since:*** vSphere API Release 7.0.1.0
      properties:
        attestationStatus:
          description: |2
            Status of the attestation.
            
            See *HostTrustAuthorityAttestationInfoAttestationStatus_enum* for the
            supported values.
          type: string
        serviceId:
          description: |2
            ID of the attestation service in case of attestation success.
            
            Unset when
            not attested.
          type: string
        attestedAt:
          description: |2
            Time of attestation.
          type: string
          format: date-time
        attestedUntil:
          description: |2
            Time until attestation is valid.
          type: string
          format: date-time
        messages:
          description: |2
            Messages explaining attestation failure or attestation status
            retrieval errors, if any.
          type: array
          items:
            $ref: '#/components/schemas/LocalizableMessage'
      required:
        - attestationStatus
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostTrustAuthorityAttestationInfo:
      type: object
      description: |2
        A boxed array of *HostTrustAuthorityAttestationInfo*. To be used in *Any* placeholders.
        
        ***Since:*** vSphere API Release 7.0.1.0
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostTrustAuthorityAttestationInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostUnresolvedVmfsExtent:
      type: object
      description: |2
        Information about an unresolved VMFS volume extent
        An unresolved VMFS volume extent is a device partition which is
        detected to have copy of an extent of a VMFS volume.
        
        Such a copy can be created via replication or snapshots, for example.
        
        See also *HostUnresolvedVmfsVolume*.
      properties:
        device:
          description: |2
            The device information
          $ref: '#/components/schemas/HostScsiDiskPartition'
        devicePath:
          description: |2
            The device path of an VMFS extent
          type: string
        vmfsUuid:
          description: |2
            The UUID of the VMFS volume read from to the partition.
          type: string
        isHeadExtent:
          description: |2
            Is this a copy of the head extent of the VMFS volume?
          type: boolean
        ordinal:
          description: |2
            A number indicating the order of an extent in a volume.
            
            An extent with
            a lower ordinal value than another extent provides a range of blocks to
            a volume at an earlier block address range. Extents with the same
            ordinal provide the same range of blocks to a volume. A zero ordinal
            indicates that the extent is a head extent.
            
            In the case each extent in the *HostUnresolvedVmfsVolume* is
            represented in the list of *HostUnresolvedVmfsExtent* data objects,
            the ordinal will refer to the absolute index of the extent in the
            volume. For example, ordinal "1" refers to the second extent;
            ordinal "2" refers to the third extent.
            
            In the case that some extents of the volume are not represented in
            the *HostUnresolvedVmfsExtent* list, the ordinal will not precisely
            describe the position in the list of extents. A number will be skipped
            to indicate holes in the extent order. For example, given a volume with
            five extents with the second and third extents missing, the ordinal
            values in use will be {0, 2, 3}. The missing second and third extent
            are represented by the missing ordinal value "1" while the fourth and
            fifth extents will be assigned an ordinal of "2" and "3" respectively.
            
            The reason the ordinals are not reliable in the case of missing extents
            is because the extents are identified by their start and end blocks.
            The ordinals are just a hint used to help indicate extents that
            correspond to the same start and end blocks.
          type: integer
          format: int32
        startBlock:
          description: |2
            Index of the first block that this extent provides.
          type: integer
          format: int32
        endBlock:
          description: |2
            Index of the last block that this extent provides.
          type: integer
          format: int32
        reason:
          description: |2
            Reason as to why the partition is marked as copy
            of a VMFS volume's extent.
            
            Possible reasons are the disk id is not matching with what
            the scsi inq is saying or disk uuid is not matching
            
            See also *HostUnresolvedVmfsExtentUnresolvedReason_enum*.
          type: string
      required:
        - device
        - devicePath
        - vmfsUuid
        - isHeadExtent
        - ordinal
        - startBlock
        - endBlock
        - reason
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostUnresolvedVmfsExtent:
      type: object
      description: |2
        A boxed array of *HostUnresolvedVmfsExtent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostUnresolvedVmfsExtent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostUnresolvedVmfsResignatureSpec:
      type: object
      description: |2
        Specification to resignature an Unresolved VMFS volume.
      properties:
        extentDevicePath:
          description: |2
            List of device path each specifying VMFS extents.
          type: array
          items:
            type: string
      required:
        - extentDevicePath
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostUnresolvedVmfsResignatureSpec:
      type: object
      description: |2
        A boxed array of *HostUnresolvedVmfsResignatureSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostUnresolvedVmfsResignatureSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostUnresolvedVmfsResolutionResult:
      type: object
      description: |2
        When an UnresolvedVmfsVolume has been resignatured or forceMounted, we want to
        return the original spec information along with newly created VMFS volume.
      properties:
        spec:
          description: |2
            The original UnresolvedVmfsResolutionSpec which user had specified
          $ref: '#/components/schemas/HostUnresolvedVmfsResolutionSpec'
        vmfs:
          description: |2
            Newly created VmfsVolume
          $ref: '#/components/schemas/HostVmfsVolume'
        fault:
          description: |2
            'fault' would be set if the operation was not successful
          $ref: '#/components/schemas/MethodFault'
      required:
        - spec
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostUnresolvedVmfsResolutionResult:
      type: object
      description: |2
        A boxed array of *HostUnresolvedVmfsResolutionResult*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostUnresolvedVmfsResolutionResult'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostUnresolvedVmfsResolutionSpec:
      type: object
      description: |2
        An unresolved VMFS volume is reported when one or more device partitions
        of volume are detected to have copies of extents of the volume.
        
        Such copies can be created via replication or snapshots, for example.
        This data object type describes how to resolve an unbound VMFS volume.
        The SCSI device path for each of the VMFS volume extent should be
        specified.
        For the current release, only head-extent needs to be specified.
        In future releases, we will allow user to specify explicitly all the
        extents which makes up a new Vmfs Volume.
      properties:
        extentDevicePath:
          description: |2
            List of device paths each specifying a VMFS extent.
            
            One extent must be specified. This property is represented as a
            list to enable future enhancements to the interface.
          type: array
          items:
            type: string
        uuidResolution:
          description: |2
            When set to Resignature, new Uuid is assigned to the VMFS
            volume.
            
            When set to 'forceMount', existing uuid is assigned
            to the Vmfs volume and Vmfs volumes metadata doesn't change.
            
            See also *HostUnresolvedVmfsResolutionSpecVmfsUuidResolution_enum*.
          type: string
      required:
        - extentDevicePath
        - uuidResolution
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostUnresolvedVmfsResolutionSpec:
      type: object
      description: |2
        A boxed array of *HostUnresolvedVmfsResolutionSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostUnresolvedVmfsResolutionSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostUnresolvedVmfsVolume:
      type: object
      description: |2
        Information about detected unbound, unresolved VMFS volume.
        
        An unresolved VMFS volume is reported when one or more device
        partitions of volume are detected to have copies of extents
        of the volume. Such copies can be created via replication or
        snapshots.
        
        UnresolvedVmfsVolume are not mounted on the host where they
        are detected. User may choose to resignature the volume in
        which case a new Uuid is assigned to the volume and contents
        of the VMFS volume is kept intact.
        
        User may choose to keep the original Uuid and mount the VMFS
        volume as it is on the given host. In this case, user has
        chosen to mount the copy of the VMFS volume on that host with
        no change to the original Uuid. This may fail with
        VmfsVolumeAlreadyMounted exception if there is an existing
        VMFS volume with the same Uuid mounted somewhere in the same
        datacenter.
        
        Simple diagram representing the possible operations on UnresolvedVmfsVolume
        
              ---------------------------------------------------------------------------
              |                resignature                 forceMount                   |
              |  VmfsVolume <---------------  Unresolved ------------>  VmfsVolume with |
              | forceMountedInfo              Vmfs Volume              forceMountedInfo |
              |  not set                                                  will be set   |
              ---------------------------------------------------------------------------
        
        See also *HostStorageSystem*.
      properties:
        extent:
          description: |2
            List of detected copies of VMFS extents.
          type: array
          items:
            $ref: '#/components/schemas/HostUnresolvedVmfsExtent'
        vmfsLabel:
          description: |2
            The detected VMFS label name
          type: string
        vmfsUuid:
          description: |2
            The detected VMFS UUID
          type: string
        totalBlocks:
          description: |2
            Total number of blocks in this volume.
          type: integer
          format: int32
        resolveStatus:
          description: |2
            Information related to how the volume might be resolved.
          $ref: '#/components/schemas/HostUnresolvedVmfsVolumeResolveStatus'
      required:
        - extent
        - vmfsLabel
        - vmfsUuid
        - totalBlocks
        - resolveStatus
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostUnresolvedVmfsVolume:
      type: object
      description: |2
        A boxed array of *HostUnresolvedVmfsVolume*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostUnresolvedVmfsVolume'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostUnresolvedVmfsVolumeResolveStatus:
      type: object
      description: |2
        Data object that describes the resolvability of a volume.
      properties:
        resolvable:
          description: |2
            Can this volume be resolved? There may be other reasons a volume cannot
            be resolved other than the fact that it is incomplete.
            
            This boolean will
            authoritatively indicate if the server can resolve this volume.
          type: boolean
        incompleteExtents:
          description: |2
            Is the list of extents for the volume a partial list? A volume can only
            be resignatured if all extents composing that volume are available.
            
            Hence, a volume with a partial extent list cannot be resignatured.
            
            In cases where this information is not known for a volume, this
            property will be unset.
          type: boolean
        multipleCopies:
          description: |2
            Are there multiple copies of extents for this volume? If any extent of
            the volume has multiple copies then the extents to be resolved must be
            explicitly specified when resolving this volume.
            
            In cases where this information is not known for a volume, this
            property will be unset.
          type: boolean
      required:
        - resolvable
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostUnresolvedVmfsVolumeResolveStatus:
      type: object
      description: |2
        A boxed array of *HostUnresolvedVmfsVolumeResolveStatus*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostUnresolvedVmfsVolumeResolveStatus'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostVFlashManagerVFlashCacheConfigInfo:
      type: object
      description: |2
        Data object describes host vFlash cache configuration information.
      properties:
        vFlashModuleConfigOption:
          description: |2
            Cache configuration options for the supported vFlash modules.
          type: array
          items:
            $ref: '#/components/schemas/HostVFlashManagerVFlashCacheConfigInfoVFlashModuleConfigOption'
        defaultVFlashModule:
          description: |2
            Name of the default vFlash module for the read-write cache associated
            with the VMs of this host.
            
            This setting can be overridden by
            *VirtualDiskVFlashCacheConfigInfo.vFlashModule*
            per VMDK.
          type: string
        swapCacheReservationInGB:
          description: |2
            Amount of vFlash resource is allocated to the host swap cache.
            
            As long as set,
            reservation will be permanent and retain regardless of host power state. The host
            swap cache will be disabled if reservation is set to zero.
          type: integer
          format: int64
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostVFlashManagerVFlashCacheConfigInfo:
      type: object
      description: |2
        A boxed array of *HostVFlashManagerVFlashCacheConfigInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostVFlashManagerVFlashCacheConfigInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostVFlashManagerVFlashCacheConfigInfoVFlashModuleConfigOption:
      type: object
      properties:
        vFlashModule:
          description: |2
            Name of the vFlash module
          type: string
        vFlashModuleVersion:
          description: |2
            Version of the vFlash module
          type: string
        minSupportedModuleVersion:
          description: |2
            Minimum supported version
          type: string
        cacheConsistencyType:
          description: |2
            Cache data consistency types.
            
            See *VirtualDiskVFlashCacheConfigInfoCacheConsistencyType_enum*
          $ref: '#/components/schemas/ChoiceOption'
        cacheMode:
          description: |2
            Cache modes.
            
            See *VirtualDiskVFlashCacheConfigInfoCacheMode_enum*
          $ref: '#/components/schemas/ChoiceOption'
        blockSizeInKBOption:
          description: |2
            blockSizeInKBOption defines a range of virtual disk cache block size.
          $ref: '#/components/schemas/LongOption'
        reservationInMBOption:
          description: |2
            reservationInMBOption defines a range of virtual disk cache size.
          $ref: '#/components/schemas/LongOption'
        maxDiskSizeInKB:
          description: |2
            Maximal size of virtual disk supported in kilobytes.
          type: integer
          format: int64
      required:
        - vFlashModule
        - vFlashModuleVersion
        - minSupportedModuleVersion
        - cacheConsistencyType
        - cacheMode
        - blockSizeInKBOption
        - reservationInMBOption
        - maxDiskSizeInKB
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostVFlashManagerVFlashCacheConfigInfoVFlashModuleConfigOption:
      type: object
      description: |2
        A boxed array of *HostVFlashManagerVFlashCacheConfigInfoVFlashModuleConfigOption*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostVFlashManagerVFlashCacheConfigInfoVFlashModuleConfigOption'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostVFlashManagerVFlashCacheConfigSpec:
      type: object
      description: |2
        Specification to configure vFlash cache on the host.
      properties:
        defaultVFlashModule:
          description: |2
            Name of the default vFlash module for the read-write caches associated
            with the VMs of this host.
            
            This setting can be overridden by
            *VirtualDiskVFlashCacheConfigInfo.vFlashModule*
            per VMDK.
          type: string
        swapCacheReservationInGB:
          description: |2
            Amount of vFlash resource is allocated to the host swap cache.
            
            As long as set,
            reservation will be permanent and retain regardless of host power state. The host
            swap cache will be disabled if the reservation is set to zero.
          type: integer
          format: int64
      required:
        - defaultVFlashModule
        - swapCacheReservationInGB
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostVFlashManagerVFlashCacheConfigSpec:
      type: object
      description: |2
        A boxed array of *HostVFlashManagerVFlashCacheConfigSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostVFlashManagerVFlashCacheConfigSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostVFlashManagerVFlashConfigInfo:
      type: object
      description: |2
        vFlash configuration Information.
      properties:
        vFlashResourceConfigInfo:
          description: |2
            vFlash resource configuration information
          $ref: '#/components/schemas/HostVFlashManagerVFlashResourceConfigInfo'
        vFlashCacheConfigInfo:
          description: |2
            vFlash cache configuration information
          $ref: '#/components/schemas/HostVFlashManagerVFlashCacheConfigInfo'
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostVFlashManagerVFlashConfigInfo:
      type: object
      description: |2
        A boxed array of *HostVFlashManagerVFlashConfigInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostVFlashManagerVFlashConfigInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostVFlashManagerVFlashResourceConfigInfo:
      type: object
      description: |2
        vFlash resource configuration Information.
      properties:
        vffs:
          description: |2
            The contained VFFS volume
          $ref: '#/components/schemas/HostVffsVolume'
        capacity:
          description: |2
            Capacity of the vFlash resource.
            
            It is the capacity
            of the contained VFFS volume.
          type: integer
          format: int64
      required:
        - capacity
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostVFlashManagerVFlashResourceConfigInfo:
      type: object
      description: |2
        A boxed array of *HostVFlashManagerVFlashResourceConfigInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostVFlashManagerVFlashResourceConfigInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostVFlashManagerVFlashResourceConfigSpec:
      type: object
      description: |2
        vFlash resource configuration specification.
      properties:
        vffsUuid:
          description: |2
            The contained VFFS volume uuid.
          type: string
      required:
        - vffsUuid
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostVFlashManagerVFlashResourceConfigSpec:
      type: object
      description: |2
        A boxed array of *HostVFlashManagerVFlashResourceConfigSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostVFlashManagerVFlashResourceConfigSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostVFlashManagerVFlashResourceRunTimeInfo:
      type: object
      description: |2
        Data object provides vFlash resource runtime usage.
      properties:
        usage:
          description: |2
            Overall usage of vFlash resource, in bytes.
          type: integer
          format: int64
        capacity:
          description: |2
            Overall capacity of vFlash resource, in bytes.
          type: integer
          format: int64
        accessible:
          description: |2
            True if all the included the VFFS volumes are accessible.
            
            False if one or
            multiple included VFFS volumes are inaccessible.
          type: boolean
        capacityForVmCache:
          description: |2
            vFlash resource capacity can be allocated for VM caches
          type: integer
          format: int64
        freeForVmCache:
          description: |2
            Free vFlash resource can be allocated for VM caches
          type: integer
          format: int64
      required:
        - usage
        - capacity
        - accessible
        - capacityForVmCache
        - freeForVmCache
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostVFlashManagerVFlashResourceRunTimeInfo:
      type: object
      description: |2
        A boxed array of *HostVFlashManagerVFlashResourceRunTimeInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostVFlashManagerVFlashResourceRunTimeInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostVFlashResourceConfigurationResult:
      type: object
      description: |2
        vFlash resource configuration result returns the newly-configured backend
        VFFS volume and operation result for each passed-in SSD device.
      properties:
        devicePath:
          description: |2
            The original array of device path which user had specified
          type: array
          items:
            type: string
        vffs:
          description: |2
            Newly configured VffsVolume
          $ref: '#/components/schemas/HostVffsVolume'
        diskConfigurationResult:
          description: |2
            Array of device operation results.
          type: array
          items:
            $ref: '#/components/schemas/HostDiskConfigurationResult'
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostVFlashResourceConfigurationResult:
      type: object
      description: |2
        A boxed array of *HostVFlashResourceConfigurationResult*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostVFlashResourceConfigurationResult'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostVMotionConfig:
      type: object
      description: |2
        This data object configuring VMotion on the host.
        
        The runtime information is available from the
        *VMotionInfo* data object type.
      properties:
        vmotionNicKey:
          description: |2
            Key of the VirtualNic used for VMotion.
          type: string
        enabled:
          description: |2
            Flag to indicate whether or not VMotion is enabled.
          type: boolean
      required:
        - enabled
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostVMotionConfig:
      type: object
      description: |2
        A boxed array of *HostVMotionConfig*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostVMotionConfig'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostVMotionInfo:
      type: object
      deprecated: true
      description: |2
        Deprecated as of VI API 4.0, use *HostVirtualNicManagerInfo*.
        
        This data object type describes VMotion host
        configuration data objects.
      properties:
        netConfig:
          description: |2
            VMotion network configuration.
          $ref: '#/components/schemas/HostVMotionNetConfig'
        ipConfig:
          description: |2
            IP configuration of the VMotion VirtualNic.
          $ref: '#/components/schemas/HostIpConfig'
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostVMotionInfo:
      type: object
      description: |2
        A boxed array of *HostVMotionInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostVMotionInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostVMotionManagerDstInstantCloneResult:
      type: object
      description: |2
        The result of an InstantClone task.
        
        Contains the dest VM id and timestamp
        values at the time of different operations.
      properties:
        dstVmId:
          description: |2
            The destination VM ID of the InstantCloned VM.
          type: integer
          format: int32
        startTime:
          description: |2
            Time stamp at the start of the InstantClone operation at the dest
            VM.
          type: integer
          format: int64
        cptLoadTime:
          description: |2
            Time stamp when the destination VM starts cpt load.
          type: integer
          format: int64
        cptLoadDoneTime:
          description: |2
            Time stamp when the destination VM completes cpt load.
          type: integer
          format: int64
        replicateMemDoneTime:
          description: |2
            Time stamp when the destination VM completes replicating memory.
          type: integer
          format: int64
        endTime:
          description: |2
            Time stamp when the migration completes on the destination VM.
          type: integer
          format: int64
        cptXferTime:
          description: |2
            Device checkpoint stream time.
          type: integer
          format: int64
        cptCacheUsed:
          description: |2
            Checkpoint cache size used.
          type: integer
          format: int64
        devCptStreamSize:
          description: |2
            Device checkpoint stream size.
          type: integer
          format: int64
        devCptStreamTime:
          description: |2
            Device checkpoint stream time.
          type: integer
          format: int64
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostVMotionManagerDstInstantCloneResult:
      type: object
      description: |2
        A boxed array of *HostVMotionManagerDstInstantCloneResult*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostVMotionManagerDstInstantCloneResult'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostVMotionManagerSrcInstantCloneResult:
      type: object
      description: |2
        The result of an InstantClone InitiateSource task.
        
        Contains the timestamp
        value at the time of different operations.
      properties:
        startTime:
          description: |2
            Time stamp at the start of the InstantClone operation at the
            source VM.
          type: integer
          format: int64
        quiesceTime:
          description: |2
            Time stamp when the source VM enters quiesce state.
          type: integer
          format: int64
        quiesceDoneTime:
          description: |2
            Time stamp when the source VM successfully quiesces.
          type: integer
          format: int64
        resumeDoneTime:
          description: |2
            Time stamp when the source VM completes resuming.
          type: integer
          format: int64
        endTime:
          description: |2
            Time stamp when the migration completes on the source VM.
          type: integer
          format: int64
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostVMotionManagerSrcInstantCloneResult:
      type: object
      description: |2
        A boxed array of *HostVMotionManagerSrcInstantCloneResult*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostVMotionManagerSrcInstantCloneResult'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostVMotionNetConfig:
      type: object
      description: |2
        The NetConfig data object type contains the networking
        configuration for VMotion operations.
      properties:
        candidateVnic:
          description: |2
            List of VirtualNic objects that may be used for VMotion.
            
            This will be a subset of the list of VirtualNics in
            *HostNetworkInfo.vnic*.
          type: array
          items:
            $ref: '#/components/schemas/HostVirtualNic'
        selectedVnic:
          description: |2
            VirtualNic that is selected for use in VMotion operations.
          $ref: '#/components/schemas/HostVirtualNic'
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostVMotionNetConfig:
      type: object
      description: |2
        A boxed array of *HostVMotionNetConfig*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostVMotionNetConfig'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostVfatVolume:
      type: object
      description: |2
        VFAT file system volume.
      allOf:
        - $ref: '#/components/schemas/HostFileSystemVolume'

    ArrayOfHostVfatVolume:
      type: object
      description: |2
        A boxed array of *HostVfatVolume*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostVfatVolume'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostVffsVolume:
      type: object
      description: |2
        vFlash File System Volume.
      properties:
        majorVersion:
          description: |2
            Major version number of VFFS.
          type: integer
          format: int32
        version:
          description: |2
            Version string.
            
            Contains major and minor version numbers.
          type: string
        uuid:
          description: |2
            The universally unique identifier assigned to VFFS.
          type: string
        extent:
          description: |2
            The list of partition names that comprise this disk's
            VFFS extents.
          type: array
          items:
            $ref: '#/components/schemas/HostScsiDiskPartition'
      required:
        - majorVersion
        - version
        - uuid
        - extent
      allOf:
        - $ref: '#/components/schemas/HostFileSystemVolume'

    ArrayOfHostVffsVolume:
      type: object
      description: |2
        A boxed array of *HostVffsVolume*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostVffsVolume'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostVffsSpec:
      type: object
      description: |2
        This data object type describes the VFFS
        creation specification.
      properties:
        devicePath:
          description: |2
            The device path of the SSD disk.
            
            See also *HostScsiDisk.devicePath*.
          type: string
        partition:
          description: |2
            Partition specification of the SSD disk.
            
            If this property
            is not provided, partition information will be computed
            and generated.
          $ref: '#/components/schemas/HostDiskPartitionSpec'
        majorVersion:
          description: |2
            Major version number of VFFS.
            
            This can be changed if the VFFS is
            upgraded, but this is an irreversible change.
          type: integer
          format: int32
        volumeName:
          description: |2
            Volume name of VFFS.
          type: string
      required:
        - devicePath
        - majorVersion
        - volumeName
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostVffsSpec:
      type: object
      description: |2
        A boxed array of *HostVffsSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostVffsSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostVirtualNic:
      type: object
      description: |2
        The *HostVirtualNic* data object describes a virtual network adapter
        that connects to a virtual switch.
        
        A host virtual NIC differs from a physical NIC:
        - A host virtual NIC is a virtual device that is connected to a virtual switch.
        - A physical NIC (*HostNetworkInfo.pnic*) corresponds to a physical
          device that is connected to the physical network.
          
        A host virtual NIC provides access to the external network through a virtual switch
        that is bridged through a Physical NIC to a physical network.
      properties:
        device:
          description: |2
            Device name.
          type: string
        key:
          description: |2
            Linkable identifier.
          type: string
        portgroup:
          description: |2
            If the Virtual NIC is connecting to a vSwitch, this property is the name of
            portgroup connected.
            
            If the Virtual NIC is connecting to a
            DistributedVirtualSwitch or opaque network, this property is an empty string.
          type: string
        spec:
          description: |2
            Configurable properties for the virtual network adapter object.
          $ref: '#/components/schemas/HostVirtualNicSpec'
        port:
          description: |2
            Port(*HostPortGroup.port*) on the port group that the virtual
            NIC is using when it is enabled.
            
            If the Virtual NIC is connected to
            DistributedVirtualSwitch or opaque network, this property is unset.
          $ref: '#/components/schemas/HostPortGroupPort'
      required:
        - device
        - key
        - portgroup
        - spec
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostVirtualNic:
      type: object
      description: |2
        A boxed array of *HostVirtualNic*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostVirtualNic'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostVirtualNicConfig:
      type: object
      description: |2
        The *HostVirtualNicConfig* data object describes the virtual
        NIC configuration.
        
        It represents both the configured properties on a
        *HostVirtualNic* and identification information.
      properties:
        changeOperation:
          description: |2
            Change operation to apply on this configuration specification.
            
            See also *HostConfigChangeOperation_enum*.
          type: string
        device:
          description: |2
            Virtual NIC device (*HostVirtualNic.device*) to which
            configuration applies.
          type: string
        portgroup:
          description: |2
            If the Virtual NIC is connecting to a vSwitch, this property is the name of
            portgroup connected.
            
            If the Virtual NIC is connecting to a
            *DistributedVirtualSwitch* or *HostOpaqueNetworkInfo*,
            this property is ignored.
          type: string
        spec:
          description: |2
            Specification of the virtual network adapter.
          $ref: '#/components/schemas/HostVirtualNicSpec'
      required:
        - portgroup
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostVirtualNicConfig:
      type: object
      description: |2
        A boxed array of *HostVirtualNicConfig*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostVirtualNicConfig'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostVirtualNicIpRouteSpec:
      type: object
      description: |2
        The *HostVirtualNicIpRouteSpec* data object describes the
        IpRoute configuration used by virtual NIC.
      properties:
        ipRouteConfig:
          description: |2
            By default, a host virtual NIC uses default gateway configuration
            from it's *HostNetStackInstance*.
            
            A custom IPv4 and IPv6
            default gateway can be configured by specifying valid
            *HostIpRouteConfig.defaultGateway* and
            *HostIpRouteConfig.ipV6DefaultGateway* properties.
            A user defined IPv4 and IPv6 default gateway can be removed by
            unsetting corresponding gateway property from ipRouteConfig.
          $ref: '#/components/schemas/HostIpRouteConfig'
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostVirtualNicIpRouteSpec:
      type: object
      description: |2
        A boxed array of *HostVirtualNicIpRouteSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostVirtualNicIpRouteSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostVirtualNicOpaqueNetworkSpec:
      type: object
      description: |2
        The *HostVirtualNicOpaqueNetworkSpec* data object
        describes the opaque network(*HostOpaqueNetworkInfo*)
        configuration used by virtual NIC.
      properties:
        opaqueNetworkId:
          description: |2
            ID of the Opaque network to which the virtual NIC is connected.
          type: string
        opaqueNetworkType:
          description: |2
            Type of the Opaque network to which the virtual NIC is connected.
          type: string
      required:
        - opaqueNetworkId
        - opaqueNetworkType
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostVirtualNicOpaqueNetworkSpec:
      type: object
      description: |2
        A boxed array of *HostVirtualNicOpaqueNetworkSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostVirtualNicOpaqueNetworkSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostVirtualNicSpec:
      type: object
      description: |2
        The *HostVirtualNicSpec* data object describes the
        *HostVirtualNic* configuration containing both the configured
        properties on a virtual NIC and identification information.
      properties:
        dynamicProperty:
          description: |2
            Set of dynamic properties.
            
            This property is optional because only the
            properties of an object that are unknown to a client will be part of this set.
            This property is not readonly just in case we want to send such properties
            from a client in the future.
          type: array
          items:
            $ref: '#/components/schemas/DynamicProperty'
        ip:
          description: |2
            IP configuration on the virtual network adapter.
          $ref: '#/components/schemas/HostIpConfig'
        mac:
          description: |2
            Media access control (MAC) address of the virtual network adapter.
          type: string
        distributedVirtualPort:
          description: |2
            *DistributedVirtualPort* or *DistributedVirtualPortgroup*
            connection.
            
            To specify a port connection, set
            *DistributedVirtualSwitchPortConnection.switchUuid* and *DistributedVirtualSwitchPortConnection.portKey*
            properties. To specify a portgroup connection, set
            *DistributedVirtualSwitchPortConnection.switchUuid* and *DistributedVirtualSwitchPortConnection.portgroupKey*
            properties.
            
            When reconfiguring a virtual NIC, this property indicates the new portgroup
            to which the virtual NIC should connect. You can specify this property
            only if you do not specify *HostVirtualNicSpec.distributedVirtualPort* and
            *HostVirtualNicSpec.opaqueNetwork*
          $ref: '#/components/schemas/DistributedVirtualSwitchPortConnection'
        portgroup:
          description: |2
            Portgroup (*HostPortGroup*) to which the virtual NIC is connected.
            
            When reconfiguring a virtual NIC, this property indicates the new portgroup
            to which the virtual NIC should connect. You can specify this property
            only if you do not specify *HostVirtualNicSpec.distributedVirtualPort* and
            *HostVirtualNicSpec.opaqueNetwork*
          type: string
        mtu:
          description: |2
            Maximum transmission unit for packets size in bytes for the virtual
            NIC.
            
            If not specified, the Server will use the system default value.
          type: integer
          format: int32
        tsoEnabled:
          description: |2
            Flag enabling or disabling TCP segmentation offset for a virtual NIC.
            
            If not specified, a default value of true will be used.
          type: boolean
        netStackInstanceKey:
          description: |2
            The NetStackInstance that the virtual NIC uses, the value of this property
            is default to be *defaultTcpipStack*
          type: string
        opaqueNetwork:
          description: |2
            Opaque network (*HostOpaqueNetworkInfo*) to which the
            virtual NIC is connected.
            
            When reconfiguring a virtual NIC, this property indicates the specification
            of opaque network to which the virtual NIC should connect. You can specify
            this property only if you do not specify *HostVirtualNicSpec.distributedVirtualPort*
            and *HostVirtualNicSpec.portgroup*.
          $ref: '#/components/schemas/HostVirtualNicOpaqueNetworkSpec'
        externalId:
          description: |2
            An ID assigned to the vmkernel adapter by external management plane.
            
            The value and format of this property is determined by external management
            plane, and vSphere doesn't do any validation. It's also up to external
            management plane to set, unset or maintain this property.
            
            This property is applicable only when *HostVirtualNicSpec.opaqueNetwork* property is set,
            otherwise it's value is ignored.
          type: string
        pinnedPnic:
          description: |2
            The physical nic to which the vmkernel adapter is pinned.
            
            Setting this value
            ensures that the virtual NIC will access external network only via the
            the specified physical NIC.
            
            This property is applicable only when *HostVirtualNicSpec.opaqueNetwork* property is set.
            If the vmkernel adapter is connected to a portgroup or dvPort, then such
            pinning can be achieved by configuring correct teaming policy on the portgroup
            or dvPort or dvPortgroup that is connected to virtual NIC.
          type: string
        ipRouteSpec:
          description: |2
            The ip route configuration used by the vmkernel adapter.
            
            This attribute
            allows the vmkernel adapter to specify its own default gateway.
          $ref: '#/components/schemas/HostVirtualNicIpRouteSpec'
        systemOwned:
          description: |2
            Set to true when the vmkernel adapter is configured by
            other system indirectly other than by the user directly.
          type: boolean
        dpuId:
          description: |2
            The identifier of the DPU hosting the vmknic.
            
            If vmknic is on ESX host, dpuId will be unset.
            
            ***Since:*** vSphere API Release 8.0.0.1
          type: string
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostVirtualNicSpec:
      type: object
      description: |2
        A boxed array of *HostVirtualNicSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostVirtualNicSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostVirtualNicConnection:
      type: object
      description: |2
        DataObject which provides a level of indirection when
        identifying VirtualNics during configuration.
        
        This dataObject lets users specify a VirtualNic in terms of
        the portgroup/Dv Port the Virtual NIC is connected to.
        This is useful in cases where VirtualNic will be created as part of
        a configuration operation and the created VirtualNic is referred to
        in some other part of configuration. e.g: for configuring VMotion
      properties:
        portgroup:
          description: |2
            Name of the portgroup to which the virtual nic is connected to.
            
            If this parameter is set, use a virtual nic connected to
            a legacy portgroup.
          type: string
        dvPort:
          description: |2
            Identifier for the DistributedVirtualPort.
            
            If the virtual nic is to be connected to a DVS,
            \#dvPort will be set instead of #portgroup
          $ref: '#/components/schemas/DistributedVirtualSwitchPortConnection'
        opNetwork:
          description: |2
            Identifier for the opaqueNetworkSpec virtual nic connected to.
            
            If the virtual nic is to be connected to a logicSwitch,
            \#opNetwork will be set instead of #portgroup and #dvPort
          $ref: '#/components/schemas/HostVirtualNicOpaqueNetworkSpec'
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostVirtualNicConnection:
      type: object
      description: |2
        A boxed array of *HostVirtualNicConnection*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostVirtualNicConnection'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualNicManagerNetConfig:
      type: object
      description: |2
        The NetConfig data object type contains the networking
        configuration.
      properties:
        nicType:
          description: |2
            The NicType of this NetConfig.
          type: string
        multiSelectAllowed:
          description: |2
            Whether multiple nics can be selected for this nicType.
          type: boolean
        candidateVnic:
          description: |2
            List of VirtualNic objects that may be used.
            
            This will be a subset of the list of VirtualNics in
            *HostNetworkInfo.vnic*.
          type: array
          items:
            $ref: '#/components/schemas/HostVirtualNic'
        selectedVnic:
          description: |2
            List of VirtualNic objects that are selected for use.
          type: array
          items:
            $ref: '#/components/schemas/HostVirtualNic'
      required:
        - nicType
        - multiSelectAllowed
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVirtualNicManagerNetConfig:
      type: object
      description: |2
        A boxed array of *VirtualNicManagerNetConfig*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualNicManagerNetConfig'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostVirtualNicManagerNicTypeSelection:
      type: object
      description: |2
        DataObject which lets a VirtualNic be marked for
        use as a *HostVirtualNicManagerNicType_enum*.
      properties:
        vnic:
          description: |2
            VirtualNic for the selection is being made
          $ref: '#/components/schemas/HostVirtualNicConnection'
        nicType:
          type: array
          items:
            type: string
      required:
        - vnic
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostVirtualNicManagerNicTypeSelection:
      type: object
      description: |2
        A boxed array of *HostVirtualNicManagerNicTypeSelection*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostVirtualNicManagerNicTypeSelection'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostVirtualNicManagerInfo:
      type: object
      description: |2
        This data object type describes VirtualNic host
        configuration data objects.
      properties:
        netConfig:
          description: |2
            List of VirtualNicManager network configuration.
            
            See also *VirtualNicManagerNetConfig*This contains the network
            configuration for each NicType..
          type: array
          items:
            $ref: '#/components/schemas/VirtualNicManagerNetConfig'
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostVirtualNicManagerInfo:
      type: object
      description: |2
        A boxed array of *HostVirtualNicManagerInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostVirtualNicManagerInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostVirtualSwitch:
      type: object
      description: |2
        The virtual switch is a software entity to which multiple virtual network
        adapters can connect to create a virtual network.
        
        It can also be
        bridged to a physical network.
      properties:
        name:
          description: |2
            The name of the virtual switch.
            
            Maximum length is 32 characters.
          type: string
        key:
          description: |2
            The virtual switch key.
          type: string
        numPorts:
          description: |2
            The number of ports that this virtual switch currently has.
          type: integer
          format: int32
        numPortsAvailable:
          description: |2
            The number of ports that are available on this virtual switch.
            
            There
            are a number of networking services that utilize a port on the virtual
            switch and are not accounted for in the Port array of a PortGroup. For
            example, each physical NIC attached to a virtual switch consumes one
            port. This property should be used when attempting to implement
            admission control for new services attaching to virtual switches.
          type: integer
          format: int32
        mtu:
          description: |2
            The maximum transmission unit (MTU) associated with this virtual switch
            in bytes.
          type: integer
          format: int32
        portgroup:
          description: |2
            The list of port groups configured for this virtual switch.
          type: array
          items:
            $ref: '#/components/schemas/HostPortGroup'
        pnic:
          description: |2
            The set of physical network adapters associated with this bridge.
          type: array
          items:
            $ref: '#/components/schemas/PhysicalNic'
        spec:
          description: |2
            The specification of this virtual switch.
          $ref: '#/components/schemas/HostVirtualSwitchSpec'
      required:
        - name
        - key
        - numPorts
        - numPortsAvailable
        - spec
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostVirtualSwitch:
      type: object
      description: |2
        A boxed array of *HostVirtualSwitch*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostVirtualSwitch'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostVirtualSwitchAutoBridge:
      type: object
      description: |2
        This data type describes a bridge that automatically selects
        a particular physical network adapter on the host
        according to some predetermined policy.
        
        Used primarily to support mobility
        scenarios.
      properties:
        excludedNicDevice:
          description: |2
            List of physical network adapters that have been excluded from
            participating in the AutoBridge
          type: array
          items:
            type: string
      allOf:
        - $ref: '#/components/schemas/HostVirtualSwitchBridge'

    ArrayOfHostVirtualSwitchAutoBridge:
      type: object
      description: |2
        A boxed array of *HostVirtualSwitchAutoBridge*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostVirtualSwitchAutoBridge'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostVirtualSwitchBeaconConfig:
      type: object
      description: |2
        This data object type describes the configuration of the beacon
        to probe connectivity of physical network adapters.
        
        A
        beacon is sent out of one network adapter and should arrive on another
        network adapter in the team. The successful roundtrip indicates
        that the network adapters are working.
        
        Define this data object to enable beacon probing as a method to validate
        the link status of a physical network adapter. Beacon probing must
        be configured in order to use the beacon status as a criteria to
        determine if a physical network adapter failed.
        
        See also *HostNicFailureCriteria.checkBeacon*.
      properties:
        interval:
          description: |2
            Determines how often, in seconds, a beacon should be sent.
          type: integer
          format: int32
      required:
        - interval
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostVirtualSwitchBeaconConfig:
      type: object
      description: |2
        A boxed array of *HostVirtualSwitchBeaconConfig*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostVirtualSwitchBeaconConfig'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostVirtualSwitchBondBridge:
      type: object
      description: |2
        This data object type describes a bridge that provides
        network adapter teaming capabilities.
      properties:
        nicDevice:
          description: |2
            The list of keys of the physical network adapters to be bridged.
          type: array
          items:
            type: string
        beacon:
          description: |2
            The beacon configuration to probe for the validity of a link.
            
            If this is set, beacon probing is configured and will be used.
            If this is not set, beacon probing is disabled.
          $ref: '#/components/schemas/HostVirtualSwitchBeaconConfig'
        linkDiscoveryProtocolConfig:
          description: |2
            The link discovery protocol configuration for the virtual switch.
            
            See also *LinkDiscoveryProtocolConfig*.
          $ref: '#/components/schemas/LinkDiscoveryProtocolConfig'
      required:
        - nicDevice
      allOf:
        - $ref: '#/components/schemas/HostVirtualSwitchBridge'

    ArrayOfHostVirtualSwitchBondBridge:
      type: object
      description: |2
        A boxed array of *HostVirtualSwitchBondBridge*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostVirtualSwitchBondBridge'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostVirtualSwitchBridge:
      type: object
      description: |2
        A bridge connects a virtual switch to a physical network adapter.
        
        There are multiple types of bridges.
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostVirtualSwitchBridge:
      type: object
      description: |2
        A boxed array of *HostVirtualSwitchBridge*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostVirtualSwitchBridge'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostVirtualSwitchConfig:
      type: object
      description: |2
        This data object type describes the VirtualSwitch configuration
        containing both the configurable
        properties on a VirtualSwitch and identification information.
      properties:
        changeOperation:
          description: |2
            This property indicates the change operation to apply on
            this configuration specification.
            
            See also *HostConfigChangeOperation_enum*.
          type: string
        name:
          description: |2
            The name of the virtual switch.
            
            Maximum length is 32 characters.
          type: string
        spec:
          description: |2
            The specification of the VirtualSwitch.
          $ref: '#/components/schemas/HostVirtualSwitchSpec'
      required:
        - name
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostVirtualSwitchConfig:
      type: object
      description: |2
        A boxed array of *HostVirtualSwitchConfig*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostVirtualSwitchConfig'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostVirtualSwitchSimpleBridge:
      type: object
      description: |2
        A bridge that is statically bound to a single physical network adapter.
      properties:
        nicDevice:
          description: |2
            The key of the physical network adapter to be bridged.
          type: string
      required:
        - nicDevice
      allOf:
        - $ref: '#/components/schemas/HostVirtualSwitchBridge'

    ArrayOfHostVirtualSwitchSimpleBridge:
      type: object
      description: |2
        A boxed array of *HostVirtualSwitchSimpleBridge*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostVirtualSwitchSimpleBridge'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostVirtualSwitchSpec:
      type: object
      description: |2
        This data object type describes the VirtualSwitch specification
        representing the properties on a VirtualSwitch that can be
        configured once the object exists.
      properties:
        numPorts:
          description: |2
            The number of ports that this virtual switch is configured to use.
            
            Changing this setting does not take effect until the next reboot. The maximum
            value is 1024, although other constraints, such as memory limits, may establish
            a lower effective limit.
          type: integer
          format: int32
        bridge:
          description: |2
            The bridge specification describes how physical network adapters
            can be bridged to a virtual switch.
          $ref: '#/components/schemas/HostVirtualSwitchBridge'
        policy:
          description: |2
            The virtual switch policy specification.
            
            This has a lower
            precedence than PortGroup. If the policy property is not set
            and you are creating a virtual switch, then a default
            policy property setting is used. If the policy property is not
            set and you are updating a virtual switch, then the policy will
            be unchanged.
          $ref: '#/components/schemas/HostNetworkPolicy'
        mtu:
          description: |2
            The maximum transmission unit (MTU) of the virtual switch in bytes.
          type: integer
          format: int32
      required:
        - numPorts
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostVirtualSwitchSpec:
      type: object
      description: |2
        A boxed array of *HostVirtualSwitchSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostVirtualSwitchSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostVmciAccessManagerAccessSpec:
      type: object
      description: |2
        The AccessSpec data object declares an update to the service
        access granted to a VM.
        
        The given list of services will either
        be granted in addition to existing services, replace the
        existing service or be revoked depending on the mode
        specified. In case of a revoke, an empty or non-existing service
        list indicates that all granted services should be revoked.
      properties:
        vm:
          description: |2
            Refers instance of *VirtualMachine*.
          $ref: '#/components/schemas/ManagedObjectReference'
        services:
          type: array
          items:
            type: string
        mode:
          type: string
      required:
        - vm
        - mode
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostVmciAccessManagerAccessSpec:
      type: object
      description: |2
        A boxed array of *HostVmciAccessManagerAccessSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostVmciAccessManagerAccessSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmfsDatastoreCreateSpec:
      type: object
      description: |2
        This data object type is used when creating a new VMFS datastore,
        to create a specification for the VMFS datastore.
      properties:
        partition:
          description: |2
            Partitioning specification.
          $ref: '#/components/schemas/HostDiskPartitionSpec'
        vmfs:
          description: |2
            The VMFS creation specification.
          $ref: '#/components/schemas/HostVmfsSpec'
        extent:
          description: |2
            Extents to append to VMFS.
          type: array
          items:
            $ref: '#/components/schemas/HostScsiDiskPartition'
      required:
        - partition
        - vmfs
      allOf:
        - $ref: '#/components/schemas/VmfsDatastoreSpec'

    ArrayOfVmfsDatastoreCreateSpec:
      type: object
      description: |2
        A boxed array of *VmfsDatastoreCreateSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmfsDatastoreCreateSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmfsDatastoreExpandSpec:
      type: object
      description: |2
        Specification to increase the capacity of a VMFS datastore by expanding
        (increasing the size of) an existing extent of the datastore.
      properties:
        partition:
          description: |2
            Partitioning specification.
          $ref: '#/components/schemas/HostDiskPartitionSpec'
        extent:
          description: |2
            VMFS extent to expand.
          $ref: '#/components/schemas/HostScsiDiskPartition'
      required:
        - partition
        - extent
      allOf:
        - $ref: '#/components/schemas/VmfsDatastoreSpec'

    ArrayOfVmfsDatastoreExpandSpec:
      type: object
      description: |2
        A boxed array of *VmfsDatastoreExpandSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmfsDatastoreExpandSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmfsDatastoreExtendSpec:
      type: object
      description: |2
        Specification to increase the capacity of a VMFS datastore by adding
        one or more new extents to the datastore.
        
        All the extents to be added
        must be on the same disk. Extension is different
        from creation in that the VMFS creation specification need not be
        specified.
      properties:
        partition:
          description: |2
            Partitioning specification.
          $ref: '#/components/schemas/HostDiskPartitionSpec'
        extent:
          description: |2
            Extents to append to VMFS.
          type: array
          items:
            $ref: '#/components/schemas/HostScsiDiskPartition'
      required:
        - partition
        - extent
      allOf:
        - $ref: '#/components/schemas/VmfsDatastoreSpec'

    ArrayOfVmfsDatastoreExtendSpec:
      type: object
      description: |2
        A boxed array of *VmfsDatastoreExtendSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmfsDatastoreExtendSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmfsDatastoreInfo:
      type: object
      description: |2
        Information details about a VMFS datastore.
      properties:
        maxPhysicalRDMFileSize:
          description: |2
            Maximum raw device mapping size (physical compatibility)
          type: integer
          format: int64
        maxVirtualRDMFileSize:
          description: |2
            Maximum raw device mapping size (virtual compatibility)
          type: integer
          format: int64
        vmfs:
          description: |2
            The VMFS volume information for the datastore.
            
            May not be
            available when the datastore is not accessible.
          $ref: '#/components/schemas/HostVmfsVolume'
      required:
        - maxPhysicalRDMFileSize
        - maxVirtualRDMFileSize
      allOf:
        - $ref: '#/components/schemas/DatastoreInfo'

    ArrayOfVmfsDatastoreInfo:
      type: object
      description: |2
        A boxed array of *VmfsDatastoreInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmfsDatastoreInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmfsDatastoreOption:
      type: object
      description: |2
        VMFS datastore provisioning option that can be applied on a disk.
        
        VMFS
        datastores can be created or have their capacity increased using storage
        from a disk.
        There are often multiple ways in which extents can be allocated on a disk.
        Each instance of this structure represents one of the possible options
        that can be applied to provisiong VMFS datastore storage. Only options
        that follow ESX Server best practice guidelines will be presented.
      properties:
        info:
          description: |2
            Information about this VMFS datastore provisioniing option.
            
            This
            structure describes the extent allocation policy represented by
            this option.
          $ref: '#/components/schemas/VmfsDatastoreBaseOption'
        spec:
          description: |2
            Specification to create or increase the capacity of a VMFS datastore.
            
            This property contains a configuration specification that can be
            applied to effect the creation or capacity increase.
          $ref: '#/components/schemas/VmfsDatastoreSpec'
      required:
        - info
        - spec
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVmfsDatastoreOption:
      type: object
      description: |2
        A boxed array of *VmfsDatastoreOption*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmfsDatastoreOption'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmfsDatastoreAllExtentOption:
      type: object
      description: |2
        Datastore addition policy to use the entire disk as a single extent for
        a VMFS datastore.
        
        If there is any data on the disk, it will be
        overwritten.
      allOf:
        - $ref: '#/components/schemas/VmfsDatastoreSingleExtentOption'

    ArrayOfVmfsDatastoreAllExtentOption:
      type: object
      description: |2
        A boxed array of *VmfsDatastoreAllExtentOption*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmfsDatastoreAllExtentOption'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmfsDatastoreBaseOption:
      type: object
      description: |2
        Base class that describes a VMFS datastore provisioning option.
      properties:
        layout:
          description: |2
            The partition table layout that the disk will have if this
            provisioning option is selected.
            
            In releases after vSphere API 5.0, vSphere Servers might not
            generate property collector update notifications for this property.
            To obtain the latest value of the property, you can use
            PropertyCollector methods RetrievePropertiesEx or WaitForUpdatesEx.
            If you use the PropertyCollector.WaitForUpdatesEx method, specify
            an empty string for the version parameter.
            Since this property is on a DataObject, an update returned by WaitForUpdatesEx may
            contain values for this property when some other property on the DataObject changes.
            If this update is a result of a call to WaitForUpdatesEx with a non-empty
            version parameter, the value for this property may not be current.
          $ref: '#/components/schemas/HostDiskPartitionLayout'
        partitionFormatChange:
          description: |2
            Indicates whether selecting this option will change the partition
            format type on the disk.
            
            See also *HostDiskPartitionInfoPartitionFormat_enum*.
          type: boolean
      required:
        - layout
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVmfsDatastoreBaseOption:
      type: object
      description: |2
        A boxed array of *VmfsDatastoreBaseOption*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmfsDatastoreBaseOption'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmfsDatastoreMultipleExtentOption:
      type: object
      description: |2
        Datastore addition policy to use multiple extents on the disk for a VMFS
        datastore.
        
        Multiple extents implies that more than one disk partition
        will be created on the disk for creating or increasing the capacity of a
        VMFS datastore.
        Multiple extents are needed when unpartitioned space is fragmented in the
        existing partition layout of the disk.
      properties:
        vmfsExtent:
          description: |2
            The block ranges to be used as extents in a VMFS datastore.
            
            The first
            block range will be the head partition.
          type: array
          items:
            $ref: '#/components/schemas/HostDiskPartitionBlockRange'
      required:
        - vmfsExtent
      allOf:
        - $ref: '#/components/schemas/VmfsDatastoreBaseOption'

    ArrayOfVmfsDatastoreMultipleExtentOption:
      type: object
      description: |2
        A boxed array of *VmfsDatastoreMultipleExtentOption*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmfsDatastoreMultipleExtentOption'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmfsDatastoreSingleExtentOption:
      type: object
      description: |2
        Datastore addition policy to use a single extent on the disk for a VMFS
        datastore.
        
        A single extent implies that one disk partition will be
        created on the disk for creating or increasing the capacity of a VMFS datastore.
      properties:
        vmfsExtent:
          description: |2
            The block range to be used as an extent in a VMFS datastore.
          $ref: '#/components/schemas/HostDiskPartitionBlockRange'
      required:
        - vmfsExtent
      allOf:
        - $ref: '#/components/schemas/VmfsDatastoreBaseOption'

    ArrayOfVmfsDatastoreSingleExtentOption:
      type: object
      description: |2
        A boxed array of *VmfsDatastoreSingleExtentOption*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmfsDatastoreSingleExtentOption'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmfsDatastoreSpec:
      type: object
      description: |2
        Base class for VMFS datastore addition specification.
        
        Used as a generic
        way to point to one of the creation specifications that can be used to
        apply a specification to effect the creation or extension of a VMFS
        datastore.
      properties:
        diskUuid:
          description: |2
            The UUID of the SCSI disk on which the VMFS datastore is located.
            
            See also *HostScsiDisk*, *ScsiLun.uuid*.
          type: string
      required:
        - diskUuid
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVmfsDatastoreSpec:
      type: object
      description: |2
        A boxed array of *VmfsDatastoreSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmfsDatastoreSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostVmfsRescanResult:
      type: object
      description: |2
        When a user resignatures an UnresolvedVmfsVolume through DatastoreSystem API,
        we resignature and auto-mount on the other hosts which share the
        same underlying storage luns.
        
        As part of the operation, we rescan host.
        This data object describes the outcome of rescan operation on a host
      properties:
        host:
          description: |2
            Host name on which rescan was performed
            
            Refers instance of *HostSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
        fault:
          description: |2
            'fault' would be set if the operation was not successful
          $ref: '#/components/schemas/MethodFault'
      required:
        - host
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostVmfsRescanResult:
      type: object
      description: |2
        A boxed array of *HostVmfsRescanResult*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostVmfsRescanResult'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostVmfsVolume:
      type: object
      description: |2
        The VMFS file system.
      properties:
        blockSizeMb:
          deprecated: true
          description: |2
            Deprecated as of vSphere API 6.5, use
            *HostVmfsVolume.blockSize* instead.
            
            Block size of VMFS.
            
            Determines maximum file size. The maximum number
            of blocks is typically fixed with each specific version of VMFS. To
            increase the maximum size of a VMFS file, increase the block size.
            
            The minimum block size is 1MB.
          type: integer
          format: int32
        blockSize:
          description: |2
            Block size of VMFS in KB.
            
            Determines maximum file size. The maximum
            number of blocks is typically fixed with each specific version of VMFS.
            To increase the maximum size of a VMFS file, increase the block size.
            
            The minimum block size is 1MB.
          type: integer
          format: int32
        unmapGranularity:
          description: |2
            VMFS unmap reclaims unused storage space.
            
            This property
            determines the granularity of unmap operations.
            The unit is KB. If not specified, the default value is the same as
            the block size of VMFS *HostVmfsVolume.blockSize*.
            This property cannot be changed after a VMFS volume is created.
          type: integer
          format: int32
        unmapPriority:
          description: |2
            VMFS unmap reclaims unused storage space.
            
            This property
            determines the processing rate of unmaps.
            See *HostVmfsVolumeUnmapPriority_enum* for supported values.
            If not specified, the default value is
            *low*, which means
            unmap is processed at low rate. This property can be updated by
            calling *HostStorageSystem.UpdateVmfsUnmapPriority*.
          type: string
        unmapBandwidthSpec:
          description: |2
            VMFS unmap bandwidth related specification.
            
            See
            *VmfsUnmapBandwidthSpec* for detail.
          $ref: '#/components/schemas/VmfsUnmapBandwidthSpec'
        maxBlocks:
          description: |2
            Maximum number of blocks.
            
            Determines maximum file size along
            with blockSize. See information about the blockSize.
          type: integer
          format: int32
        majorVersion:
          description: |2
            Major version number of VMFS.
          type: integer
          format: int32
        version:
          description: |2
            Version string.
            
            Contains major and minor version numbers.
          type: string
        uuid:
          description: |2
            The universally unique identifier assigned to VMFS.
          type: string
        extent:
          description: |2
            The list of partition names that comprise this disk's
            VMFS extents.
            
            This property can be accessed via various enclosing objects.
            In VirtualCenter, where it can be accessed from multiple
            hosts, the value of this property may differ according to the context
            in which it is accessed. When accessed from the
            *VmfsDatastoreInfo* object, in VirtualCenter, this
            property reflects the extent information of any one of the hosts visible
            to the datastore.
            
            For a VirtualCenter system which manages ESX Server 2.x and
            ESX Server 3.x hosts, this extent information is only correlatable
            across hosts if the extents are exposed on the same adapter on all hosts
            which can access them. To find the extent names for a specific host,
            this same property should be accessed via the host's
            *HostFileSystemVolume* object, by correlating the uuid of
            the VMFS datastore in the VmfsDatastoreInfo object to the uuid in the
            FileSystemVolume object.
            
            For a Virtual Center system which manages only ESX Server hosts with
            versions 4.0 onwards , this extent information is correlatable across
            hosts, irrespective of the adapters the extents are exposed on.
          type: array
          items:
            $ref: '#/components/schemas/HostScsiDiskPartition'
        vmfsUpgradable:
          description: |2
            Can the filesystem be upgraded to a newer version.
            
            See also *HostStorageSystem.UpgradeVmfs*.
          type: boolean
        forceMountedInfo:
          description: |2
            Information about 'forceMounted' VmfsVolume.
            
            When the system detects a copy of a VmfsVolume, it will not be
            auto-mounted on the host and it will be detected as
            'UnresolvedVmfsVolume'. If user decides to 'forceMount' the
            VmfsVolume on the host, forceMountedInfo will be populated.
            It will not be set for automounted VMFS volumes.
          $ref: '#/components/schemas/HostForceMountedInfo'
        ssd:
          description: |2
            Indicates whether the volume is SSD backed.
            
            If unset, the information whether the volume is SSD backed is unknown.
          type: boolean
        local:
          description: |2
            Indicates whether the volume is backed by local disk.
            
            If unset, the information of the volume is local-disk backed is unknown.
          type: boolean
        scsiDiskType:
          description: |2
            The type of disk drives.
            
            See *ScsiDiskType_enum*
            for supported types.
            If unset, the default disk drive type is
            *native512*.
          type: string
      required:
        - blockSizeMb
        - maxBlocks
        - majorVersion
        - version
        - uuid
        - extent
        - vmfsUpgradable
      allOf:
        - $ref: '#/components/schemas/HostFileSystemVolume'

    ArrayOfHostVmfsVolume:
      type: object
      description: |2
        A boxed array of *HostVmfsVolume*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostVmfsVolume'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmfsConfigOption:
      type: object
      properties:
        blockSizeOption:
          description: |2
            Supported values of VMFS block size in kilobytes (KB)
            *HostVmfsVolume.blockSize*.
          type: integer
          format: int32
        unmapGranularityOption:
          description: |2
            Supported values of VMFS unmap granularity
            *HostVmfsVolume.unmapGranularity*.
            
            The unit is KB.
          type: array
          items:
            type: integer
            format: int32
        unmapBandwidthFixedValue:
          description: |2
            Fixed unmap bandwidth min/max/default value
          $ref: '#/components/schemas/LongOption'
        unmapBandwidthDynamicMin:
          description: |2
            Dynamic unmap bandwidth lower limit min/max/default value.
          $ref: '#/components/schemas/LongOption'
        unmapBandwidthDynamicMax:
          description: |2
            Dynamic unmap bandwitdth upper limit min/max/default value.
          $ref: '#/components/schemas/LongOption'
        unmapBandwidthIncrement:
          description: |2
            Increment value of unmap bandwidth
          type: integer
          format: int64
        unmapBandwidthUltraLow:
          description: |2
            Fixed unmap bandwidth ultra low limit value in MB/sec.
            
            ***Since:*** vSphere API Release 8.0.0.1
          type: integer
          format: int64
      required:
        - blockSizeOption
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVmfsConfigOption:
      type: object
      description: |2
        A boxed array of *VmfsConfigOption*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmfsConfigOption'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostVmfsSpec:
      type: object
      description: |2
        This data object type describes the VMware File System (VMFS)
        creation specification.
        
        Once created, these properties for the most
        part cannot be changed. There are a few exceptions.
      properties:
        extent:
          description: |2
            Head extent of VMFS.
            
            The head extent identifies the VMFS. However,
            the head extent should not be used to identify the VMFS across host
            reboots. The actual identifier is specified in "vmhbaI:T:L" format
            which is not guaranteed to be stable across reboots. Define a volume
            name that is unique to the host and use it to refer to the VMFS.
            Alternatively, the immutable UUID of the VMFS can be used after it
            is created.
          $ref: '#/components/schemas/HostScsiDiskPartition'
        blockSizeMb:
          deprecated: true
          description: |2
            Deprecated as of vSphere API 6.5, use
            *HostVmfsSpec.blockSize* instead.
            
            The block size of VMFS in megabytes (MB).
            
            Determines the maximum file
            size. If this optional property is not set, the maximum
            file size defaults to the maximum file size for the platform.
            
            In VMFS2, the valid block sizes 1MB, 2MB, 4MB, 8MB, 16MB, 32MB, 64MB,
            128MB, and 256MB.
            In VMFS3, the valid block sizes are 1MB, 2MB, 4MB, and 8MB.
            In VMFS5, the only valid block size is 1MB.
          type: integer
          format: int32
        majorVersion:
          description: |2
            Major version number of VMFS.
            
            This can be changed if the VMFS is
            upgraded, but this is an irreversible change.
          type: integer
          format: int32
        volumeName:
          description: |2
            Volume name of VMFS.
          type: string
        blockSize:
          description: |2
            The block size of VMFS in kilotypes (KB).
            
            Determines the maximum file
            size. If this optional property is not set, the maximum
            file size defaults to the maximum file size for the platform.
            
            In VMFS3, the valid block sizes are 1MB, 2MB, 4MB, and 8MB.
            In VMFS5, the only valid block size is 1MB.
            In VMFS6, the valid block sizes are 64KB and 1MB.
          type: integer
          format: int32
        unmapGranularity:
          description: |2
            The granularity of VMFS unmap operations.
            
            VMFS unmap reclaims
            unused storage space.
            The unit is KB. The minimum unmap granularity is 8KB. The maximum
            unmap granularity is determined by the block size of VMFS
            *HostVmfsVolume.blockSize*.
          type: integer
          format: int32
        unmapPriority:
          description: |2
            VMFS unmap priority.
            
            VMFS unmap reclaims unused storage space. This
            determines the processing rate of unmaps.
            See *HostVmfsVolumeUnmapPriority_enum* for supported values.
          type: string
        unmapBandwidthSpec:
          description: |2
            VMFS unmap bandwidth related specification.
            
            See
            *VmfsUnmapBandwidthSpec* for detail.
          $ref: '#/components/schemas/VmfsUnmapBandwidthSpec'
      required:
        - extent
        - majorVersion
        - volumeName
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostVmfsSpec:
      type: object
      description: |2
        A boxed array of *HostVmfsSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostVmfsSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmfsUnmapBandwidthSpec:
      type: object
      description: |2
        VMFS unmap reclaims unused storage space.
        
        This data object type
        describes the specification of VMFS unmap bandwidth.
      properties:
        policy:
          description: |2
            This property determines the unmap bandwidth policy.
            
            See *HostVmfsVolumeUnmapBandwidthPolicy_enum* for supported
            values. If not specified, the default value is
            *fixed*, which means
            unmap is processed at a fixed rate.
          type: string
        fixedValue:
          description: |2
            This property determines the bandwidth under the fixed policy.
          type: integer
          format: int64
        dynamicMin:
          description: |2
            This property determines the lower limits of the unmap bandwidth
            under the dynamic policy.
          type: integer
          format: int64
        dynamicMax:
          description: |2
            This property determines the upper limits of the unmap bandwidth
            under the dynamic policy.
          type: integer
          format: int64
      required:
        - policy
        - fixedValue
        - dynamicMin
        - dynamicMax
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVmfsUnmapBandwidthSpec:
      type: object
      description: |2
        A boxed array of *VmfsUnmapBandwidthSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmfsUnmapBandwidthSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VsanDatastoreInfo:
      type: object
      description: |2
        Detailed information about a vSAN datastore.
        
        ***Since:*** vSphere API Release 7.0.1.0
      properties:
        membershipUuid:
          description: |2
            The cluster membership identity of the datastore.
          type: string
        accessGenNo:
          description: |2
            The generation number tracking datastore accessibility.
          type: integer
          format: int32
      allOf:
        - $ref: '#/components/schemas/DatastoreInfo'

    ArrayOfVsanDatastoreInfo:
      type: object
      description: |2
        A boxed array of *VsanDatastoreInfo*. To be used in *Any* placeholders.
        
        ***Since:*** vSphere API Release 7.0.1.0
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VsanDatastoreInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostVsanInternalSystemCmmdsQuery:
      type: object
      description: |2
        All fields in the CMMDS Query spec are optional, but at least one needs
        specified to make a valid query.
      properties:
        type:
          description: |2
            CMMDS type, e.g.
            
            DOM\_OBJECT, LSOM\_OBJECT, POLICY, DISK etc.
          type: string
        uuid:
          description: |2
            UUID of the entry.
          type: string
        owner:
          description: |2
            UUID of the owning node.
          type: string
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostVsanInternalSystemCmmdsQuery:
      type: object
      description: |2
        A boxed array of *HostVsanInternalSystemCmmdsQuery*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostVsanInternalSystemCmmdsQuery'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostVsanInternalSystemDeleteVsanObjectsResult:
      type: object
      description: |2
        Result of DeleteVsanObjects.
      properties:
        uuid:
          description: |2
            UUID of the VSAN object.
          type: string
        success:
          description: |2
            Indicates success or failure of object deletion.
          type: boolean
        failureReason:
          description: |2
            List of LocalizableMessages with the failure vobs.
            
            This is unset if delete is successful.
          type: array
          items:
            $ref: '#/components/schemas/LocalizableMessage'
      required:
        - uuid
        - success
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostVsanInternalSystemDeleteVsanObjectsResult:
      type: object
      description: |2
        A boxed array of *HostVsanInternalSystemDeleteVsanObjectsResult*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostVsanInternalSystemDeleteVsanObjectsResult'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VsanNewPolicyBatch:
      type: object
      description: |2
        NewPolicyBatch --
        Structure to specify a list of object sizes and a policy for what-if
        analysis.
      properties:
        size:
          description: |2
            Size (in bytes) of the objects.
          type: array
          items:
            type: integer
            format: int64
        policy:
          description: |2
            New policy in SPBM or VSAN expression format.
          type: string
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVsanNewPolicyBatch:
      type: object
      description: |2
        A boxed array of *VsanNewPolicyBatch*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VsanNewPolicyBatch'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VsanPolicyChangeBatch:
      type: object
      description: |2
        PolicyChangeBatch --
        Structure to specify a list of object uuids and a policy for what-if
        analysis.
      properties:
        uuid:
          description: |2
            UUIDs of the objects.
          type: array
          items:
            type: string
        policy:
          description: |2
            New policy in SPBM or VSAN expression format.
          type: string
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVsanPolicyChangeBatch:
      type: object
      description: |2
        A boxed array of *VsanPolicyChangeBatch*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VsanPolicyChangeBatch'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VsanPolicyCost:
      type: object
      description: |2
        PolicyCost --
        Structure to describe the cost of satisfying a policy.
      properties:
        changeDataSize:
          description: |2
            Change (in bytes) of size of data stored on the datastore.
            
            This is
            the max of reserved and used capacity.
          type: integer
          format: int64
        currentDataSize:
          description: |2
            Size (in bytes) of data currently stored on the datastore.
            
            This is
            the max of reserved and used capacity.
          type: integer
          format: int64
        tempDataSize:
          description: |2
            Size (in bytes) for temporary data that will be needed on disk if
            new policy is applied.
          type: integer
          format: int64
        copyDataSize:
          description: |2
            Size (in bytes) of data we need to write to VSAN Datastore if new
            policy is applied.
          type: integer
          format: int64
        changeFlashReadCacheSize:
          description: |2
            Change (in bytes) of flash space reserved for read cache if new
            policy is applied.
          type: integer
          format: int64
        currentFlashReadCacheSize:
          description: |2
            Size (in bytes) of flash space currently reserved for read cache.
          type: integer
          format: int64
        currentDiskSpaceToAddressSpaceRatio:
          description: |2
            Current ratio of physical disk space of an object to the logical VSAN
            address space.
            
            For eg. an object of size 1GB with two copies of the
            data has two 1GB replicas and so this ratio is 2.
          type: number
          format: float
        diskSpaceToAddressSpaceRatio:
          description: |2
            Ratio of physical disk space of an object to the logical VSAN
            address space after new policy is applied.
            
            For eg. an object of size
            1GB with two copies of the data has two 1GB replicas and so this
            ratio is 2.
          type: number
          format: float
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVsanPolicyCost:
      type: object
      description: |2
        A boxed array of *VsanPolicyCost*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VsanPolicyCost'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VsanPolicySatisfiability:
      type: object
      description: |2
        PolicySatisfiablity --
        Structure to describe whether a policy can be satisfied.
      properties:
        uuid:
          description: |2
            UUID of the object.
          type: string
        isSatisfiable:
          description: |2
            Can the policy be satisfied given the assumptions of the API that
            queried satisfiability.
            
            See also *HostVsanInternalSystem.ReconfigurationSatisfiable*.
          type: boolean
        reason:
          description: |2
            Reason for not being able to satisfy the policy; This is unset if
            policy can be satisfied.
          $ref: '#/components/schemas/LocalizableMessage'
        cost:
          description: |2
            Cost of satisfying the new policy; This is unset if policy cannot be
            satisfied.
          $ref: '#/components/schemas/VsanPolicyCost'
      required:
        - isSatisfiable
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVsanPolicySatisfiability:
      type: object
      description: |2
        A boxed array of *VsanPolicySatisfiability*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VsanPolicySatisfiability'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostVsanInternalSystemVsanObjectOperationResult:
      type: object
      description: |2
        Operation result for a VSAN object upon failure.
      properties:
        uuid:
          description: |2
            The UUID of the in question VSAN object.
          type: string
        failureReason:
          description: |2
            List of LocalizableMessages with the failure vobs.
          type: array
          items:
            $ref: '#/components/schemas/LocalizableMessage'
      required:
        - uuid
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostVsanInternalSystemVsanObjectOperationResult:
      type: object
      description: |2
        A boxed array of *HostVsanInternalSystemVsanObjectOperationResult*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostVsanInternalSystemVsanObjectOperationResult'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostVsanInternalSystemVsanPhysicalDiskDiagnosticsResult:
      type: object
      description: |2
        Result structure for a VSAN Physical Disk Diagnostics run.
        
        Specifies the
        result of a single disk.
      properties:
        diskUuid:
          description: |2
            VSAN Disk UUID of the checked disk.
          type: string
        success:
          description: |2
            Indicates success or failure of object creation on the disk.
          type: boolean
        failureReason:
          description: |2
            A failure reason type, in case of failure.
          type: string
      required:
        - diskUuid
        - success
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostVsanInternalSystemVsanPhysicalDiskDiagnosticsResult:
      type: object
      description: |2
        A boxed array of *HostVsanInternalSystemVsanPhysicalDiskDiagnosticsResult*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostVsanInternalSystemVsanPhysicalDiskDiagnosticsResult'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VvolDatastoreInfo:
      type: object
      description: |2
        Detailed information about a VirtualVolume datastore.
      properties:
        vvolDS:
          $ref: '#/components/schemas/HostVvolVolume'
      allOf:
        - $ref: '#/components/schemas/DatastoreInfo'

    ArrayOfVvolDatastoreInfo:
      type: object
      description: |2
        A boxed array of *VvolDatastoreInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VvolDatastoreInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostVvolNQN:
      type: object
      description: |2
        ***Since:*** vSphere API Release 8.0.2.0
      properties:
        targetNQN:
          type: string
        storageArray:
          type: string
        online:
          type: boolean
      required:
        - targetNQN
        - storageArray
        - online
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostVvolNQN:
      type: object
      description: |2
        A boxed array of *HostVvolNQN*. To be used in *Any* placeholders.
        
        ***Since:*** vSphere API Release 8.0.2.0
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostVvolNQN'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostVvolVolume:
      type: object
      properties:
        scId:
          description: |2
            The universally unique identifier assigned to vvolDS.
          type: string
        hostPE:
          type: array
          items:
            $ref: '#/components/schemas/VVolHostPE'
        hostVvolNQN:
          description: |2
            Virtual Protocol endpoints for this volume
            
            ***Since:*** vSphere API Release 8.0.2.0
          type: array
          items:
            $ref: '#/components/schemas/HostVvolVolumeHostVvolNQN'
        vasaProviderInfo:
          description: |2
            VASA Providers that manage this volume
          type: array
          items:
            $ref: '#/components/schemas/VimVasaProviderInfo'
        storageArray:
          description: |2
            List of storage array serving this VVol based storage container
          type: array
          items:
            $ref: '#/components/schemas/VASAStorageArray'
        protocolEndpointType:
          description: |2
            Backing protocol of the datastore
            
            ***Since:*** vSphere API Release 8.0.0.0
          type: string
        vvolNQNFieldsAvailable:
          description: |2
            vVol NQN field availability
            
            ***Since:*** vSphere API Release 8.0.2.0
          type: boolean
        stretched:
          description: |2
            if set to true, indicates a stretched container
            
            ***Since:*** vSphere API Release 8.0.3.0
          type: boolean
      required:
        - scId
      allOf:
        - $ref: '#/components/schemas/HostFileSystemVolume'

    ArrayOfHostVvolVolume:
      type: object
      description: |2
        A boxed array of *HostVvolVolume*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostVvolVolume'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VVolHostPE:
      type: object
      properties:
        key:
          description: |2
            The host associated with this volume.
            
            Refers instance of *HostSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
        protocolEndpoint:
          description: |2
            Host-specific information about the ProtocolEndpoint.
          type: array
          items:
            $ref: '#/components/schemas/HostProtocolEndpoint'
      required:
        - key
        - protocolEndpoint
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVVolHostPE:
      type: object
      description: |2
        A boxed array of *VVolHostPE*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VVolHostPE'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostVvolVolumeHostVvolNQN:
      type: object
      description: |2
        ***Since:*** vSphere API Release 8.0.2.0
      properties:
        host:
          description: |2
            The host associated with this volume.
            
            Refers instance of *HostSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
        vvolNQN:
          description: |2
            Host-specific information about the virtual ProtocolEndpoint.
          type: array
          items:
            $ref: '#/components/schemas/HostVvolNQN'
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostVvolVolumeHostVvolNQN:
      type: object
      description: |2
        A boxed array of *HostVvolVolumeHostVvolNQN*. To be used in *Any* placeholders.
        
        ***Since:*** vSphere API Release 8.0.2.0
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostVvolVolumeHostVvolNQN'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostVvolVolumeSpecification:
      type: object
      properties:
        maxSizeInMB:
          description: |2
            Maximum size of the container
          type: integer
          format: int64
        volumeName:
          description: |2
            Container name.
          type: string
        vasaProviderInfo:
          description: |2
            VASA Providers that manage this volume
          type: array
          items:
            $ref: '#/components/schemas/VimVasaProviderInfo'
        storageArray:
          description: |2
            Storage Array
          type: array
          items:
            $ref: '#/components/schemas/VASAStorageArray'
        uuid:
          description: |2
            Vendor specified storage-container ID
          type: string
        stretched:
          description: |2
            if set to true, indicates a stretched container
            
            ***Since:*** vSphere API Release 8.0.3.0
          type: boolean
      required:
        - maxSizeInMB
        - volumeName
        - uuid
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostVvolVolumeSpecification:
      type: object
      description: |2
        A boxed array of *HostVvolVolumeSpecification*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostVvolVolumeSpecification'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    NetDhcpConfigInfo:
      type: object
      description: |2
        Dynamic Host Configuration Protocol reporting for IP version 4 and version 6.
      properties:
        ipv6:
          description: |2
            IPv6 DHCP client settings.
          $ref: '#/components/schemas/NetDhcpConfigInfoDhcpOptions'
        ipv4:
          description: |2
            IPv4 DHCP client settings.
          $ref: '#/components/schemas/NetDhcpConfigInfoDhcpOptions'
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfNetDhcpConfigInfo:
      type: object
      description: |2
        A boxed array of *NetDhcpConfigInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/NetDhcpConfigInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    NetDhcpConfigInfoDhcpOptions:
      type: object
      description: |2
        Provides for reporting of DHCP client.
        
        This data object may be used
        at a per interface or per system scope.
      properties:
        enable:
          description: |2
            Report state of dhcp client services.
          type: boolean
        config:
          description: |2
            Platform specific settings for DHCP Client.
            
            The key part is a unique number, the value part
            is the platform specific configuration command.
            For example on Linux, BSD systems using the file dhclient.conf
            output would be reported at system scope:
            key='1', value='timeout 60;'
            key='2', value='reboot 10;'
            output reported at per interface scope:
            key='1', value='prepend domain-name-servers 192.0.2.1;'
            key='2', value='equire subnet-mask, domain-name-servers;'
          type: array
          items:
            $ref: '#/components/schemas/KeyValue'
      required:
        - enable
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfNetDhcpConfigInfoDhcpOptions:
      type: object
      description: |2
        A boxed array of *NetDhcpConfigInfoDhcpOptions*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/NetDhcpConfigInfoDhcpOptions'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    NetDhcpConfigSpec:
      type: object
      description: |2
        Dynamic Host Configuration Protocol Configuration for IP version 4 and version 6.
      properties:
        ipv6:
          description: |2
            Configure IPv6 DHCP client settings.
          $ref: '#/components/schemas/NetDhcpConfigSpecDhcpOptionsSpec'
        ipv4:
          description: |2
            Configure IPv4 DHCP client settings.
          $ref: '#/components/schemas/NetDhcpConfigSpecDhcpOptionsSpec'
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfNetDhcpConfigSpec:
      type: object
      description: |2
        A boxed array of *NetDhcpConfigSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/NetDhcpConfigSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    NetDhcpConfigSpecDhcpOptionsSpec:
      type: object
      description: |2
        Provides for configuration of IPv6
      properties:
        enable:
          description: |2
            Enable or disable dhcp for IPv4.
          type: boolean
        config:
          description: |2
            Platform specific settings for DHCP Client.
            
            The key part is a unique number, the value part
            is the platform specific configuration command.
            See *NetDhcpConfigInfo* for value formatting.
          type: array
          items:
            $ref: '#/components/schemas/KeyValue'
        operation:
          description: |2
            Requires one of the values from *HostConfigChangeOperation_enum*.
          type: string
      required:
        - config
        - operation
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfNetDhcpConfigSpecDhcpOptionsSpec:
      type: object
      description: |2
        A boxed array of *NetDhcpConfigSpecDhcpOptionsSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/NetDhcpConfigSpecDhcpOptionsSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    NetDnsConfigInfo:
      type: object
      description: |2
        Domain Name Server (DNS) Configuration Specification -
        a data object for reporting the configuration of RFC 1034 client side DNS settings.
      properties:
        dhcp:
          description: |2
            Indicates whether or not dynamic host control
            protocol (DHCP) is used to configure DNS configuration.
          type: boolean
        hostName:
          description: |2
            The host name portion of DNS name.
            
            For example, "esx01" part of
            esx01.example.com.
          type: string
        domainName:
          description: |2
            The domain name portion of the DNS name.
            
            "example.com" part of
            esx01.example.com.
          type: string
        ipAddress:
          description: |2
            The IP addresses of the DNS servers in order of use.
            
            IPv4 addresses are specified using
            dotted decimal notation. For example, "192.0.2.1".
            IPv6 addresses are 128-bit addresses represented as
            eight fields of up to four hexadecimal digits.
            A colon separates each field (:). For example,
            2001:DB8:101::230:6eff:fe04:d9ff. The address can also consist of the
            symbol '::' to represent multiple 16-bit groups of
            contiguous 0's only once in an address as described in RFC 2373.
          type: array
          items:
            type: string
        searchDomain:
          description: |2
            The domain in which to search for hosts, placed in order of preference.
          type: array
          items:
            type: string
      required:
        - dhcp
        - hostName
        - domainName
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfNetDnsConfigInfo:
      type: object
      description: |2
        A boxed array of *NetDnsConfigInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/NetDnsConfigInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    NetDnsConfigSpec:
      type: object
      description: |2
        Domain Name Server (DNS) Configuration Specification -
        a data object for configuring the RFC 1034 client side DNS settings.
        
        TBD: remove this section, only for discussing what goes into this object.
        Place properties here that are specific to the RFC/common to all systems.
        Properties that are platform specific should go into a separate config spec.
        http://technet.microsoft.com/en-us/library/cc778792.aspx
        http://en.wikipedia.org/wiki/Microsoft\_DNS
      properties:
        dhcp:
          description: |2
            The flag to indicate whether or not dynamic host control
            protocol (DHCP) will be used to set DNS configuration automatically.
            
            See vim.net.DhcpConfigSpec
          type: boolean
        hostName:
          description: |2
            The host name portion of DNS name.
            
            For example,
            "esx01" part of esx01.example.com. The rules for forming a hostname
            are specified in RFC 1034.
          type: string
        domainName:
          description: |2
            The domain name portion of the DNS name.
            
            This would be the
            "example.com" part of esx01.example.com. The rules for forming
            a domain name are defined in RFC 1034.
          type: string
        ipAddress:
          description: |2
            Unicast IP address(s) of one or more DNS servers in order of use.
            
            IPv4 addresses are specified using
            dotted decimal notation. For example, "192.0.2.1".
            IPv6 addresses are 128-bit addresses represented as
            eight fields of up to four hexadecimal digits.
            A colon separates each field (:). For example,
            2001:DB8:101::230:6eff:fe04:d9ff. The address can also consist of the
            symbol '::' to represent multiple 16-bit groups of
            contiguous 0's only once in an address as described in RFC 2373.
          type: array
          items:
            type: string
        searchDomain:
          description: |2
            The domain in which to search for hosts in order of preference.
          type: array
          items:
            type: string
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfNetDnsConfigSpec:
      type: object
      description: |2
        A boxed array of *NetDnsConfigSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/NetDnsConfigSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    NetIpConfigInfo:
      type: object
      description: |2
        Protocol version independent address reporting data object for network
        interfaces.
      properties:
        ipAddress:
          description: |2
            Zero, one or more manual (static) assigned IP addresses to be configured
            on a given interface.
          type: array
          items:
            $ref: '#/components/schemas/NetIpConfigInfoIpAddress'
        dhcp:
          description: |2
            Client side DHCP for a given interface.
          $ref: '#/components/schemas/NetDhcpConfigInfo'
        autoConfigurationEnabled:
          description: |2
            Enable or disable ICMPv6 router solictitation requests from a given interface
            to acquire an IPv6 address and default gateway route from zero, one or more
            routers on the connected network.
            
            If not set then ICMPv6 is not available on this system,
            See vim.host.Network.Capabilities
          type: boolean
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfNetIpConfigInfo:
      type: object
      description: |2
        A boxed array of *NetIpConfigInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/NetIpConfigInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    NetIpConfigInfoIpAddress:
      type: object
      description: |2
        Information about a specific IP Address.
      properties:
        ipAddress:
          description: |2
            IPv4 address is specified using dotted decimal notation.
            
            For example, "192.0.2.1".
            IPv6 addresses are 128-bit addresses represented as eight fields
            of up to four hexadecimal digits.
            A colon separates each field (:). For example,
            2001:DB8:101::230:6eff:fe04:d9ff. The address can also consist of the
            symbol '::' to represent multiple 16-bit groups of
            contiguous 0's only once in an address as described in RFC 2373.
          type: string
        prefixLength:
          description: |2
            Denotes the length of a generic Internet network address
            prefix.
            
            The prefix length for IPv4 the value range is 0-32.
            For IPv6 prefixLength is a decimal value range 0-128.
            A value of n corresponds to an IP address mask
            that has n contiguous 1-bits from the most significant
            bit (MSB), with all other bits set to 0.
            A value of zero is valid only if the calling context defines
            it.
          type: integer
          format: int32
        origin:
          description: |2
            How this address was configured.
            
            This can be
            one of the values from the enum IpAddressOrigin
            See *NetIpConfigInfoIpAddressOrigin_enum* for values.
          type: string
        state:
          description: |2
            The state of this ipAddress.
            
            Can be one of *NetIpConfigInfoIpAddressStatus_enum*.
          type: string
        lifetime:
          description: |2
            The time when will this address expire.
            
            Durning this time
            *state* may change states but is still visible
            from the network.
          type: string
          format: date-time
      required:
        - ipAddress
        - prefixLength
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfNetIpConfigInfoIpAddress:
      type: object
      description: |2
        A boxed array of *NetIpConfigInfoIpAddress*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/NetIpConfigInfoIpAddress'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    NetIpConfigSpec:
      type: object
      description: |2
        Internet Protocol Address Configuration for version 4 and version 6.
      properties:
        ipAddress:
          description: |2
            A set of manual (static) IP addresses to be configured on a given interface.
          type: array
          items:
            $ref: '#/components/schemas/NetIpConfigSpecIpAddressSpec'
        dhcp:
          description: |2
            Configure client side DHCP for a given interface.
          $ref: '#/components/schemas/NetDhcpConfigSpec'
        autoConfigurationEnabled:
          description: |2
            Enable or disable ICMPv6 router solictitation requests from a given interface
            to acquire an IPv6 address and default gateway route from zero, one or more
            routers on the connected network.
          type: boolean
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfNetIpConfigSpec:
      type: object
      description: |2
        A boxed array of *NetIpConfigSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/NetIpConfigSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    NetIpConfigSpecIpAddressSpec:
      type: object
      description: |2
        Provides for configuration of IP Addresses.
      properties:
        ipAddress:
          description: |2
            IPv4 address is specified using
            dotted decimal notation.
            
            For example, "192.0.2.1".
            IPv6 addresses are 128-bit addresses specified as
            eight fields of up to four hexadecimal digits.
            A colon separates each field (:). For example,
            2001:DB8:101::230:6eff:fe04:d9ff. The address can also consist of the
            symbol '::' to represent multiple 16-bit groups of
            contiguous 0's only once in an address as described in RFC 2373.
          type: string
        prefixLength:
          description: |2
            Denotes the length of a generic Internet network address
            prefix.
            
            The prefix length for IPv4 the value range is 0-32.
            For IPv6 prefixLength is a decimal value range 0-128.
            A value of n corresponds to an IP address mask
            that has n contiguous 1-bits from the most significant
            bit (MSB), with all other bits set to 0.
            A value of zero is valid only if the calling context defines
            it.
          type: integer
          format: int32
        operation:
          description: |2
            Requires one of: "add" and "remove" or "change"
            See *HostConfigChangeOperation_enum*.
          type: string
      required:
        - ipAddress
        - prefixLength
        - operation
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfNetIpConfigSpecIpAddressSpec:
      type: object
      description: |2
        A boxed array of *NetIpConfigSpecIpAddressSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/NetIpConfigSpecIpAddressSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    NetIpRouteConfigInfo:
      type: object
      description: |2
        This data object reports the IP Route Table.
      properties:
        ipRoute:
          description: |2
            IP routing table for all address families.
          type: array
          items:
            $ref: '#/components/schemas/NetIpRouteConfigInfoIpRoute'
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfNetIpRouteConfigInfo:
      type: object
      description: |2
        A boxed array of *NetIpRouteConfigInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/NetIpRouteConfigInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    NetIpRouteConfigInfoGateway:
      type: object
      description: |2
        Next hop Gateway for a given route.
      properties:
        ipAddress:
          type: string
        device:
          type: string
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfNetIpRouteConfigInfoGateway:
      type: object
      description: |2
        A boxed array of *NetIpRouteConfigInfoGateway*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/NetIpRouteConfigInfoGateway'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    NetIpRouteConfigInfoIpRoute:
      type: object
      description: |2
        IpRoute report an individual host, network or default destination network
        reachable through a given gateway.
      properties:
        network:
          description: |2
            IP Address of the destination IP network.
            
            IPv6 addresses are 128-bit addresses represented
            as eight fields of up to four hexadecimal digits. A colon separates each
            field (:). For example, 2001:DB8:101::230:6eff:fe04:d9ff. The address can
            also consist of symbol '::' to represent multiple 16-bit groups of
            contiguous 0's only once in an address as described in RFC 2373.
          type: string
        prefixLength:
          description: |2
            The prefix length.
            
            For IPv4 the value range is 0-31.
            For IPv6 prefixLength is a decimal value range 0-127. The property
            represents the number of contiguous, higher-order bits of the address that make
            up the network portion of the IP address.
          type: integer
          format: int32
        gateway:
          description: |2
            Where to send the packets for this route.
          $ref: '#/components/schemas/NetIpRouteConfigInfoGateway'
      required:
        - network
        - prefixLength
        - gateway
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfNetIpRouteConfigInfoIpRoute:
      type: object
      description: |2
        A boxed array of *NetIpRouteConfigInfoIpRoute*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/NetIpRouteConfigInfoIpRoute'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    NetIpRouteConfigSpec:
      type: object
      description: |2
        Address family independent IP Route Table Configuration data object.
      properties:
        ipRoute:
          description: |2
            The set of updates to apply to the routing table.
          type: array
          items:
            $ref: '#/components/schemas/NetIpRouteConfigSpecIpRouteSpec'
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfNetIpRouteConfigSpec:
      type: object
      description: |2
        A boxed array of *NetIpRouteConfigSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/NetIpRouteConfigSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    NetIpRouteConfigSpecGatewaySpec:
      type: object
      description: |2
        IpRoute report an individual host, network or default destination network
        reachable through a given gateway.
      properties:
        ipAddress:
          type: string
        device:
          type: string
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfNetIpRouteConfigSpecGatewaySpec:
      type: object
      description: |2
        A boxed array of *NetIpRouteConfigSpecGatewaySpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/NetIpRouteConfigSpecGatewaySpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    NetIpRouteConfigSpecIpRouteSpec:
      type: object
      description: |2
        Specify an individual host, network or default destination network
        reachable through a given gateway.
      properties:
        network:
          description: |2
            IP Address of the destination IP network.
            
            IPv6 addresses are 128-bit addresses represented
            as eight fields of up to four hexadecimal digits. A colon separates each
            field (:). For example, 2001:DB8:101::230:6eff:fe04:d9ff. The address can
            also consist of symbol '::' to represent multiple 16-bit groups of
            contiguous 0's only once in an address as described in RFC 2373.
            To Specify a default network use the value: 0 with prefixLenth 0.
          type: string
        prefixLength:
          description: |2
            The prefix length.
            
            For IPv4 the value range is 0-31.
            For IPv6 prefixLength is a decimal value range 0-127. The property
            represents the number of contiguous, higher-order bits of the address that make
            up the network portion of the IP address.
          type: integer
          format: int32
        gateway:
          description: |2
            Where to send the packets for this route.
          $ref: '#/components/schemas/NetIpRouteConfigSpecGatewaySpec'
        operation:
          description: |2
            Requires one of the values from *HostConfigChangeOperation_enum*.
          type: string
      required:
        - network
        - prefixLength
        - gateway
        - operation
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfNetIpRouteConfigSpecIpRouteSpec:
      type: object
      description: |2
        A boxed array of *NetIpRouteConfigSpecIpRouteSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/NetIpRouteConfigSpecIpRouteSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    NetIpStackInfo:
      type: object
      description: |2
        Protocol version independent reporting data object for IP stack.
      properties:
        neighbor:
          description: |2
            Zero, one or more entries of neighbors discovered using ARP or NDP.
            
            This information is used to help diagnose connectivity or performance
            issues. This property maps to RFC 4293 ipNetToPhysicalTable.
          type: array
          items:
            $ref: '#/components/schemas/NetIpStackInfoNetToMedia'
        defaultRouter:
          description: |2
            Zero one or more entries of discovered IP routers that are directly
            reachable from a an interface on this system.
            
            This property maps to RFC 4293 ipDefaultRouterTable.
          type: array
          items:
            $ref: '#/components/schemas/NetIpStackInfoDefaultRouter'
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfNetIpStackInfo:
      type: object
      description: |2
        A boxed array of *NetIpStackInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/NetIpStackInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    NetIpStackInfoDefaultRouter:
      type: object
      properties:
        ipAddress:
          description: |2
            Unicast IP address of a next-hop router.
          type: string
        device:
          description: |2
            This value will contain the name of the interface as reported by the
            operationg system.
          type: string
        lifetime:
          description: |2
            When this entry will no longer valid.
            
            For IPv6 this value
            see For IPv6 RFC 2462 sections 4.2 and 6.3.4.
          type: string
          format: date-time
        preference:
          description: |2
            Value of this entry compared to others that this IP stack uses
            when making selection to route traffic on the default
            route when there are multiple default routers.
            
            Value must be one of
            *NetIpStackInfoPreference_enum*
          type: string
      required:
        - ipAddress
        - device
        - lifetime
        - preference
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfNetIpStackInfoDefaultRouter:
      type: object
      description: |2
        A boxed array of *NetIpStackInfoDefaultRouter*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/NetIpStackInfoDefaultRouter'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    NetIpStackInfoNetToMedia:
      type: object
      description: |2
        Information from an IP stack about known mappings betwwen an IP address
        and the underlying physical address it maps to as learned by:
        IPv4: Address Resolution Protocol (ARP) RFC 826
        IPv6: Neighbor Discovery Protocol (NDP) RFC 4861
      properties:
        ipAddress:
          description: |2
            A Unicast IP address of another system directly reachable w/o routing.
            
            IPv4 address is specified using dotted decimal notation.
            For example, "192.0.2.1".
            IPv6 addresses are 128-bit addresses represented as eight fields
            of up to four hexadecimal digits.
            A colon separates each field (:). For example,
            2001:DB8:101::230:6eff:fe04:d9ff. The address can also consist of the
            symbol '::' to represent multiple 16-bit groups of
            contiguous 0's only once in an address as described in RFC 2373.
          type: string
        physicalAddress:
          description: |2
            The media-dependent of the address or empty string if not yet learned.
            
            For Ethernet interfaces this is a MAC address reported in the format:
            XX:XX:XX:XX:XX:XX where XX are hexadecimal numbers.
          type: string
        device:
          description: |2
            The value will be the name of the interface as reported by the
            operating system.
          type: string
        type:
          description: |2
            The type/state of this entry as reported by the IP stack.
            
            See *NetIpStackInfoEntryType_enum* for values.
          type: string
      required:
        - ipAddress
        - physicalAddress
        - device
        - type
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfNetIpStackInfoNetToMedia:
      type: object
      description: |2
        A boxed array of *NetIpStackInfoNetToMedia*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/NetIpStackInfoNetToMedia'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    NetBIOSConfigInfo:
      type: object
      description: |2
        This data object type describes the NetBIOS configuration of
        an operating system.
      properties:
        mode:
          description: |2
            NetBIOS configuration mode.
            
            The supported values are described by
            *NetBIOSConfigInfoMode_enum*.
          type: string
      required:
        - mode
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfNetBIOSConfigInfo:
      type: object
      description: |2
        A boxed array of *NetBIOSConfigInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/NetBIOSConfigInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    WinNetBIOSConfigInfo:
      type: object
      description: |2
        This data object type describes the Windows-specific
        NetBIOS configuration.
      properties:
        primaryWINS:
          description: |2
            The IP address of the primary WINS server.
          type: string
        secondaryWINS:
          description: |2
            The IP address of the secondary WINS server.
          type: string
      required:
        - primaryWINS
      allOf:
        - $ref: '#/components/schemas/NetBIOSConfigInfo'

    ArrayOfWinNetBIOSConfigInfo:
      type: object
      description: |2
        A boxed array of *WinNetBIOSConfigInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/WinNetBIOSConfigInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ArrayUpdateSpec:
      type: object
      description: |2
        An ArrayUpdateSpec data object type is a common superclass
        for supporting incremental updates to arrays.
        
        The common code pattern is:
        
                 class MyTypeSpec extrends ArrayUpdateSpec {
                       MyTypeInfo info;
                 }
        The ArrayUpdateSpec contains the following:
        - **operation**: the type of operation being performed.
        - **removeKey**: In the case of a remove operation, the
          key value that identifies the array to be removed.
      properties:
        operation:
          description: |2
            The type of operation being performed on the specified virtual device.
          $ref: '#/components/schemas/ArrayUpdateOperation_enum'
        removeKey:
          description: |2
            Key for the element to be removed.
            
            Only used if the operation
            is "remove".
          $ref: '#/components/schemas/Any'
      required:
        - operation
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfArrayUpdateSpec:
      type: object
      description: |2
        A boxed array of *ArrayUpdateSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ArrayUpdateSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    BoolOption:
      type: object
      description: |2
        The BoolOption data object type describes if an option
        is supported ("true") and if the option is set to "true" or
        "false" by default.
      properties:
        supported:
          description: |2
            The flag to indicate whether or not the
            option is supported.
          type: boolean
        defaultValue:
          description: |2
            The default value for the option.
          type: boolean
      required:
        - supported
        - defaultValue
      allOf:
        - $ref: '#/components/schemas/OptionType'

    ArrayOfBoolOption:
      type: object
      description: |2
        A boxed array of *BoolOption*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/BoolOption'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ChoiceOption:
      type: object
      description: |2
        The ChoiceOption data object type defines a set of
        supported string values, a localizable description for each value,
        and the default value.
      properties:
        choiceInfo:
          description: |2
            The set of possible selections and descriptions.
          type: array
          items:
            $ref: '#/components/schemas/ElementDescription'
        defaultIndex:
          description: |2
            The index in ChoiceOption.value that serves as the default value.
          type: integer
          format: int32
      required:
        - choiceInfo
      allOf:
        - $ref: '#/components/schemas/OptionType'

    ArrayOfChoiceOption:
      type: object
      description: |2
        A boxed array of *ChoiceOption*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ChoiceOption'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    FloatOption:
      type: object
      description: |2
        The FloatOption data object type defines the minimum, maximum,
        and default values for a float option.
      properties:
        min:
          description: |2
            The minimum value.
          type: number
          format: float
        max:
          description: |2
            The maximum value.
          type: number
          format: float
        defaultValue:
          description: |2
            The default value.
          type: number
          format: float
      required:
        - min
        - max
        - defaultValue
      allOf:
        - $ref: '#/components/schemas/OptionType'

    ArrayOfFloatOption:
      type: object
      description: |2
        A boxed array of *FloatOption*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/FloatOption'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    IntOption:
      type: object
      description: |2
        The IntOption data object type is used to define the minimum, maximum,
        and default values for an integer option.
      properties:
        min:
          description: |2
            The minimum value.
          type: integer
          format: int32
        max:
          description: |2
            The maximum value.
          type: integer
          format: int32
        defaultValue:
          description: |2
            The default value.
          type: integer
          format: int32
      required:
        - min
        - max
        - defaultValue
      allOf:
        - $ref: '#/components/schemas/OptionType'

    ArrayOfIntOption:
      type: object
      description: |2
        A boxed array of *IntOption*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/IntOption'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    LongOption:
      type: object
      description: |2
        The LongOption data object type is used to define the minimum, maximum,
        and default values for a 64-bit long option.
      properties:
        min:
          description: |2
            The minimum value.
          type: integer
          format: int64
        max:
          description: |2
            The maximum value.
          type: integer
          format: int64
        defaultValue:
          description: |2
            The default value.
          type: integer
          format: int64
      required:
        - min
        - max
        - defaultValue
      allOf:
        - $ref: '#/components/schemas/OptionType'

    ArrayOfLongOption:
      type: object
      description: |2
        A boxed array of *LongOption*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/LongOption'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    OptionDef:
      type: object
      description: |2
        Describes a user-defined option.
        
        The name of each option is identified by the
        "key" property, inherited from the *ElementDescription*
        data object type.
        You can indicate the property's position in a hierarchy by using a dot-separated
        notation. The string preceding the first dot is the top of the hierarchy. The
        hierarchy descends to a new sublevel with each dot.
        For example, "Ethernet.NetworkConnection.Bridged".
      properties:
        optionType:
          description: |2
            The option type which defines allowed values.
          $ref: '#/components/schemas/OptionType'
      required:
        - optionType
      allOf:
        - $ref: '#/components/schemas/ElementDescription'

    ArrayOfOptionDef:
      type: object
      description: |2
        A boxed array of *OptionDef*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/OptionDef'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    OptionType:
      type: object
      description: |2
        The base data object type for all options.
      properties:
        valueIsReadonly:
          description: |2
            The flag to indicate whether or not a user
            can modify a value belonging to this option type.
            
            If
            the flag is not set, the value can be modified.
          type: boolean
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfOptionType:
      type: object
      description: |2
        A boxed array of *OptionType*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/OptionType'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    OptionValue:
      type: object
      description: |2
        Describes the key/value pair of a configured option.
      properties:
        key:
          description: |2
            The name of the option using dot notation to reflect the
            option's position in a hierarchy.
            
            For example, you might
            have an option called "Ethernet" and another option that is
            a child of that called "Connection". In this case, the key
            for the latter could be defined as "Ethernet.Connection"
          type: string
        value:
          description: |2
            The value of the option.
            
            The Any data object type enables you to
            define any value for the option. Typically, however, the value
            of an option is of type String or Integer.
          $ref: '#/components/schemas/Any'
      required:
        - key
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfOptionValue:
      type: object
      description: |2
        A boxed array of *OptionValue*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/OptionValue'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    StringOption:
      type: object
      description: |2
        The StringOption data object type is used to define an open-ended
        string value based on an optional subset of valid characters.
      properties:
        defaultValue:
          description: |2
            The default value.
          type: string
        validCharacters:
          description: |2
            The string containing the set of valid characters.
            
            If a string
            option is not specified, all strings are allowed.
          type: string
      required:
        - defaultValue
      allOf:
        - $ref: '#/components/schemas/OptionType'

    ArrayOfStringOption:
      type: object
      description: |2
        A boxed array of *StringOption*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/StringOption'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ApplyProfile:
      type: object
      description: |2
        The *ApplyProfile* data object is the base class for all data objects
        that define profile configuration data.
        
        <code>ApplyProfile</code> defines ESX configuration data storage and it
        supports recursive profile definition for the profile plug-in architecture.
      properties:
        enabled:
          description: |2
            Indicates whether the profile is enabled.
          type: boolean
        policy:
          description: |2
            The list of policies comprising the profile.
            
            A *ProfilePolicy*
            stores one or more configuration data values in a *PolicyOption*.
            The policy option is one of the configuration options from the
            *ProfilePolicyMetadata*.*ProfilePolicyMetadata.possibleOption*
            list.
          type: array
          items:
            $ref: '#/components/schemas/ProfilePolicy'
        profileTypeName:
          description: |2
            Identifies the profile type.
          type: string
        profileVersion:
          description: |2
            Profile engine version.
          type: string
        property:
          description: |2
            List of subprofiles for this profile.
            
            This list can change depending on which profile plug-ins are available in the system.
            Subprofiles can be nested to arbitrary depths to represent host capabilities.
          type: array
          items:
            $ref: '#/components/schemas/ProfileApplyProfileProperty'
        favorite:
          description: |2
            Indicates whether this profile is marked as "favorite".
          type: boolean
        toBeMerged:
          description: |2
            Indicates whether this profile is marked as to-be-merged.
          type: boolean
        toReplaceWith:
          description: |2
            Indicates whether the selected array elements, with the current
            as one of them, replace the profile array in the target host
            profile.
          type: boolean
        toBeDeleted:
          description: |2
            Indicates whether this profile is marked as to-be-deleted.
          type: boolean
        copyEnableStatus:
          description: |2
            Indicates that the member variable <code>enabled</code> of this profile
            will be copied from source profile to target profiles at host profile
            composition.
          type: boolean
        hidden:
          description: |2
            Indicates whether this profile will be displayed or not.
          type: boolean
      required:
        - enabled
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfApplyProfile:
      type: object
      description: |2
        A boxed array of *ApplyProfile*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ApplyProfile'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ProfileApplyProfileElement:
      type: object
      description: |2
        DataObject which represents an ApplyProfile element.
        
        An ApplyProfile element is an ApplyProfile for a set of host
        configuration settings which may be instanced.
        For example, there may be multiple virtual switch instances
        represented by individual ApplyProfileElement DataObjects.
      properties:
        key:
          description: |2
            The linkable identifier.
          type: string
      required:
        - key
      allOf:
        - $ref: '#/components/schemas/ApplyProfile'

    ArrayOfProfileApplyProfileElement:
      type: object
      description: |2
        A boxed array of *ProfileApplyProfileElement*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ProfileApplyProfileElement'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ProfileApplyProfileProperty:
      type: object
      description: |2
        The *ProfileApplyProfileProperty* data object defines one or more subprofiles.
      properties:
        propertyName:
          description: |2
            Name of the property.
          type: string
        array:
          description: |2
            Flag indicating whether this property is an array of profiles.
          type: boolean
        profile:
          description: |2
            Subprofiles that define policies and nested subprofiles.
          type: array
          items:
            $ref: '#/components/schemas/ApplyProfile'
      required:
        - propertyName
        - array
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfProfileApplyProfileProperty:
      type: object
      description: |2
        A boxed array of *ProfileApplyProfileProperty*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ProfileApplyProfileProperty'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ComplianceLocator:
      type: object
      description: |2
        This dataObject contains information about location of applyProfile
        which was responsible for generation of a particular ComplianceExpression.
      properties:
        expressionName:
          description: |2
            Exression for which the Locator corresponds to
          type: string
        applyPath:
          description: |2
            Complete path to the profile/policy which was responsible for the
            generation of the ComplianceExpression.
            
            \[ProfilePath + policyId\] will uniquely identify a Policy.
          $ref: '#/components/schemas/ProfilePropertyPath'
      required:
        - expressionName
        - applyPath
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfComplianceLocator:
      type: object
      description: |2
        A boxed array of *ComplianceLocator*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ComplianceLocator'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ComplianceProfile:
      type: object
      description: |2
        DataObject contains the verifications that need to be done
        to make sure the entity is in compliance.
      properties:
        expression:
          description: |2
            List of expressions that make up the ComplianceChecks.
          type: array
          items:
            $ref: '#/components/schemas/ProfileExpression'
        rootExpression:
          description: |2
            Name of the Expression which is the root of the expression tree.
          type: string
      required:
        - expression
        - rootExpression
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfComplianceProfile:
      type: object
      description: |2
        A boxed array of *ComplianceProfile*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ComplianceProfile'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ComplianceResult:
      type: object
      description: |2
        DataObject representing the result from a ComplianceCheck
      properties:
        profile:
          description: |2
            Profile for which the ComplianceResult applies
            
            Refers instance of *Profile*.
          $ref: '#/components/schemas/ManagedObjectReference'
        complianceStatus:
          description: |2
            Indicates the compliance status of the entity.
            
            See @link Status
          type: string
        entity:
          description: |2
            Entity on which the compliance check was carried out.
            
            Entity can be a Cluster, Host and so on.
            
            Refers instance of *ManagedEntity*.
          $ref: '#/components/schemas/ManagedObjectReference'
        checkTime:
          description: |2
            Time at which compliance check was last run on the entity
          type: string
          format: date-time
        failure:
          description: |2
            If complianceStatus is non-compliant, failure will
            contain additional information about the compliance errors.
          type: array
          items:
            $ref: '#/components/schemas/ComplianceFailure'
      required:
        - complianceStatus
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfComplianceResult:
      type: object
      description: |2
        A boxed array of *ComplianceResult*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ComplianceResult'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ComplianceFailure:
      type: object
      properties:
        failureType:
          description: |2
            String uniquely identifying the failure.
          type: string
        message:
          description: |2
            Message which describes the compliance failures
            message.key serves as a key to the localized
            message catalog.
          $ref: '#/components/schemas/LocalizableMessage'
        expressionName:
          description: |2
            Name of the Expression which generated the ComplianceFailure
          type: string
        failureValues:
          description: |2
            If complianceStatus is non-compliant, failureValues will
            contain values of the non-compliant fields on the host and
            in the profile.
          type: array
          items:
            $ref: '#/components/schemas/ComplianceFailureComplianceFailureValues'
      required:
        - failureType
        - message
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfComplianceFailure:
      type: object
      description: |2
        A boxed array of *ComplianceFailure*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ComplianceFailure'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ComplianceFailureComplianceFailureValues:
      type: object
      properties:
        comparisonIdentifier:
          description: |2
            Unique key to a message in the localized message catalog,
            identifying the fields being compared.
          type: string
        profileInstance:
          description: |2
            Name of the profile instance, in case of non-singleton profiles.
          type: string
        hostValue:
          description: |2
            Value of the non-compliant field on the host.
          $ref: '#/components/schemas/Any'
        profileValue:
          description: |2
            Value of the non-compliant field in the profile.
          $ref: '#/components/schemas/Any'
      required:
        - comparisonIdentifier
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfComplianceFailureComplianceFailureValues:
      type: object
      description: |2
        A boxed array of *ComplianceFailureComplianceFailureValues*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ComplianceFailureComplianceFailureValues'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ProfileCompositeExpression:
      type: object
      description: |2
        DataObject to Compose expressions.
        
        It is used to group expressions
        together. They are similar to a parentheses in an expression.
      properties:
        operator:
          description: |2
            Logical operator to be applied between the expressions in
            the composite expression.
            
            e.g: or, and
          type: string
        expressionName:
          description: |2
            List of expression names that will be used for this composition.
            
            The individual expressions will return a boolean. The return values
            of the individual expressions will be used to compute the final
            return value of the CompositeExpression.
            The expressions specified in the list can themselves be
            CompositeExpressions.
          type: array
          items:
            type: string
      required:
        - operator
        - expressionName
      allOf:
        - $ref: '#/components/schemas/ProfileExpression'

    ArrayOfProfileCompositeExpression:
      type: object
      description: |2
        A boxed array of *ProfileCompositeExpression*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ProfileCompositeExpression'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    CompositePolicyOption:
      type: object
      description: |2
        DataObject represents a composite Policy that is created by the user
        using different PolicyOptions.
        
        The options set in the CompositePolicyOption
        should be derived from the possible options as indicated by the
        CompositePolicyOptionMetadata.
      properties:
        option:
          description: |2
            List of policy options that are composed and applicable for
            this composite policy option.
            
            The selected PolicyOptions in a CompositePolicyOption will be used in the
            policy. PolicyOptions need not be specified if they are not desired for
            the CompositePolicyOption.
            Order of PolicyOptions in the PolicyOption array is not significant.
            The host profile policy engine will not respect order of PolicyOptions.
            It will apply PolicyOptions in a pre-determined order.
            Clients of the API must produce PolicyOption in the same order as specified
            in the metadata.
          type: array
          items:
            $ref: '#/components/schemas/PolicyOption'
      allOf:
        - $ref: '#/components/schemas/PolicyOption'

    ArrayOfCompositePolicyOption:
      type: object
      description: |2
        A boxed array of *CompositePolicyOption*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/CompositePolicyOption'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ProfileCompositePolicyOptionMetadata:
      type: object
      description: |2
        The *ProfileCompositePolicyOptionMetadata* data object represents the metadata information
        for a composite *PolicyOption*.
        
        The user will retrieve metadata
        information about a composite policy and then combine policy options to produce
        the composite policy option.
      properties:
        option:
          description: |2
            List of optional policy option identifiers that could be combined
            in this composite policy option.
            
            The policy options should already be
            part of the possible policy options for the policy. See the
            *ProfilePolicyMetadata*.*ProfilePolicyMetadata.possibleOption*
            list.
          type: array
          items:
            type: string
      required:
        - option
      allOf:
        - $ref: '#/components/schemas/ProfilePolicyOptionMetadata'

    ArrayOfProfileCompositePolicyOptionMetadata:
      type: object
      description: |2
        A boxed array of *ProfileCompositePolicyOptionMetadata*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ProfileCompositePolicyOptionMetadata'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ProfileDeferredPolicyOptionParameter:
      type: object
      description: |2
        The *ProfileDeferredPolicyOptionParameter* data object contains
        information about a single deferred parameter for host configuration.
        - The Server verifies deferred parameter data when it calls the
          *HostProfile*.*HostProfile.ExecuteHostProfile*
          method.
        - The client supplies deferred parameter data for host configuration when it calls the
          *HostProfileManager*.*HostProfileManager.ApplyHostConfig_Task*
          method.
        - The vCenter Server stores deferred parameter data in answer files
          (*AnswerFile*.*AnswerFile.userInput*).
      properties:
        inputPath:
          description: |2
            Complete path to the *PolicyOption* that defines the parameters.
          $ref: '#/components/schemas/ProfilePropertyPath'
        parameter:
          description: |2
            List that contains values for the policy parameters.
            
            During parameter verification, this property is unspecified
            if the client has not provided the values for this parameter.
            See *ProfileExecuteResult*.*ProfileExecuteResult.requireInput*.
          type: array
          items:
            $ref: '#/components/schemas/KeyAnyValue'
      required:
        - inputPath
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfProfileDeferredPolicyOptionParameter:
      type: object
      description: |2
        A boxed array of *ProfileDeferredPolicyOptionParameter*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ProfileDeferredPolicyOptionParameter'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ProfileExpression:
      type: object
      properties:
        id:
          description: |2
            Identifier of this expression.
            
            The id has to be unique within a Profile.
            The id can be used as a key while building composite expressions.
          type: string
        displayName:
          description: |2
            User visible display name
          type: string
        negated:
          description: |2
            Flag indicating if the condition of the expression should be negated.
            
            e.g: conditions like VSwitch0 has vmnic0 connected to it can be turned into
            VSwitch0 doesn't have vmnic0 connected to it.
          type: boolean
      required:
        - id
        - displayName
        - negated
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfProfileExpression:
      type: object
      description: |2
        A boxed array of *ProfileExpression*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ProfileExpression'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ProfileExpressionMetadata:
      type: object
      description: |2
        DataObject to represent the metadata associated with a SimpleExpression.
      properties:
        expressionId:
          description: |2
            Id of the SimpleExpression
          $ref: '#/components/schemas/ExtendedElementDescription'
        parameter:
          description: |2
            Parameters that can be specified for this SimpleExpression
          type: array
          items:
            $ref: '#/components/schemas/ProfileParameterMetadata'
      required:
        - expressionId
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfProfileExpressionMetadata:
      type: object
      description: |2
        A boxed array of *ProfileExpressionMetadata*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ProfileExpressionMetadata'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ProfileParameterMetadata:
      type: object
      description: |2
        The *ProfileParameterMetadata* data object represents the metadata information
        for expressions, policy options, and host-specific configuration data.
      properties:
        id:
          description: |2
            Identifier for the parameter.
          $ref: '#/components/schemas/ExtendedElementDescription'
        type:
          description: |2
            Type of the parameter.
          type: string
        optional:
          description: |2
            Whether the parameter is optional.
          type: boolean
        defaultValue:
          description: |2
            Default value that can be used for the parameter.
          $ref: '#/components/schemas/Any'
        hidden:
          description: |2
            Whether the parameter will not be displayed in UI.
          type: boolean
        securitySensitive:
          description: |2
            Whether the parameter is security sensitive.
          type: boolean
        readOnly:
          description: |2
            Indicates that the parameter value is read-only.
          type: boolean
        parameterRelations:
          description: |2
            Relations with other profile or parameters.
          type: array
          items:
            $ref: '#/components/schemas/ProfileParameterMetadataParameterRelationMetadata'
      required:
        - id
        - type
        - optional
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfProfileParameterMetadata:
      type: object
      description: |2
        A boxed array of *ProfileParameterMetadata*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ProfileParameterMetadata'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ProfileParameterMetadataParameterRelationMetadata:
      type: object
      description: |2
        This class to define a relation between the parameter and a profile
        or a parameter, or a constant list of values.
      properties:
        relationTypes:
          description: |2
            The types of this relation.
          type: array
          items:
            type: string
        values:
          description: |2
            The valid value list.
          type: array
          items:
            $ref: '#/components/schemas/Any'
        path:
          description: |2
            The property path of the related profile/parameter.
          $ref: '#/components/schemas/ProfilePropertyPath'
        minCount:
          description: |2
            The minimal count of values to map to.
          type: integer
          format: int32
        maxCount:
          description: |2
            The maximum count of values to map to.
          type: integer
          format: int32
      required:
        - minCount
        - maxCount
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfProfileParameterMetadataParameterRelationMetadata:
      type: object
      description: |2
        A boxed array of *ProfileParameterMetadataParameterRelationMetadata*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ProfileParameterMetadataParameterRelationMetadata'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ProfilePolicy:
      type: object
      description: |2
        The *ProfilePolicy* data object represents a policy.
      properties:
        id:
          description: |2
            Identifier for the policy.
          type: string
        policyOption:
          description: |2
            Configuration parameters.
          $ref: '#/components/schemas/PolicyOption'
      required:
        - id
        - policyOption
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfProfilePolicy:
      type: object
      description: |2
        A boxed array of *ProfilePolicy*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ProfilePolicy'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ProfilePolicyMetadata:
      type: object
      description: |2
        The *ProfilePolicyMetadata* data object represents the metadata information
        for a *ProfilePolicy*.
      properties:
        id:
          description: |2
            Identifier for the policy.
          $ref: '#/components/schemas/ExtendedElementDescription'
        possibleOption:
          description: |2
            Possible policy options that can be set for a policy of the
            given kind.
            
            *HostProfile*s and subprofiles
            will contain selected policy options from this list. See
            *PolicyOption*.
          type: array
          items:
            $ref: '#/components/schemas/ProfilePolicyOptionMetadata'
      required:
        - id
        - possibleOption
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfProfilePolicyMetadata:
      type: object
      description: |2
        A boxed array of *ProfilePolicyMetadata*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ProfilePolicyMetadata'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PolicyOption:
      type: object
      description: |2
        The *PolicyOption* data object represents one or more configuration
        values.
        
        A policy option is one of the configuration options from the
        *ProfilePolicyMetadata*.*ProfilePolicyMetadata.possibleOption*
        list.
      properties:
        id:
          description: |2
            Identifier for the policy option.
            
            This value matches one of the
            keys from the list of possible options in the policy metadata
            (*ProfilePolicyMetadata*.*ProfilePolicyMetadata.possibleOption*\[\].*ProfilePolicyOptionMetadata.id*.*ElementDescription.key*).
          type: string
        parameter:
          description: |2
            Parameters for the policy option.
            
            This list must include all parameters that are not marked as optional
            in the policy option metadata parameter list
            (*ProfilePolicyMetadata*.*ProfilePolicyMetadata.possibleOption*\[\].*ProfilePolicyOptionMetadata.parameter*\[\].*ProfileParameterMetadata.optional*).
          type: array
          items:
            $ref: '#/components/schemas/KeyAnyValue'
      required:
        - id
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfPolicyOption:
      type: object
      description: |2
        A boxed array of *PolicyOption*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PolicyOption'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ProfilePolicyOptionMetadata:
      type: object
      description: |2
        The *ProfilePolicyOptionMetadata* data object contains the metadata information
        for a *PolicyOption*.
      properties:
        id:
          description: |2
            Identifier for the policy option.
            - The <code>id.key</code> value
              (*ExtendedElementDescription*.*ElementDescription.key*)
              identifies the policy option type.
            - The <code>id.label</code> property
              (*ExtendedElementDescription*.*Description.label*)
              contains a brief localizable message describing the policy option.
            - The <code>id.summary</code> property
              (*ExtendedElementDescription*.*Description.summary*)
              contains a localizable summary of the policy option.
              Summary information can contain embedded variable names which can
              be replaced with values from the <code>parameter</code> property.
          $ref: '#/components/schemas/ExtendedElementDescription'
        parameter:
          description: |2
            Metadata about the parameters for the policy option.
          type: array
          items:
            $ref: '#/components/schemas/ProfileParameterMetadata'
      required:
        - id
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfProfilePolicyOptionMetadata:
      type: object
      description: |2
        A boxed array of *ProfilePolicyOptionMetadata*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ProfilePolicyOptionMetadata'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ProfileConfigInfo:
      type: object
      properties:
        name:
          description: |2
            Name of the profile
          type: string
        annotation:
          description: |2
            User Provided description of the profile
          type: string
        enabled:
          description: |2
            Flag indicating if the Profile is enabled
          type: boolean
      required:
        - name
        - enabled
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfProfileConfigInfo:
      type: object
      description: |2
        A boxed array of *ProfileConfigInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ProfileConfigInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ProfileCreateSpec:
      type: object
      description: |2
        Specification describing the parameters during Profile creation
      properties:
        name:
          description: |2
            Name of the profile
          type: string
        annotation:
          description: |2
            User Provided description of the profile
          type: string
        enabled:
          description: |2
            Flag indicating if the Profile is enabled
          type: boolean
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfProfileCreateSpec:
      type: object
      description: |2
        A boxed array of *ProfileCreateSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ProfileCreateSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ProfileDescription:
      type: object
      description: |2
        The *ProfileDescription* data object describes a profile.
        
        The description contains multiple sections. Each section
        describes a part of the profile.
      properties:
        section:
          description: |2
            Sections which make up the profile description.
          type: array
          items:
            $ref: '#/components/schemas/ProfileDescriptionSection'
      required:
        - section
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfProfileDescription:
      type: object
      description: |2
        A boxed array of *ProfileDescription*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ProfileDescription'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ProfileDescriptionSection:
      type: object
      description: |2
        The *ProfileDescriptionSection* data object
        contains a profile element description and any messages that may
        be associated with the profile section.
      properties:
        description:
          description: |2
            Localized message data.
          $ref: '#/components/schemas/ExtendedElementDescription'
        message:
          description: |2
            List of messages that make up the section.
          type: array
          items:
            $ref: '#/components/schemas/LocalizableMessage'
      required:
        - description
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfProfileDescriptionSection:
      type: object
      description: |2
        A boxed array of *ProfileDescriptionSection*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ProfileDescriptionSection'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ProfileSerializedCreateSpec:
      type: object
      description: |2
        The *ProfileSerializedCreateSpec* data object
        defines a string that contains a serialized representation of a host profile.
      properties:
        profileConfigString:
          description: |2
            Representation of the profile in the string form.
          type: string
      required:
        - profileConfigString
      allOf:
        - $ref: '#/components/schemas/ProfileCreateSpec'

    ArrayOfProfileSerializedCreateSpec:
      type: object
      description: |2
        A boxed array of *ProfileSerializedCreateSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ProfileSerializedCreateSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ProfileMetadata:
      type: object
      description: |2
        This data object represents the metadata information of a Profile.
      properties:
        key:
          description: |2
            Type of the Profile
          type: string
        profileTypeName:
          description: |2
            Type identifier for the ApplyProfile
          type: string
        description:
          description: |2
            Property which describes the profile
          $ref: '#/components/schemas/ExtendedDescription'
        sortSpec:
          description: |2
            Property that determines a sorting order for display purposes.
            
            If
            the list contains more than one sort spec, then the precedence should
            be determined by the list order (i.e. sort first by the first spec in
            the list, then sort by the second spec in the list, etc).
          type: array
          items:
            $ref: '#/components/schemas/ProfileMetadataProfileSortSpec'
        profileCategory:
          description: |2
            Identifies the profile category that this subprofile is a part of.
            
            The
            value of this string should correspond to the key value of a
            *ProfileCategoryMetadata* object's *ElementDescription.key*
            in its *ProfileCategoryMetadata.id* property.
          type: string
        profileComponent:
          description: |2
            Property indicating that the subprofile described by this
            <code>ProfileMetadata</code> object is declared in the
            *ProfileComponentMetadata.profileTypeNames* of the specified
            profile component.
            
            The value of this property should correspond to the key
            value of the *ProfileComponentMetadata* object's
            *ElementDescription.key* in its
            *ProfileComponentMetadata.id* property.
            This property should not be present for subprofiles that are not directly
            declared in the *ProfileComponentMetadata.profileTypeNames*
            property of a *ProfileComponentMetadata* object.
          type: string
        operationMessages:
          description: |2
            A list of <code>ProfileOperationMessage</code> for this profile.
          type: array
          items:
            $ref: '#/components/schemas/ProfileMetadataProfileOperationMessage'
      required:
        - key
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfProfileMetadata:
      type: object
      description: |2
        A boxed array of *ProfileMetadata*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ProfileMetadata'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ProfileMetadataProfileOperationMessage:
      type: object
      description: |2
        Some operations on host profile documents may cause unexpected result.
        
        For example, deleting a profile instance of vswitch may break the
        network connectivity.
        This data class provides the localizable message which may be
        presented before or after an operation happens.
      properties:
        operationName:
          description: |2
            The operation name.
          type: string
        message:
          description: |2
            The localization message for the operation.
          $ref: '#/components/schemas/LocalizableMessage'
      required:
        - operationName
        - message
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfProfileMetadataProfileOperationMessage:
      type: object
      description: |2
        A boxed array of *ProfileMetadataProfileOperationMessage*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ProfileMetadataProfileOperationMessage'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ProfileMetadataProfileSortSpec:
      type: object
      properties:
        policyId:
          description: |2
            The id of the policy used to sort instances of the profile
          type: string
        parameter:
          description: |2
            The parameter to be used for sorting.
            
            Note that if the policy to be
            used for sorting has multiple possible policy options, all possible
            policy options defined for that policy type must have this parameter.
          type: string
      required:
        - policyId
        - parameter
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfProfileMetadataProfileSortSpec:
      type: object
      description: |2
        A boxed array of *ProfileMetadataProfileSortSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ProfileMetadataProfileSortSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ProfilePropertyPath:
      type: object
      description: |2
        The *ProfilePropertyPath* data object represents
        the path to a profile, policy option, or specific parameter.
        
        If <code>profilePath</code>,
        <code>policyId</code>, and <code>parameterId</code> are all specified, the
        combination of the three identifies a particular parameter. If only <code>profilePath</code>
        and <code>policyId</code> are specified, the combination identifies a
        specific profile policy option. If just the <code>profilePath</code> is
        specified, the data object identifies a profile instance.
      properties:
        profilePath:
          description: |2
            Complete path to the leaf profile, relative to the root of the host profile
            document.
          type: string
        policyId:
          description: |2
            Policy identifier.
          type: string
        parameterId:
          description: |2
            Key for a parameter in the policy specified by <code>policyId</code>.
            
            See *PolicyOption*.*PolicyOption.parameter*
            and *KeyAnyValue.key*.
          type: string
        policyOptionId:
          description: |2
            Policy option identifier.
          type: string
      required:
        - profilePath
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfProfilePropertyPath:
      type: object
      description: |2
        A boxed array of *ProfilePropertyPath*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ProfilePropertyPath'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ProfileProfileStructure:
      type: object
      properties:
        profileTypeName:
          description: |2
            Identifier for the profile type
          type: string
        child:
          description: |2
            SubProfile properties available for this profile
          type: array
          items:
            $ref: '#/components/schemas/ProfileProfileStructureProperty'
      required:
        - profileTypeName
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfProfileProfileStructure:
      type: object
      description: |2
        A boxed array of *ProfileProfileStructure*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ProfileProfileStructure'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ProfileProfileStructureProperty:
      type: object
      properties:
        propertyName:
          description: |2
            Name of the property where this ProfileStructureProperty is being used
          type: string
        array:
          description: |2
            Flag indicating if this property is an Array of profiles
          type: boolean
        element:
          description: |2
            Details about the profile contained within this property
          $ref: '#/components/schemas/ProfileProfileStructure'
      required:
        - propertyName
        - array
        - element
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfProfileProfileStructureProperty:
      type: object
      description: |2
        A boxed array of *ProfileProfileStructureProperty*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ProfileProfileStructureProperty'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ProfileSimpleExpression:
      type: object
      description: |2
        DataObject represents a pre-defined expression
      properties:
        expressionType:
          description: |2
            Type of the simple expression to instantiate.
            
            The expressionType should be derived from the available expressions as
            listed in the metadata.
          type: string
        parameter:
          description: |2
            The parameters for the expressionType.
            
            The list of parameters needed for a simple expression can
            be obtained from the metadata.
          type: array
          items:
            $ref: '#/components/schemas/KeyAnyValue'
      required:
        - expressionType
      allOf:
        - $ref: '#/components/schemas/ProfileExpression'

    ArrayOfProfileSimpleExpression:
      type: object
      description: |2
        A boxed array of *ProfileSimpleExpression*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ProfileSimpleExpression'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    UserInputRequiredParameterMetadata:
      type: object
      description: |2
        The *UserInputRequiredParameterMetadata* data object represents policy option metadata
        information for configuration data.
        
        The Profile Engine saves configuration
        data from the user input options in the host *AnswerFile*.
        See the *HostProfile.ExecuteHostProfile* and
        *HostProfileManager.ApplyHostConfig_Task* methods.
      properties:
        userInputParameter:
          description: |2
            Metadata for user input options.
          type: array
          items:
            $ref: '#/components/schemas/ProfileParameterMetadata'
      allOf:
        - $ref: '#/components/schemas/ProfilePolicyOptionMetadata'

    ArrayOfUserInputRequiredParameterMetadata:
      type: object
      description: |2
        A boxed array of *UserInputRequiredParameterMetadata*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/UserInputRequiredParameterMetadata'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ClusterProfileCompleteConfigSpec:
      type: object
      description: |2
        DataObject completely specifying the configuration of
        the profile.
      properties:
        complyProfile:
          description: |2
            User defined compliance profile for the cluster.
            
            If unset, clear the complyProfile.
          $ref: '#/components/schemas/ComplianceProfile'
      allOf:
        - $ref: '#/components/schemas/ClusterProfileConfigSpec'

    ArrayOfClusterProfileCompleteConfigSpec:
      type: object
      description: |2
        A boxed array of *ClusterProfileCompleteConfigSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ClusterProfileCompleteConfigSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ClusterProfileConfigInfo:
      type: object
      properties:
        complyProfile:
          description: |2
            Compliance profile for the cluster
          $ref: '#/components/schemas/ComplianceProfile'
      allOf:
        - $ref: '#/components/schemas/ProfileConfigInfo'

    ArrayOfClusterProfileConfigInfo:
      type: object
      description: |2
        A boxed array of *ClusterProfileConfigInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ClusterProfileConfigInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ClusterProfileConfigServiceCreateSpec:
      type: object
      description: |2
        DataObject which allows reconfiguration of a profile
        based on services that will be available on the cluster.
      properties:
        serviceType:
          description: |2
            Type of the service for which the ClusterProfile is being requested.
            
            If more than one service is specified, the created ClusterProfile
            will cater for all the services.
            Possible values are specified by
            *ClusterProfileServiceType_enum*.
            If unset, clear the compliance expressions on the profile.
          type: array
          items:
            type: string
      allOf:
        - $ref: '#/components/schemas/ClusterProfileConfigSpec'

    ArrayOfClusterProfileConfigServiceCreateSpec:
      type: object
      description: |2
        A boxed array of *ClusterProfileConfigServiceCreateSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ClusterProfileConfigServiceCreateSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ClusterProfileConfigSpec:
      type: object
      description: |2
        DataObject which is a baseclass for other configuration
        specifications.
      allOf:
        - $ref: '#/components/schemas/ClusterProfileCreateSpec'

    ArrayOfClusterProfileConfigSpec:
      type: object
      description: |2
        A boxed array of *ClusterProfileConfigSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ClusterProfileConfigSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ClusterProfileCreateSpec:
      type: object
      description: |2
        Base class for Cluster CreateSpecs
      allOf:
        - $ref: '#/components/schemas/ProfileCreateSpec'

    ArrayOfClusterProfileCreateSpec:
      type: object
      description: |2
        A boxed array of *ClusterProfileCreateSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ClusterProfileCreateSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ActiveDirectoryProfile:
      type: object
      description: |2
        The *ActiveDirectoryProfile* data object represents Active Directory
        configuration.
        
        Use the *ApplyProfile.policy* list for
        access to configuration data for the Active Directory profile. Use the
        *ApplyProfile.property* list for access to subprofiles, if any.
      allOf:
        - $ref: '#/components/schemas/ApplyProfile'

    ArrayOfActiveDirectoryProfile:
      type: object
      description: |2
        A boxed array of *ActiveDirectoryProfile*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ActiveDirectoryProfile'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    AnswerFile:
      type: object
      description: |2
        The *AnswerFile* data object contains host-specific information that a host
        will use in combination with a *HostProfile* for configuration.
        
        Answer files are stored on the vCenter Server, along with host profiles.
        An answer file is always associated with a particular host.
        
        To supply host-specific data:
        - Specify deferred parameters when you call the
          *HostProfile*.*HostProfile.ExecuteHostProfile*
          method. The host profile engine will verify the set of parameters for the
          additional configuration data.
        - Use the complete required input list
          (*ProfileExecuteResult*.*ProfileExecuteResult.requireInput*\[\])
          as user input for the
          *HostProfileManager*.*HostProfileManager.ApplyHostConfig_Task*
          method. When you apply the profile, the vCenter Server saves the additional configuration
          data in the *AnswerFile.userInput* list.
        - Use the *HostProfileManager*.*HostProfileManager.UpdateAnswerFile_Task* method. This method will update an existing answer file or create a new one.
      properties:
        userInput:
          description: |2
            List containing host-specific configuration data.
          type: array
          items:
            $ref: '#/components/schemas/ProfileDeferredPolicyOptionParameter'
        createdTime:
          description: |2
            Time at which the answer file was created.
          type: string
          format: date-time
        modifiedTime:
          description: |2
            Time at which the answer file was last modified.
          type: string
          format: date-time
      required:
        - createdTime
        - modifiedTime
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfAnswerFile:
      type: object
      description: |2
        A boxed array of *AnswerFile*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/AnswerFile'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    AnswerFileStatusResult:
      type: object
      description: |2
        The *AnswerFileStatusResult* data object shows the validity of the
        answer file associated with a host.
      properties:
        checkedTime:
          description: |2
            Time that the answer file status was determined.
          type: string
          format: date-time
        host:
          description: |2
            Host associated with the answer file.
            
            Refers instance of *HostSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
        status:
          description: |2
            Status of the answer file.
            
            See *HostProfileManagerAnswerFileStatus_enum* for valid values.
          type: string
        error:
          description: |2
            If <code>status</code> is <code>invalid</code>, this property contains a list
            of status error objects.
          type: array
          items:
            $ref: '#/components/schemas/AnswerFileStatusError'
      required:
        - checkedTime
        - host
        - status
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfAnswerFileStatusResult:
      type: object
      description: |2
        A boxed array of *AnswerFileStatusResult*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/AnswerFileStatusResult'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    AnswerFileStatusError:
      type: object
      description: |2
        The *AnswerFileStatusError* data object describes an answer file
        error and identifies the profile or policy option with which the error
        is associated.
      properties:
        userInputPath:
          description: |2
            Path to a profile or a policy option for host-specific data.
          $ref: '#/components/schemas/ProfilePropertyPath'
        errMsg:
          description: |2
            Message describing the error.
          $ref: '#/components/schemas/LocalizableMessage'
      required:
        - userInputPath
        - errMsg
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfAnswerFileStatusError:
      type: object
      description: |2
        A boxed array of *AnswerFileStatusError*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/AnswerFileStatusError'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    AuthenticationProfile:
      type: object
      description: |2
        The *AuthenticationProfile* data object represents the host configuration
        for authentication.
        
        If a profile plug-in defines policies or subprofiles, use the
        *ApplyProfile.policy* or *ApplyProfile.property*
        list to access the additional configuration data.
      properties:
        activeDirectory:
          description: |2
            Subprofile representing the Active Directory configuration.
          $ref: '#/components/schemas/ActiveDirectoryProfile'
      allOf:
        - $ref: '#/components/schemas/ApplyProfile'

    ArrayOfAuthenticationProfile:
      type: object
      description: |2
        A boxed array of *AuthenticationProfile*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/AuthenticationProfile'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DateTimeProfile:
      type: object
      description: |2
        The *DateTimeProfile* data object represents host date and time configuration.
        
        Use the *ApplyProfile.policy* list for access to configuration data
        for the date and time profile. Use the *ApplyProfile.property* list
        for access to subprofiles, if any.
      allOf:
        - $ref: '#/components/schemas/ApplyProfile'

    ArrayOfDateTimeProfile:
      type: object
      description: |2
        A boxed array of *DateTimeProfile*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DateTimeProfile'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DvsHostVNicProfile:
      type: object
      description: |2
        The *DvsHostVNicProfile* data object describes the IP configuration
        for a host Virtual NIC connected to a distributed virtual switch.
        
        The *DvsVNicProfile.ipConfig* property contains the Virtual NIC IP address.
        If a profile plug-in defines policies or subprofiles, use the
        *ApplyProfile.policy* or *ApplyProfile.property*
        list to access the additional configuration data.
      allOf:
        - $ref: '#/components/schemas/DvsVNicProfile'

    ArrayOfDvsHostVNicProfile:
      type: object
      description: |2
        A boxed array of *DvsHostVNicProfile*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DvsHostVNicProfile'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DvsProfile:
      type: object
      description: |2
        The *DvsProfile* data object represents the distributed virtual switch
        to which this host is connected.
        
        If a profile plug-in defines policies or subprofiles,
        use the *ApplyProfile.policy* or *ApplyProfile.property*
        list to access the additional configuration data.
      properties:
        key:
          description: |2
            Linkable identifier.
          type: string
        name:
          description: |2
            Unique identifier for the distributed virtual switch.
          type: string
        uplink:
          description: |2
            List of subprofiles that map physical NICs to uplink ports.
            
            Use the *PnicUplinkProfile.key* property to access
            subprofiles in the list.
          type: array
          items:
            $ref: '#/components/schemas/PnicUplinkProfile'
      required:
        - key
        - name
      allOf:
        - $ref: '#/components/schemas/ApplyProfile'

    ArrayOfDvsProfile:
      type: object
      description: |2
        A boxed array of *DvsProfile*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DvsProfile'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DvsServiceConsoleVNicProfile:
      type: object
      description: |2
        The *DvsServiceConsoleVNicProfile* data object describes the IP configuration
        for a service console Virtual NIC connected to a distributed virtual switch.
        
        The *DvsVNicProfile.ipConfig* property contains the Virtual NIC IP address.
        If a profile plug-in defines policies or subprofiles, use the
        *ApplyProfile.policy* or *ApplyProfile.property*
        list to access the additional configuration data.
      allOf:
        - $ref: '#/components/schemas/DvsVNicProfile'

    ArrayOfDvsServiceConsoleVNicProfile:
      type: object
      description: |2
        A boxed array of *DvsServiceConsoleVNicProfile*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DvsServiceConsoleVNicProfile'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DvsVNicProfile:
      type: object
      description: |2
        The *DvsVNicProfile* data object is the base object
        for host and service console Virtual NIC subprofiles.
        
        If a profile plug-in defines additional policies or subprofiles, use the
        *ApplyProfile.policy* or *ApplyProfile.property*
        list to access the configuration data.
      properties:
        key:
          description: |2
            Linkable identifier.
          type: string
        ipConfig:
          description: |2
            IP address for the Virtual NIC belonging to a distributed virtual switch.
          $ref: '#/components/schemas/IpAddressProfile'
      required:
        - key
        - ipConfig
      allOf:
        - $ref: '#/components/schemas/ApplyProfile'

    ArrayOfDvsVNicProfile:
      type: object
      description: |2
        A boxed array of *DvsVNicProfile*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DvsVNicProfile'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ProfileExecuteResult:
      type: object
      description: |2
        The *ProfileExecuteResult* data object contains the results from a
        *HostProfile*.*HostProfile.ExecuteHostProfile*
        operation.
      properties:
        status:
          description: |2
            Status of the profile execution operation.
            
            The value is a string that contains
            one of the *ProfileExecuteResultStatus_enum* enumerations.
          type: string
        configSpec:
          description: |2
            Host configuration specification.
            
            This data is valid only if
            the <code>status</code> value is <code>success</code>.
            See *ProfileExecuteResultStatus_enum*.
            
            Use this data object when you apply the configuration
            to a host. See the <code>configSpec</code> parameter to the
            *HostProfileManager*.*HostProfileManager.ApplyHostConfig_Task*
            method.
          $ref: '#/components/schemas/HostConfigSpec'
        inapplicablePath:
          description: |2
            List of property paths.
            
            Each path identifies a policy that does not apply
            to this host. For example, if the precheck policies for a port group are not satisfied,
            the port group will not be created when you apply the profile to the host.
            Based on this information, the client might not display that part of the profile tree.
          type: array
          items:
            type: string
        requireInput:
          description: |2
            List that describes the required input for host configuration and identifies
            any policy options that still require parameter data.
            
            Each entry in the list
            specifies the path to a policy and a parameter list. If the call to
            *HostProfile.ExecuteHostProfile* includes deferred parameters,
            the <code>requireInput</code> entries
            (<code>requireInput\[\].</code>*ProfileDeferredPolicyOptionParameter.parameter*\[\])
            will be populated with the parameter data that was passed to the execute method.
            For policies that still require input data, the parameter list in the corresponding
            entry will be null.
            
            A vSphere client that displays a GUI can use this information to show the host-specific
            configuration policy options. The client can highlight required input fields
            and ask the user for data in increments instead of collecting all of the input at once.
            For example, in the first pass, the client collects a minimum of user input and
            sends that to the Server. The Server evaluates the profile and might decide to
            invalidate a particular part of the subtree or enable a new
            subtree in the profile. This would result in a new set of invalid paths
            (*ProfileExecuteResult.inapplicablePath*\[\]) and
            required input property paths
            (*ProfileDeferredPolicyOptionParameter*.*ProfileDeferredPolicyOptionParameter.inputPath*).
            The client can make a series of calls to the method until it achieves a success status.
            
            When *HostProfile.ExecuteHostProfile* returns a success status,
            the <code>requireInput</code> list contains the complete list of parameters,
            consisting of the following data:
            - Deferred parameter values resolved through successive calls to
              *HostProfile.ExecuteHostProfile*.
            - Default parameter values from the host configuration.
            - User-specified values that override the defaults.
              
            You can specify the returned <code>requireInput</code> list in the
            <code>userInput</code> parameter to the
            *HostProfileManager*.*HostProfileManager.ApplyHostConfig_Task*
            method. The Server will use the list to update the *AnswerFile*
            associated with the host.
          type: array
          items:
            $ref: '#/components/schemas/ProfileDeferredPolicyOptionParameter'
        error:
          description: |2
            List of errors that were encountered during execute.
            
            This field will be set if status is set to error.
          type: array
          items:
            $ref: '#/components/schemas/ProfileExecuteError'
      required:
        - status
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfProfileExecuteResult:
      type: object
      description: |2
        A boxed array of *ProfileExecuteResult*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ProfileExecuteResult'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ProfileExecuteError:
      type: object
      description: |2
        The *ProfileExecuteError* data object
        describes an error encountered during host profile execution.
      properties:
        path:
          description: |2
            Path to the profile or policy with which the error is associated.
          $ref: '#/components/schemas/ProfilePropertyPath'
        message:
          description: |2
            Message describing the error.
          $ref: '#/components/schemas/LocalizableMessage'
      required:
        - message
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfProfileExecuteError:
      type: object
      description: |2
        A boxed array of *ProfileExecuteError*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ProfileExecuteError'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    FirewallProfile:
      type: object
      description: |2
        The *FirewallProfile* data object represents a host firewall configuration.
        
        If a profile plug-in defines policies or subprofiles, use the
        *ApplyProfile.policy* or *ApplyProfile.property*
        list to access the additional configuration data.
      properties:
        ruleset:
          description: |2
            List of Rulesets that will be configured for the firewall subprofile.
            
            The rulesets can be enabled or disabled from the profile.
          type: array
          items:
            $ref: '#/components/schemas/FirewallProfileRulesetProfile'
      allOf:
        - $ref: '#/components/schemas/ApplyProfile'

    ArrayOfFirewallProfile:
      type: object
      description: |2
        A boxed array of *FirewallProfile*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/FirewallProfile'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    FirewallProfileRulesetProfile:
      type: object
      properties:
        key:
          description: |2
            Linkable identifier.
          type: string
      required:
        - key
      allOf:
        - $ref: '#/components/schemas/ApplyProfile'

    ArrayOfFirewallProfileRulesetProfile:
      type: object
      description: |2
        A boxed array of *FirewallProfileRulesetProfile*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/FirewallProfileRulesetProfile'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostApplyProfile:
      type: object
      description: |2
        The *HostApplyProfile* data object provides access to subprofiles
        that contain configuration data for different host capabilities.
        
        The Profile Engine will use any configuration data that you supply
        to overwrite the host configuration. See the *HostProfile.ExecuteHostProfile*
        and *HostProfileManager.ApplyHostConfig_Task* methods.
      properties:
        memory:
          description: |2
            Memory configuration for the host.
            
            This may not be valid for all versions of the host.
          $ref: '#/components/schemas/HostMemoryProfile'
        storage:
          description: |2
            Host storage configuration.
          $ref: '#/components/schemas/StorageProfile'
        network:
          description: |2
            Network configuration.
          $ref: '#/components/schemas/NetworkProfile'
        datetime:
          description: |2
            Date and time configuration.
          $ref: '#/components/schemas/DateTimeProfile'
        firewall:
          description: |2
            Firewall configuration.
          $ref: '#/components/schemas/FirewallProfile'
        security:
          description: |2
            Security Configuration of the host.
            
            The security subprofile can include data such as administrator passwords.
          $ref: '#/components/schemas/SecurityProfile'
        service:
          description: |2
            Host configuration for services.
            
            Use the *ServiceProfile.key* property
            to access a subprofile in the list.
          type: array
          items:
            $ref: '#/components/schemas/ServiceProfile'
        option:
          description: |2
            List of subprofiles representing advanced configuration options.
            
            Use the *OptionProfile.key* property to access a subprofile
            in the list.
          type: array
          items:
            $ref: '#/components/schemas/OptionProfile'
        userAccount:
          description: |2
            List of subprofiles for user accounts to be configured on the host.
            
            Use the *UserProfile.key* property to access a subprofile
            in the list.
          type: array
          items:
            $ref: '#/components/schemas/UserProfile'
        usergroupAccount:
          description: |2
            List of subprofiles for user groups to be configured on the host.
            
            Use the *UserGroupProfile.key* property to access a subprofile
            in the list.
          type: array
          items:
            $ref: '#/components/schemas/UserGroupProfile'
        authentication:
          description: |2
            Authentication Configuration.
          $ref: '#/components/schemas/AuthenticationProfile'
      allOf:
        - $ref: '#/components/schemas/ApplyProfile'

    ArrayOfHostApplyProfile:
      type: object
      description: |2
        A boxed array of *HostApplyProfile*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostApplyProfile'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostMemoryProfile:
      type: object
      description: |2
        The *HostMemoryProfile* data object represents
        memory configuration for the host.
        
        This may not be valid all versions of the host.
        
        Use the *ApplyProfile.policy* list for access to configuration data
        for the host memory profile. Use the *ApplyProfile.property* list
        for access to subprofile configuration data, if any.
      allOf:
        - $ref: '#/components/schemas/ApplyProfile'

    ArrayOfHostMemoryProfile:
      type: object
      description: |2
        A boxed array of *HostMemoryProfile*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostMemoryProfile'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostPortGroupProfile:
      type: object
      description: |2
        The *HostPortGroupProfile* data object represents the subprofile
        for a port group that will be used by the ESX host.
        
        If a profile plug-in defines policies or subprofiles, use the
        *ApplyProfile.policy* or *ApplyProfile.property*
        list to access the additional configuration data.
      properties:
        ipConfig:
          description: |2
            IP address configuration for the Host network.
          $ref: '#/components/schemas/IpAddressProfile'
      required:
        - ipConfig
      allOf:
        - $ref: '#/components/schemas/PortGroupProfile'

    ArrayOfHostPortGroupProfile:
      type: object
      description: |2
        A boxed array of *HostPortGroupProfile*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostPortGroupProfile'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostProfileCompleteConfigSpec:
      type: object
      description: |2
        The *HostProfileCompleteConfigSpec* data object
        specifies the complete configuration for a host profile.
      properties:
        applyProfile:
          description: |2
            Profile that contains configuration data for the host.
          $ref: '#/components/schemas/HostApplyProfile'
        customComplyProfile:
          description: |2
            User defined compliance profile.
            
            Reserved for future use.
          $ref: '#/components/schemas/ComplianceProfile'
        disabledExpressionListChanged:
          description: |2
            Flag indicating if this configuration specification contains changes
            in the *HostProfileCompleteConfigSpec.disabledExpressionList*.
            
            If False, the Profile Engine ignores the contents of the disabled expression list.
          type: boolean
        disabledExpressionList:
          description: |2
            List of expressions to be disabled.
            
            Each entry in the list specifies
            a *ProfileExpression*.*ProfileExpression.id*.
            All expressions are enabled by default.
            
            If you set *HostProfileCompleteConfigSpec.disabledExpressionListChanged*
            to True, the Profile Engine uses the contents of this list to replace the contents
            of the *HostProfile*.*Profile.config*.*HostProfileConfigInfo.disabledExpressionList*.
            
            The expression list is contained in the
            *HostProfileConfigInfo.defaultComplyProfile*.
            The Profile Engine automatically generates the default compliance profile
            when you create a host profile.
          type: array
          items:
            type: string
        validatorHost:
          description: |2
            Host for profile validation.
            
            This can be a host on which the profile
            is intended to be used. If you do not specify a validator host,
            the Profile Engine uses the *HostProfile*.*HostProfile.referenceHost*
            to validate the profile.
            
            Refers instance of *HostSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
        validating:
          description: |2
            If "false", then the host profile will be saved without being validated.
            
            The default if not specified is "true".
            This option should be used with caution, since the resulting host profile
            will not be checked for errors.
          type: boolean
        hostConfig:
          description: |2
            Host profile configuration data and compliance information.
            
            If *HostProfileCompleteConfigSpec.hostConfig* is set,
            then the HostApplyProfile
            *HostProfileCompleteConfigSpec.applyProfile* and
            ComplianceProfile
            *HostProfileCompleteConfigSpec.customComplyProfile*
            should not be set in CompleteConfigSpec.
          $ref: '#/components/schemas/HostProfileConfigInfo'
      required:
        - disabledExpressionListChanged
      allOf:
        - $ref: '#/components/schemas/HostProfileConfigSpec'

    ArrayOfHostProfileCompleteConfigSpec:
      type: object
      description: |2
        A boxed array of *HostProfileCompleteConfigSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostProfileCompleteConfigSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostProfileConfigInfo:
      type: object
      description: |2
        The *HostProfileConfigInfo* data object
        contains host profile data and information about profile compliance.
      properties:
        applyProfile:
          description: |2
            Profile data for host configuration.
          $ref: '#/components/schemas/HostApplyProfile'
        defaultComplyProfile:
          description: |2
            Default compliance profile.
            
            The ESX Server uses the <code>applyProfile</code>
            (*HostProfile*.*Profile.config*.*HostProfileConfigInfo.applyProfile*)
            to generate the default compliance profile when you create a host profile.
            When the <code>applyProfile</code> is modified, the Server automatically
            updates the compliance profile to match it.
          $ref: '#/components/schemas/ComplianceProfile'
        defaultComplyLocator:
          description: |2
            List of compliance locators.
            
            Each locator specifies an association between
            the <code>applyProfile</code> and the <code>defaultComplyProfile</code>.
            The association identifies a component profile and the expression generated
            by the profile. vSphere clients can use this data to provide contextual
            information to the user.
          type: array
          items:
            $ref: '#/components/schemas/ComplianceLocator'
        customComplyProfile:
          description: |2
            User defined compliance profile.
            
            Reserved for future use.
          $ref: '#/components/schemas/ComplianceProfile'
        disabledExpressionList:
          description: |2
            Disabled expressions in the default compliance profile
            (<code>DefaultComplyProfile</code>).
            
            Use this property to specify which expressions are disabled.
            All expressions are enabled by default.
          type: array
          items:
            type: string
        description:
          description: |2
            Localized description of the profile.
          $ref: '#/components/schemas/ProfileDescription'
      allOf:
        - $ref: '#/components/schemas/ProfileConfigInfo'

    ArrayOfHostProfileConfigInfo:
      type: object
      description: |2
        A boxed array of *HostProfileConfigInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostProfileConfigInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostProfileConfigSpec:
      type: object
      description: |2
        *HostProfileConfigSpec* is the base data object
        for all *HostProfile* configuration specifications.
      allOf:
        - $ref: '#/components/schemas/ProfileCreateSpec'

    ArrayOfHostProfileConfigSpec:
      type: object
      description: |2
        A boxed array of *HostProfileConfigSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostProfileConfigSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostProfileHostBasedConfigSpec:
      type: object
      description: |2
        The *HostProfileHostBasedConfigSpec* data object
        specifies the host from which configuration data is to be extracted
        and the profile(s) to be created or updated.
      properties:
        host:
          description: |2
            ESX host.
            
            Refers instance of *HostSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
        useHostProfileEngine:
          description: |2
            Flag indicating if the Profile Engine should use the profile
            plug-ins present on the host to create the profile.
            
            If <code>true</code>, the host Profile Engine uses the vSphere 5.0
            (or later) profile plug-ins. The resulting profile is not compatible
            with legacy hosts (pre 5.0). If <code>false</code> or not specified,
            the Profile Engine creates a legacy host profile.
          type: boolean
      required:
        - host
      allOf:
        - $ref: '#/components/schemas/HostProfileConfigSpec'

    ArrayOfHostProfileHostBasedConfigSpec:
      type: object
      description: |2
        A boxed array of *HostProfileHostBasedConfigSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostProfileHostBasedConfigSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostProfileSerializedHostProfileSpec:
      type: object
      description: |2
        The *HostProfileSerializedHostProfileSpec* data object
        contains a string representation of a host profile.
        
        Use this object when you
        create a host profile from a file.
      properties:
        validatorHost:
          description: |2
            Host for profile validation.
            
            This can be a host on which
            the profile is intended to be used.
            
            Refers instance of *HostSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
        validating:
          description: |2
            If "false", then the host profile will be saved without being validated.
            
            The default if not specified is "true".
            This option should be used with caution, since the resulting host profile
            will not be checked for errors.
          type: boolean
      allOf:
        - $ref: '#/components/schemas/ProfileSerializedCreateSpec'

    ArrayOfHostProfileSerializedHostProfileSpec:
      type: object
      description: |2
        A boxed array of *HostProfileSerializedHostProfileSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostProfileSerializedHostProfileSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostProfileValidationFailureInfo:
      type: object
      description: |2
        This defines the validation result for the host profile.
      properties:
        name:
          description: |2
            The name of host profile to be validated.
          type: string
        annotation:
          description: |2
            Host profile annotation at update.
          type: string
        updateType:
          description: |2
            Host profile update type.
            
            See the enumerate class
            <code>UpdateType</code> above for the valid values.
          type: string
        host:
          description: |2
            The host where the host profile is updated from.
            
            Refers instance of *HostSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
        applyProfile:
          description: |2
            The host configuration after validation.
          $ref: '#/components/schemas/HostApplyProfile'
        failures:
          description: |2
            List of failures in the host profile configuration.
          type: array
          items:
            $ref: '#/components/schemas/ProfileUpdateFailedUpdateFailure'
        faults:
          description: |2
            The <code>MethodFault</code>s happened at validation.
          type: array
          items:
            $ref: '#/components/schemas/MethodFault'
      required:
        - name
        - annotation
        - updateType
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostProfileValidationFailureInfo:
      type: object
      description: |2
        A boxed array of *HostProfileValidationFailureInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostProfileValidationFailureInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostSpecification:
      type: object
      description: |2
        The host specification data are those needed at host boot time to create and
        configure virtual devices and host services.
        
        The *HostSpecification* data object contains a collection of host sub
        specification data.
        For host sub specification data, see
        *HostSubSpecification*
        for details.
      properties:
        createdTime:
          description: |2
            Time at which the host specification was created.
          type: string
          format: date-time
        lastModified:
          description: |2
            Time at which the host specification was last modified.
            
            If it isn't set,
            it is the same as <code>createdTime</code>.
          type: string
          format: date-time
        host:
          description: |2
            The host that the spec data belongs to.
            
            Refers instance of *HostSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
        subSpecs:
          description: |2
            The collection of the host sub specifications.
            
            It is optional.
          type: array
          items:
            $ref: '#/components/schemas/HostSubSpecification'
        changeID:
          description: |2
            The change ID for querying the host specification data updated in a
            time period.
            
            It has a format of timestamp:change\_number, where
            timestamp is the decimal string of a start time, and change\_number is
            the decimal string of an auto incremented variable counting from the
            start time.
          type: string
      required:
        - createdTime
        - host
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostSpecification:
      type: object
      description: |2
        A boxed array of *HostSpecification*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostSpecification'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostSubSpecification:
      type: object
      description: |2
        Host sub specification data are the data used when create a virtual
        device, and/or configure the virtual device and its related
        host services.
        
        A typical example of host sub specification data is the DVS host view
        specification, which is used when create DVS host view on an ESXi
        host and configure the virtual switch on the host.
        The introduction of this type of data is for improving the
        availability of the ESXi host management. For example, when
        the VirtualCenter server is not available, an ESXi host will
        have enough information to reconfigure DVS host view properly
        when the ESXi host is booted from stateless or stateless caching.
        Host sub specification data are data for VMware internal data
        structure used in virtual device creation and configuration.
        They are different to *AnswerFile*
        which are from public knowledge domain or the public API
        of VMware ESXi host services.
        When the host sub specification data for a single feature
        are stored in multiple host sub specification data objects,
        it is the responsibility of the host specification source
        in this feature to guarantee the completeness and consistency
        of these host sub specification objects.
      properties:
        name:
          description: |2
            The full name of the host sub specification.
            
            The format of this member
            variable is:
            CompanyName\_ProductName\_SubSpecName.
            Thus, name conflict is avoided by containing the
            <code>company name</code>, <code>product name</code>, and <code> sub
            specification name</code> in this full name.
          type: string
        createdTime:
          description: |2
            Time at which the host sub specification was created.
          type: string
          format: date-time
        data:
          description: |2
            The host sub specification data
          type: array
          items:
            type: integer
            minimum: -128
            maximum: 127
        binaryData:
          description: |2
            The host sub specification data in Binary for wire efficiency.
          type: string
          format: byte
      required:
        - name
        - createdTime
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostSubSpecification:
      type: object
      description: |2
        A boxed array of *HostSubSpecification*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostSubSpecification'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    IpAddressProfile:
      type: object
      description: |2
        The *IpAddressProfile* represents the Virtual NIC IP address.
        
        The *ApplyProfile.policy* property contains
        the configuration data values for the IP address.
      allOf:
        - $ref: '#/components/schemas/ApplyProfile'

    ArrayOfIpAddressProfile:
      type: object
      description: |2
        A boxed array of *IpAddressProfile*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/IpAddressProfile'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    IpRouteProfile:
      type: object
      description: |2
        The *IpRouteProfile* data object represents the host IP route configuration.
        
        If a profile plug-in defines policies or subprofiles, use the
        *ApplyProfile.policy* or *ApplyProfile.property*
        list to access the additional configuration data.
      properties:
        staticRoute:
          description: |2
            List of static routes to be configured.
          type: array
          items:
            $ref: '#/components/schemas/StaticRouteProfile'
      allOf:
        - $ref: '#/components/schemas/ApplyProfile'

    ArrayOfIpRouteProfile:
      type: object
      description: |2
        A boxed array of *IpRouteProfile*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/IpRouteProfile'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    NasStorageProfile:
      type: object
      description: |2
        The *NasStorageProfile* data object represents one NAS datastore configuration.
        
        Use the *ApplyProfile.policy* list for access to configuration data
        for the NAS storage profile. Use the *ApplyProfile.property* list
        for access to subprofile configuration data, if any.
      properties:
        key:
          description: |2
            Linkable identifier.
          type: string
      required:
        - key
      allOf:
        - $ref: '#/components/schemas/ApplyProfile'

    ArrayOfNasStorageProfile:
      type: object
      description: |2
        A boxed array of *NasStorageProfile*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/NasStorageProfile'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    NetStackInstanceProfile:
      type: object
      description: |2
        The *NetStackInstanceProfile* data object represents a subprofile
        for a netStackInstance.
      properties:
        key:
          description: |2
            Linkable identifier.
          type: string
        dnsConfig:
          description: |2
            DnsConfig SubProfile for this instance of the stack.
          $ref: '#/components/schemas/NetworkProfileDnsConfigProfile'
        ipRouteConfig:
          description: |2
            IpRoute SubProfile for this instance of the stack.
          $ref: '#/components/schemas/IpRouteProfile'
      required:
        - key
        - dnsConfig
        - ipRouteConfig
      allOf:
        - $ref: '#/components/schemas/ApplyProfile'

    ArrayOfNetStackInstanceProfile:
      type: object
      description: |2
        A boxed array of *NetStackInstanceProfile*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/NetStackInstanceProfile'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    NetworkPolicyProfile:
      type: object
      description: |2
        The *NetworkPolicyProfile* data object represents a
        network policy.
        
        The *ApplyProfile.policy* property
        contains network configuration data values.
      allOf:
        - $ref: '#/components/schemas/ApplyProfile'

    ArrayOfNetworkPolicyProfile:
      type: object
      description: |2
        A boxed array of *NetworkPolicyProfile*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/NetworkPolicyProfile'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    NetworkProfile:
      type: object
      description: |2
        The *NetworkProfile* data object contains a set of subprofiles for
        network configuration.
      properties:
        vswitch:
          description: |2
            List of virtual switch subprofiles.
            
            Use the *VirtualSwitchProfile.key* property to access
            a subprofile in the list.
          type: array
          items:
            $ref: '#/components/schemas/VirtualSwitchProfile'
        vmPortGroup:
          description: |2
            List of port groups for use by virtual machines.
            
            Use the *VmPortGroupProfile*.*PortGroupProfile.key*
            property to access a port group in the list.
          type: array
          items:
            $ref: '#/components/schemas/VmPortGroupProfile'
        hostPortGroup:
          description: |2
            List of port groups for use by the host.
            
            Use the *HostPortGroupProfile*.*PortGroupProfile.key* property
            to access port groups in the list.
          type: array
          items:
            $ref: '#/components/schemas/HostPortGroupProfile'
        serviceConsolePortGroup:
          description: |2
            List of port groups for use by the service console.
            
            The Profile Engine uses this field only when applying a profile
            to a host that has a service console.
          type: array
          items:
            $ref: '#/components/schemas/ServiceConsolePortGroupProfile'
        dnsConfig:
          description: |2
            DNS (Domain Name System) configuration subprofile.
          $ref: '#/components/schemas/NetworkProfileDnsConfigProfile'
        ipRouteConfig:
          description: |2
            Subprofile that describes the IP Route
            configuration for the VMKernel gateway.
          $ref: '#/components/schemas/IpRouteProfile'
        consoleIpRouteConfig:
          description: |2
            Subprofile that describes the IP Route configuration
            for the Service Console gateway.
          $ref: '#/components/schemas/IpRouteProfile'
        pnic:
          description: |2
            List of subprofiles that represent physical NIC configuration.
            
            Use the *PhysicalNicProfile.key* property to access a
            subprofile in the list.
          type: array
          items:
            $ref: '#/components/schemas/PhysicalNicProfile'
        dvswitch:
          description: |2
            List of subprofiles for distributed virtual switches to which this host is connected.
            
            Use the *DvsProfile.key* property to access a subprofile in the list.
          type: array
          items:
            $ref: '#/components/schemas/DvsProfile'
        dvsServiceConsoleNic:
          description: |2
            List of subprofiles for service console Virtual NICs connected to a distributed virtual switch.
            
            Use the *DvsServiceConsoleVNicProfile*.*DvsVNicProfile.key* property
            to access a subprofile in the list.
          type: array
          items:
            $ref: '#/components/schemas/DvsServiceConsoleVNicProfile'
        dvsHostNic:
          description: |2
            List of subprofiles for host Virtual NICs connected to a distributed virtual switch.
            
            Use the *DvsHostVNicProfile*.*DvsVNicProfile.key* property
            to access a subprofile in the list.
          type: array
          items:
            $ref: '#/components/schemas/DvsHostVNicProfile'
        nsxHostNic:
          description: |2
            List of subprofiles for host Virtual NICs connected to a NSX logic switch.
            
            Use the *NsxHostVNicProfile*.*NsxHostVNicProfile.key* property
            to access a subprofile in the list.
          type: array
          items:
            $ref: '#/components/schemas/NsxHostVNicProfile'
        netStackInstance:
          description: |2
            List of NetStackInstance subprofiles.
            
            Use the *NetStackInstanceProfile.key* property to access
            a subprofile in the list.
          type: array
          items:
            $ref: '#/components/schemas/NetStackInstanceProfile'
        opaqueSwitch:
          description: |2
            OpaqueSwitch subprofile.
          $ref: '#/components/schemas/OpaqueSwitchProfile'
      allOf:
        - $ref: '#/components/schemas/ApplyProfile'

    ArrayOfNetworkProfile:
      type: object
      description: |2
        A boxed array of *NetworkProfile*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/NetworkProfile'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    NetworkProfileDnsConfigProfile:
      type: object
      description: |2
        The *NetworkProfileDnsConfigProfile* data object represents DNS configuration
        for the host.
        
        Use the *ApplyProfile.policy* list for
        access to configuration data for the DNS profile. Use the
        *ApplyProfile.property* list for access to subprofiles, if any.
      allOf:
        - $ref: '#/components/schemas/ApplyProfile'

    ArrayOfNetworkProfileDnsConfigProfile:
      type: object
      description: |2
        A boxed array of *NetworkProfileDnsConfigProfile*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/NetworkProfileDnsConfigProfile'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    NsxHostVNicProfile:
      type: object
      description: |2
        The *NsxHostVNicProfile* data object is the base object
        for host Virtual NIC connected to NSX logic switch subprofiles.
        
        If a profile plug-in defines additional policies or subprofiles, use the
        *ApplyProfile.policy* or *ApplyProfile.property*
        list to access the configuration data.
      properties:
        key:
          description: |2
            Linkable identifier.
          type: string
        ipConfig:
          description: |2
            IP address for the Virtual NIC belonging to a logic switch.
          $ref: '#/components/schemas/IpAddressProfile'
      required:
        - key
        - ipConfig
      allOf:
        - $ref: '#/components/schemas/ApplyProfile'

    ArrayOfNsxHostVNicProfile:
      type: object
      description: |2
        A boxed array of *NsxHostVNicProfile*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/NsxHostVNicProfile'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    OpaqueSwitchProfile:
      type: object
      description: |2
        The *OpaqueSwitchProfile* data object represents opaque switch
        configuration for the host.
        
        If a profile plug-in defines policies or subprofiles, use the
        *ApplyProfile.policy* or *ApplyProfile.property*
        list to access the additional configuration data.
      allOf:
        - $ref: '#/components/schemas/ApplyProfile'

    ArrayOfOpaqueSwitchProfile:
      type: object
      description: |2
        A boxed array of *OpaqueSwitchProfile*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/OpaqueSwitchProfile'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    OptionProfile:
      type: object
      description: |2
        The *OptionProfile* data object encapsulates one advanced configuration.
        
        Use the *ApplyProfile.policy* list for access to configuration data
        for the option profile. Use the *ApplyProfile.property* list for access
        to subprofile configuration data, if any.
      properties:
        key:
          description: |2
            Linkable identifier.
          type: string
      required:
        - key
      allOf:
        - $ref: '#/components/schemas/ApplyProfile'

    ArrayOfOptionProfile:
      type: object
      description: |2
        A boxed array of *OptionProfile*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/OptionProfile'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PermissionProfile:
      type: object
      description: |2
        The *PermissionProfile* data object represents the profile
        for a permission rule.
        
        Use the *ApplyProfile.policy* list for
        access to configuration data for the permission profile. Use the
        *ApplyProfile.property* list for access to subprofiles, if any.
      properties:
        key:
          type: string
      required:
        - key
      allOf:
        - $ref: '#/components/schemas/ApplyProfile'

    ArrayOfPermissionProfile:
      type: object
      description: |2
        A boxed array of *PermissionProfile*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PermissionProfile'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PhysicalNicProfile:
      type: object
      description: |2
        The *PhysicalNicProfile* data object represents physical NIC configuration.
        
        Use the *ApplyProfile.policy* list for access to configuration data
        for the physical NIC profile. Use the *ApplyProfile.property* list
        for access to subprofile configuration data, if any.
      properties:
        key:
          description: |2
            Linkable identifier.
          type: string
      required:
        - key
      allOf:
        - $ref: '#/components/schemas/ApplyProfile'

    ArrayOfPhysicalNicProfile:
      type: object
      description: |2
        A boxed array of *PhysicalNicProfile*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PhysicalNicProfile'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PnicUplinkProfile:
      type: object
      description: |2
        The *PnicUplinkProfile* data object specifies the mapping between
        a physical NIC and an uplink port.
        
        The *ApplyProfile.policy* property contains
        the configuration data values.
      properties:
        key:
          description: |2
            Linkable identifier.
          type: string
      required:
        - key
      allOf:
        - $ref: '#/components/schemas/ApplyProfile'

    ArrayOfPnicUplinkProfile:
      type: object
      description: |2
        A boxed array of *PnicUplinkProfile*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PnicUplinkProfile'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PortGroupProfile:
      type: object
      description: |2
        *PortGroupProfile* is the base class for the different port group
        subprofile objects.
      properties:
        key:
          description: |2
            Linkable identifier.
          type: string
        name:
          description: |2
            Name of the portgroup.
          type: string
        vlan:
          description: |2
            VLAN identifier for the port group.
          $ref: '#/components/schemas/VlanProfile'
        vswitch:
          description: |2
            Virtual switch to which the port group is connected.
          $ref: '#/components/schemas/VirtualSwitchSelectionProfile'
        networkPolicy:
          description: |2
            The network policy/policies applicable on the port group.
          $ref: '#/components/schemas/NetworkPolicyProfile'
      required:
        - key
        - name
        - vlan
        - vswitch
        - networkPolicy
      allOf:
        - $ref: '#/components/schemas/ApplyProfile'

    ArrayOfPortGroupProfile:
      type: object
      description: |2
        A boxed array of *PortGroupProfile*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PortGroupProfile'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualSwitchSelectionProfile:
      type: object
      description: |2
        The *VirtualSwitchSelectionProfile* data object represents
        the virtual switch that is connected to a port group.
        
        The *ApplyProfile.policy* property contains
        the configuration data values for the virtual switch.
      allOf:
        - $ref: '#/components/schemas/ApplyProfile'

    ArrayOfVirtualSwitchSelectionProfile:
      type: object
      description: |2
        A boxed array of *VirtualSwitchSelectionProfile*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualSwitchSelectionProfile'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VlanProfile:
      type: object
      description: |2
        The *VlanProfile* data object represents
        the VLAN identifier subprofile.
        
        The *ApplyProfile.policy*
        property contains the configuration data values for the VLAN identifier.
      allOf:
        - $ref: '#/components/schemas/ApplyProfile'

    ArrayOfVlanProfile:
      type: object
      description: |2
        A boxed array of *VlanProfile*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VlanProfile'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    AnswerFileCreateSpec:
      type: object
      description: |2
        Base class for host-specific answer file options.
      properties:
        validating:
          description: |2
            If "false", then the answer file will be saved without being validated.
            
            The default if not specified is "true".
            This option should be used with caution, since the resulting answer
            file will not be checked for errors.
          type: boolean
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfAnswerFileCreateSpec:
      type: object
      description: |2
        A boxed array of *AnswerFileCreateSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/AnswerFileCreateSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    AnswerFileOptionsCreateSpec:
      type: object
      description: |2
        The *AnswerFileOptionsCreateSpec*
        data object contains host-specific user input for an answer file.
      properties:
        userInput:
          description: |2
            List of parameters that contain host-specific data.
          type: array
          items:
            $ref: '#/components/schemas/ProfileDeferredPolicyOptionParameter'
      allOf:
        - $ref: '#/components/schemas/AnswerFileCreateSpec'

    ArrayOfAnswerFileOptionsCreateSpec:
      type: object
      description: |2
        A boxed array of *AnswerFileOptionsCreateSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/AnswerFileOptionsCreateSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    AnswerFileSerializedCreateSpec:
      type: object
      description: |2
        The *AnswerFileSerializedCreateSpec* data object
        contains a serialized string representation of host-specific data for an answer file.
      properties:
        answerFileConfigString:
          description: |2
            Host-specific user input.
          type: string
      required:
        - answerFileConfigString
      allOf:
        - $ref: '#/components/schemas/AnswerFileCreateSpec'

    ArrayOfAnswerFileSerializedCreateSpec:
      type: object
      description: |2
        A boxed array of *AnswerFileSerializedCreateSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/AnswerFileSerializedCreateSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ApplyHostProfileConfigurationResult:
      type: object
      description: |2
        The *ApplyHostProfileConfigurationResult* data object contains the remediation
        results for a host: the time that the remediation happens, the status,
        the errors, and optinal compliance result after reboot.
      properties:
        startTime:
          description: |2
            Time that the host config apply starts.
          type: string
          format: date-time
        completeTime:
          description: |2
            Time that the host config apply completes.
          type: string
          format: date-time
        host:
          description: |2
            Host to be remediated.
            
            Refers instance of *HostSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
        status:
          description: |2
            Status of the remediation.
            
            See
            *ApplyHostProfileConfigurationResultStatus_enum*
            for valid values.
          type: string
        errors:
          description: |2
            If <code>status</code> is <code>fail</code>, this property contains
            a list of status error message objects.
          type: array
          items:
            $ref: '#/components/schemas/MethodFault'
      required:
        - startTime
        - completeTime
        - host
        - status
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfApplyHostProfileConfigurationResult:
      type: object
      description: |2
        A boxed array of *ApplyHostProfileConfigurationResult*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ApplyHostProfileConfigurationResult'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ApplyHostProfileConfigurationSpec:
      type: object
      description: |2
        The data object that contains the objects needed to remediate a host
        in host profile batch apply.
      properties:
        host:
          description: |2
            The host to be remediated.
            
            Refers instance of *HostSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
        taskListRequirement:
          description: |2
            The task requirements from the results of
            *HostProfileManager.GenerateConfigTaskList* method
          type: array
          items:
            type: string
        taskDescription:
          description: |2
            Description of tasks that will be performed on the host
            to carry out HostProfile application.
          type: array
          items:
            $ref: '#/components/schemas/LocalizableMessage'
        rebootStateless:
          description: |2
            For a stateless host, there are two approaches to apply a host
            profile:
            (1) Reboot the host and apply the host profile at boot time.
            
            (2) Apply the host profile directly from VC. We call this as
            regular apply.
            The variable rebootStateless allows users to choose the first
            approach from the two approaches above:
            apply host profile by rebooting this host.
          type: boolean
        rebootHost:
          description: |2
            For regular apply, when some of the tasks requires reboot,
            that this variable is<code>true</code> indicates that the
            reboot automatically happens in the batch profile apply
            than that the user will manually reboot the system later.
            
            For stateless host, this variable takes effect only when
            the variable <code>rebootStateless</code> above is
            <code>false</code>.
          type: boolean
        faultData:
          description: |2
            This contains the error details.
          $ref: '#/components/schemas/MethodFault'
      required:
        - host
      allOf:
        - $ref: '#/components/schemas/ProfileExecuteResult'

    ArrayOfApplyHostProfileConfigurationSpec:
      type: object
      description: |2
        A boxed array of *ApplyHostProfileConfigurationSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ApplyHostProfileConfigurationSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostProfileManagerCompositionResult:
      type: object
      description: |2
        The data class for host profile composition result.
      properties:
        errors:
          description: |2
            The composition errors for all targets, for example, the source
            profile doesn't exist.
          type: array
          items:
            $ref: '#/components/schemas/LocalizableMessage'
        results:
          description: |2
            The array of
            *HostProfileManagerCompositionResultResultElement*
            for all the target host profiles.
          type: array
          items:
            $ref: '#/components/schemas/HostProfileManagerCompositionResultResultElement'
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostProfileManagerCompositionResult:
      type: object
      description: |2
        A boxed array of *HostProfileManagerCompositionResult*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostProfileManagerCompositionResult'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostProfileManagerCompositionResultResultElement:
      type: object
      description: |2
        Composition result for a specific target host profile.
      properties:
        target:
          description: |2
            The target host profile.
            
            Refers instance of *Profile*.
          $ref: '#/components/schemas/ManagedObjectReference'
        status:
          description: |2
            The composition status.
            
            See *HostProfileManagerCompositionResultResultElementStatus_enum*
            for details of supported values.
          type: string
        errors:
          description: |2
            The composition errors.
          type: array
          items:
            $ref: '#/components/schemas/LocalizableMessage'
      required:
        - target
        - status
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostProfileManagerCompositionResultResultElement:
      type: object
      description: |2
        A boxed array of *HostProfileManagerCompositionResultResultElement*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostProfileManagerCompositionResultResultElement'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostProfileManagerCompositionValidationResult:
      type: object
      description: |2
        The data class for the host profile composition validation
        results.
      properties:
        results:
          description: |2
            The array of
            *HostProfileManagerCompositionValidationResultResultElement*
            for all the target host profiles.
          type: array
          items:
            $ref: '#/components/schemas/HostProfileManagerCompositionValidationResultResultElement'
        errors:
          description: |2
            The common error happened at validation.
          type: array
          items:
            $ref: '#/components/schemas/LocalizableMessage'
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostProfileManagerCompositionValidationResult:
      type: object
      description: |2
        A boxed array of *HostProfileManagerCompositionValidationResult*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostProfileManagerCompositionValidationResult'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostProfileManagerCompositionValidationResultResultElement:
      type: object
      description: |2
        The host profile composition validation result for a specific target
        host profile.
      properties:
        target:
          description: |2
            The target host profile.
            
            Refers instance of *Profile*.
          $ref: '#/components/schemas/ManagedObjectReference'
        status:
          description: |2
            The composition validation status.
            
            See *HostProfileManagerCompositionValidationResultResultElementStatus_enum*
            for details of supported values.
          type: string
        errors:
          description: |2
            The composition validation errors.
          type: array
          items:
            $ref: '#/components/schemas/LocalizableMessage'
        sourceDiffForToBeMerged:
          description: |2
            When a selected sub profile for composition exists in both the
            source and target host profile, this member will contain the
            source side difference for the selected sub profiles.
          $ref: '#/components/schemas/HostApplyProfile'
        targetDiffForToBeMerged:
          description: |2
            Similar to the member <code>sourceDiffForToBeMerged</code> above
            but contains the target side difference.
            
            Comparing the same
            configurations in these two variables will show the changes for
            the configurations that exist in both source and target host
            profile.
          $ref: '#/components/schemas/HostApplyProfile'
        toBeAdded:
          description: |2
            The sub profiles doesn't exist in the target and will be added to
            the target at host profile composition.
          $ref: '#/components/schemas/HostApplyProfile'
        toBeDeleted:
          description: |2
            The sub profiles exists in the target but not in the source and will
            be deleted from the target at host profile composition.
          $ref: '#/components/schemas/HostApplyProfile'
        toBeDisabled:
          description: |2
            The sub profiles to be disabled in the target host profiles.
          $ref: '#/components/schemas/HostApplyProfile'
        toBeEnabled:
          description: |2
            The sub profiles to be enabled in the target host profiles.
          $ref: '#/components/schemas/HostApplyProfile'
        toBeReenableCC:
          description: |2
            The sub profile to be unset ignoring compliance check
            in the target host profile.
          $ref: '#/components/schemas/HostApplyProfile'
      required:
        - target
        - status
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostProfileManagerCompositionValidationResultResultElement:
      type: object
      description: |2
        A boxed array of *HostProfileManagerCompositionValidationResultResultElement*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostProfileManagerCompositionValidationResultResultElement'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostProfileManagerConfigTaskList:
      type: object
      description: |2
        The *HostProfileManagerConfigTaskList* data object
        represents a set of tasks to be performed on a host during host profile application.
      properties:
        configSpec:
          description: |2
            Set of configuration changes to be applied to the host.
          $ref: '#/components/schemas/HostConfigSpec'
        taskDescription:
          description: |2
            Description of tasks that will be performed on the host
            to carry out HostProfile application.
          type: array
          items:
            $ref: '#/components/schemas/LocalizableMessage'
        taskListRequirement:
          description: |2
            A set of requirements whose actions must be fulfilled before and/or
            after the task list is applied on an ESXi host, e.g.
            
            whether the ESXi
            host must be in maintenance mode prior to applying the <code>configSpec</code>,
            or whether the host will need to be rebooted after applying the <code>configSpec</code>.
            See *HostProfileManagerTaskListRequirement_enum* for
            details of supported values.
          type: array
          items:
            type: string
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostProfileManagerConfigTaskList:
      type: object
      description: |2
        A boxed array of *HostProfileManagerConfigTaskList*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostProfileManagerConfigTaskList'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostProfilesEntityCustomizations:
      type: object
      description: |2
        Data type used to contain a representation of host or cluster customization
        data in a *HostProfilesCustomizationData* object.
        
        Subclasses of this must be defined to provide host or cluster customization
        data in specific formats.
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostProfilesEntityCustomizations:
      type: object
      description: |2
        A boxed array of *HostProfilesEntityCustomizations*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostProfilesEntityCustomizations'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostProfileManagerHostToConfigSpecMap:
      type: object
      description: |2
        Data class for <code>HostSystem</code>-<code>AnswerFileCreateSpec</code>
        mapping.
      properties:
        host:
          description: |2
            The host
            
            Refers instance of *HostSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
        configSpec:
          description: |2
            The corresponding <code>AnswerFileCreateSpec</code>.
          $ref: '#/components/schemas/AnswerFileCreateSpec'
      required:
        - host
        - configSpec
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostProfileManagerHostToConfigSpecMap:
      type: object
      description: |2
        A boxed array of *HostProfileManagerHostToConfigSpecMap*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostProfileManagerHostToConfigSpecMap'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    StructuredCustomizations:
      type: object
      description: |2
        Implementation of *HostProfilesEntityCustomizations*
        that maps a cluster or host profile to the *AnswerFile*
        object containing the host profiles customizations for that entity.
        
        This
        object will be used as elements of the
        *HostProfilesEntityCustomizations*.{vim.profile.host.ProfileManager.EntityCustomizations#entityCustomizations}
        when the *HostProfilesEntityCustomizations*.{vim.profile.host.ProfileManager.EntityCustomizations#customizationsFormat}
        value is "structured".
      properties:
        entity:
          description: |2
            Entity associated with the host customizations specified in the
            <code>customizations</code> *AnswerFile* object.
            
            In the current release, this object will always be a host.
            
            Refers instance of *ManagedEntity*.
          $ref: '#/components/schemas/ManagedObjectReference'
        customizations:
          description: |2
            Host Profile Customizations for the associated <code>entity</code>.
            
            This is the same object that would be returned by the
            *HostProfileManager.RetrieveAnswerFile* method
          $ref: '#/components/schemas/AnswerFile'
      required:
        - entity
      allOf:
        - $ref: '#/components/schemas/HostProfilesEntityCustomizations'

    ArrayOfStructuredCustomizations:
      type: object
      description: |2
        A boxed array of *StructuredCustomizations*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/StructuredCustomizations'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    SecurityProfile:
      type: object
      description: |2
        The *SecurityProfile* data object represents host security configuration.
        
        If a profile plug-in defines policies or subprofiles, use the
        *ApplyProfile.policy* or *ApplyProfile.property*
        list to access the additional configuration data.
      properties:
        permission:
          description: |2
            Permission configuration.
          type: array
          items:
            $ref: '#/components/schemas/PermissionProfile'
      allOf:
        - $ref: '#/components/schemas/ApplyProfile'

    ArrayOfSecurityProfile:
      type: object
      description: |2
        A boxed array of *SecurityProfile*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/SecurityProfile'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ServiceConsolePortGroupProfile:
      type: object
      description: |2
        The *ServiceConsolePortGroupProfile* data object represents
        the profile for a port group that will be used by the service console.
        
        If a profile plug-in defines policies or subprofiles, use the
        *ApplyProfile.policy* or *ApplyProfile.property*
        list to access the additional configuration data.
      properties:
        ipConfig:
          description: |2
            IP address configuration for the service console network.
          $ref: '#/components/schemas/IpAddressProfile'
      required:
        - ipConfig
      allOf:
        - $ref: '#/components/schemas/PortGroupProfile'

    ArrayOfServiceConsolePortGroupProfile:
      type: object
      description: |2
        A boxed array of *ServiceConsolePortGroupProfile*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ServiceConsolePortGroupProfile'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ServiceProfile:
      type: object
      description: |2
        The *ServiceProfile* data object controls the configuration of a service.
        
        Use the *ApplyProfile.policy* list for access to configuration data
        for the service profile. Use the *ApplyProfile.property* list for access
        to subprofiles, if any.
      properties:
        key:
          description: |2
            Linkable identifier.
          type: string
      required:
        - key
      allOf:
        - $ref: '#/components/schemas/ApplyProfile'

    ArrayOfServiceProfile:
      type: object
      description: |2
        A boxed array of *ServiceProfile*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ServiceProfile'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    StaticRouteProfile:
      type: object
      description: |2
        The *StaticRouteProfile* data object represents a single static IP route.
        
        The *ApplyProfile.policy* property contains
        data values for static route configuration.
      properties:
        key:
          description: |2
            Linkable identifier.
          type: string
      allOf:
        - $ref: '#/components/schemas/ApplyProfile'

    ArrayOfStaticRouteProfile:
      type: object
      description: |2
        A boxed array of *StaticRouteProfile*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/StaticRouteProfile'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    StorageProfile:
      type: object
      description: |2
        The *StorageProfile* data object represents the host storage configuration.
        
        If a profile plug-in defines policies or subprofiles, use the
        *ApplyProfile.policy* or *ApplyProfile.property*
        list to access the additional configuration data.
      properties:
        nasStorage:
          description: |2
            List of NAS storage subprofiles.
            
            Use the *NasStorageProfile.key* property
            to access a subprofile in the list.
          type: array
          items:
            $ref: '#/components/schemas/NasStorageProfile'
      allOf:
        - $ref: '#/components/schemas/ApplyProfile'

    ArrayOfStorageProfile:
      type: object
      description: |2
        A boxed array of *StorageProfile*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/StorageProfile'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    UserGroupProfile:
      type: object
      description: |2
        The *UserGroupProfile* data object represents a user group.
        
        Use the *ApplyProfile.policy* list for access to configuration data
        for the user group profile. Use the *ApplyProfile.property* list for access
        to subprofile configuration data, if any.
      properties:
        key:
          description: |2
            Linkable identifier.
          type: string
      required:
        - key
      allOf:
        - $ref: '#/components/schemas/ApplyProfile'

    ArrayOfUserGroupProfile:
      type: object
      description: |2
        A boxed array of *UserGroupProfile*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/UserGroupProfile'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    UserProfile:
      type: object
      description: |2
        The *UserProfile* data object represents a user.
        
        Use the *ApplyProfile.policy* list for access to configuration data
        for the user profile. Use the *ApplyProfile.property* list for access
        to subprofile configuration data, if any.
      properties:
        key:
          description: |2
            Linkable identifier.
          type: string
      required:
        - key
      allOf:
        - $ref: '#/components/schemas/ApplyProfile'

    ArrayOfUserProfile:
      type: object
      description: |2
        A boxed array of *UserProfile*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/UserProfile'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualSwitchProfile:
      type: object
      description: |2
        The *VirtualSwitchProfile* data object represents a subprofile
        for a virtual switch.
        
        If a profile plug-in defines policies or subprofiles, use the
        *ApplyProfile.policy* or *ApplyProfile.property*
        list to access the additional configuration data.
      properties:
        key:
          description: |2
            Linkable identifier.
          type: string
        name:
          description: |2
            Name of the standard virtual switch(VSS).
          type: string
        link:
          description: |2
            Links that are connected to the virtual switch.
          $ref: '#/components/schemas/LinkProfile'
        numPorts:
          description: |2
            Number of ports on the virtual switch.
          $ref: '#/components/schemas/NumPortsProfile'
        networkPolicy:
          description: |2
            Network policy/policies for the virtual switch.
          $ref: '#/components/schemas/NetworkPolicyProfile'
      required:
        - key
        - name
        - link
        - numPorts
        - networkPolicy
      allOf:
        - $ref: '#/components/schemas/ApplyProfile'

    ArrayOfVirtualSwitchProfile:
      type: object
      description: |2
        A boxed array of *VirtualSwitchProfile*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualSwitchProfile'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    LinkProfile:
      type: object
      description: |2
        The LinkProfile data object represents a subprofile
        for links connected to virtual switch.
      allOf:
        - $ref: '#/components/schemas/ApplyProfile'

    ArrayOfLinkProfile:
      type: object
      description: |2
        A boxed array of *LinkProfile*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/LinkProfile'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    NumPortsProfile:
      type: object
      description: |2
        The NumPortsProfile data object represents a
        subprofile for the number of ports for a
        virtual switch
      allOf:
        - $ref: '#/components/schemas/ApplyProfile'

    ArrayOfNumPortsProfile:
      type: object
      description: |2
        A boxed array of *NumPortsProfile*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/NumPortsProfile'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmPortGroupProfile:
      type: object
      description: |2
        The *VmPortGroupProfile* data object represents the subprofile
        for a port group that will be used by virtual machines.
        
        Use the *ApplyProfile.policy* list for
        access to configuration data for the virtual machine port group profile. Use the
        *ApplyProfile.property* list for access to subprofiles, if any.
        
        vSphere Servers use *Network* managed objects to represent virtual machine port
        groups in the vSphere inventory.
      allOf:
        - $ref: '#/components/schemas/PortGroupProfile'

    ArrayOfVmPortGroupProfile:
      type: object
      description: |2
        A boxed array of *VmPortGroupProfile*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmPortGroupProfile'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    AfterStartupTaskScheduler:
      type: object
      description: |2
        The *AfterStartupTaskScheduler* data object establishes the time
        that a scheduled task will run after the vCenter server restarts.
      properties:
        minute:
          description: |2
            The delay in minutes after vCenter server is restarted.
            
            The value must be greater than or equal to 0.
          type: integer
          format: int32
      required:
        - minute
      allOf:
        - $ref: '#/components/schemas/TaskScheduler'

    ArrayOfAfterStartupTaskScheduler:
      type: object
      description: |2
        A boxed array of *AfterStartupTaskScheduler*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/AfterStartupTaskScheduler'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DailyTaskScheduler:
      type: object
      description: |2
        The *DailyTaskScheduler* data object sets the time for daily
        task execution.
        
        You set the hour and the inherited minute
        property to complete the schedule. By default, the scheduled task
        will run once every day at the specified hour and minute.
        
        If you set the interval to a value greater than 1, the task will
        execute at the specified daily interval. (For example, an interval
        of 2 will cause the task to execute at the specified hour and minute
        every 2 days.)
      properties:
        hour:
          description: |2
            The hour at which the *RecurrentTaskScheduler* runs the task.
            
            Use UTC (Coordinated Universal Time) values in the range
            0 to 23, where 0 = 12:00 a.m. (UTC) and 12 = 12:00 p.m. (UTC).
            
            For vCenter 2.x and prior releases, use the server's local time.
            For example, use Eastern Standard Time (EST) or Pacific Daylight Time (PDT),
            rather than UTC.
          type: integer
          format: int32
      required:
        - hour
      allOf:
        - $ref: '#/components/schemas/HourlyTaskScheduler'

    ArrayOfDailyTaskScheduler:
      type: object
      description: |2
        A boxed array of *DailyTaskScheduler*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DailyTaskScheduler'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HourlyTaskScheduler:
      type: object
      description: |2
        The *HourlyTaskScheduler* data object sets the time for hourly
        task execution.
        
        By default, the scheduled task will run once every hour,
        at the specified minute.
        
        If you set the interval to a value greater than 1, the task will
        execute at the specified hourly interval. (For example, an interval
        of 2 will cause the task to execute at the specified minute every 2 hours.)
      properties:
        minute:
          description: |2
            The minute at which the *RecurrentTaskScheduler* runs
            the task.
            
            Specify the minute value as a UTC (Coordinated Universal Time)
            value in the range 0 to 59.
            
            For vCenter 2.x and prior releases, use the server's local time.
            For example, use Australia Northern Territory (UTC +9:30) or Indian (UTC +5:30)
            time values, rather than a UTC value.
          type: integer
          format: int32
      required:
        - minute
      allOf:
        - $ref: '#/components/schemas/RecurrentTaskScheduler'

    ArrayOfHourlyTaskScheduler:
      type: object
      description: |2
        A boxed array of *HourlyTaskScheduler*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HourlyTaskScheduler'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    MonthlyByDayTaskScheduler:
      type: object
      description: |2
        The *MonthlyByDayTaskScheduler* data object sets the time for monthly
        task execution.
        
        You can set the schedule for task execution
        on one day during the month, and you complete the schedule by
        setting the inherited properties for the hour and minute.
        
        By default the scheduler executes the task on the specified day
        every month. If you set the interval to a value greater than 1,
        the task will execute at the specified monthly interval.
        (For example, an interval of 2 will cause the task to execute
        on the specified day, hour, and minute every 2 months.)
      properties:
        day:
          description: |2
            The day in every month to run the scheduled task.
            
            Valid values are 1 to 31.
            
            In any month where the value of "day" exceeds the total number of days
            in the month, the scheduled task will run on the last day of the month.
          type: integer
          format: int32
      required:
        - day
      allOf:
        - $ref: '#/components/schemas/MonthlyTaskScheduler'

    ArrayOfMonthlyByDayTaskScheduler:
      type: object
      description: |2
        A boxed array of *MonthlyByDayTaskScheduler*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/MonthlyByDayTaskScheduler'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    MonthlyByWeekdayTaskScheduler:
      type: object
      description: |2
        The *MonthlyByWeekdayTaskScheduler* data object sets the time for
        monthly task execution.
        
        You identify a single day for task execution
        by specifying the week of the month and day of the week, and you
        complete the schedule by setting the inherited properties for the
        hour and minute.
        
        By default, the scheduler executes the task on the specified day
        every month. If you set the interval to a value greater than 1,
        the task will execute at the specified monthly interval. (For example,
        an interval of 2 will cause the task to execute on the specified
        day, hour, and minute every 2 months.)
      properties:
        offset:
          description: |2
            The week in the month during which the scheduled task is to run.
          $ref: '#/components/schemas/WeekOfMonth_enum'
        weekday:
          description: |2
            The day in the week when the scheduled task is to run.
          $ref: '#/components/schemas/DayOfWeek_enum'
      required:
        - offset
        - weekday
      allOf:
        - $ref: '#/components/schemas/MonthlyTaskScheduler'

    ArrayOfMonthlyByWeekdayTaskScheduler:
      type: object
      description: |2
        A boxed array of *MonthlyByWeekdayTaskScheduler*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/MonthlyByWeekdayTaskScheduler'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    MonthlyTaskScheduler:
      type: object
      description: |2
        The *MonthlyTaskScheduler* data object is the base type for
        the monthly schedulers (*MonthlyByDayTaskScheduler* and
        *MonthlyByWeekdayTaskScheduler*).
      allOf:
        - $ref: '#/components/schemas/DailyTaskScheduler'

    ArrayOfMonthlyTaskScheduler:
      type: object
      description: |2
        A boxed array of *MonthlyTaskScheduler*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/MonthlyTaskScheduler'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    OnceTaskScheduler:
      type: object
      description: |2
        The *OnceTaskScheduler* data object establishes the time for running
        a scheduled task only once.
      properties:
        runAt:
          description: |2
            The time a task will run.
            
            If you do not set the time, it executes immediately.
          type: string
          format: date-time
      allOf:
        - $ref: '#/components/schemas/TaskScheduler'

    ArrayOfOnceTaskScheduler:
      type: object
      description: |2
        A boxed array of *OnceTaskScheduler*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/OnceTaskScheduler'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    RecurrentTaskScheduler:
      type: object
      description: |2
        The *RecurrentTaskScheduler* data object is the base type for
        the hierarchy that includes hourly, daily, weekly, and monthly task schedulers.
      properties:
        interval:
          description: |2
            How often to run the scheduled task.
            
            The value must be greater than
            or equal to 1 and less than 1000. The default value is 1.
            The interval acts as a multiplier for the unit of time associated
            with a particular scheduler (hours, days, weeks, or months).
            For example, setting the *HourlyTaskScheduler* interval
            to 4 causes the task to run every 4 hours.
          type: integer
          format: int32
      required:
        - interval
      allOf:
        - $ref: '#/components/schemas/TaskScheduler'

    ArrayOfRecurrentTaskScheduler:
      type: object
      description: |2
        A boxed array of *RecurrentTaskScheduler*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/RecurrentTaskScheduler'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ScheduledTaskDescription:
      type: object
      description: |2
        Static strings for scheduled tasks.
        
        These strings are locale-specific.
      properties:
        action:
          description: |2
            Action class descriptions for a scheduled task.
          type: array
          items:
            $ref: '#/components/schemas/TypeDescription'
        schedulerInfo:
          description: |2
            Scheduler class description details.
          type: array
          items:
            $ref: '#/components/schemas/ScheduledTaskDetail'
        state:
          description: |2
            *TaskInfo State enum*
          type: array
          items:
            $ref: '#/components/schemas/ElementDescription'
        dayOfWeek:
          description: |2
            *MonthlyByWeekdayTaskScheduler Days of the week enum description*
          type: array
          items:
            $ref: '#/components/schemas/ElementDescription'
        weekOfMonth:
          description: |2
            *MonthlyByWeekdayTaskScheduler Week of the month enum description*
          type: array
          items:
            $ref: '#/components/schemas/ElementDescription'
      required:
        - action
        - schedulerInfo
        - state
        - dayOfWeek
        - weekOfMonth
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfScheduledTaskDescription:
      type: object
      description: |2
        A boxed array of *ScheduledTaskDescription*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ScheduledTaskDescription'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ScheduledTaskDetail:
      type: object
      description: |2
        Descriptive detail for each scheduler type.
      properties:
        frequency:
          description: |2
            Scheduler frequency description.
          type: string
      required:
        - frequency
      allOf:
        - $ref: '#/components/schemas/TypeDescription'

    ArrayOfScheduledTaskDetail:
      type: object
      description: |2
        A boxed array of *ScheduledTaskDetail*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ScheduledTaskDetail'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ScheduledTaskInfo:
      type: object
      description: |2
        The scheduled task details.
      properties:
        scheduledTask:
          description: |2
            Scheduled task object.
            
            Refers instance of *ScheduledTask*.
          $ref: '#/components/schemas/ManagedObjectReference'
        entity:
          description: |2
            The entity on which related events will be logged.
            
            If the task is scheduled on a ManagedEntity, this
            field will also reflect the same ManagedEntity.
            If task is scheduled on a ManagedObject, this field
            will have information about the entity on which
            the events will be logged on behalf of the ManagedObject.
            ManagedObject itself will be denoted by *ScheduledTaskInfo.taskObject*
            
            Refers instance of *ManagedEntity*.
          $ref: '#/components/schemas/ManagedObjectReference'
        lastModifiedTime:
          description: |2
            The time the scheduled task is created or modified.
          type: string
          format: date-time
        lastModifiedUser:
          description: |2
            Last user that modified the scheduled task.
          type: string
        nextRunTime:
          description: |2
            The next time the scheduled task will run.
          type: string
          format: date-time
        prevRunTime:
          description: |2
            The last time the scheduled task ran.
          type: string
          format: date-time
        state:
          description: |2
            Scheduled task state.
          $ref: '#/components/schemas/TaskInfoState_enum'
        error:
          description: |2
            The fault code when the scheduled task state is "error".
          $ref: '#/components/schemas/MethodFault'
        result:
          description: |2
            The operation result when the scheduled task state is "success".
          $ref: '#/components/schemas/Any'
        progress:
          description: |2
            The task progress when the scheduled task state is "running".
          type: integer
          format: int32
        activeTask:
          description: |2
            The running task instance when the scheduled task state is "running".
            
            Refers instance of *Task*.
          $ref: '#/components/schemas/ManagedObjectReference'
        taskObject:
          description: |2
            The object on which the scheduled task is defined.
            
            This field will have information about either the
            ManagedEntity or the ManagedObject on which the scheduled
            task is defined.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - scheduledTask
        - entity
        - lastModifiedTime
        - lastModifiedUser
        - state
        - taskObject
      allOf:
        - $ref: '#/components/schemas/ScheduledTaskSpec'

    ArrayOfScheduledTaskInfo:
      type: object
      description: |2
        A boxed array of *ScheduledTaskInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ScheduledTaskInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ScheduledTaskSpec:
      type: object
      description: |2
        Parameters for scheduled task creation.
      properties:
        name:
          description: |2
            Name of the scheduled task.
          type: string
        description:
          description: |2
            Description of the scheduled task.
          type: string
        enabled:
          description: |2
            Flag to indicate whether the scheduled task is enabled or disabled.
          type: boolean
        scheduler:
          description: |2
            The time scheduler that determines when the scheduled task runs.
          $ref: '#/components/schemas/TaskScheduler'
        action:
          description: |2
            The action of the scheduled task, to be done when the scheduled task runs.
          $ref: '#/components/schemas/Action'
        notification:
          description: |2
            The email notification.
            
            If not set, this property is set to empty string, indicating no notification.
          type: string
      required:
        - name
        - description
        - enabled
        - scheduler
        - action
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfScheduledTaskSpec:
      type: object
      description: |2
        A boxed array of *ScheduledTaskSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ScheduledTaskSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    TaskScheduler:
      type: object
      description: |2
        The *TaskScheduler* data object is the base type for the scheduler objects.
        
        The hierarchy of scheduler objects is as follows:
        
                TaskScheduler
                    *AfterStartupTaskScheduler*
                    *OnceTaskScheduler*
                    *RecurrentTaskScheduler*
                        *HourlyTaskScheduler*
                            *DailyTaskScheduler*
                                *WeeklyTaskScheduler*
                                *MonthlyTaskScheduler*
                                    *MonthlyByDayTaskScheduler*
                                    *MonthlyByWeekdayTaskScheduler*
        
        Use a scheduler object to set the time(s) for task execution.
        You can use two scheduling modes - single execution or
        recurring execution:
        - Use the *AfterStartupTaskScheduler* or the *OnceTaskScheduler*
          to schedule a single instance of task execution.
        - Use one of the recurrent task schedulers to schedule
          hourly, daily, weekly, or monthly task execution.
          
        After you have established the task timing, use the scheduler
        object for the *ScheduledTaskSpec*
        *ScheduledTaskSpec.scheduler* property value.
      properties:
        activeTime:
          description: |2
            The time that the schedule for the task takes effect.
            
            Task activation is distinct from task execution.
            When you activate a task, its schedule starts,
            and when the next execution time occurs, the task will run.
            If you do not set activeTime, the activation time defaults to
            the time that you create the scheduled task.
          type: string
          format: date-time
        expireTime:
          description: |2
            The time the schedule for the task expires.
            
            If you do not set expireTime, the schedule does not expire.
          type: string
          format: date-time
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfTaskScheduler:
      type: object
      description: |2
        A boxed array of *TaskScheduler*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/TaskScheduler'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    WeeklyTaskScheduler:
      type: object
      description: |2
        The *WeeklyTaskScheduler* data object sets the time for weekly
        task execution.
        
        You can set the schedule for task execution
        on one or more days during the week, and you complete the schedule
        by setting the inherited properties for the hour and minute.
        
        By default the scheduler executes the task according to the
        specified day(s) every week.
        If you set the interval to a value greater than 1, the task will
        execute at the specified weekly interval. (For example, an interval
        of 2 will cause the task to execute on the specified days every 2 weeks.)
      properties:
        sunday:
          description: |2
            The day or days of the week when the scheduled task will run.
            
            At least one of the days must be true.
          type: boolean
        monday:
          type: boolean
        tuesday:
          type: boolean
        wednesday:
          type: boolean
        thursday:
          type: boolean
        friday:
          type: boolean
        saturday:
          type: boolean
      required:
        - sunday
        - monday
        - tuesday
        - wednesday
        - thursday
        - friday
        - saturday
      allOf:
        - $ref: '#/components/schemas/DailyTaskScheduler'

    ArrayOfWeeklyTaskScheduler:
      type: object
      description: |2
        A boxed array of *WeeklyTaskScheduler*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/WeeklyTaskScheduler'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ApplyStorageRecommendationResult:
      type: object
      description: |2
        Both *StorageResourceManager.RecommendDatastores* and
        *Datastore.DatastoreEnterMaintenanceMode* methods may invoke Storage DRS
        for recommendations on placing or evacuating virtual disks.
        
        All initial placement recommendations, and some enterMaintenanceMode
        recommendations need to be approved by the user. Recommendations that
        are approved will be applied using the
        *StorageResourceManager.ApplyStorageDrsRecommendation_Task*
        method.
        This class encapsulates the result of applying a subset of the
        recommendations.
      properties:
        vm:
          description: |2
            The result applying the recommendation, if it was successful.
            
            This is the equivalent of the *TaskInfo.result* key for the
            task launched when the recommendation was applied.
            
            Refers instance of *VirtualMachine*.
          $ref: '#/components/schemas/ManagedObjectReference'
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfApplyStorageRecommendationResult:
      type: object
      description: |2
        A boxed array of *ApplyStorageRecommendationResult*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ApplyStorageRecommendationResult'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    StorageDrsAutomationConfig:
      type: object
      description: |2
        Storage DRS fine grain automation controls
      properties:
        spaceLoadBalanceAutomationMode:
          description: |2
            Specifies the behavior of Storage DRS when it generates
            recommendations for correcting space load imbalance in a
            datastore cluster.
            
            See *StorageDrsPodConfigInfo*. If specified, this option
            overrides the datastore cluster level automation behavior defined in the
            *StorageDrsPodConfigInfo*.
          type: string
        ioLoadBalanceAutomationMode:
          deprecated: true
          description: |2
            Deprecated as of vSphere8.0 U3, and there is no replacement for it.
            
            Specifies the behavior of Storage DRS when it generates
            recommendations for correcting I/O load imbalance in a datastore
            cluster.
            
            See *StorageDrsPodConfigInfo*. If specified, this option
            overrides the datastore cluster level automation behavior defined in the
            *StorageDrsPodConfigInfo*.
          type: string
        ruleEnforcementAutomationMode:
          description: |2
            Specifies the behavior of Storage DRS when it generates
            recommendations for correcting affinity rule violations in a
            datastore cluster.
            
            See *StorageDrsPodConfigInfoBehavior_enum*. If
            specified, this option overrides the datastore cluster level
            automation behavior defined in the *StorageDrsPodConfigInfo* for
            recommendations aimed at fixing rule violations.
          type: string
        policyEnforcementAutomationMode:
          description: |2
            Specifies the behavior of Storage DRS when it generates
            recommendations for correcting storage and Vm policy violations
            in a datastore cluster.
            
            See *StorageDrsPodConfigInfoBehavior_enum*. If
            specified, this option overrides the datastore cluster level
            automation behavior defined in the *StorageDrsPodConfigInfo* for
            recommendations aimed at fixing storage policy violations.
          type: string
        vmEvacuationAutomationMode:
          description: |2
            Specifies the behavior of Storage DRS when it generates
            recommendations for datastore evacuations in a datastore
            cluster.
            
            See *StorageDrsPodConfigInfoBehavior_enum*. If specified, this
            option overrides the datastore cluster level automation behavior
            defined in the *StorageDrsPodConfigInfo* for recommendations aimed at
            evacuating Vms from a datastore.
          type: string
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfStorageDrsAutomationConfig:
      type: object
      description: |2
        A boxed array of *StorageDrsAutomationConfig*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/StorageDrsAutomationConfig'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    StorageDrsConfigInfo:
      type: object
      description: |2
        The *StorageDrsConfigInfo* data object describes storage DRS configuration
        for a pod *StoragePod*.
      properties:
        podConfig:
          description: |2
            Pod-wide configuration of the storage DRS service.
          $ref: '#/components/schemas/StorageDrsPodConfigInfo'
        vmConfig:
          description: |2
            List of virtual machine configurations for the storage DRS
            service.
            
            Each entry applies to all the virtual disks of the virtual machine
            on this pod.
            
            If a virtual machine is not specified in this array, the service uses
            the default settings for that virtual machine.
          type: array
          items:
            $ref: '#/components/schemas/StorageDrsVmConfigInfo'
      required:
        - podConfig
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfStorageDrsConfigInfo:
      type: object
      description: |2
        A boxed array of *StorageDrsConfigInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/StorageDrsConfigInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    StorageDrsConfigSpec:
      type: object
      description: |2
        The *StorageDrsConfigSpec* data object provides a set of update
        specifications for storage DRS configuration.
        
        To support
        incremental changes, these properties are all optional.
      properties:
        podConfigSpec:
          description: |2
            Changes to the configuration of the storage DRS service.
          $ref: '#/components/schemas/StorageDrsPodConfigSpec'
        vmConfigSpec:
          description: |2
            Changes to the per-virtual-machine storage DRS settings.
          type: array
          items:
            $ref: '#/components/schemas/StorageDrsVmConfigSpec'
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfStorageDrsConfigSpec:
      type: object
      description: |2
        A boxed array of *StorageDrsConfigSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/StorageDrsConfigSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HbrDiskMigrationAction:
      type: object
      description: |2
        Describes a single HBR secondary disk migration action.
        
        The storage migration
        action applies either to a single disk or a set of secondary virtual disks.
      properties:
        collectionId:
          description: |2
            HMS Service specific collection id
          type: string
        collectionName:
          description: |2
            HMS specific name of this collection
          type: string
        diskIds:
          description: |2
            HBR disk ids of secondary disks moved by this action
          type: array
          items:
            type: string
        source:
          description: |2
            Source datastore.
            
            Refers instance of *Datastore*.
          $ref: '#/components/schemas/ManagedObjectReference'
        destination:
          description: |2
            Destination datastore.
            
            Refers instance of *Datastore*.
          $ref: '#/components/schemas/ManagedObjectReference'
        sizeTransferred:
          description: |2
            The amount of data to be transferred.
            
            Unit: KB.
          type: integer
          format: int64
        spaceUtilSrcBefore:
          description: |2
            Space utilization on the source datastore before storage migration.
            
            Unit: percentage. For example, if set to 70.0, space utilization is 70%.
            If not set, the value is not available.
          type: number
          format: float
        spaceUtilDstBefore:
          description: |2
            Space utilization on the destination datastore before storage migration.
            
            Unit: percentage. For example, if set to 70.0, space utilization is 70%.
            If not set, the value is not available.
          type: number
          format: float
        spaceUtilSrcAfter:
          description: |2
            Expected space utilization on the source datastore after storage migration.
            
            Unit: percentage. For example, if set to 70.0, space utilization is 70%.
            If not set, the value is not available.
          type: number
          format: float
        spaceUtilDstAfter:
          description: |2
            Expected space utilization on the destination datastore after storage migration.
            
            Unit: percentage. For example, if set to 70.0, space utilization is 70%.
            If not set, the value is not available.
          type: number
          format: float
        ioLatencySrcBefore:
          deprecated: true
          description: |2
            Deprecated as of vSphere8.0 U3, and there is no replacement for it.
            
            I/O latency on the source datastore before storage migration.
            
            Unit: millisecond.
            If not set, the value is not available.
          type: number
          format: float
        ioLatencyDstBefore:
          deprecated: true
          description: |2
            Deprecated as of vSphere8.0 U3, and there is no replacement for it.
            
            I/O latency on the destination datastore before storage migration.
            
            Unit: millisecond.
            If not set, the value is not available.
          type: number
          format: float
      required:
        - collectionId
        - collectionName
        - diskIds
        - source
        - destination
        - sizeTransferred
      allOf:
        - $ref: '#/components/schemas/ClusterAction'

    ArrayOfHbrDiskMigrationAction:
      type: object
      description: |2
        A boxed array of *HbrDiskMigrationAction*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HbrDiskMigrationAction'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    StorageDrsIoLoadBalanceConfig:
      type: object
      deprecated: true
      description: |2
        Deprecated as of vSphere8.0 U3, and there is no replacement for it.
        
        Storage DRS configuration for I/O load balancing.
      properties:
        reservablePercentThreshold:
          description: |2
            Storage DRS makes storage migration recommendations if total
            IOPs reservation of all VMs running on a datastore is higher than
            the specified threshold.
            
            Storage DRS recommends migration out of
            all such datastores, if more than one datastore exceed their reserved
            IOPs threshold.
            
            The actual Iops used to determine threshold are computed from Storage
            DRS estimation of IOPs capacity of a datastore. The absolute value
            may change over time, according to storage response to workloads.
            
            The valid values are in the range of 30 (i.e., 30%) to 100 (i.e., 100%).
            If not specified, the default value is 60%.
          type: integer
          format: int32
        reservableIopsThreshold:
          description: |2
            Storage DRS makes storage migration recommendations if total
            IOPs reservation of all VMs running on a datastore is higher than
            the specified threshold.
            
            Storage DRS recommends migration out of
            all such datastores, if more than one datastore exceed their reserved
            IOPs threshold.
            
            This is an advanced option, and should only be used if Storage DRS
            estimated IOPs capacity is incorrect for datastores. The value
            should be based on conservative estimate of storage performance,
            and ideally should be set to about 50-60% of worse case peak
            performance of backing LUN.
          type: integer
          format: int32
        reservableThresholdMode:
          description: |2
            Determines which reservation threshold specification to use.
            
            See *StorageDrsPodConfigInfoBehavior_enum*. If unspecified, the
            mode is assumed automatic by default. Storage DRS uses
            percentage value in that case.
            If mode is specified, but corresponding reservationThreshold
            value is absent, option specific defaults are used.
          type: string
        ioLatencyThreshold:
          description: |2
            Storage DRS makes storage migration recommendations if
            I/O latency on one (or more) of the datastores is higher than
            the specified threshold.
            
            Unit: millisecond.
            The valid values are in the range of 5 to 100. If not specified,
            the default value is 15.
          type: integer
          format: int32
        ioLoadImbalanceThreshold:
          description: |2
            Storage DRS makes storage migration recommendations if
            I/O load imbalance level is higher than the specified threshold.
            
            Unit: a number.
            The valid values are in the range of 1 to 100. If not specified,
            the default value is 5.
          type: integer
          format: int32
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfStorageDrsIoLoadBalanceConfig:
      type: object
      description: |2
        A boxed array of *StorageDrsIoLoadBalanceConfig*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/StorageDrsIoLoadBalanceConfig'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    StorageDrsOptionSpec:
      type: object
      description: |2
        An incremental update to the advance settings.
      properties:
        option:
          $ref: '#/components/schemas/OptionValue'
      allOf:
        - $ref: '#/components/schemas/ArrayUpdateSpec'

    ArrayOfStorageDrsOptionSpec:
      type: object
      description: |2
        A boxed array of *StorageDrsOptionSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/StorageDrsOptionSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PlacementAffinityRule:
      type: object
      description: |2
        The *PlacementAffinityRule* data object specifies
        affinity rules for placement
      properties:
        ruleType:
          description: |2
            Type of affinity rule.
            
            The set of possible values are described in
            *PlacementAffinityRuleRuleType_enum*
          type: string
        ruleScope:
          description: |2
            Scope of the affinity rule.
            
            The set of possible values are described in
            *PlacementAffinityRuleRuleScope_enum*
          type: string
        vms:
          description: |2
            List of virtual machines that are part of this rule.
            
            Refers instances of *VirtualMachine*.
          type: array
          items:
            $ref: '#/components/schemas/ManagedObjectReference'
        keys:
          description: |2
            List of PlacementSpec keys that are part of this rule representing
            virtual machines yet to be placed.
          type: array
          items:
            type: string
      required:
        - ruleType
        - ruleScope
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfPlacementAffinityRule:
      type: object
      description: |2
        A boxed array of *PlacementAffinityRule*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PlacementAffinityRule'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PlacementRankResult:
      type: object
      description: |2
        PlacementRankResult is the class of the result returned by
        the vCenter Server for rankClustersForPlacement method
      properties:
        key:
          description: |2
            Reference key for the placement request
          type: string
        candidate:
          description: |2
            Candidate cluster for the placement problem
            
            Refers instance of *ClusterComputeResource*.
          $ref: '#/components/schemas/ManagedObjectReference'
        reservedSpaceMB:
          description: |2
            The reserved storage space for the candidate cluster after placement
            The unit is in Megabytes
          type: integer
          format: int64
        usedSpaceMB:
          description: |2
            The expected space usage for the candidate cluster after placement
            The unit is in Megabytes
          type: integer
          format: int64
        totalSpaceMB:
          description: |2
            The expected total space for the candidate cluster after placement
            The unit is in Megabytes
          type: integer
          format: int64
        utilization:
          description: |2
            The expected aggregate resource utilization for the candidate cluster
            after placement
            The unit is a fractional value between 0 and 1.
          type: number
          format: double
        faults:
          description: |2
            Information about why a given cluster is not recommended for
            placement
          type: array
          items:
            $ref: '#/components/schemas/MethodFault'
      required:
        - key
        - candidate
        - reservedSpaceMB
        - usedSpaceMB
        - totalSpaceMB
        - utilization
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfPlacementRankResult:
      type: object
      description: |2
        A boxed array of *PlacementRankResult*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PlacementRankResult'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PlacementRankSpec:
      type: object
      description: |2
        PlacementRankSpec encapsulates all of the inputs passed to
        the *StorageResourceManager.RankForPlacement* method.
      properties:
        specs:
          description: |2
            List of VM placement specifications for ranking clusters
          type: array
          items:
            $ref: '#/components/schemas/PlacementSpec'
        clusters:
          description: |2
            List of candidate clusters for the placement request
            
            Refers instances of *ClusterComputeResource*.
          type: array
          items:
            $ref: '#/components/schemas/ManagedObjectReference'
        rules:
          description: |2
            List of affinity rules for the placement request
          type: array
          items:
            $ref: '#/components/schemas/PlacementAffinityRule'
        placementRankByVm:
          description: |2
            List of preferred clusters for individual VM placement requests
          type: array
          items:
            $ref: '#/components/schemas/StorageDrsPlacementRankVmSpec'
      required:
        - specs
        - clusters
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfPlacementRankSpec:
      type: object
      description: |2
        A boxed array of *PlacementRankSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PlacementRankSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    StorageDrsPlacementRankVmSpec:
      type: object
      properties:
        vmPlacementSpec:
          description: |2
            Individual VM placement specification for ranking clusters
          $ref: '#/components/schemas/PlacementSpec'
        vmClusters:
          description: |2
            Set of candidate clusters for the placement request
            
            Refers instances of *ClusterComputeResource*.
          type: array
          items:
            $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - vmPlacementSpec
        - vmClusters
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfStorageDrsPlacementRankVmSpec:
      type: object
      description: |2
        A boxed array of *StorageDrsPlacementRankVmSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/StorageDrsPlacementRankVmSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    StorageDrsPodConfigInfo:
      type: object
      description: |2
        The *StorageDrsPodConfigInfo* data object contains pod-wide configuration information
        for the storage DRS service.
      properties:
        enabled:
          description: |2
            Flag indicating whether or not storage DRS is enabled.
          type: boolean
        ioLoadBalanceEnabled:
          deprecated: true
          description: |2
            Deprecated as of vSphere8.0 U3, and there is no replacement for it.
            
            Flag indicating whether or not storage DRS takes into account storage I/O
            workload when making load balancing and initial placement recommendations.
          type: boolean
        defaultVmBehavior:
          description: |2
            Specifies the pod-wide default storage DRS behavior for virtual machines.
            
            For currently supported storage DRS behavior, see *StorageDrsPodConfigInfoBehavior_enum*.
            You can override the default behavior for a virtual machine
            by using the *StorageDrsVmConfigInfo* object.
          type: string
        loadBalanceInterval:
          description: |2
            Specify the interval that storage DRS runs to load balance among datastores
            within a storage pod.
            
            Unit: minute.
            The valid values are from 60 (1 hour) to 43200 (30 days).
            If not specified, the default value is 480 (8 hours).
          type: integer
          format: int32
        defaultIntraVmAffinity:
          description: |2
            Specifies whether or not each virtual machine in this pod should have its virtual
            disks on the same datastore by default.
            
            If set to true, virtual machines will have
            all their virtual disks on the same datastore. If set to false, the virtual disks
            of a virtual machine may or may not be placed on the same datastore.
            If not set, the default value is true.
            You can override the default behavior for a virtual machine
            by using the *StorageDrsVmConfigInfo* object.
          type: boolean
        spaceLoadBalanceConfig:
          description: |2
            The configuration settings for load balancing storage space.
          $ref: '#/components/schemas/StorageDrsSpaceLoadBalanceConfig'
        ioLoadBalanceConfig:
          deprecated: true
          description: |2
            Deprecated as of vSphere8.0 U3, and there is no replacement for it.
            
            The configuration settings for load balancing I/O workload.
            
            This takes effect only if *StorageDrsPodConfigInfo.ioLoadBalanceEnabled* is <code>true</code>.
          $ref: '#/components/schemas/StorageDrsIoLoadBalanceConfig'
        automationOverrides:
          description: |2
            Configuration settings for fine-grain automation overrides on
            the cluster level setting.
          $ref: '#/components/schemas/StorageDrsAutomationConfig'
        rule:
          description: |2
            Pod-wide rules.
          type: array
          items:
            $ref: '#/components/schemas/ClusterRuleInfo'
        option:
          description: |2
            Advanced settings.
          type: array
          items:
            $ref: '#/components/schemas/OptionValue'
      required:
        - enabled
        - ioLoadBalanceEnabled
        - defaultVmBehavior
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfStorageDrsPodConfigInfo:
      type: object
      description: |2
        A boxed array of *StorageDrsPodConfigInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/StorageDrsPodConfigInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    StorageDrsPodConfigSpec:
      type: object
      description: |2
        The *StorageDrsPodConfigSpec* data object provides a set of update
        specifications for pod-wide storage DRS configuration.
        
        To support
        incremental changes, these properties are all optional.
      properties:
        enabled:
          description: |2
            Flag indicating whether or not storage DRS is enabled.
          type: boolean
        ioLoadBalanceEnabled:
          deprecated: true
          description: |2
            Deprecated as of vSphere8.0 U3, and there is no replacement for it.
            
            Flag indicating whether or not storage DRS takes into account storage I/O
            workload when making load balancing and initial placement recommendations.
          type: boolean
        defaultVmBehavior:
          description: |2
            Specifies the pod-wide default storage DRS behavior for virtual machines.
            
            For currently supported storage DRS behavior, see *StorageDrsPodConfigInfoBehavior_enum*.
            You can override the default behavior for a virtual machine
            by using the *StorageDrsVmConfigInfo* object.
          type: string
        loadBalanceInterval:
          description: |2
            Specify the interval that storage DRS runs to load balance among datastores
            within a storage pod.
          type: integer
          format: int32
        defaultIntraVmAffinity:
          description: |2
            Specifies whether or not each virtual machine in this pod should have its virtual
            disks on the same datastore by default.
          type: boolean
        spaceLoadBalanceConfig:
          description: |2
            The configuration settings for load balancing storage space.
          $ref: '#/components/schemas/StorageDrsSpaceLoadBalanceConfig'
        ioLoadBalanceConfig:
          deprecated: true
          description: |2
            Deprecated as of vSphere8.0 U3, and there is no replacement for it.
            
            The configuration settings for load balancing I/O workload.
            
            This takes effect only if *StorageDrsPodConfigInfo.ioLoadBalanceEnabled* is <code>true</code>.
          $ref: '#/components/schemas/StorageDrsIoLoadBalanceConfig'
        automationOverrides:
          description: |2
            Configuration settings for fine-grain automation overrides on
            the cluster level setting.
          $ref: '#/components/schemas/StorageDrsAutomationConfig'
        rule:
          description: |2
            Changes to the set of rules.
          type: array
          items:
            $ref: '#/components/schemas/ClusterRuleSpec'
        option:
          description: |2
            Changes to advance settings.
          type: array
          items:
            $ref: '#/components/schemas/StorageDrsOptionSpec'
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfStorageDrsPodConfigSpec:
      type: object
      description: |2
        A boxed array of *StorageDrsPodConfigSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/StorageDrsPodConfigSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    StorageDrsPodSelectionSpec:
      type: object
      description: |2
        Specification for moving or copying a virtual machine to a different Storage Pod.
      properties:
        initialVmConfig:
          description: |2
            An optional list that allows specifying the storage pod location
            for each virtual disk and the VM configurations and overrides to be
            used during placement.
          type: array
          items:
            $ref: '#/components/schemas/VmPodConfigForPlacement'
        storagePod:
          description: |2
            The storage pod where the virtual machine should be located.
            
            Refers instance of *StoragePod*.
          $ref: '#/components/schemas/ManagedObjectReference'
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfStorageDrsPodSelectionSpec:
      type: object
      description: |2
        A boxed array of *StorageDrsPodSelectionSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/StorageDrsPodSelectionSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PodDiskLocator:
      type: object
      description: |2
        The disk locator class.
      properties:
        diskId:
          description: |2
            The disk ID.
          type: integer
          format: int32
        diskMoveType:
          description: |2
            The disk move type.
          type: string
        diskBackingInfo:
          description: |2
            The disk backing info.
          $ref: '#/components/schemas/VirtualDeviceBackingInfo'
        profile:
          description: |2
            Virtual Disk Profile requirement.
            
            Profiles are solution specific.
            Profile Based Storage Management is a vSphere server extension.
            The API users who want to provision VMs using Storage Profiles, need to
            interact with it.
            This is an optional parameter and if user doesn't specify profile,
            the default behavior will apply.
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineProfileSpec'
      required:
        - diskId
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfPodDiskLocator:
      type: object
      description: |2
        A boxed array of *PodDiskLocator*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PodDiskLocator'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmPodConfigForPlacement:
      type: object
      description: |2
        Initial VM configuration for the specified pod.
        
        This configuration will be saved to the pod config
        *StorageDrsConfigInfo*
        when the placement recommendations are applied.
      properties:
        storagePod:
          description: |2
            The pod that this initial configuration applies to.
            
            Since there could be multiple pods in a single placement request,
            we may need to specify multiple initial VM configurations, one per
            pod.
            
            Refers instance of *StoragePod*.
          $ref: '#/components/schemas/ManagedObjectReference'
        disk:
          description: |2
            Array of PodDiskLocator objects.
          type: array
          items:
            $ref: '#/components/schemas/PodDiskLocator'
        vmConfig:
          description: |2
            The VM configuration for the VM that is being placed.
          $ref: '#/components/schemas/StorageDrsVmConfigInfo'
        interVmRule:
          description: |2
            The initial interVmRules that should during placement of this
            virtual machine.
            
            It may not always be possible to specify that the
            virtual machine being placed is part of the rule because the
            virtual machine may not have been created yet. So for simplicity,
            we assume the virtual machine being placed is always implicitly
            part of any rule specified. It will be explicitly added to the
            rule before it is saved to the pod config.
          type: array
          items:
            $ref: '#/components/schemas/ClusterRuleInfo'
      required:
        - storagePod
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVmPodConfigForPlacement:
      type: object
      description: |2
        A boxed array of *VmPodConfigForPlacement*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmPodConfigForPlacement'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    StorageDrsSpaceLoadBalanceConfig:
      type: object
      description: |2
        Storage DRS configuration for space load balancing.
      properties:
        spaceThresholdMode:
          type: string
        spaceUtilizationThreshold:
          description: |2
            Storage DRS makes storage migration recommendations if
            space utilization on one (or more) of the datastores is higher than
            the specified threshold.
            
            The valid values are in the range of 50 (i.e., 50%) to 100 (i.e., 100%).
            If not specified, the default value is 80%.
          type: integer
          format: int32
        freeSpaceThresholdGB:
          description: |2
            Storage DRS makes storage migration recommendations if
            free space on one (or more) of the datastores falls below
            the specified threshold.
            
            The unit is in gigabytes and the minimum value is 1GB.
            The maximum value is limited by the capacity of the smallest
            datastore in a datastore cluster.
            If not specified, the default value is 50GB.
          type: integer
          format: int32
        minSpaceUtilizationDifference:
          description: |2
            Storage DRS considers making storage migration recommendations if
            the difference in space utilization between the source and destination datastores
            is higher than the specified threshold.
            
            The valid values are in the range of 1 (i.e., 1%) to 50 (i.e., 50%).
            If not specified, the default value is 5%.
          type: integer
          format: int32
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfStorageDrsSpaceLoadBalanceConfig:
      type: object
      description: |2
        A boxed array of *StorageDrsSpaceLoadBalanceConfig*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/StorageDrsSpaceLoadBalanceConfig'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    StorageMigrationAction:
      type: object
      description: |2
        Describes a single storage migration action.
        
        The storage migration
        action applies either to a virtual machine or a set of virtual disks.
      properties:
        vm:
          description: |2
            Virtual machine reference.
            
            Refers instance of *VirtualMachine*.
          $ref: '#/components/schemas/ManagedObjectReference'
        relocateSpec:
          description: |2
            Specification for moving a virtual machine or a set of virtual disks
            to a different datastore.
          $ref: '#/components/schemas/VirtualMachineRelocateSpec'
        source:
          description: |2
            Source datastore.
            
            Refers instance of *Datastore*.
          $ref: '#/components/schemas/ManagedObjectReference'
        destination:
          description: |2
            Destination datastore.
            
            Refers instance of *Datastore*.
          $ref: '#/components/schemas/ManagedObjectReference'
        sizeTransferred:
          description: |2
            The amount of data to be transferred.
            
            Unit: KB.
          type: integer
          format: int64
        spaceUtilSrcBefore:
          description: |2
            Space utilization on the source datastore before storage migration.
            
            Unit: percentage. For example, if set to 70.0, space utilization is 70%.
            If not set, the value is not available.
          type: number
          format: float
        spaceUtilDstBefore:
          description: |2
            Space utilization on the destination datastore before storage migration.
            
            Unit: percentage. For example, if set to 70.0, space utilization is 70%.
            If not set, the value is not available.
          type: number
          format: float
        spaceUtilSrcAfter:
          description: |2
            Expected space utilization on the source datastore after storage migration.
            
            Unit: percentage. For example, if set to 70.0, space utilization is 70%.
            If not set, the value is not available.
          type: number
          format: float
        spaceUtilDstAfter:
          description: |2
            Expected space utilization on the destination datastore after storage migration.
            
            Unit: percentage. For example, if set to 70.0, space utilization is 70%.
            If not set, the value is not available.
          type: number
          format: float
        ioLatencySrcBefore:
          deprecated: true
          description: |2
            Deprecated as of vSphere8.0 U3, and there is no replacement for it.
            
            I/O latency on the source datastore before storage migration.
            
            Unit: millisecond.
            If not set, the value is not available.
          type: number
          format: float
        ioLatencyDstBefore:
          deprecated: true
          description: |2
            Deprecated as of vSphere8.0 U3, and there is no replacement for it.
            
            I/O latency on the destination datastore before storage migration.
            
            Unit: millisecond.
            If not set, the value is not available.
          type: number
          format: float
      required:
        - vm
        - relocateSpec
        - source
        - destination
        - sizeTransferred
      allOf:
        - $ref: '#/components/schemas/ClusterAction'

    ArrayOfStorageMigrationAction:
      type: object
      description: |2
        A boxed array of *StorageMigrationAction*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/StorageMigrationAction'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    StoragePlacementAction:
      type: object
      description: |2
        Describes a single storage initial placement action for placing a virtual
        machine or a set of virtual disks on a datastore.
      properties:
        vm:
          description: |2
            Virtual machine reference.
            
            It is possible that the VM has not been created, in which case,
            this property is left unset.
            
            Refers instance of *VirtualMachine*.
          $ref: '#/components/schemas/ManagedObjectReference'
        relocateSpec:
          description: |2
            Specification for placing a virtual machine or a set of virtual disks
            to a datastore.
          $ref: '#/components/schemas/VirtualMachineRelocateSpec'
        destination:
          description: |2
            Target datastore.
            
            Refers instance of *Datastore*.
          $ref: '#/components/schemas/ManagedObjectReference'
        spaceUtilBefore:
          description: |2
            Current space utilization on the target datastore.
            
            Unit: percentage. For example, if set to 70.0, space utilization is 70%.
            If not set, the value is not available.
          type: number
          format: float
        spaceDemandBefore:
          description: |2
            Current space demand on the target datastore.
            
            Unit: percentage. For example, if set to 70.0, space demand is 70%. This
            value include the space demanded by thin provisioned VMs. Hence, it may
            be higher than 100%. If not set, the value is not available.
          type: number
          format: float
        spaceUtilAfter:
          description: |2
            Space utilization on the target datastore after placing the virtual disk.
            
            Unit: percentage. For example, if set to 70.0, space utilization is 70%.
            If not set, the value is not available.
          type: number
          format: float
        spaceDemandAfter:
          description: |2
            Space demand on the target datastore after placing the virtual disk.
            
            Unit: percentage. For example, if set to 70.0, space demand is 70%. This
            value include the space demanded by thin provisioned VMs. Hence, it may
            be higher than 100%. If not set, the value is not available.
          type: number
          format: float
        ioLatencyBefore:
          deprecated: true
          description: |2
            Deprecated as of vSphere8.0 U3, and there is no replacement for it.
            
            Current I/O latency on the target datastore.
            
            Unit: millisecond.
            If not set, the value is not available.
          type: number
          format: float
      required:
        - relocateSpec
        - destination
      allOf:
        - $ref: '#/components/schemas/ClusterAction'

    ArrayOfStoragePlacementAction:
      type: object
      description: |2
        A boxed array of *StoragePlacementAction*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/StoragePlacementAction'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    StoragePlacementResult:
      type: object
      description: |2
        Both *StorageResourceManager.RecommendDatastores* and
        *Datastore.DatastoreEnterMaintenanceMode* methods may invoke Storage DRS
        for recommendations on placing or evacuating virtual disks.
        
        StoragePlacementResult is the class of the result returned by
        the methods.
      properties:
        recommendations:
          description: |2
            The list of recommendations that the client needs to approve manually.
          type: array
          items:
            $ref: '#/components/schemas/ClusterRecommendation'
        drsFault:
          description: |2
            Information about any fault in case Storage DRS failed to make a recommendation.
          $ref: '#/components/schemas/ClusterDrsFaults'
        task:
          description: |2
            The ID of the task, which monitors the storage placement or datastore entering
            maintennace mode operation.
            
            Refers instance of *Task*.
          $ref: '#/components/schemas/ManagedObjectReference'
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfStoragePlacementResult:
      type: object
      description: |2
        A boxed array of *StoragePlacementResult*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/StoragePlacementResult'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    StoragePlacementSpec:
      type: object
      description: |2
        StoragePlacementSpec encapsulates all of the inputs passed to the
        *StorageResourceManager.RecommendDatastores* method.
      properties:
        type:
          description: |2
            The storage placement type.
            
            The set of possible values is described in
            *StoragePlacementSpecPlacementType_enum*
          type: string
        priority:
          description: |2
            Priority of this placement operation.
          $ref: '#/components/schemas/VirtualMachineMovePriority_enum'
        vm:
          description: |2
            The relevant virtual machine.
            
            Refers instance of *VirtualMachine*.
          $ref: '#/components/schemas/ManagedObjectReference'
        podSelectionSpec:
          description: |2
            Specification for moving a virtual machine or a set of virtual disks
            to a different storage pod.
          $ref: '#/components/schemas/StorageDrsPodSelectionSpec'
        cloneSpec:
          description: |2
            Specification for a virtual machine cloning operation.
          $ref: '#/components/schemas/VirtualMachineCloneSpec'
        cloneName:
          description: |2
            Name for cloned virtual machine.
          type: string
        configSpec:
          description: |2
            Configuration for the virtual machine.
          $ref: '#/components/schemas/VirtualMachineConfigSpec'
        relocateSpec:
          description: |2
            Specification for relocating a virtual machine.
          $ref: '#/components/schemas/VirtualMachineRelocateSpec'
        resourcePool:
          description: |2
            The resource pool to which this virtual machine should be attached.
            
            Refers instance of *ResourcePool*.
          $ref: '#/components/schemas/ManagedObjectReference'
        host:
          description: |2
            The target host for the virtual machine.
            
            Refers instance of *HostSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
        folder:
          description: |2
            The target virtual machine folder for the virtual machine.
            
            Note that this is a different folder than the pod(s) that the virtual
            machine belongs to. The pod mapping represents the storage view of
            the virtual machine, while the virtual machine folder mapping
            represents an inventory view of the virtual machine.
            For manual VM provisioning operations, this is specified implicitly
            as the object that the *Folder.CreateVM_Task* method is invoked on.
            
            Refers instance of *Folder*.
          $ref: '#/components/schemas/ManagedObjectReference'
        disallowPrerequisiteMoves:
          description: |2
            Specification for whether to disable pre-requisite storage vmotions
            for storage placements.
            
            If unset, default behavior is to allow such
            prerequisite moves.
          type: boolean
        resourceLeaseDurationSec:
          description: |2
            Resource lease duration in seconds.
            
            If the duration is within bounds,
            Storage DRS will hold onto resources needed for applying recommendations
            generated as part of that call.
            Only initial placement recommendations generated by storage DRS can reserve
            resources this way.
          type: integer
          format: int32
      required:
        - type
        - podSelectionSpec
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfStoragePlacementSpec:
      type: object
      description: |2
        A boxed array of *StoragePlacementSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/StoragePlacementSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualDiskAntiAffinityRuleSpec:
      type: object
      description: |2
        Pod-wide anit-affinity rule for virtual disks.
        
        The set of virtual disks should
        be placed on different datastores.
      properties:
        diskId:
          description: |2
            The list of virtual disks.
          type: array
          items:
            type: integer
            format: int32
      required:
        - diskId
      allOf:
        - $ref: '#/components/schemas/ClusterRuleInfo'

    ArrayOfVirtualDiskAntiAffinityRuleSpec:
      type: object
      description: |2
        A boxed array of *VirtualDiskAntiAffinityRuleSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualDiskAntiAffinityRuleSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualDiskRuleSpec:
      type: object
      description: |2
        The set of virtual disks that are currently disabled
      properties:
        diskRuleType:
          description: |2
            Type of the virtual disks rule.
            
            The set of possible values are described
            in *VirtualDiskRuleSpecRuleType_enum*
          type: string
        diskId:
          description: |2
            The list of virtual disks for this rule.
          type: array
          items:
            type: integer
            format: int32
      required:
        - diskRuleType
      allOf:
        - $ref: '#/components/schemas/ClusterRuleInfo'

    ArrayOfVirtualDiskRuleSpec:
      type: object
      description: |2
        A boxed array of *VirtualDiskRuleSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualDiskRuleSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    StorageDrsVmConfigInfo:
      type: object
      description: |2
        Storage DRS configuration for a single virtual machine.
        
        This makes it
        possible to override the default behavior for an individual virtual machine.
      properties:
        vm:
          description: |2
            Reference to the virtual machine.
            
            Can be NULL during initial placement.
            
            Refers instance of *VirtualMachine*.
          $ref: '#/components/schemas/ManagedObjectReference'
        enabled:
          description: |2
            Flag to indicate whether or not VirtualCenter is allowed to perform any
            storage migration or initial placement recommendations for this virtual
            machine on the pod *StoragePod*.
            
            If this flag is false, the virtual machine is effectively excluded from
            storage DRS.
            
            If no individual DRS specification exists for a virtual machine,
            this property defaults to true.
          type: boolean
        behavior:
          description: |2
            Specifies the particular storage DRS behavior for this virtual machine.
            
            For supported values, see *StorageDrsPodConfigInfoBehavior_enum*.
          type: string
        intraVmAffinity:
          description: |2
            Specifies whether or not to have the affinity rule for the virtual disks
            of this virtual machine.
            
            If not set, the default value is derived from
            the pod-wide default *StorageDrsPodConfigInfo.defaultIntraVmAffinity*.
          type: boolean
        intraVmAntiAffinity:
          deprecated: true
          description: |2
            Deprecated as of vSphere API 7.0.
            
            Specifies the disks for this virtual machine that should be placed
            on different datastores.
            
            A VM cannot have both an affinity and an
            anti-affinity rule at the same time. Virtual machine disks that are
            not in this rule are unconstrained and can be placed either on the
            same datastore or on a different datastore as other disks from this
            virtual machine.
          $ref: '#/components/schemas/VirtualDiskAntiAffinityRuleSpec'
        virtualDiskRules:
          description: |2
            List of the virtual disk rules that can be overridden/created.
          type: array
          items:
            $ref: '#/components/schemas/VirtualDiskRuleSpec'
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfStorageDrsVmConfigInfo:
      type: object
      description: |2
        A boxed array of *StorageDrsVmConfigInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/StorageDrsVmConfigInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    StorageDrsVmConfigSpec:
      type: object
      description: |2
        Updates the per-virtual-machine storage DRS configuration.
      properties:
        info:
          $ref: '#/components/schemas/StorageDrsVmConfigInfo'
      allOf:
        - $ref: '#/components/schemas/ArrayUpdateSpec'

    ArrayOfStorageDrsVmConfigSpec:
      type: object
      description: |2
        A boxed array of *StorageDrsVmConfigSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/StorageDrsVmConfigSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VAppCloneSpec:
      type: object
      description: |2
        Specification for a vApp cloning operation.
      properties:
        location:
          description: |2
            Location where the destination vApp must be stored
            
            Refers instance of *Datastore*.
          $ref: '#/components/schemas/ManagedObjectReference'
        host:
          description: |2
            The target host for the virtual machines.
            
            This is often not a required
            parameter. If not specified, the behavior is as follows:
            - If the target pool represents a stand-alone host, that host is used.
            - If the target pool represents a DRS-enabled cluster, a host selected
              by DRS is used.
            - If the target pool represents a cluster without DRS enabled or a
              DRS-enabled cluster in manual mode, an InvalidArgument exception is
              thrown.
              
            Refers instance of *HostSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
        resourceSpec:
          description: |2
            The resource configuration for the vApp.
          $ref: '#/components/schemas/ResourceConfigSpec'
        vmFolder:
          description: |2
            The VM Folder to associate the vApp with
            
            Refers instance of *Folder*.
          $ref: '#/components/schemas/ManagedObjectReference'
        networkMapping:
          description: |2
            Network mappings.
            
            See *VAppCloneSpecNetworkMappingPair*.
          type: array
          items:
            $ref: '#/components/schemas/VAppCloneSpecNetworkMappingPair'
        property:
          description: |2
            A set of property values to override.
          type: array
          items:
            $ref: '#/components/schemas/KeyValue'
        resourceMapping:
          description: |2
            The resource configuration for the cloned vApp.
          type: array
          items:
            $ref: '#/components/schemas/VAppCloneSpecResourceMap'
        provisioning:
          description: |2
            Specify how the VMs in the vApp should be provisioned.
          type: string
      required:
        - location
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVAppCloneSpec:
      type: object
      description: |2
        A boxed array of *VAppCloneSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VAppCloneSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VAppCloneSpecNetworkMappingPair:
      type: object
      description: |2
        Maps one network to another as part of the clone process.
        
        Instances of this class are used in the field *VAppCloneSpec.networkMapping*
      properties:
        source:
          description: |2
            The source network
            
            Refers instance of *Network*.
          $ref: '#/components/schemas/ManagedObjectReference'
        destination:
          description: |2
            The destination network
            
            Refers instance of *Network*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - source
        - destination
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVAppCloneSpecNetworkMappingPair:
      type: object
      description: |2
        A boxed array of *VAppCloneSpecNetworkMappingPair*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VAppCloneSpecNetworkMappingPair'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VAppCloneSpecResourceMap:
      type: object
      description: |2
        Maps source child entities to destination resource pools
        and resource settings.
        
        If a mapping is not specified,
        a child is copied as a direct child of the parent.
      properties:
        source:
          description: |2
            Source entity
            
            Refers instance of *ManagedEntity*.
          $ref: '#/components/schemas/ManagedObjectReference'
        parent:
          description: |2
            Resource pool to use for the cloned entity of source.
            
            This must specify a
            resource pool that is not part of the vApp. If this is specified, a linked
            child (as opposed to a direct child) is created for the vApp.
            
            Refers instance of *ResourcePool*.
          $ref: '#/components/schemas/ManagedObjectReference'
        resourceSpec:
          description: |2
            An optional resource configuration for the cloned entity of the source.
            
            If
            not specified, the same resource configuration as the source is used.
          $ref: '#/components/schemas/ResourceConfigSpec'
        location:
          description: |2
            A client can optionally specify a datastore in the resource map to
            override the default datastore location set in *VAppCloneSpecResourceMap.location* field.
            
            This
            enables cloning to different compute resources that do not have shared
            datastores.
            
            Refers instance of *Datastore*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - source
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVAppCloneSpecResourceMap:
      type: object
      description: |2
        A boxed array of *VAppCloneSpecResourceMap*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VAppCloneSpecResourceMap'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VAppEntityConfigInfo:
      type: object
      description: |2
        This object type describes the behavior of an entity (virtual machine or
        sub-vApp container) in a vApp container.
        
        The auto-start/auto-stop configurations control the behavior of the
        start/stop vApp operations.
        
        An virtual machine entity can be configured to wait for a period of time before
        starting or to wait to receive a successful heartbeat from a virtual machine
        before starting the next virtual machine in the sequence.
        - For a power-on operation, if waitForHeartbeat is true, then the power-on
          sequence continues after the the first heartbeat has been received. If
          waitingForGuest is false, the system waits for the specified delay and
          then continues the power-on sequence.
        - For a power-off operation, if delay is non-zero, the requested power-off
          action is invoked (powerOff, suspend, guestShutdown) on the virtual
          machine and the system waits until the number of seconds specified in the
          delay have passed.
          
        If startAction and stopAction for an entity are both set to none, that
        entity does not participate in the sequence.
        
        The start/stop delay and waitingForGuest is not used if the entity is a
        vApp container. For a vApp the only value values for startAction is none
        or powerOn, and the valid values for stopAction is none or powerOff.
      properties:
        key:
          description: |2
            Entity to power on or power off.
            
            This can be a virtual machine or a vApp.
            
            Refers instance of *ManagedEntity*.
          $ref: '#/components/schemas/ManagedObjectReference'
        tag:
          description: |2
            Tag for entity.
            
            Reconfigure privilege: VApp.ApplicationConfig
          type: string
        startOrder:
          description: |2
            Specifies the start order for this entity.
            
            Entities are started from lower
            numbers to higher-numbers and reverse on shutdown. Multiple entities with the
            same start-order can be started in parallel and the order is unspecified. This
            value must be 0 or higher.
            
            Reconfigure privilege: VApp.ApplicationConfig
          type: integer
          format: int32
        startDelay:
          description: |2
            Delay in seconds before continuing with the next entity in the order of entities
            to be started.
            
            Reconfigure privilege: VApp.ApplicationConfig
          type: integer
          format: int32
        waitingForGuest:
          description: |2
            Determines if the virtual machine should start after receiving a heartbeat,
            from the guest.
            
            When a virtual machine is next in the start
            order, the system either waits a specified period of time for a virtual
            machine to power on or it waits until it receives a successful heartbeat from a
            powered on virtual machine. By default, this is set to false.
            
            This property has no effect for vApps.
            
            Reconfigure privilege: VApp.ApplicationConfig
          type: boolean
        startAction:
          description: |2
            How to start the entity.
            
            Valid settings are none or powerOn. If set to none, then
            the entity does not participate in auto-start.
            
            Reconfigure privilege: VApp.ApplicationConfig
          type: string
        stopDelay:
          description: |2
            Delay in seconds before continuing with the next entity in the order
            sequence.
            
            This is only used if the stopAction is guestShutdown.
            
            Reconfigure privilege: VApp.ApplicationConfig
          type: integer
          format: int32
        stopAction:
          description: |2
            Defines the stop action for the entity.
            
            Can be set to none, powerOff,
            guestShutdown, or suspend. If set to none, then the entity does not participate in
            auto-stop.
            
            Reconfigure privilege: VApp.ApplicationConfig
          type: string
        destroyWithParent:
          deprecated: true
          description: |2
            Deprecated as of vSphere API 5.1.
            
            Whether the entity should be removed, when this vApp is removed.
            
            This is only set for linked children.
            
            Reconfigure privilege: VApp.ApplicationConfig
          type: boolean
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVAppEntityConfigInfo:
      type: object
      description: |2
        A boxed array of *VAppEntityConfigInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VAppEntityConfigInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VAppIPAssignmentInfo:
      type: object
      description: |2
        The IPAssignmentInfo class specifies how the guest software gets
        configured with IP addresses, including protocol type (IPv4 or IPv6)
        and the life-time of those IP addresses.
        
        A vApp/virtual machine can either use DHCP to acquire an IP
        configuration, or it can acquire its IP configuration through the
        use of the vSphere platform using the OVF environment's properties.
        The latter is a known as OVF-environment-assigned IP configuration.
        
        Guest software can be constructed to support DHCP , OVF assigned
        IP configuration, or both. The supportedAssignmentScheme property
        lists the supported schemes. This is typically specified by the author
        of a vApp.
        
        The deployer / operator of a vApp, specifies what IP allocation
        policy should be used:
        - Using DHCP, if the vApp and deployed network supports it
        - Transient Assignment, if the vApp supports OVF-assigned IP
          configuration and the network has an IP range configured.
        - Fixed Assignment, if the vApp supports OVF-assigned IP
          configuration.
        - Fixed Allocated, if the vApp supports OVF-assigned IP
          configuration and the network has an IP range configured.
          
        Transient and fixed assignment differs in the life time of the IP
        allocation. For transient, IP addresses are automatically assigned on
        power-on and released on power-off. For fixed, the IP
        addresses are explicitly specified by the deployer and does not change
        between a power-on/power-off.
        Fixed allocated is a hybrid of transient and fixed assignment. IP
        addresses are allocated at first power-on and remain allocated on power-off.
        
        The IPAssignment settings are global to a deployment. Thus, if a vApp or
        virtual machine is part of another vApp, then the settings are ignored,
        and the ones for the top-most vApp container is used.
      properties:
        supportedAllocationScheme:
          description: |2
            Specifies the IP allocation schemes supported by the guest software.
            
            When updating this field, an empty array will be interpreted as no changes.
            An array of the form \[""\] will clear all settings. Otherwise, the supplied
            value will overwrite the current setting.
            
            Reconfigure privilege: VApp.ApplicationConfig
          type: array
          items:
            type: string
        ipAllocationPolicy:
          description: |2
            Specifies how IP allocation should be managed by the VI platform.
            
            This is
            typically specified by the deployer. The set of valid options for the policy
            is based on the capabilities of the vApp software, as specified by the
            supportedAllocationSchemes property.
            
            Reconfigure privilege: VApp.InstanceConfig
          type: string
        supportedIpProtocol:
          description: |2
            Specifies the IP protocols supported by the guest software.
            
            When updating this field, an empty array will be interpreted as no changes.
            An array of the form \[""\] will clear all settings. Otherwise, the supplied
            value will overwrite the current setting.
            
            Reconfigure privilege: VApp.ApplicationConfig
          type: array
          items:
            type: string
        ipProtocol:
          description: |2
            Specifies the chosen IP protocol for this deployment.
            
            This must be one of the
            values in the supportedIpProtocol field.
            
            Reconfigure privilege: VApp.InstanceConfig
          type: string
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVAppIPAssignmentInfo:
      type: object
      description: |2
        A boxed array of *VAppIPAssignmentInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VAppIPAssignmentInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    IpPool:
      type: object
      description: |2
        Specifications of the network configuration to be used on a
        network.
        
        This is used to generate IP addresses and for self-customization
        of vApps.
      properties:
        id:
          description: |2
            Unique ID, generated by the server.
            
            This is used to identify the pool in
            subsequent lookups or updates. The generated value is also returned by the *IpPoolManager.CreateIpPool* method.
          type: integer
          format: int32
        name:
          description: |2
            Pool name.
            
            The pool name must be unique within the datacenter.
            
            Any / (slash), \\ (backslash), character used in this
            name element is escaped. Similarly, any % (percent) character used in
            this name element is escaped, unless it is used to start an escape
            sequence. A slash is escaped as %2F or %2f. A backslash is escaped as %5C or
            %5c, and a percent is escaped as %25.
          type: string
        ipv4Config:
          description: |2
            IPv4 configuration.
            
            This configuration is always present on the pool. To disable allocation, set the
            ipPoolEnabled flag of the config to false.
          $ref: '#/components/schemas/IpPoolIpPoolConfigInfo'
        ipv6Config:
          description: |2
            IPv6 configuration.
            
            This configuration is always present on the pool. To disable allocation, set the
            ipPoolEnabled flag of the config to false.
          $ref: '#/components/schemas/IpPoolIpPoolConfigInfo'
        dnsDomain:
          description: |2
            DNS Domain.
            
            For example, vmware.com. This can be an empty string if no
            domain is configured.
          type: string
        dnsSearchPath:
          description: |2
            DNS Search Path.
            
            For example, eng.vmware.com;vmware.com
          type: string
        hostPrefix:
          description: |2
            Prefix for hostnames.
          type: string
        httpProxy:
          description: |2
            The HTTP proxy to use on this network, e.g., &lt;host&gt;:&lt;port&gt;
          type: string
        networkAssociation:
          description: |2
            The networks that are associated with this IP pool
          type: array
          items:
            $ref: '#/components/schemas/IpPoolAssociation'
        availableIpv4Addresses:
          description: |2
            The number of IPv4 addresses available for allocation.
          type: integer
          format: int32
        availableIpv6Addresses:
          description: |2
            The number of IPv6 addresses available for allocation.
          type: integer
          format: int32
        allocatedIpv4Addresses:
          description: |2
            The number of allocated IPv4 addresses.
          type: integer
          format: int32
        allocatedIpv6Addresses:
          description: |2
            The number of allocated IPv6 addresses.
          type: integer
          format: int32
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfIpPool:
      type: object
      description: |2
        A boxed array of *IpPool*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/IpPool'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    IpPoolAssociation:
      type: object
      description: |2
        Information about a network or portgroup that is associated to an IP pool.
      properties:
        network:
          description: |2
            The network object
            
            Refers instance of *Network*.
          $ref: '#/components/schemas/ManagedObjectReference'
        networkName:
          description: |2
            The name of the network or portgroup
            
            This field is only used when querying existing IP pools. It is ignored when
            creating or updating pools.
          type: string
      required:
        - networkName
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfIpPoolAssociation:
      type: object
      description: |2
        A boxed array of *IpPoolAssociation*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/IpPoolAssociation'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    IpPoolIpPoolConfigInfo:
      type: object
      description: |2
        Specifications of either IPv4 or IPv6 configuration to be used
        on this network.
        
        This is a part of network configuration.
        
        IPv4 addresses are in dot-decimal notation, e.g.: 192.0.2.235
        
        IPv6 addresses are in colon-hexadecimal notation,
        e.g.: 2001:0db8:85a3::0370:7334
      properties:
        subnetAddress:
          description: |2
            Address of the subnet.
            
            For example:
            - IPv4: 192.168.5.0
            - IPv6: 2001:0db8:85a3::
          type: string
        netmask:
          description: |2
            Netmask
            
            For example:
            - IPv4: 255.255.255.0
            - IPv6: ffff:ffff:ffff::
          type: string
        gateway:
          description: |2
            Gateway.
            
            This can be an empty string - if no gateway is configured.
            
            Examples:
            - IPv4: 192.168.5.1
            - IPv6: 2001:0db8:85a3::1
          type: string
        range:
          description: |2
            IP range.
            
            This is specified as a set of ranges separated with commas.
            One range is given by a start address, a hash (#), and the length
            of the range.
            
            For example:
            - 192.0.2.235 # 20 is the IPv4 range from 192.0.2.235 to 192.0.2.254
            - 2001::7334 # 20 is the IPv6 range from 2001::7334 to 2001::7347
          type: string
        dns:
          description: |2
            DNS servers
            
            For example:
            - IPv4: \["10.20.0.1", "10.20.0.2"\]
            - IPv6: \["2001:0db8:85a3::0370:7334", "2001:0db8:85a3::0370:7335"\]
              
            If an empty list is passed, the existing value remains unchanged. To clear this
            list, pass an array containing the empty string as it's only element.
          type: array
          items:
            type: string
        dhcpServerAvailable:
          description: |2
            Whether a DHCP server is available on this network.
          type: boolean
        ipPoolEnabled:
          description: |2
            IP addresses can only be allocated from the range if the IP pool is
            enabled.
          type: boolean
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfIpPoolIpPoolConfigInfo:
      type: object
      description: |2
        A boxed array of *IpPoolIpPoolConfigInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/IpPoolIpPoolConfigInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VAppOvfSectionInfo:
      type: object
      description: |2
        The OvfSection encapsulates uninterpreted meta-data sections in
        an OVF descriptor.
        
        When an OVF package is imported, non-required /
        non-interpreted sections will be stored as OvfSection object. During
        the creation of an OVF package, these sections will be placed in the
        OVF descriptor.
      properties:
        key:
          description: |2
            A unique key to identify a section.
          type: integer
          format: int32
        namespace:
          description: |2
            The namespace for the value in xsi:type attribute.
          type: string
        type:
          description: |2
            The value of the xsi:type attribute not including the namespace prefix.
          type: string
        atEnvelopeLevel:
          description: |2
            Whether this is a global envelope section
          type: boolean
        contents:
          description: |2
            The XML fragment including the top-level &lt;Section...&gt; element.
            
            The
            fragment is self-contained will all required namespace definitions.
          type: string
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVAppOvfSectionInfo:
      type: object
      description: |2
        A boxed array of *VAppOvfSectionInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VAppOvfSectionInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VAppOvfSectionSpec:
      type: object
      description: |2
        An incremental update to the OvfSection list.
      properties:
        info:
          $ref: '#/components/schemas/VAppOvfSectionInfo'
      allOf:
        - $ref: '#/components/schemas/ArrayUpdateSpec'

    ArrayOfVAppOvfSectionSpec:
      type: object
      description: |2
        A boxed array of *VAppOvfSectionSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VAppOvfSectionSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VAppProductInfo:
      type: object
      description: |2
        Information that describes what product a vApp contains, for example,
        the software that is installed in the contained virtual machines.
      properties:
        key:
          description: |2
            A unique key for the product section
          type: integer
          format: int32
        classId:
          description: |2
            Class name for this attribute.
            
            Valid values for classId:
            Any string except any white-space characters.
          type: string
        instanceId:
          description: |2
            Class name for this attribute.
            
            Valid values for instanceId:
            Any string except any white-space characters.
          type: string
        name:
          description: |2
            Name of the product.
          type: string
        vendor:
          description: |2
            Vendor of the product.
          type: string
        version:
          description: |2
            Short version of the product, for example, 1.0.
          type: string
        fullVersion:
          description: |2
            Full-version of the product, for example, 1.0-build 12323.
          type: string
        vendorUrl:
          description: |2
            URL to vendor homepage.
          type: string
        productUrl:
          description: |2
            URL to product homepage.
          type: string
        appUrl:
          description: |2
            URL to entry-point for application.
            
            This is often specified using
            a macro, for example, http://${app.ip}/, where app.ip is a defined property
            on the virtual machine or vApp container.
          type: string
      required:
        - key
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVAppProductInfo:
      type: object
      description: |2
        A boxed array of *VAppProductInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VAppProductInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VAppProductSpec:
      type: object
      description: |2
        An incremental update to the Product information list.
      properties:
        info:
          $ref: '#/components/schemas/VAppProductInfo'
      allOf:
        - $ref: '#/components/schemas/ArrayUpdateSpec'

    ArrayOfVAppProductSpec:
      type: object
      description: |2
        A boxed array of *VAppProductSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VAppProductSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VAppPropertyInfo:
      type: object
      description: |2
        A vApp Property description, including deployment values
      properties:
        key:
          description: |2
            A unique integer key for the property.
          type: integer
          format: int32
        classId:
          description: |2
            class name for this property
            
            Valid values for classId:
            Any string except any white-space characters
            
            Reconfigure privilege: VApp.ApplicationConfig
          type: string
        instanceId:
          description: |2
            class name for this property
            
            Valid values for instanceId:
            Any string except any white-space characters
            
            Reconfigure privilege: VApp.ApplicationConfig
          type: string
        id:
          description: |2
            Name of property.
            
            In the OVF environment, the property is listed as
            \[classId.\]id\[.instanceId\]. The \[classId.\]name\[.instanceId\] must be unique.
            
            This field cannot be empty for a property. Thus, it must be specified at creation
            and cannot be set to the empty string.
            
            Valid values for id:
            Any string except any white-space characters
            
            Reconfigure privilege: VApp.ApplicationConfig
          type: string
        category:
          description: |2
            A user-visible description the category the property belongs to.
            
            Reconfigure privilege: VApp.ApplicationConfig
          type: string
        label:
          description: |2
            The display name for the property.
            
            Reconfigure privilege: VApp.ApplicationConfig
          type: string
        type:
          description: |2
            Describes the valid format of the property.
            
            A type must be one of:
            - string : A generic string. Max length 65535 (64k).
            - string(x..) : A string with minimum character length x.
            - string(..y) : A string with maximum character length y.
            - string(x..y) : A string with minimum character length x and maximum
              character length y.
            - string\["choice1", "choice2", "choice3"\] : A set of choices. " inside a choice
              must be either \\" or ' e.g "start\\"middle\\"end" or "start'middle'end" and
              a \\ inside a string choice must be encoded as \\\\ e.g. "start\\\\end".
            - int : An integer value. Is semantically equivalent to
              int(-2147483648..2147483647) e.g. signed int32.
            - int(x..y): An integer value with a minimum size x and a maximum size y.
              For example int(0..255) is a number between 0 and 255 both incl. This is
              also a way to specify that the number must be a uint8. There is always a lower
              and lower bound. Max number of digits is 100 including any sign. If exported to OVF the
              value will be truncated to max of uint64 or int64.
            - real : IEEE 8-byte floating-point value.
            - real(x..y) : IEEE 8-byte floating-point value with a minimum size x and a
              maximum size y. For example real(-1.5..1.5) must be a number between -1.5 and 1.5.
              Because of the nature of float some conversions can truncate the value.
              Real must be encoded according to CIM:
              RealValue = \[ "+" | "-" } \*decimalDigit "." 1\*decimalDigit
              \[ ("e" | "E" ) \[ "+" | "-" \] 1\*decimalDigit \] \]
            - boolean : A boolean. The value can be True or False
            - password : A generic string. Max length 65535 (64k).
            - password(x..) : A string with minimum character length x.
            - password(..y) : A string with maximum character length y.
            - password(x..y) : A string with minimum character length x and maximum
              character length y.
            - ip : An IPv4 address in dot-decimal notation or an IPv6 address in
              colon-hexadecimal notation.
            - ip:network : An IP address in dot-notation (IPv4) and colon-hexadecimal (IPv6)
              on a particular network. The behavior of this type depends on the
              ipAllocationPolicy. See below.
            - expression: The default value specifies an expression that is calculated
              by the system.
              
            For properties of type 'password', the value field and default value field will
            always be returned as an empty string when queried. Thus, it is a write-only property.
            Typically, a client application will also render these as a text field with hidden
            text and double prompting.
              
            An expression follows the general patterns of either ${arg} or ${cmd:arg}. The
            list of supported expressions are listed below:
            - ${&lt;name&gt;} : This expression evaluates to the same value as the named
              property in the parent vApp. A parent vApp is the
              first vApp in the ancestry chain (resource pools are
              skipped). If no parent vApp exists or the property is
              not defined on the parent vApp, the expression
              evaluates to the empty value.
            - ${subnet:&lt;network&gt;} : The subnet value of the given network.
            - ${netmask:&lt;network&gt;} : The netmask value of the given network.
            - ${gateway:&lt;network&gt;} : The gateway value of the given network.
            - ${autoIp:&lt;network&gt;} : An auto-assigned network address on the given
              network
            - ${net:&lt;network&gt;} : The name of the network
            - ${domainName:&lt;network&gt;} : The DNS domain name, e.g., vmware.com, of
              the given network.
            - ${searchPath:&lt;network&gt;} : The DNS search path, e.g.,
              eng.vmware.com;vmware.com, of the given
              network.
            - ${hostPrefix:&lt;network&gt;}: The host prefix on a given network, e.g.,
              "voe-"
            - ${dns:network}: A comma-separated string of configured network addresses
            - ${httpProxy:network}: The hostname:port for a proxy on the network
            - ${vimIp:} : The IP address of the VIM API provider server. This would
              typical be an ESX Server or VirtualCenter Server.
              
            A vApp will fail to start if any of the properties cannot be computed. For
            example, if a property reference a gateway on a network, for which is has not
            been specified. The value of the computed computation is assigned to the 'value'
            field upon start of the vApp or virtual machine. The value is cleared once
            the vApp or virtual machine is not-running.
            
            The system provides three ways of specifying IP addresses:
            - ip,
            - ip:network type,
            - ${ip:network} expression.
              
            The _ip_ types are typically used to specify an IP addressed to an
            external system. Thus, these are not used by a virtual ethernet adapter
            within the guest itself. Both the ip:network expression and the ${ip:network}
            expression are intended as a way to obtain an IP address for a virtual machine
            in a vApp.
            
            The behavior of ip:network type is controlled by the ipAssignPolicy, as
            described in the following table:
            <table>
            <tr>
            <td>**Policy**</td>
            <td>ip:&lt;network&gt; type</td>
            </tr>
            <tr>
            <td>DHCP</td>
            <td>The user is not prompted to enter a value. The variable is set to the
            empty string during power-on, and later updated with the IP value reported
            by the guest software.
            </td>
            </tr>
            <tr>
            <td>Transient</td>
            <td>The user is not prompted to enter a value. An IP address is allocated by
            the platform and is assigned to the variable which is available to the
            guest. The IP address is released at power-off.</td>
            </tr>
            <tr>
            <td>Fixed</td>
            <td>The user is prompted to enter a value. This value is available to the
            guest.</td>
            </tr>
            <tr>
            <td>Fixed Allocated</td>
            <td>The user is not prompted to enter a value. An IP address is allocated by
            the platform and is assigned to the variable which is available to the
            guest. The IP address remains allocated at power-off, and are only
            released if the property is deleted or the vApp is destroyed.</td>
            </tr>
            </table>
            
            Reconfigure privilege: VApp.ApplicationConfig
          type: string
        typeReference:
          description: |2
            Contains extra configuration data depending on the property type.
            
            For types that
            refer to network names the type reference is the managed object reference
            of the network.
          type: string
        userConfigurable:
          description: |2
            Whether the property is user-configurable or a system property.
            
            This is not used
            if the type is expression.
            
            Reconfigure privilege: VApp.ApplicationConfig
          type: boolean
        defaultValue:
          description: |2
            This either contains the default value of a field (used if value is empty
            string), or the expression if the type is "expression".
            
            See comment for the
          type: string
          format: password
        value:
          description: |2
            The value of the field at deployment time.
            
            For expressions, this will contain
            the value that has been computed.
            
            Reconfigure privilege: VApp.InstanceConfig
          type: string
          format: password
        description:
          description: |2
            A description of the field.
            
            Reconfigure privilege: VApp.ApplicationConfig
          type: string
      required:
        - key
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVAppPropertyInfo:
      type: object
      description: |2
        A boxed array of *VAppPropertyInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VAppPropertyInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VAppPropertySpec:
      type: object
      description: |2
        An incremental update to the Property list.
      properties:
        info:
          $ref: '#/components/schemas/VAppPropertyInfo'
      allOf:
        - $ref: '#/components/schemas/ArrayUpdateSpec'

    ArrayOfVAppPropertySpec:
      type: object
      description: |2
        A boxed array of *VAppPropertySpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VAppPropertySpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VAppConfigInfo:
      type: object
      description: |2
        Configuration of a vApp container.
      properties:
        entityConfig:
          description: |2
            Configuration of sub-entities (virtual machine or vApp).
          type: array
          items:
            $ref: '#/components/schemas/VAppEntityConfigInfo'
        annotation:
          description: |2
            Description for the vApp.
          type: string
        instanceUuid:
          description: |2
            vCenter-specific 128-bit UUID of a vApp, represented as a hexademical
            string.
            
            This identifier is used by vCenter to uniquely identify all
            vApp instances.
          type: string
        managedBy:
          description: |2
            Specifies that this vApp is managed by a VC Extension.
            
            See the
            *managedBy* property in the
            VAppConfigSpec for more details.
          $ref: '#/components/schemas/ManagedByInfo'
      required:
        - annotation
      allOf:
        - $ref: '#/components/schemas/VmConfigInfo'

    ArrayOfVAppConfigInfo:
      type: object
      description: |2
        A boxed array of *VAppConfigInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VAppConfigInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VAppConfigSpec:
      type: object
      description: |2
        Configuration of a vApp
      properties:
        entityConfig:
          description: |2
            Configuration of sub-entities (virtual machine or vApp container).
            
            Reconfigure privilege: See EntityConfigInfo
          type: array
          items:
            $ref: '#/components/schemas/VAppEntityConfigInfo'
        annotation:
          description: |2
            Description for the vApp.
            
            Reconfigure privilege: VApp.Rename.
          type: string
        instanceUuid:
          description: |2
            vCenter-specific 128-bit UUID of a vApp, represented as a hexadecimal
            string.
            
            This identifier is used by vCenter to uniquely identify all
            vApp instances in the Virtual Infrastructure environment.
            
            Normally, this property is not set by a client, allowing the
            Virtual Infrastructure environment to assign or change it when
            VirtualCenter detects an identifier conflict between vApps.
            
            Reconfigure privilege: VApp.ApplicationConfig
          type: string
        managedBy:
          description: |2
            Specifies that this vApp is managed by a VC Extension.
            
            This information is primarily used in the Client to show a custom icon for
            managed vApps, and a description of the function of the vApp. If no extension
            can be found with the extension key in the *managedBy*
            object, or the type is not found in the
            *managedEntityInfo* list of the
            extension, the default vApp icon is used, and no description is shown.
            
            Reconfigure privilege: VApp.ApplicationConfig
          $ref: '#/components/schemas/ManagedByInfo'
      allOf:
        - $ref: '#/components/schemas/VmConfigSpec'

    ArrayOfVAppConfigSpec:
      type: object
      description: |2
        A boxed array of *VAppConfigSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VAppConfigSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualAppImportSpec:
      type: object
      description: |2
        A VAppImportSpec is used by *ResourcePool.importVApp* when importing vApps (single VM or multi-VM).
        
        It provides all information needed to import a *VirtualApp*.
        
        See also *ImportSpec*.
      properties:
        name:
          description: |2
            The name of the vApp
          type: string
        vAppConfigSpec:
          description: |2
            vApp configuration
          $ref: '#/components/schemas/VAppConfigSpec'
        resourcePoolSpec:
          description: |2
            Resource pool specification.
            
            If resourcePoolSpec.entity is specified, that resource pool is used as the parent
            resource pool and the vApp will be made a linked child to the parent vApp. This
            field is ignored for the root node in an ImportSpec tree.
            Use of resourcePoolSpec.entity for creating linked children is deprecated as of
            vSphere API 5.1.
          $ref: '#/components/schemas/ResourceConfigSpec'
        child:
          description: |2
            Contains a list of children (*VirtualMachine*s and
            *VirtualApp*s).
          type: array
          items:
            $ref: '#/components/schemas/ImportSpec'
      required:
        - name
        - vAppConfigSpec
        - resourcePoolSpec
      allOf:
        - $ref: '#/components/schemas/ImportSpec'

    ArrayOfVirtualAppImportSpec:
      type: object
      description: |2
        A boxed array of *VirtualAppImportSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualAppImportSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmConfigInfo:
      type: object
      description: |2
        VM Configuration.
      properties:
        product:
          description: |2
            Information about the package content.
          type: array
          items:
            $ref: '#/components/schemas/VAppProductInfo'
        property:
          description: |2
            List of properties
          type: array
          items:
            $ref: '#/components/schemas/VAppPropertyInfo'
        ipAssignment:
          description: |2
            IP assignment policy and DHCP support configuration.
          $ref: '#/components/schemas/VAppIPAssignmentInfo'
        eula:
          description: |2
            End User Liceses Agreements.
          type: array
          items:
            type: string
        ovfSection:
          description: |2
            List of uninterpreted OVF meta-data sections.
          type: array
          items:
            $ref: '#/components/schemas/VAppOvfSectionInfo'
        ovfEnvironmentTransport:
          description: |2
            List the transports to use for properties.
            
            Supported values are: iso and
            com.vmware.guestInfo.
          type: array
          items:
            type: string
        installBootRequired:
          description: |2
            Specifies whether the VM needs an initial boot before the deployment is complete.
            
            Not relevant for vApps. This means that the value is always false when reading the
            configuration and is ignored when setting the configuration.
            
            If a vApp requires an install boot (because one of its VMs does), this is visible
            on the *VirtualAppSummary.installBootRequired* field of the vApp.
          type: boolean
        installBootStopDelay:
          description: |2
            Specifies the delay in seconds to wait for the VM to power off after the initial
            boot (used only if installBootRequired is true).
            
            A value of 0 means wait forever.
            
            Not relevant for vApps. This means that the value is always false when reading the
            configuration and is ignored when setting the configuration.
          type: integer
          format: int32
      required:
        - ipAssignment
        - installBootRequired
        - installBootStopDelay
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVmConfigInfo:
      type: object
      description: |2
        A boxed array of *VmConfigInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmConfigInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VmConfigSpec:
      type: object
      description: |2
        vApp related configuration of a VM.
      properties:
        product:
          description: |2
            Information about the product.
            
            Reconfigure privilege: VApp.ApplicationConfig
          type: array
          items:
            $ref: '#/components/schemas/VAppProductSpec'
        property:
          description: |2
            List of properties.
            
            Adding and editing properties requires various privileges depending on which fields
            are affected. See *VAppPropertyInfo* for details.
            
            Deleting properties requires the privilege VApp.ApplicationConfig.
          type: array
          items:
            $ref: '#/components/schemas/VAppPropertySpec'
        ipAssignment:
          description: |2
            IP assignment policy and DHCP support configuration.
            
            Reconfigure privilege: See *VAppIPAssignmentInfo*
          $ref: '#/components/schemas/VAppIPAssignmentInfo'
        eula:
          description: |2
            End User Liceses Agreements.
            
            If this list is set, it replaces all exiting licenses. An empty list will not
            make any changes to installed licenses. A list with a single element {""} will
            remove all licenses and leave an empty list.
            
            Reconfigure privilege: VApp.ApplicationConfig
          type: array
          items:
            type: string
        ovfSection:
          description: |2
            List of uninterpreted OVF meta-data sections.
            
            Reconfigure privilege: VApp.ApplicationConfig
          type: array
          items:
            $ref: '#/components/schemas/VAppOvfSectionSpec'
        ovfEnvironmentTransport:
          description: |2
            List the transports to use for properties.
            
            Supported values are: iso and
            com.vmware.guestInfo.
            
            If this list is set, it replaces all exiting entries. An empty list will not make
            any changes. A list with a single element {""} will clear the list of transports.
            
            Reconfigure privilege: VApp.ApplicationConfig
          type: array
          items:
            type: string
        installBootRequired:
          description: |2
            If this is on a VirtualMachine object, it specifies whether the VM needs an
            initial boot before the deployment is complete.
            
            If this is on a vApp object,
            it indicates than one or more VMs needs an initial reboot. This flag is
            automatically reset once the reboot has happened.
            
            Reconfigure privilege: VApp.ApplicationConfig
          type: boolean
        installBootStopDelay:
          description: |2
            Specifies the delay in seconds to wait for the VM to power off after the initial
            boot (used only if installBootRequired is true).
            
            A value of 0 means wait forever.
            
            Reconfigure privilege: VApp.ApplicationConfig
          type: integer
          format: int32
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVmConfigSpec:
      type: object
      description: |2
        A boxed array of *VmConfigSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VmConfigSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ClusterNetworkConfigSpec:
      type: object
      description: |2
        The Cluster network config spec allows specification of
        the second network adapter is used for communication between
        the nodes of a VCHA cluster.
      properties:
        networkPortGroup:
          description: |2
            The portgroup that is associated with the VCHA Cluster IP
            address for VCHA cluster traffic for the second adapter to be
            added to the Active vCenter.
            
            Refers instance of *Network*.
          $ref: '#/components/schemas/ManagedObjectReference'
        ipSettings:
          description: |2
            VCHA Cluster network configuration of the node.
            
            All cluster communication (state replication, heartbeat,
            cluster messages) happens over this network.
            Only a single Gateway IPv4 Address is supported.
            IPAddress and NetMask must be specified or an InvalidArgument
            exception will be reported.
          $ref: '#/components/schemas/CustomizationIPSettings'
      required:
        - networkPortGroup
        - ipSettings
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfClusterNetworkConfigSpec:
      type: object
      description: |2
        A boxed array of *ClusterNetworkConfigSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ClusterNetworkConfigSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    FailoverNodeInfo:
      type: object
      properties:
        clusterIpSettings:
          description: |2
            VCHA Cluster network configuration of the node.
            
            All cluster communication (state replication, heartbeat,
            cluster messages) happens over this network.
          $ref: '#/components/schemas/CustomizationIPSettings'
        failoverIp:
          description: |2
            Failover IP address that this node will assume after the failover
            to serve client requests.
            
            Each failover node can have a different
            failover IP address.
          $ref: '#/components/schemas/CustomizationIPSettings'
        biosUuid:
          description: |2
            BIOS UUID for the node.
            
            It is set only if the VCHA Cluster was
            formed using automatic provisioning by the deploy API.
          type: string
      required:
        - clusterIpSettings
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfFailoverNodeInfo:
      type: object
      description: |2
        A boxed array of *FailoverNodeInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/FailoverNodeInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    NodeDeploymentSpec:
      type: object
      description: |2
        The NodeDeploymentSpec class defines location
        specification of the nodes the VCHA Cluster along with Management
        vCenter Server information that manages node VM.
      properties:
        esxHost:
          description: |2
            ESX host on which the VM is to be deployed.
            
            For behavior when an esxHost is not specified,
            
            See also *VirtualMachineRelocateSpec.host*.
            
            Refers instance of *HostSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
        datastore:
          description: |2
            Datastore used for deploying the VM.
            
            For behavior when a datastore is not specified,
            
            See also *VirtualMachineRelocateSpec.datastore*.
            
            Refers instance of *Datastore*.
          $ref: '#/components/schemas/ManagedObjectReference'
        publicNetworkPortGroup:
          description: |2
            Name of the portgroup that is associated with the public IP address
            where clients connect to vCenter Server.
            
            If a portgroup is not
            specified same portgroup present on source is used to deploy the VM
            with an assumption that portgroup is present on destination.
            
            Refers instance of *Network*.
          $ref: '#/components/schemas/ManagedObjectReference'
        clusterNetworkPortGroup:
          description: |2
            Name of the portgroup that is associated with the VCHA Cluster IP
            address where clients connect to vCenter Server.
            
            If a portgroup is not
            specified same portgroup present on source is used to deploy the VM
            with an assumption that portgroup is present on destination.
            
            Refers instance of *Network*.
          $ref: '#/components/schemas/ManagedObjectReference'
        folder:
          description: |2
            Folder in which the VM is to be created.
            
            Refers instance of *Folder*.
          $ref: '#/components/schemas/ManagedObjectReference'
        resourcePool:
          description: |2
            ResourcePool that will be used to deploy this node.
            
            If the ResourcePool is not specified, the root resource pool for the
            host will be used.
            
            Refers instance of *ResourcePool*.
          $ref: '#/components/schemas/ManagedObjectReference'
        managementVc:
          description: |2
            Management vCenter Server managing this VM.
            
            If the managementVc is not specified, managementVc specified as
            part of SourceNodeSpec is used.
          $ref: '#/components/schemas/ServiceLocator'
        nodeName:
          description: |2
            nodeName here refers to a name that will be assigned to the VM to which
            this node will be deployed to.
          type: string
        ipSettings:
          description: |2
            VCHA Cluster network configuration of the node.
            
            All cluster communication (state replication, heartbeat,
            cluster messages) happens over this network.
          $ref: '#/components/schemas/CustomizationIPSettings'
      required:
        - folder
        - nodeName
        - ipSettings
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfNodeDeploymentSpec:
      type: object
      description: |2
        A boxed array of *NodeDeploymentSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/NodeDeploymentSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    NodeNetworkSpec:
      type: object
      description: |2
        The NodeNetworkSpec class defines network specification of a node
        in the VCHA Cluster.
      properties:
        ipSettings:
          description: |2
            VCHA Cluster network configuration of the node.
            
            All cluster communication (state replication, heartbeat,
            cluster messages) happens over this network.
          $ref: '#/components/schemas/CustomizationIPSettings'
      required:
        - ipSettings
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfNodeNetworkSpec:
      type: object
      description: |2
        A boxed array of *NodeNetworkSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/NodeNetworkSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PassiveNodeDeploymentSpec:
      type: object
      description: |2
        The PassiveNodeDeploymentSpec class defines VCHA Cluster configuration
        of the Passive node VM in the VCHA Cluster.
      properties:
        failoverIpSettings:
          description: |2
            Failover IP address that this node must assume after the failover
            to serve client requests.
            
            If not specified, it will assume the public
            IP address of the Active vCenter Server.
          $ref: '#/components/schemas/CustomizationIPSettings'
      allOf:
        - $ref: '#/components/schemas/NodeDeploymentSpec'

    ArrayOfPassiveNodeDeploymentSpec:
      type: object
      description: |2
        A boxed array of *PassiveNodeDeploymentSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PassiveNodeDeploymentSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PassiveNodeNetworkSpec:
      type: object
      description: |2
        The PassiveNodeNetworkSpec class defines VCHA Failover and Cluster
        network configuration of the Passive node VM in the VCHA Cluster.
      properties:
        failoverIpSettings:
          description: |2
            Failover IP address that this node must assume after the failover
            to serve client requests.
            
            If not specified, it will assume the public
            IP address of the Active vCenter Server.
          $ref: '#/components/schemas/CustomizationIPSettings'
      allOf:
        - $ref: '#/components/schemas/NodeNetworkSpec'

    ArrayOfPassiveNodeNetworkSpec:
      type: object
      description: |2
        A boxed array of *PassiveNodeNetworkSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PassiveNodeNetworkSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    SourceNodeSpec:
      type: object
      description: |2
        The SourceNodeSpec class defines specification of
        the source node that is used to initiate the configuration or
        deployment for VCHA.
      properties:
        managementVc:
          description: |2
            Credentials for the management vCenter Server that is managing
            this node.
          $ref: '#/components/schemas/ServiceLocator'
        activeVc:
          description: |2
            VirtualMachine reference for this vCenter Server.
            
            Refers instance of *VirtualMachine*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - managementVc
        - activeVc
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfSourceNodeSpec:
      type: object
      description: |2
        A boxed array of *SourceNodeSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/SourceNodeSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VchaClusterConfigInfo:
      type: object
      description: |2
        The VchaClusterConfigInfo class contains
        configuration information of the three nodes of a VCHA
        Cluster.
      properties:
        failoverNodeInfo1:
          description: |2
            Node configuration information for the VCHA Cluster
          $ref: '#/components/schemas/FailoverNodeInfo'
        failoverNodeInfo2:
          description: |2
            Node configuration information for the VCHA Cluster
          $ref: '#/components/schemas/FailoverNodeInfo'
        witnessNodeInfo:
          description: |2
            Node configuration information for the VCHA Cluster
          $ref: '#/components/schemas/WitnessNodeInfo'
        state:
          description: |2
            Current state of VCHA Cluster.
            
            *VchaState_enum* lists all
            possible states.
            If the state is invalid or notConfigured, the other fields in this
            object will be unset.
          type: string
      required:
        - state
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVchaClusterConfigInfo:
      type: object
      description: |2
        A boxed array of *VchaClusterConfigInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VchaClusterConfigInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VchaClusterConfigSpec:
      type: object
      description: |2
        The VchaClusterConfigSpec class contains IP addresses of
        Passive and Witness nodes to configure and form the VCHA Cluster.
        
        Passive and Witness nodes are assumed to be pre-configured
        to allow access to them over the specified IP addresses.
        Active Node IP address is not required as it is retrieved from
        the already configured interface on VCHA Cluster network.
      properties:
        passiveIp:
          description: |2
            IP Address of Passive node in the VCHA Cluster network.
          type: string
        witnessIp:
          description: |2
            IP Address of Witness node in the VCHA Cluster network.
          type: string
      required:
        - passiveIp
        - witnessIp
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVchaClusterConfigSpec:
      type: object
      description: |2
        A boxed array of *VchaClusterConfigSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VchaClusterConfigSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VchaClusterDeploymentSpec:
      type: object
      description: |2
        The VchaClusterDeploymentSpec class contains
        deployment information for creating and configuring a VCHA Cluster.
      properties:
        passiveDeploymentSpec:
          description: |2
            Deployment spec for the Passive node
          $ref: '#/components/schemas/PassiveNodeDeploymentSpec'
        witnessDeploymentSpec:
          description: |2
            Deployment spec for the Witness node
          $ref: '#/components/schemas/NodeDeploymentSpec'
        activeVcSpec:
          description: |2
            Active vCenter Server specification required to deploy
            VCHA Cluster.
          $ref: '#/components/schemas/SourceNodeSpec'
        activeVcNetworkConfig:
          description: |2
            The Cluster network config spec allows creation and configuration of
            the second Network adapter of the Active or Source VCenter.
            
            The second network adapter is used for communication between
            the nodes of a VCHA cluster.
          $ref: '#/components/schemas/ClusterNetworkConfigSpec'
      required:
        - passiveDeploymentSpec
        - witnessDeploymentSpec
        - activeVcSpec
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVchaClusterDeploymentSpec:
      type: object
      description: |2
        A boxed array of *VchaClusterDeploymentSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VchaClusterDeploymentSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VchaClusterNetworkSpec:
      type: object
      description: |2
        The VchaClusterNetworkSpec class contains network
        configuration information for a VCHA Cluster.
      properties:
        witnessNetworkSpec:
          description: |2
            Network spec for the Witness node.
          $ref: '#/components/schemas/NodeNetworkSpec'
        passiveNetworkSpec:
          description: |2
            Network spec for the Passive node.
          $ref: '#/components/schemas/PassiveNodeNetworkSpec'
      required:
        - witnessNetworkSpec
        - passiveNetworkSpec
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVchaClusterNetworkSpec:
      type: object
      description: |2
        A boxed array of *VchaClusterNetworkSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VchaClusterNetworkSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    WitnessNodeInfo:
      type: object
      description: |2
        The WitnessNodeInfo class defines configuration
        information for the Witness node in the cluster
      properties:
        ipSettings:
          description: |2
            VCHA Cluster network configuration of the Witness node.
          $ref: '#/components/schemas/CustomizationIPSettings'
        biosUuid:
          description: |2
            BIOS UUID for the node.
            
            It is set only if the VCHA Cluster was
            formed using automatic provisioning by the deploy API.
          type: string
      required:
        - ipSettings
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfWitnessNodeInfo:
      type: object
      description: |2
        A boxed array of *WitnessNodeInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/WitnessNodeInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VchaClusterHealth:
      type: object
      description: |2
        The VchaClusterHealth class describes the overall
        VCHA Cluster health.
        
        Health information include the last known runtime
        information about the VCHA Cluster along with health messages and any
        additional information applicable to the current VCHA Cluster health.
        If the cluster state is healthy, there will not be any health messages
        or additional information provided.
      properties:
        runtimeInfo:
          description: |2
            Runtime information of the VCHA Cluster
          $ref: '#/components/schemas/VchaClusterRuntimeInfo'
        healthMessages:
          description: |2
            A collection of Messages describing the reason for a non-healthy
            Cluster.
          type: array
          items:
            $ref: '#/components/schemas/LocalizableMessage'
        additionalInformation:
          description: |2
            A collection of additional information regarding the health messages.
          type: array
          items:
            $ref: '#/components/schemas/LocalizableMessage'
      required:
        - runtimeInfo
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVchaClusterHealth:
      type: object
      description: |2
        A boxed array of *VchaClusterHealth*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VchaClusterHealth'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VchaClusterRuntimeInfo:
      type: object
      description: |2
        The VchaClusterRuntimeInfo class describes the
        runtime information of a VCHA Cluster.
        
        This includes the last known
        state of the cluster and last known states of each node.
      properties:
        clusterState:
          description: |2
            Last known state of the VCHA Cluster.
            
            *VchaClusterState* lists all possible states.
          type: string
        nodeInfo:
          description: |2
            Runtime information for each node in the VCHA Cluster.
          type: array
          items:
            $ref: '#/components/schemas/VchaNodeRuntimeInfo'
        clusterMode:
          description: |2
            Operational mode of the VCHA Cluster.
            
            *VchaClusterMode*
            lists all possible modes.
          type: string
      required:
        - clusterState
        - clusterMode
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVchaClusterRuntimeInfo:
      type: object
      description: |2
        A boxed array of *VchaClusterRuntimeInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VchaClusterRuntimeInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VchaNodeRuntimeInfo:
      type: object
      description: |2
        The VchaNodeRuntimeInfo class describes a node's
        runtime information in a VCHA Cluster.
      properties:
        nodeState:
          description: |2
            Last known state of the node.
            
            *VchaNodeState*
            lists all possible states.
          type: string
        nodeRole:
          description: |2
            Last known role of the node.
            
            *VchaNodeRole*
            lists all possible roles.
          type: string
        nodeIp:
          description: |2
            IP address for the node in the replication network.
          type: string
      required:
        - nodeState
        - nodeRole
        - nodeIp
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVchaNodeRuntimeInfo:
      type: object
      description: |2
        A boxed array of *VchaNodeRuntimeInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VchaNodeRuntimeInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualMachineAffinityInfo:
      type: object
      description: |2
        Specification of scheduling affinity.
        
        Scheduling affinity is used for explicitly specifying which
        processors or NUMA nodes may be used by a virtual machine.
      properties:
        affinitySet:
          description: |2
            List of nodes (processors for CPU, NUMA nodes for memory) that
            may be used by the virtual machine.
            
            If the array is empty when
            modifying the affinity setting, then any existing affinity is removed.
          type: array
          items:
            type: integer
            format: int32
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVirtualMachineAffinityInfo:
      type: object
      description: |2
        A boxed array of *VirtualMachineAffinityInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineAffinityInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualMachineBaseIndependentFilterSpec:
      type: object
      description: |2
        The BaseIndependentFilterSpec is base class for two different types
        of independent filter specs *VirtualMachineIndependentFilterSpec*
        and *VirtualMachineEmptyIndependentFilterSpec* which are used to specify
        independent filters to be attached/removed on VMs virtual disk.
        
        ***Since:*** vSphere API Release 7.0.2.1
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVirtualMachineBaseIndependentFilterSpec:
      type: object
      description: |2
        A boxed array of *VirtualMachineBaseIndependentFilterSpec*. To be used in *Any* placeholders.
        
        ***Since:*** vSphere API Release 7.0.2.1
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineBaseIndependentFilterSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualMachineBootOptions:
      type: object
      description: |2
        The *VirtualMachineBootOptions* data object defines the boot-time
        behavior of a virtual machine.
        
        You can use the delay options to specify a time interval
        during which you can enter the virtual machine BIOS setup.
        These options provide a solution for the situation that occurs
        when the console attaches to the virtual machine after
        the boot sequence has passed the BIOS setup entry point.
      properties:
        bootDelay:
          description: |2
            Delay in milliseconds before starting the boot sequence.
            
            The boot delay specifies a time interval between virtual machine
            power on or restart and the beginning of the boot sequence.
          type: integer
          format: int64
        enterBIOSSetup:
          description: |2
            If set to <code>true</code>, the virtual machine
            automatically enters BIOS setup the next time it boots.
            
            The virtual machine resets this flag to <code>false</code>
            so that subsequent boots proceed normally.
          type: boolean
        efiSecureBootEnabled:
          description: |2
            If set to <code>true</code>, the virtual machine's firmware will
            perform signature checks of any EFI images loaded during startup, and
            will refuse to start any images which do not pass those signature
            checks.
            
            When creating a new VM:
            \- If vim.vm.FlagInfo.vbsEnabled is set to <code>true</code>,
            and this flag is set to <code>false</code> error is returned.
            \- If this flag is unset and vim.vm.FlagInfo.vbsEnabled is set to
            <code>true</code>, the value of this flag is set to <code>true</code>.
          type: boolean
        bootRetryEnabled:
          description: |2
            If set to <code>true</code>, a virtual machine that fails
            to boot will try again after the *VirtualMachineBootOptions.bootRetryDelay*
            time period has expired.
            
            When <code>false</code>,
            the virtual machine waits indefinitely for you to initiate
            boot retry.
          type: boolean
        bootRetryDelay:
          description: |2
            Delay in milliseconds before a boot retry.
            
            The boot retry delay
            specifies a time interval between virtual machine boot failure
            and the subsequent attempt to boot again. The virtual machine
            uses this value only if *VirtualMachineBootOptions.bootRetryEnabled* is true.
          type: integer
          format: int64
        bootOrder:
          description: |2
            Boot order.
            
            Listed devices are used for booting. After list
            is exhausted, default BIOS boot device algorithm is used for
            booting.
            Note that order of the entries in the list is important:
            device listed first is used for boot first, if that one
            fails second entry is used, and so on.
            Platform may have some internal limit on the number of devices
            it supports. If bootable device is not reached before platform's
            limit is hit, boot will fail. At least single entry is supported
            by all products supporting boot order settings.
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineBootOptionsBootableDevice'
        networkBootProtocol:
          description: |2
            Protocol to attempt during PXE network boot or NetBoot.
            
            See also *VirtualMachineBootOptionsNetworkBootProtocolType_enum*.
          type: string
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVirtualMachineBootOptions:
      type: object
      description: |2
        A boxed array of *VirtualMachineBootOptions*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineBootOptions'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualMachineBootOptionsBootableCdromDevice:
      type: object
      description: |2
        Bootable CDROM.
        
        First CDROM with bootable media found is used.
      allOf:
        - $ref: '#/components/schemas/VirtualMachineBootOptionsBootableDevice'

    ArrayOfVirtualMachineBootOptionsBootableCdromDevice:
      type: object
      description: |2
        A boxed array of *VirtualMachineBootOptionsBootableCdromDevice*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineBootOptionsBootableCdromDevice'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualMachineBootOptionsBootableDevice:
      type: object
      description: |2
        Bootable device.
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVirtualMachineBootOptionsBootableDevice:
      type: object
      description: |2
        A boxed array of *VirtualMachineBootOptionsBootableDevice*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineBootOptionsBootableDevice'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualMachineBootOptionsBootableDiskDevice:
      type: object
      description: |2
        Bootable disk.
      properties:
        deviceKey:
          description: |2
            *Key*
            property of the bootable harddisk.
          type: integer
          format: int32
      required:
        - deviceKey
      allOf:
        - $ref: '#/components/schemas/VirtualMachineBootOptionsBootableDevice'

    ArrayOfVirtualMachineBootOptionsBootableDiskDevice:
      type: object
      description: |2
        A boxed array of *VirtualMachineBootOptionsBootableDiskDevice*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineBootOptionsBootableDiskDevice'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualMachineBootOptionsBootableEthernetDevice:
      type: object
      description: |2
        Bootable ethernet adapter.
        
        PXE boot is attempted from the device.
      properties:
        deviceKey:
          description: |2
            *Key*
            property of the bootable ethernet adapter.
          type: integer
          format: int32
      required:
        - deviceKey
      allOf:
        - $ref: '#/components/schemas/VirtualMachineBootOptionsBootableDevice'

    ArrayOfVirtualMachineBootOptionsBootableEthernetDevice:
      type: object
      description: |2
        A boxed array of *VirtualMachineBootOptionsBootableEthernetDevice*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineBootOptionsBootableEthernetDevice'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualMachineBootOptionsBootableFloppyDevice:
      type: object
      description: |2
        Bootable floppy disk.
      allOf:
        - $ref: '#/components/schemas/VirtualMachineBootOptionsBootableDevice'

    ArrayOfVirtualMachineBootOptionsBootableFloppyDevice:
      type: object
      description: |2
        A boxed array of *VirtualMachineBootOptionsBootableFloppyDevice*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineBootOptionsBootableFloppyDevice'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualMachineCapability:
      type: object
      description: |2
        This data object type contains information about the
        operation/capabilities of a virtual machine
      properties:
        snapshotOperationsSupported:
          description: |2
            Indicates whether or not a virtual machine supports snapshot operations.
          type: boolean
        multipleSnapshotsSupported:
          description: |2
            Indicates whether or not a virtual machine supports multiple snapshots.
            
            This value is not set when the virtual machine is unavailable, for instance,
            when it is being created or deleted.
          type: boolean
        snapshotConfigSupported:
          description: |2
            Indicates whether or not a virtual machine supports snapshot config.
          type: boolean
        poweredOffSnapshotsSupported:
          description: |2
            Indicates whether or not a virtual machine supports snapshot operations in
            poweredOff state.
            
            This flag doesn't affect vim.VirtualMachine.GetSnapshot,
            which is always supported.
          type: boolean
        memorySnapshotsSupported:
          description: |2
            Indicates whether or not a virtual machine supports memory snapshots.
          type: boolean
        revertToSnapshotSupported:
          description: |2
            Indicates whether or not a virtual machine supports reverting to a snapshot.
          type: boolean
        quiescedSnapshotsSupported:
          description: |2
            Indicates whether or not a virtual machine supports quiesced snapshots.
          type: boolean
        disableSnapshotsSupported:
          deprecated: true
          description: |2
            Deprecated as of vSphere API 4.0. The value returned from the server is
            always false.
            
            Indicates whether or not snapshots can be disabled.
          type: boolean
        lockSnapshotsSupported:
          description: |2
            Indicates whether or not the snapshot tree can be locked.
          type: boolean
        consolePreferencesSupported:
          description: |2
            Indicates whether console preferences can be set for this virtual machine.
          type: boolean
        cpuFeatureMaskSupported:
          description: |2
            Indicates whether CPU feature requirements masks can be set for this
            virtual machine.
            
            Masking for hardware version 9 and newer virtual
            machines is controlled by *VirtualMachineCapability.featureRequirementSupported*.
          type: boolean
        s1AcpiManagementSupported:
          description: |2
            Indicates whether or not a virtual machine supports ACPI S1 settings management.
          type: boolean
        settingScreenResolutionSupported:
          description: |2
            Indicates whether of not this virtual machine supports
            setting the screen resolution of the console window.
            
            This capability depends on the guest operating system
            configured for this virtual machine.
          type: boolean
        toolsAutoUpdateSupported:
          description: |2
            Supports tools auto-update.
          type: boolean
        vmNpivWwnSupported:
          description: |2
            Supports virtual machine NPIV WWN.
          type: boolean
        npivWwnOnNonRdmVmSupported:
          description: |2
            Supports assigning NPIV WWN to virtual machines that don't have RDM disks.
          type: boolean
        vmNpivWwnDisableSupported:
          description: |2
            Indicates whether the NPIV disabling operation is supported the virtual machine.
          type: boolean
        vmNpivWwnUpdateSupported:
          description: |2
            Indicates whether the update of NPIV WWNs are supported on the virtual machine.
          type: boolean
        swapPlacementSupported:
          description: |2
            Flag indicating whether the virtual machine has a configurable
            *swapfile placement policy*.
          type: boolean
        toolsSyncTimeSupported:
          description: |2
            Indicates whether asking tools to sync time with the host is supported.
          type: boolean
        virtualMmuUsageSupported:
          description: |2
            Indicates whether or not the use of nested page table hardware support
            can be explicitly set.
          type: boolean
        diskSharesSupported:
          description: |2
            Indicates whether resource settings for disks can be
            applied to this virtual machine.
          type: boolean
        bootOptionsSupported:
          description: |2
            Indicates whether boot options can be configured
            for this virtual machine.
          type: boolean
        bootRetryOptionsSupported:
          description: |2
            Indicates whether automatic boot retry can be
            configured for this virtual machine.
          type: boolean
        settingVideoRamSizeSupported:
          description: |2
            Flag indicating whether the video ram size of this virtual machine
            can be configured.
          type: boolean
        settingDisplayTopologySupported:
          description: |2
            Indicates whether of not this virtual machine supports
            setting the display topology of the console window.
            
            This capability depends on the guest operating system
            configured for this virtual machine.
          type: boolean
        recordReplaySupported:
          deprecated: true
          description: |2
            Deprecated as of vSphere API 6.0.
            
            Indicates whether record and replay functionality is supported on this
            virtual machine.
          type: boolean
        changeTrackingSupported:
          description: |2
            Indicates that change tracking is supported for virtual disks of this
            virtual machine.
            
            However, even if change tracking is supported, it might
            not be available for all disks of the virtual machine. For example,
            passthru raw disk mappings or disks backed by any Ver1BackingInfo cannot
            be tracked.
          type: boolean
        multipleCoresPerSocketSupported:
          description: |2
            Indicates whether multiple virtual cores per socket is supported on this VM.
          type: boolean
        hostBasedReplicationSupported:
          description: |2
            Indicates that host based replication is supported on this virtual
            machine.
            
            However, even if host based replication is supported,
            it might not be available for all disk types. For example, passthru
            raw disk mappings can not be replicated.
          type: boolean
        guestAutoLockSupported:
          description: |2
            Indicates whether features like guest OS auto-lock and MKS connection
            controls are supported for this virtual machine.
          type: boolean
        memoryReservationLockSupported:
          description: |2
            Indicates whether
            *memoryReservationLockedToMax*
            may be set to true for this virtual machine.
          type: boolean
        featureRequirementSupported:
          description: |2
            Indicates whether featureRequirement feature is supported.
          type: boolean
        poweredOnMonitorTypeChangeSupported:
          description: |2
            Indicates whether a monitor type change is supported while this virtual
            machine is in the poweredOn state.
          type: boolean
        seSparseDiskSupported:
          description: |2
            Indicates whether this virtual machine supports the Flex-SE
            (space-efficient, sparse) format for virtual disks.
          type: boolean
        nestedHVSupported:
          description: |2
            Indicates whether this virtual machine supports nested hardware-assisted
            virtualization.
          type: boolean
        vPMCSupported:
          description: |2
            Indicates whether this virtual machine supports virtualized CPU performance
            counters.
          type: boolean
        secureBootSupported:
          description: |2
            Indicates whether secureBoot is supported for this virtual machine.
          type: boolean
        perVmEvcSupported:
          description: |2
            Indicates whether this virtual machine supports Per-VM EVC mode.
          type: boolean
        virtualMmuUsageIgnored:
          description: |2
            Indicates that *VirtualMachineFlagInfo.virtualMmuUsage* is
            ignored by this virtual machine, always operating as if "on" was selected.
          type: boolean
        virtualExecUsageIgnored:
          description: |2
            Indicates that *VirtualMachineFlagInfo.virtualExecUsage* is
            ignored by this virtual machine, always operating as if "hvOn" was selected.
          type: boolean
        diskOnlySnapshotOnSuspendedVMSupported:
          description: |2
            Indicates whether this virtual machine supports creating disk-only snapshots
            in suspended state.
            
            If this capability is not set, the snapshot of a
            virtual machine in suspended state will always include memory.
          type: boolean
        suspendToMemorySupported:
          description: |2
            Indicates whether this virtual machine supports suspending to memory.
            
            ***Since:*** vSphere API Release 7.0.2.0
          type: boolean
        toolsSyncTimeAllowSupported:
          description: |2
            Indicates support for allowing or disallowing all tools time
            sync with host.
            
            ***Since:*** vSphere API Release 7.0.1.0
          type: boolean
        sevSupported:
          description: |2
            Indicates support for AMD-SEV (Secure Encrypted Virtualization).
            
            SEV is
            supported when set to true, and unsupported otherwise.
            
            ***Since:*** vSphere API Release 7.0.1.0
          type: boolean
        pmemFailoverSupported:
          description: |2
            Indicates support for failover to a dfferent host on VM's with pmem.
            
            Failover is supported when set to true, and unsupported otherwise.
            
            ***Since:*** vSphere API Release 7.0.2.0
          type: boolean
        requireSgxAttestationSupported:
          description: |2
            Whether the VM supports requiring SGX remote attestation.
            
            ***Since:*** vSphere API Release 8.0.0.1
          type: boolean
        changeModeDisksSupported:
          description: |2
            Indicates support for change mode on virtual disks
            
            ***Since:*** vSphere API Release 8.0.0.1
          type: boolean
        vendorDeviceGroupSupported:
          description: |2
            Indicates support for Vendor Device Groups
            
            ***Since:*** vSphere API Release 8.0.1.0
          type: boolean
      required:
        - snapshotOperationsSupported
        - multipleSnapshotsSupported
        - snapshotConfigSupported
        - poweredOffSnapshotsSupported
        - memorySnapshotsSupported
        - revertToSnapshotSupported
        - quiescedSnapshotsSupported
        - disableSnapshotsSupported
        - lockSnapshotsSupported
        - consolePreferencesSupported
        - cpuFeatureMaskSupported
        - s1AcpiManagementSupported
        - settingScreenResolutionSupported
        - toolsAutoUpdateSupported
        - vmNpivWwnSupported
        - npivWwnOnNonRdmVmSupported
        - vmNpivWwnDisableSupported
        - vmNpivWwnUpdateSupported
        - swapPlacementSupported
        - toolsSyncTimeSupported
        - virtualMmuUsageSupported
        - diskSharesSupported
        - bootOptionsSupported
        - bootRetryOptionsSupported
        - settingVideoRamSizeSupported
        - settingDisplayTopologySupported
        - recordReplaySupported
        - changeTrackingSupported
        - multipleCoresPerSocketSupported
        - hostBasedReplicationSupported
        - guestAutoLockSupported
        - memoryReservationLockSupported
        - featureRequirementSupported
        - poweredOnMonitorTypeChangeSupported
        - seSparseDiskSupported
        - nestedHVSupported
        - vPMCSupported
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVirtualMachineCapability:
      type: object
      description: |2
        A boxed array of *VirtualMachineCapability*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineCapability'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualMachineCdromInfo:
      type: object
      description: |2
        CdromInfo class contains information about a physical CD-ROM drive on the host.
      properties:
        description:
          description: |2
            Description of the physical device.
            
            This is set only by the server.
          type: string
      allOf:
        - $ref: '#/components/schemas/VirtualMachineTargetInfo'

    ArrayOfVirtualMachineCdromInfo:
      type: object
      description: |2
        A boxed array of *VirtualMachineCdromInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineCdromInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualMachineCertThumbprint:
      type: object
      description: |2
        Describes a single certificate thumbprint that can be used to verify
        the identity of the host before connecting to a running virtual machine.
        
        ***Since:*** vSphere API Release 7.0.3.1
      properties:
        thumbprint:
          description: |2
            The thumbprint of the certificate of the host to which we are
            connecting.
          type: string
        hashAlgorithm:
          description: |2
            The hash algorithm used to generate the thumbprint.
            
            *VirtualMachineCertThumbprintHashAlgorithm_enum* lists the set of supported values.
          type: string
      required:
        - thumbprint
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVirtualMachineCertThumbprint:
      type: object
      description: |2
        A boxed array of *VirtualMachineCertThumbprint*. To be used in *Any* placeholders.
        
        ***Since:*** vSphere API Release 7.0.3.1
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineCertThumbprint'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualMachineCloneSpec:
      type: object
      description: |2
        Specification for a virtual machine cloning operation.
      properties:
        location:
          description: |2
            A type of RelocateSpec that specifies the location of resources the
            newly cloned virtual machine will use.
            
            The location specifies:
            - A datastore where the virtual machine will be located on physical
              storage.
              This is always provided because it indicates where the newly
              created clone will be copied.
            - a resource pool and optionally a host. The resource pool
              determines what compute resources will be available to the clone
              and the host indicates which machine will host the clone.
          $ref: '#/components/schemas/VirtualMachineRelocateSpec'
        template:
          description: |2
            Specifies whether or not the new virtual machine should be marked as a
            template.
          type: boolean
        config:
          description: |2
            An optional specification of changes to the virtual hardware.
            
            For example, this can be used to, (but not limited to) reconfigure the
            networks the virtual switches are hooked up to in the cloned virtual
            machine.
            Use *VirtualMachineRelocateSpec.deviceChange* in
            *VirtualMachineCloneSpec.location*
            for specifying any virtual device changes for disks and networks.
          $ref: '#/components/schemas/VirtualMachineConfigSpec'
        customization:
          description: |2
            An optional guest operating system customization specification.
            
            This value is ignored if a template is being created.
          $ref: '#/components/schemas/CustomizationSpec'
        powerOn:
          description: |2
            Specifies whether or not the new VirtualMachine should be powered on
            after creation.
            
            As part of a customization, this flag is normally set
            to true, since the first power-on operation completes the customization
            process. This flag is ignored if a template is being created.
          type: boolean
        snapshot:
          description: |2
            Snapshot reference from which to base the clone.
            
            If this parameter is set, the clone is based off of the snapshot
            point. This means that the newly created virtual machine will
            have the same configuration as the virtual machine at the time
            the snapshot was taken.
            
            If this property is not set then the clone is based off of the
            virtual machine's current configuration.
            
            Setting this is only supported if the host this virtual machine
            is currently residing on
            *supports cloning from a snapshot point*. Such support does not need to
            exist on the destination host for the clone.
            
            Setting this is only supported if the virtual machine supports
            reporting snapshot configuration information. See *VirtualMachineCapability.snapshotConfigSupported*. Such support does not need
            to exist on the destination host for the clone.
            
            Refers instance of *VirtualMachineSnapshot*.
          $ref: '#/components/schemas/ManagedObjectReference'
        memory:
          description: |2
            Flag indicating whether to retain a copy of the source virtual machine's
            memory state in the clone.
            
            Retaining the memory state during
            clone results in a clone in suspended state with all network adapters
            removed to avoid network conflicts, except those with a
            VirtualEthernetCard.addressType of "manual".
            Users of this flag should take special care so that, when adding a network
            adapter back to the clone, the VM is not resumed on the same VM network
            as the source VM, or else MAC address conflicts could occur.
            When cloning between two hosts with different CPUs outside an EVC cluster,
            users of this flag should be aware that vCenter does not verify
            CPU compatibility between the clone's memory state and the target host
            prior to the clone operation, so the clone may fail to resume
            until it is migrated to a host with a compatible CPU.
            
            This flag is ignored if the snapshot parameter is unset. This flag
            only applies for a snapshot taken on a running or suspended
            virtual machine with the 'memory' parameter set to true, because otherwise
            the snapshot has no memory state. This flag defaults to false.
          type: boolean
        tpmProvisionPolicy:
          description: |2
            Provisioning policy for virtual TPM devices during VM clone operations.
            
            The list of supported values is defined in *VirtualMachineCloneSpecTpmProvisionPolicy_enum*.
            
            If unset - a globally defined policy is used, which by default is set to
            'copy'.
            
            ***Since:*** vSphere API Release 8.0.0.1
          type: string
      required:
        - location
        - template
        - powerOn
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVirtualMachineCloneSpec:
      type: object
      description: |2
        A boxed array of *VirtualMachineCloneSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineCloneSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualMachineConfigInfo:
      type: object
      description: |2
        The ConfigInfo data object type encapsulates the configuration settings and
        virtual hardware for a virtual machine.
        
        This type holds all the information
        that is present in the .vmx configuration file for the virtual machine.
      properties:
        changeVersion:
          description: |2
            The changeVersion is a unique identifier for a given version
            of the configuration.
            
            Each change to the configuration
            updates this value. This is typically implemented as an ever
            increasing count or a time-stamp. However, a client should
            always treat this as an opaque string.
          type: string
        modified:
          description: |2
            Last time a virtual machine's configuration was modified.
          type: string
          format: date-time
        name:
          description: |2
            Display name of the virtual machine.
            
            Any / (slash), \\ (backslash), character used in this
            name element is escaped. Similarly, any % (percent) character used in
            this name element is escaped, unless it is used to start an escape
            sequence. A slash is escaped as %2F or %2f. A backslash is escaped as %5C or
            %5c, and a percent is escaped as %25.
          type: string
        guestFullName:
          description: |2
            This is the full name of the guest operating system for the virtual machine.
            
            For example: Windows 2000 Professional.
            
            See also *VirtualMachineConfigInfo.alternateGuestName*.
          type: string
        version:
          description: |2
            The version string for this virtual machine.
          type: string
        uuid:
          description: |2
            128-bit SMBIOS UUID of a virtual machine represented as a hexadecimal string
            in "12345678-abcd-1234-cdef-123456789abc" format.
          type: string
        createDate:
          description: |2
            Time the virtual machine's configuration was created.
          type: string
          format: date-time
        instanceUuid:
          description: |2
            VirtualCenter-specific 128-bit UUID of a virtual machine, represented
            as a hexademical string.
            
            This identifier is used by VirtualCenter to
            uniquely identify all virtual machine instances, including those that
            may share the same SMBIOS UUID.
          type: string
        npivNodeWorldWideName:
          description: |2
            A 64-bit node WWN (World Wide Name).
            
            These WWNs are paired with the
            *VirtualMachineConfigInfo.npivPortWorldWideName* to be used by the NPIV VPORTs instantiated for the
            virtual machine on the physical HBAs of the host. A pair of node and port WWNs
            serves as a unique identifier in accessing a LUN, so that it can be monitored or
            controlled by the storage administrator.
            
            If this property contains a single node WWN, the same node WWN is used to pair
            with all port WWNs listed in *VirtualMachineConfigInfo.npivPortWorldWideName*. If this property or
            *VirtualMachineConfigInfo.npivPortWorldWideName* is empty or unset, NPIV WWN is disabled for the
            virtual machine.
          type: array
          items:
            type: integer
            format: int64
        npivPortWorldWideName:
          description: |2
            A 64-bit port WWN (World Wide Name).
            
            For detail description on WWN, see
            *VirtualMachineConfigInfo.npivNodeWorldWideName*.
          type: array
          items:
            type: integer
            format: int64
        npivWorldWideNameType:
          description: |2
            The source that provides/generates the assigned WWNs.
            
            See also *VirtualMachineConfigInfoNpivWwnType_enum*.
          type: string
        npivDesiredNodeWwns:
          description: |2
            The NPIV node WWNs to be extended from the original list of WWN nummbers.
            
            This
            property should be set to desired number which is an aggregate of existing
            plus new numbers. Desired Node WWNs should always be greater than the existing
            number of node WWNs
          type: integer
          minimum: -32768
          maximum: 32767
        npivDesiredPortWwns:
          description: |2
            The NPIV port WWNs to be extended from the original list of WWN nummbers.
            
            This
            property should be set to desired number which is an aggregate of existing
            plus new numbers. Desired Node WWNs should always be greater than the existing
            number of port WWNs
          type: integer
          minimum: -32768
          maximum: 32767
        npivTemporaryDisabled:
          description: |2
            This property is used to enable or disable the NPIV capability on a desired
            virtual machine on a temporary basis.
            
            When this property is set NPIV Vport
            will not be instantiated by the VMX process of the Virtual Machine. When this
            property is set port WWNs and node WWNs in the VM configuration are preserved.
          type: boolean
        npivOnNonRdmDisks:
          description: |2
            This property is used to check whether the NPIV can be enabled on the Virtual
            machine with non-rdm disks in the configuration, so this is potentially not
            enabling npiv on vmfs disks.
            
            Also this property is used to check whether RDM
            is required to generate WWNs for a virtual machine.
          type: boolean
        locationId:
          description: |2
            Hash incorporating the virtual machine's config file location
            and the UUID of the host assigned to run the virtual machine.
          type: string
        template:
          description: |2
            Flag indicating whether or not a virtual machine is a template.
          type: boolean
        guestId:
          description: |2
            Guest operating system configured on a virtual machine.
            
            This is a guest identifier that can be used to access the
            *GuestOsDescriptor*
            list for information about default configuration.
            For more information on possible values, see
            *VirtualMachineGuestOsIdentifier*.
          type: string
        alternateGuestName:
          description: |2
            Used as display name for the operating system if guestId is `other`
            or `other-64`.
            
            See also *VirtualMachineConfigInfo.guestFullName*.
          type: string
        annotation:
          description: |2
            Description for the virtual machine.
          type: string
        files:
          description: |2
            Information about the files associated with a virtual machine.
            
            This information does not include files for specific virtual disks or
            snapshots.
          $ref: '#/components/schemas/VirtualMachineFileInfo'
        tools:
          description: |2
            Configuration of VMware Tools running in the guest operating system.
          $ref: '#/components/schemas/ToolsConfigInfo'
        flags:
          description: |2
            Additional flags for a virtual machine.
          $ref: '#/components/schemas/VirtualMachineFlagInfo'
        consolePreferences:
          description: |2
            Legacy console viewer preferences when doing power operations.
          $ref: '#/components/schemas/VirtualMachineConsolePreferences'
        defaultPowerOps:
          description: |2
            Configuration of default power operations.
          $ref: '#/components/schemas/VirtualMachineDefaultPowerOpInfo'
        rebootPowerOff:
          description: |2
            Whether the next reboot will result in a power off.
            
            ***Since:*** vSphere API Release 8.0.0.1
          type: boolean
        hardware:
          description: |2
            Processor, memory, and virtual devices for a virtual machine.
          $ref: '#/components/schemas/VirtualHardware'
        vcpuConfig:
          description: |2
            Vcpu configuration.
            
            The <code>vcpuConfig</code> array is indexed
            by vcpu number.
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineVcpuConfig'
        cpuAllocation:
          description: |2
            Resource limits for CPU.
          $ref: '#/components/schemas/ResourceAllocationInfo'
        memoryAllocation:
          description: |2
            Resource limits for memory.
          $ref: '#/components/schemas/ResourceAllocationInfo'
        latencySensitivity:
          description: |2
            The latency-sensitivity of the virtual machine.
          $ref: '#/components/schemas/LatencySensitivity'
        memoryHotAddEnabled:
          description: |2
            Whether memory can be added while this virtual machine is running.
          type: boolean
        cpuHotAddEnabled:
          description: |2
            Whether virtual processors can be added while this
            virtual machine is running.
          type: boolean
        cpuHotRemoveEnabled:
          description: |2
            Whether virtual processors can be removed while this
            virtual machine is running.
          type: boolean
        hotPlugMemoryLimit:
          description: |2
            The maximum amount of memory, in MB, than can be added to a
            running virtual machine.
            
            This value is determined by the
            virtual machine and is specified only if
            *VirtualMachineConfigInfo.memoryHotAddEnabled*
            is set to true.
          type: integer
          format: int64
        hotPlugMemoryIncrementSize:
          description: |2
            Memory, in MB that can be added to a running virtual machine
            must be in increments of this value and needs be a
            multiple of this value.
            
            This value is determined by the virtual machine and is specified
            only if *VirtualMachineConfigSpec.memoryHotAddEnabled*
            has been set to true.
          type: integer
          format: int64
        cpuAffinity:
          description: |2
            Affinity settings for CPU.
          $ref: '#/components/schemas/VirtualMachineAffinityInfo'
        memoryAffinity:
          deprecated: true
          description: |2
            Deprecated since vSphere 6.0.
            
            Affinity settings for memory.
          $ref: '#/components/schemas/VirtualMachineAffinityInfo'
        networkShaper:
          deprecated: true
          description: |2
            Deprecated from vSphere 5.5, shaping policy on VM is not supported.
            
            Resource limits for network.
          $ref: '#/components/schemas/VirtualMachineNetworkShaperInfo'
        extraConfig:
          description: |2
            Additional configuration information for the virtual machine.
          type: array
          items:
            $ref: '#/components/schemas/OptionValue'
        cpuFeatureMask:
          description: |2
            Specifies CPU feature compatibility masks that override the
            defaults from the *GuestOsDescriptor*
            of the virtual machine's guest OS.
            
            As of vSphere API 6.5 *FeatureMask*
            is the recommended method for masking virtual machines with
            hardware version 9 and above (newer). They can be viewed via
            *featureMask*.
          type: array
          items:
            $ref: '#/components/schemas/HostCpuIdInfo'
        datastoreUrl:
          description: |2
            Enumerates the set of datastores that this virtual machine is
            stored on, as well as the URL identification for each of these.
            
            Changes to datastores do not generate property updates on this
            property. However, when this property is retrieved it returns the
            current datastore information.
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineConfigInfoDatastoreUrlPair'
        swapPlacement:
          description: |2
            Virtual machine swapfile placement policy.
            
            This will be unset if the
            virtual machine's
            *swapPlacementSupported*
            capability is false. If swapPlacementSupported is true, the default
            policy is "inherit".
            
            See also *VirtualMachineConfigInfoSwapPlacementType_enum*.
          type: string
        bootOptions:
          description: |2
            Configuration options for the boot behavior of the virtual machine.
          $ref: '#/components/schemas/VirtualMachineBootOptions'
        ftInfo:
          description: |2
            Fault Tolerance settings for this virtual machine.
          $ref: '#/components/schemas/FaultToleranceConfigInfo'
        repConfig:
          description: |2
            vSphere Replication settings for this virtual machine.
            
            Note this may become deprecated in the future releases. We discourage
            any unnecessary dependency on this field.
          $ref: '#/components/schemas/ReplicationConfigSpec'
        vAppConfig:
          description: |2
            vApp meta-data for the virtual machine
          $ref: '#/components/schemas/VmConfigInfo'
        vAssertsEnabled:
          description: |2
            Indicates whether user-configured virtual asserts will be
            triggered during virtual machine replay.
          type: boolean
        changeTrackingEnabled:
          description: |2
            Indicates whether changed block tracking for this VM's disks
            is active.
          type: boolean
        firmware:
          description: |2
            Information about firmware type for this Virtual Machine.
            
            Possible values are described in
            *GuestOsDescriptorFirmwareType_enum*
            When creating a new VM:
            \- If vim.vm.FlagInfo.vbsEnabled is set to <code>true</code> and
            this property is set to <code>bios</code>, error is returned.
            \- If this property is unset and vim.vm.FlagInfo.vbsEnabled is set
            to <code>true</code>, this property is set to <code>efi</code>.
          type: string
        maxMksConnections:
          description: |2
            Indicates the maximum number of active remote display connections
            that the virtual machine will support.
          type: integer
          format: int32
        guestAutoLockEnabled:
          description: |2
            Indicates whether the guest operating system will logout any active
            sessions whenever there are no remote display connections open to
            the virtual machine.
          type: boolean
        managedBy:
          description: |2
            Specifies that this VM is managed by a VC Extension.
            
            See the
            *managedBy* property in the ConfigSpec
            for more details.
          $ref: '#/components/schemas/ManagedByInfo'
        memoryReservationLockedToMax:
          description: |2
            If set true, memory resource reservation for this virtual machine will always be
            equal to the virtual machine's memory size; increases in memory size will be
            rejected when a corresponding reservation increase is not possible.
          type: boolean
        initialOverhead:
          description: |2
            Set of values to be used only to perform admission control when
            determining if a host has sufficient resources for the virtual
            machine to power on.
          $ref: '#/components/schemas/VirtualMachineConfigInfoOverheadInfo'
        nestedHVEnabled:
          description: |2
            Indicates whether this VM is configured to use nested
            hardware-assisted virtualization.
          type: boolean
        vPMCEnabled:
          description: |2
            Indicates whether this VM have vurtual CPU performance counters
            enabled.
          type: boolean
        scheduledHardwareUpgradeInfo:
          description: |2
            Configuration of scheduled hardware upgrades and result from last
            attempt to run scheduled hardware upgrade.
            
            See also *ScheduledHardwareUpgradeInfo*.
          $ref: '#/components/schemas/ScheduledHardwareUpgradeInfo'
        forkConfigInfo:
          description: |2
            Fork configuration of this virtual machines.
            
            If unset, this virtual machine
            is not configured for fork.
            
            See also *VirtualMachineForkConfigInfo*.
          $ref: '#/components/schemas/VirtualMachineForkConfigInfo'
        vFlashCacheReservation:
          deprecated: true
          description: |2
            Deprecated since vSphere 7.0 because vFlash Read Cache
            end of availability.
            
            Specifies the total vFlash resource reservation for the vFlash caches associated
            with this VM's virtual disks, in bytes.
            
            This reservation must be allocated to power on the VM.
            See *VirtualMachineRuntimeInfo.vFlashCacheAllocation* for allocated
            reservation when VM is powered on.
          type: integer
          format: int64
        vmxConfigChecksum:
          description: |2
            A checksum of vmx config file.
          type: string
          format: byte
        messageBusTunnelEnabled:
          description: |2
            Whether to allow tunneling of clients from the guest VM into the
            common message bus on the host network.
          type: boolean
        vmStorageObjectId:
          description: |2
            Virtual Machine Object Identifier.
            
            With Object-based Storage systems, Virtual Machine home directory
            is backed by an object.
            This identifier will be set only if VM directory resided on
            object-based storage systems.
          type: string
        swapStorageObjectId:
          description: |2
            Virtual Machine Swap Object Identifier.
            
            With Object-based Storage systems, VM's Swap is backed by an object.
            This identifier will be set only if VM swap resided on
            object-based storage systems.
          type: string
        keyId:
          description: |2
            Virtual Machine cryptographic options.
          $ref: '#/components/schemas/CryptoKeyId'
        guestIntegrityInfo:
          description: |2
            Guest integrity platform configuration
          $ref: '#/components/schemas/VirtualMachineGuestIntegrityInfo'
        migrateEncryption:
          description: |2
            An enum describing whether encrypted vMotion is required for this VM.
            
            See *VirtualMachineConfigSpecEncryptedVMotionModes_enum* for allowed values.
            This defaults to opportunistic for a regular VM, and will be set to
            required for an encrypted VM.
          type: string
        sgxInfo:
          description: |2
            Configuration of SGX, Software Guard Extensions for the VM.
          $ref: '#/components/schemas/VirtualMachineSgxInfo'
        contentLibItemInfo:
          description: |2
            Content Library Item info.
          $ref: '#/components/schemas/VirtualMachineContentLibraryItemInfo'
        ftEncryptionMode:
          description: |2
            An enum describing whether encrypted Fault Tolerance is required for this
            VM.
            
            See *VirtualMachineConfigSpecEncryptedFtModes_enum* for allowed values.
            \- This defaults to opportunistic for a regular VM, and will be set to
            required for an encrypted VM.
            \- If this property is unset, the mode of encrypted Fault Tolerance
            will be set to opportunistic.
            
            ***Since:*** vSphere API Release 7.0.2.0
          type: string
        guestMonitoringModeInfo:
          description: |2
            GMM configuration
          $ref: '#/components/schemas/VirtualMachineGuestMonitoringModeInfo'
        sevEnabled:
          description: |2
            SEV (Secure Encrypted Virtualization) enabled or not.
            
            SEV is enabled
            when set to true, and disabled otherwise.
            
            ***Since:*** vSphere API Release 7.0.1.0
          type: boolean
        numaInfo:
          description: |2
            vNUMA info.
            
            ***Since:*** vSphere API Release 8.0.0.1
          $ref: '#/components/schemas/VirtualMachineVirtualNumaInfo'
        pmemFailoverEnabled:
          description: |2
            Property to indicate PMem HA failover configuration.
            
            \- When set to TRUE, VMs configured to use PMem
            will be failed over to other hosts by HA, but the data
            in NVDIMM is not persistent.
            \- When set to FALSE, VMs configured to use PMem will not
            be failed over to other hosts by HA.
            Property is currently only applicable to VMs with NVDimms and
            will fail to set True if vPMem disks are present.
            
            ***Since:*** vSphere API Release 7.0.2.0
          type: boolean
        vmxStatsCollectionEnabled:
          description: |2
            Indicates whether VMXStats Collection is enabled/disabled.
            
            \- If TRUE, VMXStats is enabled for the VM and a scoreboard
            file is created to store stats for various VMX components.
            \- If FALSE, VMXStats is disabled for the VM and there is
            no scoreboard file created.
            
            ***Since:*** vSphere API Release 7.0.3.1
          type: boolean
        vmOpNotificationToAppEnabled:
          description: |2
            Indicates whether operation notification to applications is
            enabled/disabled.
            
            \- When set to TRUE, application running inside the VM will be
            notified of operations for which they have registered.
            \- If unset or FALSE, new applications are not allowed to register
            for notifications and RPCs will no longer be supported from
            already registered applications.
            
            ***Since:*** vSphere API Release 7.0.3.0
          type: boolean
        vmOpNotificationTimeout:
          description: |2
            Operation notification timeout in seconds.
            
            \- Specifies the maximum time the application can take to
            prepare for the operation after its been notified. This value is used
            only if *VirtualMachineConfigInfo.vmOpNotificationToAppEnabled* is set to TRUE.
            \- If *VirtualMachineConfigInfo.vmOpNotificationTimeout* is unset, then it defaults to
            cluster/host timeout.
            
            ***Since:*** vSphere API Release 8.0.0.1
          type: integer
          format: int64
        deviceSwap:
          description: |2
            Status of the device swap operation.
            
            ***Since:*** vSphere API Release 8.0.0.1
          $ref: '#/components/schemas/VirtualMachineVirtualDeviceSwap'
        pmem:
          description: |2
            Virtual persistent memory info.
            
            ***Since:*** vSphere API Release 7.0.3.0
          $ref: '#/components/schemas/VirtualMachineVirtualPMem'
        deviceGroups:
          description: |2
            Assignable hardware device groups.
            
            ***Since:*** vSphere API Release 8.0.0.1
          $ref: '#/components/schemas/VirtualMachineVirtualDeviceGroups'
        fixedPassthruHotPlugEnabled:
          description: |2
            Indicates whether support to add and remove fixed passthrough
            devices when the VM is running is enabled.
            
            When the virtual machine is powered on, this indicates if
            support for hot adding and removing fixed passthrough devices
            was enabled prior to power on. Otherwise, it indicates whether
            it will be enabled when the VM is powered on.
            NOTE: When setting this to true, the memory reservation should
            be equal to the guest memory size or the option to reserve all
            guest memory should be selected. If unset, the current value is
            left unchanged.
            
            ***Since:*** vSphere API Release 8.0.1.0
          type: boolean
        metroFtEnabled:
          description: |2
            Indicates whether FT Metro Cluster is enabled/disabled.
            
            \- If TRUE, FT Metro Cluster is enabled for the VM. An implicit
            Anti-HostGroup will be generated from HostGroup defined for FT
            primary, then affine the primary with one HostGroup and affine the
            secondary with another HostGroup.
            \- If FALSE or unset, FT Metro Cluster is disabled for the VM. Both FT
            primary and secondary will be put in the same HostGroup.
            
            ***Since:*** vSphere API Release 8.0.3.0
          type: boolean
        metroFtHostGroup:
          description: |2
            Indicate the Host Group (*ClusterHostGroup*) for FT
            Metro Cluster enabled Virtual Machine.
            
            Based on the selected Host Group, FT can divide the hosts in the cluster
            into two groups and ensure to place FT primary and FT secondary in
            different groups.
            
            ***Since:*** vSphere API Release 8.0.3.0
          type: string
      required:
        - changeVersion
        - modified
        - name
        - guestFullName
        - version
        - uuid
        - template
        - guestId
        - alternateGuestName
        - files
        - flags
        - defaultPowerOps
        - hardware
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVirtualMachineConfigInfo:
      type: object
      description: |2
        A boxed array of *VirtualMachineConfigInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineConfigInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualMachineConfigInfoDatastoreUrlPair:
      type: object
      description: |2
        Contains the name of a datastore, and its local file path on the host
        currently affiliated with this virtual machine.
      properties:
        name:
          type: string
        url:
          type: string
      required:
        - name
        - url
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVirtualMachineConfigInfoDatastoreUrlPair:
      type: object
      description: |2
        A boxed array of *VirtualMachineConfigInfoDatastoreUrlPair*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineConfigInfoDatastoreUrlPair'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualMachineConfigInfoOverheadInfo:
      type: object
      description: |2
        Information about virtualization overhead required to power on the
        virtual machine on the registered host.
      properties:
        initialMemoryReservation:
          description: |2
            Memory overhead required for virtual machine to be powered on (in bytes).
          type: integer
          format: int64
        initialSwapReservation:
          description: |2
            Disk space required for virtual machine to be powered on (in bytes).
            
            This space is used by virtualization infrastructure to swap out
            virtual machine process memory. Location of the file is specified by
            sched.swap.vmxSwapDir virtual machinge advanced config option or
            in case it is not specified - current virtual machine home directory
            is being used.
          type: integer
          format: int64
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVirtualMachineConfigInfoOverheadInfo:
      type: object
      description: |2
        A boxed array of *VirtualMachineConfigInfoOverheadInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineConfigInfoOverheadInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualMachineConfigOption:
      type: object
      description: |2
        This configuration data object type contains information about the execution
        environment for a virtual machine.
        
        This includes information about which features are
        supported, such as:
        - Which guest operating systems are supported.
        - How devices are emulated. For example, that a CD-ROM drive can be emulated
          with a file or that a serial port can be emulated with a pipe.
          
        VirtualCenter can provide a broader environment than any single physical host. This
        is a departure from traditional virtualization approaches, which rely on the host
        system to define the environment for virtual machines. This data object describes
        environment capabilities and is used by VirtualCenter to choose hosts on which to run
        virtual machines.
      properties:
        version:
          description: |2
            The version corresponding to this configOption.
          type: string
        description:
          description: |2
            A description string for this configOption.
          type: string
        guestOSDescriptor:
          description: |2
            List of supported guest operating systems.
            
            The choice of guest operating system may limit the set of valid devices.
            For example, you cannot select Vmxnet with all guest operating systems.
          type: array
          items:
            $ref: '#/components/schemas/GuestOsDescriptor'
        guestOSDefaultIndex:
          description: |2
            Index into guestOsDescriptor array denoting the default guest
            operating system.
          type: integer
          format: int32
        hardwareOptions:
          description: |2
            Processor, memory, and virtual device options for a virtual machine.
          $ref: '#/components/schemas/VirtualHardwareOption'
        capabilities:
          description: |2
            Capabilities supported by a virtual machine.
          $ref: '#/components/schemas/VirtualMachineCapability'
        datastore:
          description: |2
            The datastore options for this virtual machine.
          $ref: '#/components/schemas/DatastoreOption'
        defaultDevice:
          description: |2
            The list of virtual devices that are created on a virtual machine by default.
            
            Clients should not create these devices.
          type: array
          items:
            $ref: '#/components/schemas/VirtualDevice'
        supportedMonitorType:
          description: |2
            The monitor types supported by a host.
            
            The acceptable monitor types
            are enumerated by *VirtualMachineFlagInfoMonitorType_enum*.
          type: array
          items:
            type: string
        supportedOvfEnvironmentTransport:
          description: |2
            Specifies the supported property transports that are
            available for the OVF environment
          type: array
          items:
            type: string
        supportedOvfInstallTransport:
          description: |2
            Specifies the supported transports for the OVF
            installation phase.
          type: array
          items:
            type: string
        propertyRelations:
          description: |2
            The relations between the properties of the virtual
            machine config spec.
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachinePropertyRelation'
      required:
        - version
        - description
        - guestOSDescriptor
        - guestOSDefaultIndex
        - hardwareOptions
        - capabilities
        - datastore
        - supportedMonitorType
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVirtualMachineConfigOption:
      type: object
      description: |2
        A boxed array of *VirtualMachineConfigOption*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineConfigOption'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualMachineConfigOptionDescriptor:
      type: object
      description: |2
        Contains the definition of a unique key that can be used to
        retrieve a configOption object.
      properties:
        key:
          description: |2
            A unique key used to identify a configOption object in this
            *EnvironmentBrowser*.
          type: string
        description:
          description: |2
            A description of the configOption object.
          type: string
        host:
          description: |2
            List of hosts to which this descriptor applies.
            
            List of hosts is not set when descriptor is returned
            from *Datacenter.queryDatacenterConfigOptionDescriptor*.
            
            Refers instances of *HostSystem*.
          type: array
          items:
            $ref: '#/components/schemas/ManagedObjectReference'
        createSupported:
          description: |2
            Indicates whether the associated set of configuration options
            can be used for virtual machine creation on a given host or
            cluster.
          type: boolean
        defaultConfigOption:
          description: |2
            Indicates whether the associated set of virtual machine
            configuration options is the default one for a given host or
            cluster.
            
            Latest version is marked as default unless
            other version is specified via
            *ComputeResourceConfigInfo.defaultHardwareVersionKey*
            or *DatacenterConfigInfo.defaultHardwareVersionKey*.
            If this setting is TRUE, virtual machine creates will use the
            associated set of configuration options, unless a config version is
            explicitly specified in the *ConfigSpec*.
          type: boolean
        runSupported:
          description: |2
            Indicates whether the associated set of configuration options
            can be used to power on a virtual machine on a given host or
            cluster.
          type: boolean
        upgradeSupported:
          description: |2
            Indicates whether the associated set of configuration options
            can be used as a virtual hardware upgrade target.
          type: boolean
      required:
        - key
        - createSupported
        - defaultConfigOption
        - runSupported
        - upgradeSupported
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVirtualMachineConfigOptionDescriptor:
      type: object
      description: |2
        A boxed array of *VirtualMachineConfigOptionDescriptor*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineConfigOptionDescriptor'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualMachineConfigSpec:
      type: object
      description: |2
        This data object type encapsulates configuration settings
        when creating or reconfiguring a virtual machine.
        
        To support incremental changes,
        these properties are all optional. If an optional property is unset,
        or any nested optional property is unset, the property will not
        be changed unless 'unset' is a valid value for the property. To determine
        whether 'unset' is a valid value for a particular property, refer to
        the documentation for that property.
      properties:
        changeVersion:
          description: |2
            If specified, the changes are only applied if the current changeVersion matches
            the specified changeVersion.
            
            This field can be used to guard against updates that
            have happened between when configInfo is read and when it is applied.
            
            For more information about how configurations are uniquely identified, see
            *VirtualMachineConfigInfo.changeVersion*.
          type: string
        name:
          description: |2
            Display name of the virtual machine.
            
            Any % (percent) character used in this name parameter must be escaped, unless it
            is used to start an escape sequence. Clients may also escape any other characters
            in this name parameter. Snapshots of virtual machines that have spaces in their
            names and are associated with ESX 2.x servers are not supported. Therefore, if you
            want the option to take snapshots of this virtual machine and you are associating
            it with an ESX 2.x server, do not use spaces in the name.
            
            Reconfigure privilege: VirtualMachine.Config.Rename
          type: string
        version:
          description: |2
            The version string for this virtual machine.
            
            This is used only while
            creating a new virtual machine, and can be updated by invoking
            *VirtualMachine.UpgradeVM_Task* for this virtual
            machine.
          type: string
        createDate:
          description: |2
            Creation date of a virtual machine represented in DateTime format.
            
            This property is populated by the vCenter Server with the date
            and time of creation of the virtual machine. Values provided by the
            client will be ignored.
            
            Reconfigure privilege: VirtualMachine.Config.Settings
          type: string
          format: date-time
        uuid:
          description: |2
            128-bit SMBIOS UUID of a virtual machine represented as a hexadecimal string
            in "12345678-abcd-1234-cdef-123456789abc" format.
            
            Normally, this property is not set by a client, allowing the
            Virtual Infrastructure environment to assign a UUID when
            the virtual machine is created. However, in some rare cases,
            such as a manual copy of a virtual machine, it may be necessary
            to set this property.
            
            Reconfigure privilege: VirtualMachine.Config.Settings
          type: string
        instanceUuid:
          description: |2
            VirtualCenter-specific 128-bit UUID of a virtual machine, represented
            as a hexadecimal string.
            
            This identifier is used by VirtalCenter
            to uniquely identify all virtual machine instances in the Virtual
            Infrastructure environment, including those that may share the same
            SMBIOS UUID.
            
            Normally, this property is not set by a client, allowing the
            Virtual Infrastructure environment to assign or change it when
            VirtualCenter detects an identifier conflict between virtual
            machines. This identifier can be modified even when a virtual
            machine is powered on. Clients can specify that vCenter Server
            reassign a new identifier by a providing an empty string. Reassigning
            the identifer is not allowed for Fault Tolerance virtual machines.
            
            Reconfigure privilege: VirtualMachine.Config.Settings
          type: string
        npivNodeWorldWideName:
          description: |2
            The NPIV node WWN to be assigned to a virtual machine.
            
            This property should only
            be used or set when the value of *VirtualMachineConfigSpec.npivWorldWideNameOp* property is "set".
            Otherwise, an *InvalidVmConfig* fault will be thrown. If the
            specified node WWN is currently being used by another virtual machine, a
            *VmWwnConflict* fault will be thrown.
            
            For detail description on WWN, see *VirtualMachineConfigInfo.npivNodeWorldWideName*.
            
            Reconfigure privilege: VirtualMachine.Config.Settings.
          type: array
          items:
            type: integer
            format: int64
        npivPortWorldWideName:
          description: |2
            The NPIV port WWN to be assigned to a virtual machine.
            
            This property should only
            be used or set when the value of *VirtualMachineConfigSpec.npivWorldWideNameOp* property is "set".
            Otherwise, an *InvalidVmConfig* fault will be thrown. If the
            specified port WWN is currently being used by another virtual machine, a
            *VmWwnConflict* fault will be thrown.
            
            For detail description on WWN, see *VirtualMachineConfigInfo.npivPortWorldWideName*.
            
            Reconfigure privilege: VirtualMachine.Config.Settings.
          type: array
          items:
            type: integer
            format: int64
        npivWorldWideNameType:
          description: |2
            This property is used internally in the communication between the
            VirtualCenter server and ESX Server to indicate the source for
            *VirtualMachineConfigSpec.npivNodeWorldWideName* and
            *VirtualMachineConfigSpec.npivPortWorldWideName* when *VirtualMachineConfigSpec.npivWorldWideNameOp* is "set".
            
            This property should only be set by the VirtualCenter server.
            
            If this property is set in a call to a VirtualCenter server,
            an *InvalidVmConfig* fault will always be thrown. In a
            call to an ESX Server host, an *InvalidVmConfig*
            fault will be thrown if the value of *VirtualMachineConfigSpec.npivWorldWideNameOp* is not set to
            "set".
            
            Reconfigure privilege: VirtualMachine.Config.Settings.
          type: string
        npivDesiredNodeWwns:
          description: |2
            The NPIV node WWNs to be extended from the original list of WWN nummbers.
            
            This
            property should be set to desired number which is an aggregate of existing
            plus new numbers. Desired Node WWNs should always be greater than the existing
            number of node WWNs
          type: integer
          minimum: -32768
          maximum: 32767
        npivDesiredPortWwns:
          description: |2
            The NPIV port WWNs to be extended from the original list of WWN nummbers.
            
            This
            property should be set to desired number which is an aggregate of existing
            plus new numbers. Desired Node WWNs should always be greater than the existing
            number of port WWNs
          type: integer
          minimum: -32768
          maximum: 32767
        npivTemporaryDisabled:
          description: |2
            This property is used to enable or disable the NPIV capability on a desired
            virtual machine on a temporary basis.
            
            When this property is set NPIV Vport
            will not be instantiated by the VMX process of the Virtual Machine. When this
            property is set port WWNs and node WWNs in the VM configuration are preserved.
            
            Reconfigure privilege: VirtualMachine.Config.Settings.
          type: boolean
        npivOnNonRdmDisks:
          description: |2
            This property is used to check whether the NPIV can be enabled on the Virtual
            machine with non-rdm disks in the configuration, so this is potentially not
            enabling npiv on vmfs disks.
            
            Also this property is used to check whether RDM
            is required to generate WWNs for a virtual machine.
          type: boolean
        npivWorldWideNameOp:
          description: |2
            The flag to indicate what type of NPIV WWN operation is going to be performed
            on the virtual machine.
            
            If unset, it indicates no change to existing NPIV WWN
            assignment (or not assigned) in the virtual machine.
            
            Reconfigure privilege: VirtualMachine.Config.Settings.
            
            See also *VirtualMachineConfigSpecNpivWwnOp_enum*.
          type: string
        locationId:
          description: |2
            128-bit hash based on the virtual machine's configuration file location
            and the UUID of the host assigned to run the virtual machine.
            
            Normally, this property is not set by a client, allowing the
            Virtual Infrastructure environment to assign a location ID when
            the virtual machine is created. However, if the virtual machine's
            configuration file has been manually moved, it may be desirable to clear this
            property, setting it to an empty string, so the property is regenerated.
            
            Reconfigure privilege: VirtualMachine.Config.Settings
          type: string
        guestId:
          description: |2
            Short guest operating system identifier.
            
            Reconfigure privilege: VirtualMachine.Config.Settings
          type: string
        alternateGuestName:
          description: |2
            Full name for guest, if guestId is specified as `other`
            or `other-64`.
            
            Reconfigure privilege: VirtualMachine.Config.Settings
          type: string
        annotation:
          description: |2
            User-provided description of the virtual machine.
            
            Because this property
            is optional in the virtual machine configuration, it is necessary
            to pass an explicit empty string in a ConfigSpec object to remove an annotation
            that is already present in the *VirtualMachineConfigInfo*
            for a virtual machine.
            
            Reconfigure privilege: VirtualMachine.Config.Rename
          type: string
        files:
          description: |2
            Information about virtual machine files.
            
            Reconfigure privilege: VirtualMachine.Config.Settings
          $ref: '#/components/schemas/VirtualMachineFileInfo'
        tools:
          description: |2
            Configuration of VMware Tools running in the guest operating system.
            
            Reconfigure privilege: VirtualMachine.Config.Settings
          $ref: '#/components/schemas/ToolsConfigInfo'
        flags:
          description: |2
            Additional flags for a virtual machine.
            
            Reconfigure privilege: VirtualMachine.Config.Settings
          $ref: '#/components/schemas/VirtualMachineFlagInfo'
        consolePreferences:
          description: |2
            Legacy console viewer preferences that are used with power operations.
            
            For
            example, power on.
            
            Reconfigure privilege: VirtualMachine.Config.Settings
          $ref: '#/components/schemas/VirtualMachineConsolePreferences'
        powerOpInfo:
          description: |2
            Configuration for default power operations.
            
            Reconfigure privilege: VirtualMachine.Config.Settings
          $ref: '#/components/schemas/VirtualMachineDefaultPowerOpInfo'
        rebootPowerOff:
          description: |2
            Whether the next reboot will result in a power off.
            
            Reconfigure privilege: VirtualMachine.Config.Settings
            
            ***Since:*** vSphere API Release 8.0.0.1
          type: boolean
        numCPUs:
          description: |2
            Number of virtual processors in a virtual machine.
            
            Reconfigure privilege: VirtualMachine.Config.CpuCount
          type: integer
          format: int32
        vcpuConfig:
          description: |2
            Vcpu configuration.
            
            The <code>vcpuConfig</code> array is indexed
            by vcpu number.
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineVcpuConfig'
        numCoresPerSocket:
          description: |2
            Number of cores among which to distribute
            CPUs in this virtual machine.
            
            Set "numCoresPerSocket" with a non-zero value
            to manually configure coresPerSocket size.
            Set "numCoresPerSocket" with zero to remove any manual size
            if present, and use default coresPerSocket behavior.
            Leave "numCoresPerSocket" unset to continue with existing
            configuration (either manual or default).
          type: integer
          format: int32
        memoryMB:
          description: |2
            Size of a virtual machine's memory, in MB.
            
            Reconfigure privilege: VirtualMachine.Config.Memory
          type: integer
          format: int64
        memoryHotAddEnabled:
          description: |2
            Indicates whether or not memory can be added to the virtual
            machine while it is running.
            
            This attribute can only be set when the virtual machine is
            powered-off.
            
            Reconfigure privilege: VirtualMachine.Config.Memory
          type: boolean
        cpuHotAddEnabled:
          description: |2
            Indicates whether or not virtual processors can be added to
            the virtual machine while it is running.
            
            This attribute can only be set when the virtual machine is
            powered-off.
            
            Reconfigure privilege: VirtualMachine.Config.CpuCount
          type: boolean
        cpuHotRemoveEnabled:
          description: |2
            Indicates whether or not virtual processors can be removed
            from the virtual machine while it is running.
            
            This attribute can only be set when the virtual machine is
            powered-off.
            
            Reconfigure privilege: VirtualMachine.Config.CpuCount
          type: boolean
        virtualICH7MPresent:
          description: |2
            Does this virtual machine have Virtual Intel I/O Controller Hub 7
          type: boolean
        virtualSMCPresent:
          description: |2
            Does this virtual machine have System Management Controller
          type: boolean
        deviceChange:
          description: |2
            Set of virtual devices being modified by the configuration operation.
            
            Reconfigure privileges:
            - VirtualMachine.Config.Resource if setting the "shares" property of
              a new or existing VirtualDisk device
            - VirtualMachine.Config.RawDevice if adding, removing, or modifying a
              raw device (also required when creating a virtual machine)
            - VirtualMachine.Config.HostUSBDevice if adding, removing, or
              modifying a VirtualUSB device backed by a host USB device (also
              required when creating a virtual machine).
            - VirtualMachine.Interact.DeviceConnection if setting the "connectable"
              property of a connectable device
            - VirtualMachine.Interact.SetCDMedia if setting the "backing" property
              of a VirtualCdrom device
            - VirtualMachine.Interact.SetFloppyMedia if setting the "backing" property
              of a VirtualFloppy device
            - VirtualMachine.Config.EditDevice if setting any property of a
              non-CDROM non-Floppy device
            - VirtualMachine.Config.AddExistingDisk if adding a VirtualDisk, and
              the fileOperation is unset (also required when creating a virtual machine)
            - VirtualMachine.Config.AddNewDisk if adding a VirtualDisk and the
              fileOperation is set (also required when creating a virtual machine)
            - VirtualMachine.Config.RemoveDisk if removing a VirtualDisk device
            - VirtualMachine.Config.AddRemoveDevice if adding or removing any
              device other than disk, raw, or USB device.
            - Network.Assign if if setting the "backing" property of a
              VirtualEthernetCard device.
          type: array
          items:
            $ref: '#/components/schemas/VirtualDeviceConfigSpec'
        cpuAllocation:
          description: |2
            Resource limits for CPU.
            
            Reconfigure privilege: VirtualMachine.Config.Resource
          $ref: '#/components/schemas/ResourceAllocationInfo'
        memoryAllocation:
          description: |2
            Resource limits for memory.
            
            Reconfigure privilege: VirtualMachine.Config.Resource
          $ref: '#/components/schemas/ResourceAllocationInfo'
        latencySensitivity:
          description: |2
            The latency-sensitivity setting of the virtual machine.
            
            Reconfigure privilege: VirtualMachine.Config.Resource
          $ref: '#/components/schemas/LatencySensitivity'
        cpuAffinity:
          description: |2
            Affinity settings for CPU.
            
            Reconfigure privilege: VirtualMachine.Config.Resource
          $ref: '#/components/schemas/VirtualMachineAffinityInfo'
        memoryAffinity:
          deprecated: true
          description: |2
            Deprecated since vSphere 6.0.
            
            Affinity settings for memory.
            
            Reconfigure privilege: VirtualMachine.Config.Resource
          $ref: '#/components/schemas/VirtualMachineAffinityInfo'
        networkShaper:
          deprecated: true
          description: |2
            Deprecated from vSphere 5.5, shaping policy on VM is not supported.
            
            Resource limits for network.
            
            Reconfigure privilege: VirtualMachine.Config.Resource
          $ref: '#/components/schemas/VirtualMachineNetworkShaperInfo'
        cpuFeatureMask:
          description: |2
            Specifies the CPU feature compatibility masks.
            
            Reconfigure privilege: VirtualMachine.Config.Settings
            As of vSphere API 6.5 *FeatureMask*
            is the recommended method for masking virtual machines with
            hardware version 9 and above (newer).
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineCpuIdInfoSpec'
        extraConfig:
          description: |2
            Additional configuration information for the virtual machine.
            
            This describes a set of modifications to the additional options. If the key is
            already present, it will be reset with the new value provided. Otherwise, a new
            option is added. Keys with empty values will be removed.
            
            Configuration keys that would conflict with parameters that are explicitly
            configurable through other fields in the ConfigSpec object are silently ignored.
            
            Reconfigure privilege: VirtualMachine.Config.AdvancedConfig
            (also required when setting this property while creating a virtual machine)
          type: array
          items:
            $ref: '#/components/schemas/OptionValue'
        swapPlacement:
          description: |2
            Virtual machine swapfile placement policy.
            
            This may only be set if the
            *swapPlacementSupported*
            capability is true for this virtual machine. Any change to this policy
            will take effect the next time the virtual machine powers on, resumes
            from a suspended state, or migrates while powered on.
            
            Reconfigure privilege: VirtualMachine.Config.SwapPlacement
            (also required when setting this property while creating a virtual machine)
            
            See also *VirtualMachineConfigInfoSwapPlacementType_enum*.
          type: string
        bootOptions:
          description: |2
            Settings that control the boot behavior of the virtual
            machine.
            
            These settings take effect during the next power-on
            of the virtual machine.
            
            Reconfigure privilege: VirtualMachine.Config.Settings
          $ref: '#/components/schemas/VirtualMachineBootOptions'
        vAppConfig:
          description: |2
            Configuration of vApp meta-data for a virtual machine
          $ref: '#/components/schemas/VmConfigSpec'
        ftInfo:
          description: |2
            Fault Tolerance settings for this virtual machine.
          $ref: '#/components/schemas/FaultToleranceConfigInfo'
        repConfig:
          description: |2
            vSphere Replication settings.
            
            Note this may become deprecated in the future releases. We
            discourage any unnecessary dependency on this field.
          $ref: '#/components/schemas/ReplicationConfigSpec'
        vAppConfigRemoved:
          description: |2
            Set to true, if the vApp configuration should be removed
            
            Reconfigure privilege: VApp.ApplicationConfig
          type: boolean
        vAssertsEnabled:
          description: |2
            Indicates whether user-configured virtual asserts will be
            triggered during virtual machine replay.
            
            This setting takes
            effect during the next replay of the virtual machine.
            
            Enabling this functionality can potentially cause some
            performance overhead during virtual machine execution.
          type: boolean
        changeTrackingEnabled:
          description: |2
            Setting to control enabling/disabling changed block tracking for
            the virtual disks of this VM.
            
            This may only be set if the
            *changeTrackingSupported*
            capability is true for this virtual machine. Any change to this property
            will take effect the next time the virtual machine powers on, resumes
            from a suspended state, performs a snapshot create/delete/revert operation
            or migrates while powered on.
            
            Reconfigure privilege: VirtualMachine.Config.ChangeTracking
            (also required when setting this property while creating a virtual machine)
          type: boolean
        firmware:
          description: |2
            Set the desired firmware type for this Virtual Machine.
            
            Possible values are described in
            *GuestOsDescriptorFirmwareType_enum*
          type: string
        maxMksConnections:
          description: |2
            If set, this setting limits the maximum number of active remote
            display connections that the virtual machine will support to
            the specified value.
            
            Reconfigure privilege: VirtualMachine.Config.MksControl
          type: integer
          format: int32
        guestAutoLockEnabled:
          description: |2
            If set to True, this causes the guest operating system to automatically
            logout any active sessions whenever there are no remote display
            connections open to the virtual machine.
            
            Reconfigure privilege: VirtualMachine.Config.MksControl
          type: boolean
        managedBy:
          description: |2
            Specifies that this VM is managed by a VC Extension.
            
            This information is primarily used in the Client to show a custom icon for
            managed virtual machines, and a description of the function of the virtual
            machine. If no extension can be found with the extension key in the
            *managedBy* object, or the type is not found
            in the *managedEntityInfo* list of the
            extension, the default virtual machine icon is used, and no description is
            shown.
            To unset this field pass a *ManagedByInfo* object with an
            empty *extensionKey*.
            
            Reconfigure privilege: VirtualMachine.Config.ManagedBy
          $ref: '#/components/schemas/ManagedByInfo'
        memoryReservationLockedToMax:
          description: |2
            If set true, memory resource reservation for this virtual machine will always be
            equal to the virtual machine's memory size; increases in memory size will be
            rejected when a corresponding reservation increase is not possible.
            
            This feature
            may only be enabled if it is currently possible to reserve all of the virtual machine's memory.
            
            Reconfigure privilege: VirtualMachine.Config.Resource
          type: boolean
        nestedHVEnabled:
          description: |2
            Specifies that this VM will use nested hardware-assisted virtualization.
            
            When creating a new VM:
            \- If vim.vm.FlagInfo.vbsEnabled is set to <code>true</code>,
            and this flag is set to <code>false</code> error is returned.
            \- If this flag is unset and vim.vm.FlagInfo.vbsEnabled is set to
            <code>true</code>, the value of this flag is set to <code>true</code>.
            
            Reconfigure privilege: VirtualMachine.Config.Settings
          type: boolean
        vPMCEnabled:
          description: |2
            Specifies that this VM will have virtual CPU performance counters
            enabled.
            
            Reconfigure privilege: VirtualMachine.Config.Settings
          type: boolean
        scheduledHardwareUpgradeInfo:
          description: |2
            Configuration of scheduled hardware upgrades.
            
            Reconfigure privilege: VirtualMachine.Config.UpgradeVirtualHardware
            
            See also *ScheduledHardwareUpgradeInfo*.
          $ref: '#/components/schemas/ScheduledHardwareUpgradeInfo'
        vmProfile:
          description: |2
            Virtual Machine Profile requirement.
            
            Profiles are solution specific.
            Profile Based Storage Management is a vSphere server extension.
            API users who want to provision VMs using Storage Profiles, need to
            interact with it.
            This is an optional parameter and if user doesn't specify profile,
            the default behavior will apply.
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineProfileSpec'
        messageBusTunnelEnabled:
          description: |2
            Whether to allow tunneling of clients from the guest VM into the
            common message bus on the host network.
          type: boolean
        crypto:
          description: |2
            Virtual Machine cryptographic options.
            
            The cryptographic options are inherited to all disks of the VM.
            The cryptographic options for a disk can be different by setting
            its CryptoSpec.
          $ref: '#/components/schemas/CryptoSpec'
        migrateEncryption:
          description: |2
            An enum describing whether encrypted vMotion is required for this VM.
            
            Supported values are listed in *VirtualMachineConfigSpecEncryptedVMotionModes_enum*.
            This defaults to opportunistic for a regular VM, and will be set to
            required for an encrypted VM.
          type: string
        sgxInfo:
          description: |2
            Configuration of SGX, Software Guard Extensions for the VM.
          $ref: '#/components/schemas/VirtualMachineSgxInfo'
        ftEncryptionMode:
          description: |2
            An enum describing whether encrypted Fault Tolerance is required
            for this VM.
            
            Supported values are listed in *VirtualMachineConfigSpecEncryptedFtModes_enum*.
            \- This defaults to opportunistic for a regular VM, and will be set to
            required for an encrypted VM.
            \- If this property is unset, the mode of encrypted Fault Tolerance
            will be set to opportunistic.
            
            ***Since:*** vSphere API Release 7.0.2.0
          type: string
        guestMonitoringModeInfo:
          description: |2
            Configuration of GMM, Guest Monitoring Mode for the VM.
          $ref: '#/components/schemas/VirtualMachineGuestMonitoringModeInfo'
        sevEnabled:
          description: |2
            SEV (Secure Encrypted Virtualization) enabled or not.
            
            SEV is enabled when
            set to true, and disabled otherwise.
            
            ***Since:*** vSphere API Release 7.0.1.0
          type: boolean
        virtualNuma:
          description: |2
            Virtual NUMA information for this VM.
            
            ***Since:*** vSphere API Release 8.0.0.1
          $ref: '#/components/schemas/VirtualMachineVirtualNuma'
        motherboardLayout:
          description: |2
            One of motherboardLayout choices.
            
            Default is i440bxHostBridge. See
            *VirtualHardware.motherboardLayout*
            
            ***Since:*** vSphere API Release 8.0.0.1
          type: string
        pmemFailoverEnabled:
          description: |2
            Property to enable/disable PMem HA failover.
            
            \- When set to TRUE, VMs configured to use PMem
            will be failed over to other hosts by HA, but the data
            in NVDIMM is not persistent.
            \- When set to FALSE, VMs configured to use PMem will not
            be failed over to other hosts by HA.
            Property is currently only applicable to VMs with NVDimms and
            will fail to set True if vPMem disks are present.
            
            ***Since:*** vSphere API Release 7.0.2.0
          type: boolean
        vmxStatsCollectionEnabled:
          description: |2
            Property to enable/disable VMXStats Collection.
            
            \- Setting this property is only allowed when the VM is powered off
            and will fail otherwise.
            \- When set to TRUE, VMs will be configured to create a
            scoreboard file to store certain stats for various VMX
            components.
            
            ***Since:*** vSphere API Release 7.0.3.1
          type: boolean
        vmOpNotificationToAppEnabled:
          description: |2
            Property to enable/disable operation notification to applications.
            
            \- When set to TRUE, application running inside the VM will be
            notified of operations for which they have registered.
            \- If unset defaults to FALSE, no notifications are sent to the
            application.
            
            ***Since:*** vSphere API Release 7.0.3.0
          type: boolean
        vmOpNotificationTimeout:
          description: |2
            Operation notification timeout in seconds.
            
            \- Specifies the maximum time duration the applications may take to
            prepare for the operation after its been notified. This value is used
            only if *VirtualMachineConfigSpec.vmOpNotificationToAppEnabled* is set to TRUE.
            \- Timeout has to be a non-zero positive value for applications to
            be able to register and get notifications.
            
            ***Since:*** vSphere API Release 8.0.0.1
          type: integer
          format: int64
        deviceSwap:
          description: |2
            Status of the device swap operation.
            
            ***Since:*** vSphere API Release 8.0.0.1
          $ref: '#/components/schemas/VirtualMachineVirtualDeviceSwap'
        simultaneousThreads:
          description: |2
            Number of SMT (Simultaneous multithreading) threads.
            
            \- Set "simultaneousThreads" with a non-zero value to configure threads.
            \- If unset, then use system defaults.
            
            ***Since:*** vSphere API Release 8.0.0.1
          type: integer
          format: int32
        pmem:
          description: |2
            Configuration for virtual persistent memory.
            
            ***Since:*** vSphere API Release 7.0.3.0
          $ref: '#/components/schemas/VirtualMachineVirtualPMem'
        deviceGroups:
          description: |2
            Assignable hardware device groups.
            
            ***Since:*** vSphere API Release 8.0.0.1
          $ref: '#/components/schemas/VirtualMachineVirtualDeviceGroups'
        fixedPassthruHotPlugEnabled:
          description: |2
            Indicates whether support to add and remove fixed passthrough
            devices when the VM is running should be enabled.
            
            This property can only be set when the VM is powered off. If set,
            additional setup will be performed when the VM is powered on
            so that hot adding and removing fixed passthrough devices will
            be possible.
            NOTE: When setting this to true, the memory reservation should
            be equal to the guest memory size or the option to reserve all
            guest memory should be selected. If unset, the current value
            is left unchanged.
            
            ***Since:*** vSphere API Release 8.0.1.0
          type: boolean
        metroFtEnabled:
          description: |2
            Indicates whether FT Metro Cluster is enabled/disabled.
            
            \- If TRUE, FT Metro Cluster is enabled for the VM. An implicit
            Anti-HostGroup will be generated from HostGroup defined for FT
            primary, then affine the primary with one HostGroup and affine the
            secondary with another HostGroup.
            \- If FALSE or unset, FT Metro Cluster is disabled for the VM. Both FT
            primary and secondary will be put in the same HostGroup.
            
            ***Since:*** vSphere API Release 8.0.3.0
          type: boolean
        metroFtHostGroup:
          description: |2
            Indicate the Host Group (*ClusterHostGroup*) for FT
            Metro Cluster enabled Virtual Machine.
            
            Based on the selected Host Group, FT can divide the hosts in the cluster
            into two groups and ensure to place FT primary and FT secondary in
            different groups.
            
            ***Since:*** vSphere API Release 8.0.3.0
          type: string
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVirtualMachineConfigSpec:
      type: object
      description: |2
        A boxed array of *VirtualMachineConfigSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineConfigSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualMachineCpuIdInfoSpec:
      type: object
      description: |2
        Wrapper class to support incremental updates of the cpuFeatureMask.
        
        As of vSphere API 6.5 *VirtualMachineConfigSpec.extraConfig* is the recommended method
        for setting the mask for a virtual machine with hardware version 9 and
        above (newer). They can be viewed via
        *featureMask*.
      properties:
        info:
          $ref: '#/components/schemas/HostCpuIdInfo'
      allOf:
        - $ref: '#/components/schemas/ArrayUpdateSpec'

    ArrayOfVirtualMachineCpuIdInfoSpec:
      type: object
      description: |2
        A boxed array of *VirtualMachineCpuIdInfoSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineCpuIdInfoSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ConfigTarget:
      type: object
      description: |2
        The ConfigTarget class contains information about "physical" devices that can
        be used to back virtual devices.
      properties:
        numCpus:
          description: |2
            Number of logical CPUs that can be used to run virtual machines.
            
            If invoked against a cluster, this is the total number of logical CPUs
            available in the cluster.
          type: integer
          format: int32
        numCpuCores:
          description: |2
            Number of physical CPU cores that are available to run virtual machines.
            
            If invoked against a cluster, this is the total number of physical CPUs
            available in the cluster.
          type: integer
          format: int32
        numNumaNodes:
          description: |2
            Number of NUMA nodes.
            
            If invoked against a cluster, this is the total number of NUMA nodes
            available in the cluster.
          type: integer
          format: int32
        maxCpusPerHost:
          description: |2
            Maximum number of CPUs available on a single host.
            
            For standalone hosts, this value will be the same as numCpus.
          type: integer
          format: int32
        smcPresent:
          description: |2
            Presence of System Management Controller, indicates the host is
            Apple hardware, and thus capable of running Mac OS guest as VM.
          type: boolean
        datastore:
          description: |2
            List of datastores available for virtual disks and associated storage.
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineDatastoreInfo'
        network:
          description: |2
            List of networks available for virtual network adapters.
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineNetworkInfo'
        opaqueNetwork:
          description: |2
            List of opaque networks available for virtual network adapters.
          type: array
          items:
            $ref: '#/components/schemas/OpaqueNetworkTargetInfo'
        distributedVirtualPortgroup:
          description: |2
            List of networks available from DistributedVirtualSwitch for virtual
            network adapters.
          type: array
          items:
            $ref: '#/components/schemas/DistributedVirtualPortgroupInfo'
        distributedVirtualSwitch:
          description: |2
            List of distributed virtual switch available for virtual network
            adapters.
          type: array
          items:
            $ref: '#/components/schemas/DistributedVirtualSwitchInfo'
        cdRom:
          description: |2
            List of CD-ROM devices available for use by virtual CD-ROMs.
            
            Used for
            *VirtualCdromAtapiBackingInfo*.
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineCdromInfo'
        serial:
          description: |2
            List of serial devices available to support virtualization.
            
            Used for
            *VirtualSerialPortDeviceBackingInfo*.
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineSerialInfo'
        parallel:
          description: |2
            List of parallel devices available to support virtualization.
            
            Used for
            *VirtualParallelPortDeviceBackingInfo*.
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineParallelInfo'
        sound:
          description: |2
            List of sound devices available to support virtualization.
            
            Used for
            *VirtualSoundCardDeviceBackingInfo*.
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineSoundInfo'
        usb:
          description: |2
            List of USB devices on the host that are available to support
            virtualization.
            
            Used for
            *VirtualUSBUSBBackingInfo*.
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineUsbInfo'
        floppy:
          description: |2
            List of floppy devices available for use by virtual floppies.
            
            Used for
            *VirtualFloppyDeviceBackingInfo*.
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineFloppyInfo'
        legacyNetworkInfo:
          description: |2
            Legacy switch names when using the LegacyNetworkBacking types.
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineLegacyNetworkSwitchInfo'
        scsiPassthrough:
          description: |2
            List of generic SCSI devices.
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineScsiPassthroughInfo'
        scsiDisk:
          description: |2
            List of physical SCSI disks that can be used as targets for raw disk mapping
            backings.
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineScsiDiskDeviceInfo'
        ideDisk:
          description: |2
            List of physical IDE disks that can be used as targets for raw disk backings.
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineIdeDiskDeviceInfo'
        maxMemMBOptimalPerf:
          description: |2
            Maximum recommended memory size, in MB, for creating a new virtual machine.
          type: integer
          format: int32
        supportedMaxMemMB:
          description: |2
            Maximum supported memory size, in MB, for creating a new virtual machine.
            
            Maximum allowed size is smaller of this and limit in
            *GuestOsDescriptor.supportedMaxMemMB*. When invoked on the
            cluster, maximum size that can be created on at least one host
            in the cluster is reported.
          type: integer
          format: int32
        resourcePool:
          description: |2
            Information about the current available resources on the current resource pool
            for a virtual machine.
            
            This field is only populated from an Environment browser
            obtained from a virtual machine.
          $ref: '#/components/schemas/ResourcePoolRuntimeInfo'
        autoVmotion:
          description: |2
            Information whether a virtual machine with this ConfigTarget can auto vmotion.
            
            This field is only populated from an Environment browser obtained from a
            virtual machine.
          type: boolean
        pciPassthrough:
          description: |2
            List of generic PCI devices.
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachinePciPassthroughInfo'
        sriov:
          description: |2
            List of SRIOV devices.
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineSriovInfo'
        vFlashModule:
          description: |2
            List of vFlash modules.
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineVFlashModuleInfo'
        sharedGpuPassthroughTypes:
          description: |2
            List of shared GPU passthrough types.
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachinePciSharedGpuPassthroughInfo'
        availablePersistentMemoryReservationMB:
          description: |2
            Maximum available persistent memory reservation on a compute resource
            in MB.
          type: integer
          format: int64
        dynamicPassthrough:
          description: |2
            List of Dynamic DirectPath PCI devices.
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineDynamicPassthroughInfo'
        sgxTargetInfo:
          description: |2
            Intel SGX information.
          $ref: '#/components/schemas/VirtualMachineSgxTargetInfo'
        precisionClockInfo:
          description: |2
            List of host clock resources available to support virtual precision
            clock device.
            
            Used for
            *VirtualPrecisionClockSystemClockBackingInfo*
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachinePrecisionClockInfo'
        sevSupported:
          description: |2
            Indicates whether the compute resource is capable of running AMD Secure
            Encrypted Virtualization (SEV) enabled virtual machines.
            
            The compute
            resource supports SEV when this value is set to true.
            
            ***Since:*** vSphere API Release 7.0.1.0
          type: boolean
        vgpuDeviceInfo:
          description: |2
            List of vGPU device capabilities.
            
            ***Since:*** vSphere API Release 7.0.3.0
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineVgpuDeviceInfo'
        vgpuProfileInfo:
          description: |2
            List of vGPU profile attributes.
            
            ***Since:*** vSphere API Release 7.0.3.0
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineVgpuProfileInfo'
        vendorDeviceGroupInfo:
          description: |2
            List of PCI Vendor Device Groups.
            
            ***Since:*** vSphere API Release 8.0.0.1
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineVendorDeviceGroupInfo'
        maxSimultaneousThreads:
          description: |2
            Max SMT (Simultaneous multithreading) threads.
            
            ***Since:*** vSphere API Release 8.0.0.1
          type: integer
          format: int32
        dvxClassInfo:
          description: |2
            List of Device Virtualization Extensions (DVX) classes.
            
            ***Since:*** vSphere API Release 8.0.0.1
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineDvxClassInfo'
      required:
        - numCpus
        - numCpuCores
        - numNumaNodes
        - smcPresent
        - maxMemMBOptimalPerf
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfConfigTarget:
      type: object
      description: |2
        A boxed array of *ConfigTarget*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ConfigTarget'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualMachineConsolePreferences:
      type: object
      description: |2
        Preferences for the legacy console application that affect the way it behaves during power
        operations on the virtual machine.
      properties:
        powerOnWhenOpened:
          description: |2
            Power on the virtual machine when it is opened in the console.
          type: boolean
        enterFullScreenOnPowerOn:
          description: |2
            Enter full screen mode when this virtual machine is powered on.
          type: boolean
        closeOnPowerOffOrSuspend:
          description: |2
            Close the console application when the virtual machine is powered off
            or suspended.
          type: boolean
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVirtualMachineConsolePreferences:
      type: object
      description: |2
        A boxed array of *VirtualMachineConsolePreferences*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineConsolePreferences'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualMachineContentLibraryItemInfo:
      type: object
      description: |2
        Describes the content library item information
        associated with the virtual machine.
      properties:
        contentLibraryItemUuid:
          description: |2
            The content library item UUID
          type: string
        contentLibraryItemVersion:
          description: |2
            The content library item version is determined and
            managed by content library and this field stamps the version
            provided by CL to the VM.
          type: string
      required:
        - contentLibraryItemUuid
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVirtualMachineContentLibraryItemInfo:
      type: object
      description: |2
        A boxed array of *VirtualMachineContentLibraryItemInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineContentLibraryItemInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualMachineDatastoreInfo:
      type: object
      description: |2
        DatastoreInfo describes a datastore that a virtual disk can be
        stored on.
      properties:
        datastore:
          description: |2
            Information about the datastore
          $ref: '#/components/schemas/DatastoreSummary'
        capability:
          description: |2
            Information about the datastore capabilities
          $ref: '#/components/schemas/DatastoreCapability'
        maxFileSize:
          description: |2
            The maximum size of a file that can reside on this datastore.
          type: integer
          format: int64
        maxVirtualDiskCapacity:
          description: |2
            The maximum capacity of a virtual disk which can be created on this volume
          type: integer
          format: int64
        maxPhysicalRDMFileSize:
          description: |2
            Maximum raw device mapping size (physical compatibility)
          type: integer
          format: int64
        maxVirtualRDMFileSize:
          description: |2
            Maximum raw device mapping size (virtual compatibility)
          type: integer
          format: int64
        mode:
          description: |2
            Access mode for this datastore.
            
            This is either
            readOnly or readWrite. A virtual disk needs to be
            stored on readWrite datastore. ISOs can be read
            from a readOnly datastore.
            
            See also *HostMountMode_enum*.
          type: string
        vStorageSupport:
          description: |2
            Indicate the states of vStorage hardware acceleration
            support for this datastore.
            
            In the case of a cluster compute resource, this property
            is aggregated from the values reported by individual hosts
            as follows:
            - If at least one host reports
              *vStorageSupported*,
              then it is set to
              *vStorageSupported*.
            - Else if at least one host reports
              *vStorageUnknown*,
              it is set to
              *vStorageUnknown*.
            - Else if at least one host reports
              *vStorageUnsupported*,
              it is set to
              *vStorageUnsupported*.
            - Else it is unset.
              
            See also *FileSystemMountInfoVStorageSupportStatus_enum*.
          type: string
      required:
        - datastore
        - capability
        - maxFileSize
        - mode
      allOf:
        - $ref: '#/components/schemas/VirtualMachineTargetInfo'

    ArrayOfVirtualMachineDatastoreInfo:
      type: object
      description: |2
        A boxed array of *VirtualMachineDatastoreInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineDatastoreInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DatastoreOption:
      type: object
      description: |2
        The DatastoreOption data object describes datastore options
        for a virtual machine.
      properties:
        unsupportedVolumes:
          description: |2
            The type of file system volumes on which this virtual machine cannot have
            its disk and configuration files.
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineDatastoreVolumeOption'
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfDatastoreOption:
      type: object
      description: |2
        A boxed array of *DatastoreOption*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DatastoreOption'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualMachineDatastoreVolumeOption:
      type: object
      description: |2
        This data object type describes a file system volume option for this
        virtual machine.
      properties:
        fileSystemType:
          description: |2
            The type name of the file system volume information object for this
            option.
            
            See also *HostFileSystemVolumeInfo*.
          type: string
        majorVersion:
          description: |2
            The major version of the file system volume information for this
            option.
            
            If not specified, all versions of this file system are included
            in this option. Currently, this value is set only for VMFS volumes.
          type: integer
          format: int32
      required:
        - fileSystemType
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVirtualMachineDatastoreVolumeOption:
      type: object
      description: |2
        A boxed array of *VirtualMachineDatastoreVolumeOption*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineDatastoreVolumeOption'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualMachineDefaultPowerOpInfo:
      type: object
      description: |2
        The DefaultPowerOpInfo data object type holds the configured defaults for the power
        operations on a virtual machine.
        
        The properties indicated whether to do a "soft"
        or guest initiated operation, or a "hard" operation.
      properties:
        powerOffType:
          description: |2
            Describes the default power off type for this virtual machine.
            
            The possible values are specified by the PowerOpType.
            - hard - Perform power off by using the PowerOff method.
            - soft - Perform power off by using the ShutdownGuest method.
            - preset - The preset value is specified in the defaultPowerOffType
              section.
              
            This setting is advisory and clients can choose to ignore it.
          type: string
        suspendType:
          description: |2
            Describes the default suspend type for this virtual machine.
            
            The possible values are specified by the PowerOpType.
            - hard - Perform suspend by using the Suspend method.
            - soft - Perform suspend by using the StandbyGuest method.
            - preset - The preset value is specified in the defaultSuspendType
              section.
              
            This setting is advisory and clients can choose to ignore it.
          type: string
        resetType:
          description: |2
            Describes the default reset type for this virtual machine.
            
            The possible values are specified by the PowerOpType.
            - hard - Perform reset by using the Reset method.
            - soft - Perform reset by using the RebootGuest method.
            - preset - The preset value is specified in the defaultResetType
              section.
              
            This setting is advisory and clients can choose to ignore it.
          type: string
        defaultPowerOffType:
          description: |2
            Default operation for power off: soft or hard
          type: string
        defaultSuspendType:
          description: |2
            Default operation for suspend: soft or hard
          type: string
        defaultResetType:
          description: |2
            Default operation for reset: soft or hard
          type: string
        standbyAction:
          description: |2
            Behavior of virtual machine when it receives the S1 ACPI call.
          type: string
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVirtualMachineDefaultPowerOpInfo:
      type: object
      description: |2
        A boxed array of *VirtualMachineDefaultPowerOpInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineDefaultPowerOpInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualMachineDefaultProfileSpec:
      type: object
      description: |2
        Used to indicate that the Default Storage Policy of the target datastore
        be used for a Virtual Machine Home or a Virtual Disk object.
        
        Neither the association nor the policy data is persisted in Virtual Machine
        configuration. This data is managed by an extension of Virtual Center
        (Storage Policy Based Management).
      allOf:
        - $ref: '#/components/schemas/VirtualMachineProfileSpec'

    ArrayOfVirtualMachineDefaultProfileSpec:
      type: object
      description: |2
        A boxed array of *VirtualMachineDefaultProfileSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineDefaultProfileSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualMachineDefinedProfileSpec:
      type: object
      description: |2
        Policy specification that carries a pre-defined Storage Policy to be associated
        with a Virtual Machine Home or a Virtual Disk object.
        
        Such a pre-defined
        policy can be either be vSphere Storage Administrator defined or may come
        from a set of pre-defined policies from Storage Vendor.
        
        Neither the association nor the policy data is persisted in Virtual Machine
        configuration. This data is managed by the an extension of Virtual Center
        (Storage Policy Based Management).
      properties:
        profileId:
          description: |2
            Storage Policy Profile identification - Should be
            pbm.profileId but for implementation reasons, could not be.
          type: string
        replicationSpec:
          description: |2
            Specification containing replication related parameters, sent to the Replication Data Service
            provider.
          $ref: '#/components/schemas/ReplicationSpec'
        profileData:
          description: |2
            Profile data sent to the Storage Backend by vSphere.
            
            This data is provided by the SPBM component of the vSphere platform.
            This field should not be set by Virtual Center users.
          $ref: '#/components/schemas/VirtualMachineProfileRawData'
        profileParams:
          description: |2
            Parameterized Storage Profiles
            Extra configuration that is not expressed as a capability in the Profile
            definition.
          type: array
          items:
            $ref: '#/components/schemas/KeyValue'
      required:
        - profileId
      allOf:
        - $ref: '#/components/schemas/VirtualMachineProfileSpec'

    ArrayOfVirtualMachineDefinedProfileSpec:
      type: object
      description: |2
        A boxed array of *VirtualMachineDefinedProfileSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineDefinedProfileSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualMachineDeviceRuntimeInfo:
      type: object
      description: |2
        The DeviceRuntimeInfo data object type provides information about
        the execution state of a single virtual device.
      properties:
        runtimeState:
          description: |2
            The device runtime state.
          $ref: '#/components/schemas/VirtualMachineDeviceRuntimeInfoDeviceRuntimeState'
        key:
          description: |2
            The device key.
          type: integer
          format: int32
      required:
        - runtimeState
        - key
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVirtualMachineDeviceRuntimeInfo:
      type: object
      description: |2
        A boxed array of *VirtualMachineDeviceRuntimeInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineDeviceRuntimeInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualMachineDeviceRuntimeInfoDeviceRuntimeState:
      type: object
      description: |2
        Runtime state of a device.
        
        Subclassed for information that is specific
        to certain device types.
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVirtualMachineDeviceRuntimeInfoDeviceRuntimeState:
      type: object
      description: |2
        A boxed array of *VirtualMachineDeviceRuntimeInfoDeviceRuntimeState*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineDeviceRuntimeInfoDeviceRuntimeState'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualMachineDeviceRuntimeInfoVirtualEthernetCardRuntimeState:
      type: object
      description: |2
        Runtime state of a virtual ethernet card device.
      properties:
        vmDirectPathGen2Active:
          deprecated: true
          description: |2
            Deprecated as of vSphere API 8.0. VMDirectPath Gen 2 is no longer
            supported and there is no replacement.
            
            Flag to indicate whether VMDirectPath Gen 2 is active on this device.
            
            If false, the reason(s) for inactivity will be provided in one or
            more of *VirtualMachineDeviceRuntimeInfoVirtualEthernetCardRuntimeState.vmDirectPathGen2InactiveReasonVm*,
            *VirtualMachineDeviceRuntimeInfoVirtualEthernetCardRuntimeState.vmDirectPathGen2InactiveReasonOther*,
            and *VirtualMachineDeviceRuntimeInfoVirtualEthernetCardRuntimeState.vmDirectPathGen2InactiveReasonExtended*.
          type: boolean
        vmDirectPathGen2InactiveReasonVm:
          deprecated: true
          description: |2
            Deprecated as of vSphere API 8.0. VMDirectPath Gen 2 is no longer
            supported and there is no replacement.
            
            If *VirtualMachineDeviceRuntimeInfoVirtualEthernetCardRuntimeState.vmDirectPathGen2Active* is false, this array will be
            populated with reasons for the inactivity that are related to virtual
            machine state or configuration (chosen from
            *VirtualMachineDeviceRuntimeInfoVirtualEthernetCardRuntimeStateVmDirectPathGen2InactiveReasonVm_enum*).
            
            Other reasons for
            inactivity will be provided in
            *VirtualMachineDeviceRuntimeInfoVirtualEthernetCardRuntimeState.vmDirectPathGen2InactiveReasonOther*. If there is a reason
            for inactivity that cannot be described by the available constants,
            *VirtualMachineDeviceRuntimeInfoVirtualEthernetCardRuntimeState.vmDirectPathGen2InactiveReasonExtended* will be populated
            with an additional explanation provided by the platform.
            
            Note that this list of reasons is not guaranteed to be exhaustive.
          type: array
          items:
            type: string
        vmDirectPathGen2InactiveReasonOther:
          deprecated: true
          description: |2
            Deprecated as of vSphere API 8.0. VMDirectPath Gen 2 is no longer
            supported and there is no replacement.
            
            If *VirtualMachineDeviceRuntimeInfoVirtualEthernetCardRuntimeState.vmDirectPathGen2Active* is false, this array will be
            populated with reasons for the inactivity that are not related to
            virtual machine state or configuration (chosen from
            *VirtualMachineDeviceRuntimeInfoVirtualEthernetCardRuntimeStateVmDirectPathGen2InactiveReasonOther_enum*).
            
            Virtual machine
            related reasons for inactivity will be provided in
            *VirtualMachineDeviceRuntimeInfoVirtualEthernetCardRuntimeState.vmDirectPathGen2InactiveReasonVm*. If there is a reason
            for inactivity that cannot be described by the available constants,
            *VirtualMachineDeviceRuntimeInfoVirtualEthernetCardRuntimeState.vmDirectPathGen2InactiveReasonExtended* will be populated
            with an additional explanation provided by the platform.
            
            Note that this list of reasons is not guaranteed to be exhaustive.
            
            See also *HostCapability.vmDirectPathGen2Supported*.
          type: array
          items:
            type: string
        vmDirectPathGen2InactiveReasonExtended:
          deprecated: true
          description: |2
            Deprecated as of vSphere API 8.0. VMDirectPath Gen 2 is no longer
            supported and there is no replacement.
            
            If *VirtualMachineDeviceRuntimeInfoVirtualEthernetCardRuntimeState.vmDirectPathGen2Active* is false, this property may
            contain an explanation provided by the platform, beyond the reasons
            (if any) enumerated in *VirtualMachineDeviceRuntimeInfoVirtualEthernetCardRuntimeState.vmDirectPathGen2InactiveReasonVm*
            and/or *VirtualMachineDeviceRuntimeInfoVirtualEthernetCardRuntimeState.vmDirectPathGen2InactiveReasonOther*.
          type: string
        uptv2Active:
          description: |2
            Flag to indicate whether UPTv2(Uniform Pass-through version 2) is active
            on this device.
            
            If true, the network adapter works in the pass-through mode.
            If false, the network adapter still has the network connectivity but
            works in emulated mode and pass-through is not enabled.
            The reason for inactivity is provided in *VirtualMachineDeviceRuntimeInfoVirtualEthernetCardRuntimeState.uptv2InactiveReasonVm*
            and/or *VirtualMachineDeviceRuntimeInfoVirtualEthernetCardRuntimeState.uptv2InactiveReasonOther*.
            This flag is unset if not applicable. It indicates network adapter is not a
            vmxnet3 adapter or *VirtualVmxnet3.uptv2Enabled* of it
            is not set to true.
            
            ***Since:*** vSphere API Release 8.0.0.1
          type: boolean
        uptv2InactiveReasonVm:
          description: |2
            When *VirtualMachineDeviceRuntimeInfoVirtualEthernetCardRuntimeState.uptv2Active* is false, this field will be
            populated with reasons for the inactivity that are related to virtual
            machine state or configuration (chosen from
            *VirtualMachineDeviceRuntimeInfoVirtualEthernetCardRuntimeStateVmDirectPathGen2InactiveReasonVm_enum*).
            
            Other reasons for
            inactivity will be provided in *VirtualMachineDeviceRuntimeInfoVirtualEthernetCardRuntimeState.uptv2InactiveReasonOther*.
            This field will be unset if *VirtualMachineDeviceRuntimeInfoVirtualEthernetCardRuntimeState.uptv2Active* is true or unset.
            
            Note that this field of reasons is not guaranteed to be exhaustive.
            
            ***Since:*** vSphere API Release 8.0.0.1
          type: array
          items:
            type: string
        uptv2InactiveReasonOther:
          description: |2
            When *VirtualMachineDeviceRuntimeInfoVirtualEthernetCardRuntimeState.uptv2Active* is false, this field will be
            populated with reasons for the inactivity that are not related to
            virtual machine state or configuration (chosen from
            *VirtualMachineDeviceRuntimeInfoVirtualEthernetCardRuntimeStateVmDirectPathGen2InactiveReasonOther_enum*).
            
            Virtual machine
            related reasons for inactivity will be provided in
            *VirtualMachineDeviceRuntimeInfoVirtualEthernetCardRuntimeState.uptv2InactiveReasonVm*.
            This field will be unset if *VirtualMachineDeviceRuntimeInfoVirtualEthernetCardRuntimeState.uptv2Active* is true or unset.
            
            Note that this field of reasons is not guaranteed to be exhaustive.
            
            ***Since:*** vSphere API Release 8.0.0.1
          type: array
          items:
            type: string
        reservationStatus:
          description: |2
            The status indicating whether network reservation requirement is violated
            or not on the virtual network adapter.
            
            See *ManagedEntityStatus_enum*
            for possible values.
            
            *red* indicates that reservation specified on the virtual
            network adapter is not being fulfilled. This can happen if the reservation requested is
            greater than the available capacity reserved for virtual machine traffic on the host.
            
            *green* indicates that the reservation specified on the
            virtual network adapter is being fulfilled.
          type: string
        attachmentStatus:
          description: |2
            The status indicating the state of virtual network adapter's attachment
            to an opaque network.
            
            See *ManagedEntityStatus_enum* for possible values.
            
            *red* indicates that the network adapter
            is not yet successfully attached to opaque network. This can happen if
            corresponding attachment port is missing in the kernel.
            
            *green* indicates that the network
            adapater is successfully attached to opaque network.
          type: string
        featureRequirement:
          description: |2
            These network adapter requirements must have equivalent capabilities
            on the virtual switch in order to power on or migrate to the host.
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineFeatureRequirement'
      allOf:
        - $ref: '#/components/schemas/VirtualMachineDeviceRuntimeInfoDeviceRuntimeState'

    ArrayOfVirtualMachineDeviceRuntimeInfoVirtualEthernetCardRuntimeState:
      type: object
      description: |2
        A boxed array of *VirtualMachineDeviceRuntimeInfoVirtualEthernetCardRuntimeState*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineDeviceRuntimeInfoVirtualEthernetCardRuntimeState'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualMachineDiskDeviceInfo:
      type: object
      description: |2
        The DiskDeviceInfo class contains basic information about a specific disk hardware
        device.
      properties:
        capacity:
          description: |2
            Size of disk
          type: integer
          format: int64
        vm:
          description: |2
            List of known virtual machines using this physical disk as a backing
            
            Refers instances of *VirtualMachine*.
          type: array
          items:
            $ref: '#/components/schemas/ManagedObjectReference'
      allOf:
        - $ref: '#/components/schemas/VirtualMachineTargetInfo'

    ArrayOfVirtualMachineDiskDeviceInfo:
      type: object
      description: |2
        A boxed array of *VirtualMachineDiskDeviceInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineDiskDeviceInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualMachineDvxClassInfo:
      type: object
      description: |2
        Description of a Device Virtualization Extensions (DVX) device class.
        
        ***Since:*** vSphere API Release 8.0.0.1
      properties:
        deviceClass:
          description: |2
            DVX device class.
          $ref: '#/components/schemas/ElementDescription'
        vendorName:
          description: |2
            The label for the vendor name of this class.
            
            The value is defined by vendors of the DVX device class
            as part of their localizable messages.
          type: string
        sriovNic:
          description: |2
            Indicates whether the devices of this class are SR-IOV NICs.
          type: boolean
        configParams:
          description: |2
            The configuration parameters for this DVX device class.
          type: array
          items:
            $ref: '#/components/schemas/OptionDef'
      required:
        - deviceClass
        - vendorName
        - sriovNic
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVirtualMachineDvxClassInfo:
      type: object
      description: |2
        A boxed array of *VirtualMachineDvxClassInfo*. To be used in *Any* placeholders.
        
        ***Since:*** vSphere API Release 8.0.0.1
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineDvxClassInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualMachineDynamicPassthroughInfo:
      type: object
      description: |2
        Description of a Dynamic DirectPath PCI device.
      properties:
        vendorName:
          description: |2
            The vendor name of this PCI device.
          type: string
        deviceName:
          description: |2
            The device name of this PCI device.
          type: string
        customLabel:
          description: |2
            The custom label attached to this PCI device.
          type: string
        vendorId:
          description: |2
            PCI vendor ID for this device.
          type: integer
          format: int32
        deviceId:
          description: |2
            PCI device ID for this device.
          type: integer
          format: int32
      required:
        - vendorName
        - deviceName
        - vendorId
        - deviceId
      allOf:
        - $ref: '#/components/schemas/VirtualMachineTargetInfo'

    ArrayOfVirtualMachineDynamicPassthroughInfo:
      type: object
      description: |2
        A boxed array of *VirtualMachineDynamicPassthroughInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineDynamicPassthroughInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualMachineEmptyIndependentFilterSpec:
      type: object
      description: |2
        The EmptyIndependentFilterSpec data object is used to specify empty independent
        filter spec.
        
        This obejct is passed during provisioning workflows to remove all
        attached independent filters.
        
        ***Since:*** vSphere API Release 7.0.2.1
      allOf:
        - $ref: '#/components/schemas/VirtualMachineBaseIndependentFilterSpec'

    ArrayOfVirtualMachineEmptyIndependentFilterSpec:
      type: object
      description: |2
        A boxed array of *VirtualMachineEmptyIndependentFilterSpec*. To be used in *Any* placeholders.
        
        ***Since:*** vSphere API Release 7.0.2.1
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineEmptyIndependentFilterSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualMachineEmptyProfileSpec:
      type: object
      description: |2
        Specifies an empty Storage Policy for a Virtual Machine Home or a
        Virtual Disk object.
        
        The object is left without any profile association, and hence has no
        explicit policy driven requirements.
        This implies that object's policy driven SLAs are always met trivially.
      allOf:
        - $ref: '#/components/schemas/VirtualMachineProfileSpec'

    ArrayOfVirtualMachineEmptyProfileSpec:
      type: object
      description: |2
        A boxed array of *VirtualMachineEmptyProfileSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineEmptyProfileSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    FaultToleranceConfigInfo:
      type: object
      description: |2
        FaultToleranceConfigInfo is a data object type containing Fault Tolerance
        settings for this virtual machine.
        
        role, instanceUuids and configPaths contain information about the
        whole fault tolerance group.
      properties:
        role:
          description: |2
            The index of the current VM in instanceUuids array starting from 1, so
            1 means that it is the primary VM.
          type: integer
          format: int32
        instanceUuids:
          description: |2
            The instanceUuid of all the VMs in this fault tolerance group.
            
            The
            first element is the instanceUuid of the primary VM.
          type: array
          items:
            type: string
        configPaths:
          description: |2
            The configuration file path for all the VMs in this fault tolerance
            group.
          type: array
          items:
            type: string
        orphaned:
          description: |2
            Indicates whether a secondary VM is orphaned (no longer associated with
            the primary VM).
          type: boolean
      required:
        - role
        - instanceUuids
        - configPaths
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfFaultToleranceConfigInfo:
      type: object
      description: |2
        A boxed array of *FaultToleranceConfigInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/FaultToleranceConfigInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    FaultToleranceConfigSpec:
      type: object
      description: |2
        FaultToleranceConfigSpec contains information about the metadata file
        and vmdk files for a fault tolerant VM pair.
      properties:
        metaDataPath:
          description: |2
            Metadata file information
          $ref: '#/components/schemas/FaultToleranceMetaSpec'
        secondaryVmSpec:
          description: |2
            Placement information for secondary
          $ref: '#/components/schemas/FaultToleranceVMConfigSpec'
        metroFtEnabled:
          description: |2
            Indicates whether FT Metro Cluster is enabled/disabled.
            
            \- If TRUE, FT Metro Cluster is enabled for the VM. An implicit
            Anti-HostGroup will be generated from HostGroup defined for FT
            primary, then affine the primary with one HostGroup and affine the
            secondary with another HostGroup.
            \- If FALSE or unset, FT Metro Cluster is disabled for the VM. Both FT
            primary and secondary will be put in the same HostGroup.
            
            ***Since:*** vSphere API Release 8.0.3.0
          type: boolean
        metroFtHostGroup:
          description: |2
            Indicate the Host Group (*ClusterHostGroup*) for FT
            Metro Cluster enabled Virtual Machine.
            
            Based on the selected Host Group, FT can divide the hosts in the cluster
            into two groups and ensure to place FT primary and FT secondary in
            different groups.
            
            ***Since:*** vSphere API Release 8.0.3.0
          type: string
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfFaultToleranceConfigSpec:
      type: object
      description: |2
        A boxed array of *FaultToleranceConfigSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/FaultToleranceConfigSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    FaultToleranceMetaSpec:
      type: object
      description: |2
        This data object encapsulates the Datastore for the shared metadata file
        for a fault tolerant pair of VMs.
      properties:
        metaDataDatastore:
          description: |2
            Datastore for the metadata file
            
            Refers instance of *Datastore*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - metaDataDatastore
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfFaultToleranceMetaSpec:
      type: object
      description: |2
        A boxed array of *FaultToleranceMetaSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/FaultToleranceMetaSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    FaultTolerancePrimaryConfigInfo:
      type: object
      description: |2
        FaultTolerancePrimaryConfigInfo is a data object type containing Fault Tolerance
        settings for a primary virtual machine in a fault tolerance group
      properties:
        secondaries:
          description: |2
            Refers instances of *VirtualMachine*.
          type: array
          items:
            $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - secondaries
      allOf:
        - $ref: '#/components/schemas/FaultToleranceConfigInfo'

    ArrayOfFaultTolerancePrimaryConfigInfo:
      type: object
      description: |2
        A boxed array of *FaultTolerancePrimaryConfigInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/FaultTolerancePrimaryConfigInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    FaultToleranceSecondaryConfigInfo:
      type: object
      description: |2
        FaultToleranceSecondaryConfigInfo is a data object type containing Fault Tolerance
        settings for a secondary virtual machine in a fault tolerance group
      properties:
        primaryVM:
          description: |2
            Refers instance of *VirtualMachine*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - primaryVM
      allOf:
        - $ref: '#/components/schemas/FaultToleranceConfigInfo'

    ArrayOfFaultToleranceSecondaryConfigInfo:
      type: object
      description: |2
        A boxed array of *FaultToleranceSecondaryConfigInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/FaultToleranceSecondaryConfigInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    FaultToleranceSecondaryOpResult:
      type: object
      description: |2
        FaultToleranceSecondaryOpResult is a data object that reports on
        the outcome of the *VirtualMachine.CreateSecondaryVM_Task* or
        *VirtualMachine.EnableSecondaryVM_Task* operation.
      properties:
        vm:
          description: |2
            The Secondary VirtualMachine
            
            Refers instance of *VirtualMachine*.
          $ref: '#/components/schemas/ManagedObjectReference'
        powerOnAttempted:
          description: |2
            Whether an attempt was made to power on the secondary.
            
            If
            an attempt was made, *FaultToleranceSecondaryOpResult.powerOnResult* will report the
            status of this attempt.
          type: boolean
        powerOnResult:
          description: |2
            The powerOnResult property reports the outcome of powering on the
            Secondary VirtualMachine if a power on was required.
            
            A power on will
            be attempted if the Primary Virtual Machine is powered on when the
            operation is performed. This object is only reported if *FaultToleranceSecondaryOpResult.powerOnAttempted* is true. If the outcome of the power-on attempt
            is not successful, the returned *ClusterPowerOnVmResult*
            object will include an instance of *ClusterNotAttemptedVmInfo*
            whereas if the attempt was successful, then an instance of
            *ClusterAttemptedVmInfo* is returned. When
            *ClusterAttemptedVmInfo* is returned, its
            *ClusterAttemptedVmInfo.task* property is only set if the cluster
            is a HA-only cluster.
          $ref: '#/components/schemas/ClusterPowerOnVmResult'
      required:
        - vm
        - powerOnAttempted
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfFaultToleranceSecondaryOpResult:
      type: object
      description: |2
        A boxed array of *FaultToleranceSecondaryOpResult*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/FaultToleranceSecondaryOpResult'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    FaultToleranceVMConfigSpec:
      type: object
      description: |2
        FaultToleranceVMConfigSpec contains information about placement of
        fault tolerant VM.
      properties:
        vmConfig:
          description: |2
            Datastore for the configuration file for the virtual machine, e.g., the
            .vmx file.
            
            This also implicitly defines the configuration directory.
            
            Refers instance of *Datastore*.
          $ref: '#/components/schemas/ManagedObjectReference'
        disks:
          description: |2
            Array of disks associated with the VM
          type: array
          items:
            $ref: '#/components/schemas/FaultToleranceDiskSpec'
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfFaultToleranceVMConfigSpec:
      type: object
      description: |2
        A boxed array of *FaultToleranceVMConfigSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/FaultToleranceVMConfigSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    FaultToleranceDiskSpec:
      type: object
      description: |2
        FaultToleranceDiskSpec contains disk managed object and destination
        datastore of disks associated with a VM.
      properties:
        disk:
          description: |2
            Disk Managed Object
          $ref: '#/components/schemas/VirtualDevice'
        datastore:
          description: |2
            Destination location for disk
            
            Refers instance of *Datastore*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - disk
        - datastore
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfFaultToleranceDiskSpec:
      type: object
      description: |2
        A boxed array of *FaultToleranceDiskSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/FaultToleranceDiskSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualMachineFeatureRequirement:
      type: object
      description: |2
        Feature requirement contains a key, featureName and an opaque value
      properties:
        key:
          description: |2
            Accessor name to the feature requirement test
          type: string
        featureName:
          description: |2
            Name of the feature.
            
            Identical to the key.
          type: string
        value:
          description: |2
            Opaque value for the feature operation.
            
            Operation is contained
            in the value.
          type: string
      required:
        - key
        - featureName
        - value
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVirtualMachineFeatureRequirement:
      type: object
      description: |2
        A boxed array of *VirtualMachineFeatureRequirement*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineFeatureRequirement'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualMachineFileInfo:
      type: object
      description: |2
        The FileInfo data object type contains the locations of virtual machine
        files other than the virtual disk files.
        
        The configurable parameters
        are all in the FileInfo object.
        
        The object also contains a FileLayout object that returns a complete
        list of additional files that makes up the virtual machine
        configuration. This is a read-only structure and is returned when
        the configuration is read. This is ignored during configuration and
        can be left out.
      properties:
        vmPathName:
          description: |2
            Path name to the configuration file for the virtual machine, e.g., the
            .vmx file.
            
            This also implicitly defines the configuration directory.
          type: string
        snapshotDirectory:
          description: |2
            Path name of the directory that holds suspend and snapshot files
            belonging to the virtual machine.
            
            Prior to vSphere 5.0, this
            directory also holds snapshot redo files. Starting with vSphere 5.0,
            the redo files will stay in the same directory as the snapshotted
            disk, thus this directory will no longer hold the snapshot redo
            files.
            
            This path name defaults to the same directory as the configuration
            file.
            
            ESX Server requires this to indicate a VMFS volume or NAS volume
            (for ESX Server 3).
            In case the configuration file is not stored on VMFS or NAS, this
            property must be set explicitly.
          type: string
        suspendDirectory:
          description: |2
            Some products allow the suspend directory to be different than the
            snapshot directory.
            
            On products where this is not possible, setting
            of this property is ignored.
          type: string
        logDirectory:
          description: |2
            Directory to store the log files for the virtual machine.
            
            If not specified,
            this defaults to the same directory as the configuration file,
          type: string
        ftMetadataDirectory:
          description: |2
            Directory to store the fault tolerance meta data files for the
            virtual machine.
          type: string
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVirtualMachineFileInfo:
      type: object
      description: |2
        A boxed array of *VirtualMachineFileInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineFileInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualMachineFileLayout:
      type: object
      deprecated: true
      description: |2
        Deprecated as of vSphere API 4.0, use *VirtualMachineFileLayoutEx* instead.
        
        Describes the set of files that makes up a virtual machine on disk.
        
        The
        file layout is broken into 4 major sections:
        - Configuration: Files stored in the configuration directory
        - Log: Files stored in the log directory
        - Disk: Files stored relative to a disk configuration file
        - Snapshot: Stored in the snapshot directory
          
        Often the same directory is used for configuration, log, disk and
        snapshots.
      properties:
        configFile:
          description: |2
            A list of files that makes up the configuration of the virtual machine
            (excluding the .vmx file, since that file is represented in the
            FileInfo).
            
            These are relative paths from the configuration directory. A
            slash is always used as a separator. This list will typically include the
            NVRAM file, but could also include other meta-data files.
          type: array
          items:
            type: string
        logFile:
          description: |2
            A list of files stored in the virtual machine's log directory.
            
            These are
            relative paths from the logDirectory. A slash is always used as a
            separator.
          type: array
          items:
            type: string
        disk:
          description: |2
            Files making up each virtual disk.
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineFileLayoutDiskLayout'
        snapshot:
          description: |2
            Files of each snapshot.
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineFileLayoutSnapshotLayout'
        swapFile:
          description: |2
            The swapfile specific to this virtual machine, if any.
            
            This is a
            complete datastore path, not a relative path.
          type: string
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVirtualMachineFileLayout:
      type: object
      description: |2
        A boxed array of *VirtualMachineFileLayout*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineFileLayout'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualMachineFileLayoutDiskLayout:
      type: object
      description: |2
        Enumerats the set of files for each virtual disk.
      properties:
        key:
          description: |2
            Identification of the disk in *config*.
          type: integer
          format: int32
        diskFile:
          description: |2
            List of files that makes up the virtual disk.
            
            At least one entry
            always exists in this array. The first entry is the main
            descriptor of the virtual disk (the one used when adding the
            disk to a virtual machine). These are complete datastore paths, not
            relative paths.
          type: array
          items:
            type: string
      required:
        - key
        - diskFile
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVirtualMachineFileLayoutDiskLayout:
      type: object
      description: |2
        A boxed array of *VirtualMachineFileLayoutDiskLayout*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineFileLayoutDiskLayout'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualMachineFileLayoutSnapshotLayout:
      type: object
      description: |2
        Enumerates the set of files that make up a snapshot or redo-point
      properties:
        key:
          description: |2
            Identification of the snapshot
            
            Refers instance of *VirtualMachineSnapshot*.
          $ref: '#/components/schemas/ManagedObjectReference'
        snapshotFile:
          description: |2
            A list of files that make up the snapshot state.
            
            These are relative
            paths from the snapshotDirectory. A slash is always used as a
            separator.
          type: array
          items:
            type: string
      required:
        - key
        - snapshotFile
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVirtualMachineFileLayoutSnapshotLayout:
      type: object
      description: |2
        A boxed array of *VirtualMachineFileLayoutSnapshotLayout*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineFileLayoutSnapshotLayout'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualMachineFileLayoutEx:
      type: object
      description: |2
        Detailed description of files that make up a virtual machine on disk.
        
        The
        file layout is broken into 4 major sections:
        - Configuration: Files stored in the configuration directory
        - Log: Files stored in the log directory
        - Disk: Files stored relative to a disk configuration file
        - Snapshot: Stored in the snapshot directory
          
        Often the same directory is used for configuration, log, disk and
        snapshots.
      properties:
        file:
          description: |2
            Information about all the files that constitute the virtual machine
            including configuration files, disks, swap file, suspend file, log files,
            core files, memory file etc.
            
            *VirtualMachineFileLayoutExFileType_enum* lists the
            different file-types that make a virtual machine.
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineFileLayoutExFileInfo'
        disk:
          description: |2
            Layout of each virtual disk attached to the virtual machine.
            
            For a virtual machine with snaphots, this property gives only those disks
            that are attached to it at the current point of running.
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineFileLayoutExDiskLayout'
        snapshot:
          description: |2
            Layout of each snapshot of the virtual machine.
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineFileLayoutExSnapshotLayout'
        timestamp:
          description: |2
            Time when values in this structure were last updated.
          type: string
          format: date-time
      required:
        - timestamp
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVirtualMachineFileLayoutEx:
      type: object
      description: |2
        A boxed array of *VirtualMachineFileLayoutEx*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineFileLayoutEx'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualMachineFileLayoutExDiskLayout:
      type: object
      description: |2
        Layout of a virtual disk, including the base- and delta- disks.
        
        A virtual disk typically is made up of a chain of disk-units.
      properties:
        key:
          description: |2
            Identifier for the virtual disk in *VirtualHardware.device*.
          type: integer
          format: int32
        chain:
          description: |2
            The disk-unit chain that makes up this virtual disk.
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineFileLayoutExDiskUnit'
      required:
        - key
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVirtualMachineFileLayoutExDiskLayout:
      type: object
      description: |2
        A boxed array of *VirtualMachineFileLayoutExDiskLayout*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineFileLayoutExDiskLayout'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualMachineFileLayoutExDiskUnit:
      type: object
      description: |2
        Information about a single unit of a virtual disk, such as
        the base-disk or a delta-disk.
        
        A disk-unit consists of at least one descriptor
        file, and zero or more extent files.
        
        Sometimes, a disk-unit is also referred to as a _backing_.
      properties:
        fileKey:
          description: |2
            Array of keys of the files that make up the disk unit.
            
            Values here
            correspond to property *VirtualMachineFileLayoutExFileInfo.key* in
            *VirtualMachineFileLayoutEx.file*.
            
            At least one entry always exists in this array. Property
            *VirtualMachineFileLayoutExFileInfo.type* of the referenced file
            can be used to distinguish the disk descriptor (type *diskDescriptor*) from the extents.
          type: array
          items:
            type: integer
            format: int32
      required:
        - fileKey
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVirtualMachineFileLayoutExDiskUnit:
      type: object
      description: |2
        A boxed array of *VirtualMachineFileLayoutExDiskUnit*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineFileLayoutExDiskUnit'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualMachineFileLayoutExFileInfo:
      type: object
      description: |2
        Basic information about a file.
      properties:
        key:
          description: |2
            Key to reference this file.
          type: integer
          format: int32
        name:
          description: |2
            Name of the file, including the complete datastore path.
          type: string
        type:
          description: |2
            Type of the file.
            
            *VirtualMachineFileLayoutExFileType_enum* lists
            all valid values.
          type: string
        size:
          description: |2
            Size of the file in bytes.
          type: integer
          format: int64
        uniqueSize:
          description: |2
            Size of the file in bytes corresponding to the file blocks
            that were allocated uniquely.
            
            In other words, if the underlying
            storage supports sharing of file blocks across disk files, the
            property corresponds to the size of the file blocks that were
            allocated only in context of this file, i.e. it does not include
            shared blocks that were allocated in other files.
            This property will be unset if the underlying implementation
            is unable to compute this information. One example of this
            is when the file resides on a NAS datastore whose underlying
            storage doesn't support this metric. In some cases the field
            might be set but the value could be over-estimated due to
            the inability of the NAS based storage to provide an
            accurate value.
          type: integer
          format: int64
        backingObjectId:
          description: |2
            Backing object's durable and unmutable identifier.
            
            Each backing object has a unique identifier which is not settable.
            This property is applied to the file backed by a storage object,
            such as vvol.
          type: string
        accessible:
          description: |2
            Flag which indicates the accessibility of the file
            when the file info object was created.
          type: boolean
      required:
        - key
        - name
        - type
        - size
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVirtualMachineFileLayoutExFileInfo:
      type: object
      description: |2
        A boxed array of *VirtualMachineFileLayoutExFileInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineFileLayoutExFileInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualMachineFileLayoutExSnapshotLayout:
      type: object
      description: |2
        Layout of a snapshot.
      properties:
        key:
          description: |2
            Reference to the snapshot.
            
            Refers instance of *VirtualMachineSnapshot*.
          $ref: '#/components/schemas/ManagedObjectReference'
        dataKey:
          description: |2
            Key to the snapshot data file in *VirtualMachineFileLayoutEx.file*.
          type: integer
          format: int32
        memoryKey:
          description: |2
            Key to the snapshot memory file in *VirtualMachineFileLayoutEx.file*.
            
            Powered off snapshots do not have a memory component and in some cases
            the memory component is combined with the data component. When a memory
            component does not exist, the value is initialized to -1.
          type: integer
          format: int32
        disk:
          description: |2
            Layout of each virtual disk of the virtual machine when the
            snapshot was taken.
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineFileLayoutExDiskLayout'
      required:
        - key
        - dataKey
        - memoryKey
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVirtualMachineFileLayoutExSnapshotLayout:
      type: object
      description: |2
        A boxed array of *VirtualMachineFileLayoutExSnapshotLayout*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineFileLayoutExSnapshotLayout'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualMachineFlagInfo:
      type: object
      description: |2
        The FlagInfo data object type encapsulates the flag settings
        for a virtual machine.
        
        These properties are optional since the same structure
        is used to change the values during an edit or create operation.
      properties:
        disableAcceleration:
          description: |2
            Flag to turn off video acceleration for a virtual machine console window.
          type: boolean
        enableLogging:
          description: |2
            Flag to enable logging for a virtual machine.
          type: boolean
        useToe:
          description: |2
            Flag to specify whether or not to use TOE (TCP/IP Offloading).
          type: boolean
        runWithDebugInfo:
          deprecated: true
          description: |2
            Deprecated as of VI API 2.5, use *VirtualMachineFlagInfo.monitorType*.
            
            Flag to specify whether or not to run in debug mode.
          type: boolean
        monitorType:
          description: |2
            vmx process type.
            
            See *VirtualMachineFlagInfoMonitorType_enum*
            for possible values for this property.
          type: string
        htSharing:
          deprecated: true
          description: |2
            Deprecated as of vSphere API 6.7.
            
            Specifies how the VCPUs of a virtual machine are allowed to
            share physical cores on a hyperthreaded system.
            
            Two VCPUs are
            "sharing" a core if they are both running on logical CPUs of
            the core at the same time.
            
            See also *VirtualMachineHtSharing_enum*.
          type: string
        snapshotDisabled:
          deprecated: true
          description: |2
            Deprecated as of vSphere API 4.0. The flag is ignored by the server.
            
            Flag to specify whether snapshots are disabled for this virtual
            machine.
          type: boolean
        snapshotLocked:
          description: |2
            Flag to specify whether the snapshot tree is locked for this virtual machine.
          type: boolean
        diskUuidEnabled:
          description: |2
            Indicates whether disk UUIDs are being used by this virtual machine.
            
            If this flag is set to false, disk UUIDs are not exposed to the guest.
            
            Since products before ESX 3.1 do not support disk UUIDs, moving virtual
            machines from a platform that supports UUID to a platform that does
            not support UUIDs could result in unspecified guest behavior. For
            virtual machines where the ability to move to older platforms is
            important, this flag should be set to false. If the value is unset,
            the behavior 'false' will be used.
          type: boolean
        virtualMmuUsage:
          description: |2
            Indicates whether or not the system will try to use nested page
            table hardware support, if available.
            
            By default, VMware software will determine whether or not
            to use nested page table hardware support based on various factors such
            as the guest operating system type and the physical hardware.
            Certain workloads can benefit from explicitly turning
            nested page table hardware support on or off; this can be set using
            nptUsage flag.
            If the value is unset, the value will default to automatic.
            
            *VirtualMachineFlagInfoVirtualMmuUsage_enum* represents the set of
            possible values.
          type: string
        virtualExecUsage:
          description: |2
            Indicates whether or not the system will try to use Hardware
            Virtualization (HV) support for instruction virtualization,
            if available.
            
            By default, VMware software will determine whether or not
            to use hardware virtualization support based on various factors such
            as the guest operating system type and the physical hardware.
            Certain workloads can benefit from explicitly turning
            hardware virtualization support on or off.
            If the value is unset, the value will default to hvAuto.
            
            *VirtualMachineFlagInfoVirtualExecUsage_enum* represents the set of
            possible values.
            
            New processors can enable two hardware acceleration technologies
            for virtualization, one for instruction virtualization and the
            other for MMU virtualization. Intel names its hardware-assisted
            instruction virtualization as VT, and its hardware-assisted
            MMU virtualization as EPT. AMD calls them as AMD-V and RVI,
            respectively. For details on these technologies, please refer
            to documents from the processor vendors.
            
            *VirtualMachineFlagInfo.virtualExecUsage* controls instruction
            virtualization; while *VirtualMachineFlagInfo.virtualMmuUsage*
            controls MMU virtualization. "On" allows hardware acceleration,
            while "off" only allows software solution.
            
            There are four meaningful combinations.
            
            (hvAuto, automatic) - The host chooses which feature to use.
            (hvOn, on) - Use both VT/AMD-V and EPT/RVI.
            (hvOn, off) - Use VT/AMD-V but do not use EPT/RVI.
            (hvOff, off) - Do not use any of these hardware acceleration technologies.
          type: string
        snapshotPowerOffBehavior:
          description: |2
            Specifies the power-off behavior for a virtual machine that has
            a snapshot.
            
            If the value is unset, the behavior 'powerOff' will
            be used.
            
            See also *VirtualMachinePowerOffBehavior_enum*.
          type: string
        recordReplayEnabled:
          deprecated: true
          description: |2
            Deprecated as of vSphere API 6.0.
            
            Flag to specify whether record and replay operations are
            allowed for this virtual machine.
            
            If this flag is set to 'true', instruction virtualization
            will use hardware virtualization (HV) support. I.e.,
            virtualExecUsage will be set to 'hvOn'.
            If this flag is set to 'false' for a virtual machine that
            already has a recording, replay will be disallowed, though
            the recording will be preserved.
            If the value is unset, the behavior 'false' will be used.
          type: boolean
        faultToleranceType:
          description: |2
            Indicates the type of fault tolerance type the virtual machine is
            configured to use.
            
            *VirtualMachineFaultToleranceType_enum* represents the set of
            possible values.
          type: string
        cbrcCacheEnabled:
          description: |2
            Flag to specify whether common CBRC digest cache is enabled for this
            virtual machine.
            
            The common CBRC cache is shared between the hot added disks in the VM.
            If this flag is set to 'true' the VM will allocate a commont digest
            cache on power on.
          type: boolean
        vvtdEnabled:
          description: |2
            Flag to specify if Intel Virtualization Technology for Directed I/O
            is enabled for this virtual machine.
            
            When creating a new VM:
            \- If vim.vm.FlagInfo.vbsEnabled is set to <code>true</code>,
            and this flag is set to <code>false</code> error is returned.
            \- If this flag is unset and vim.vm.FlagInfo.vbsEnabled is set to
            <code>true</code>, the value of this flag is set to <code>true</code>.
          type: boolean
        vbsEnabled:
          description: |2
            Flag to specify if Virtualization-based security
            is enabled for this virtual machine.
            
            If set to <code>true</code> when creating a new VM, the following VM
            properties might be modified automatically:
            \- If vim.vm.FlagInfo.vvtdEnabled is not set to <code>false</code>,
            it is set to <code>true</code>. Else error is returned.
            \- If vim.vm.ConfigSpec.nestedHVEnabled is not set to <code>false</code>,
            it is set to <code>true</code>. Else error is returned.
            \- If vim.vm.BootOptions.efiSecureBootEnabled is not set to
            <code>false</code>, it is set to <code>true</code>. Else error is
            returned.
            \- If vim.vm.firmware is not set to <code>bios</code>, it is set
            to <code>efi</code>. Else error is returned.
          type: boolean
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVirtualMachineFlagInfo:
      type: object
      description: |2
        A boxed array of *VirtualMachineFlagInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineFlagInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualMachineFloppyInfo:
      type: object
      description: |2
        FloppyInfo class contains information about a physical floppy
        drive on the host.
      allOf:
        - $ref: '#/components/schemas/VirtualMachineTargetInfo'

    ArrayOfVirtualMachineFloppyInfo:
      type: object
      description: |2
        A boxed array of *VirtualMachineFloppyInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineFloppyInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualMachineForkConfigInfo:
      type: object
      description: |2
        This data object describes the fork configuration of this
        virtual machine.
      properties:
        parentEnabled:
          description: |2
            Flag to indicate whether this virtual machine is a parent enabled
            virtual machine.
            
            If this vm is not a parent enabled vm this
            property will be unset.
            When set into the vim.vm.ConfigSpec this flag will be ignored.
          type: boolean
        childForkGroupId:
          description: |2
            The fork group ID identifies the parent group of which this child
            VirtualMachine is a child.
            
            Applicable for child VirtualMachines only.
          type: string
        parentForkGroupId:
          description: |2
            The fork group ID identifies the parent group which this VirtualMachine
            belongs to.
            
            Applicable for parent VirtualMachines only.
          type: string
        childType:
          description: |2
            The flag to indicate the fork child type.
            
            For a persistent child
            virtual machine, once it is powered on, it will become a linked
            clone of its parent and this flag will be set to 'none'.
            
            See also *VirtualMachineForkConfigInfoChildType_enum*.
          type: string
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVirtualMachineForkConfigInfo:
      type: object
      description: |2
        A boxed array of *VirtualMachineForkConfigInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineForkConfigInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    GuestInfo:
      type: object
      description: |2
        Information about the guest operating system.
        
        Most of this information is collected by VMware Tools.
        In general, be sure you have VMware Tools installed
        and that the virtual machine is running when you access this information.
      properties:
        toolsStatus:
          deprecated: true
          description: |2
            Deprecated as of vSphere API 4.0 use *GuestInfo.toolsVersionStatus* and
            *GuestInfo.toolsRunningStatus*.
            
            Current status of VMware Tools in the guest operating system, if known.
          $ref: '#/components/schemas/VirtualMachineToolsStatus_enum'
        toolsVersionStatus:
          deprecated: true
          description: |2
            Deprecated as of vSphere API 5.1 use *GuestInfo.toolsVersionStatus2*.
            
            Current version status of VMware Tools in the guest operating system,
            if known.
            
            The set of possible values is described in
            *VirtualMachineToolsVersionStatus_enum* for vSphere API 5.0.
          type: string
        toolsVersionStatus2:
          description: |2
            Current version status of VMware Tools in the guest operating system,
            if known.
            
            The set of possible values is described in
            *VirtualMachineToolsVersionStatus_enum*
          type: string
        toolsRunningStatus:
          description: |2
            Current running status of VMware Tools in the guest operating system,
            if known.
            
            The set of possible values is described in
            *VirtualMachineToolsRunningStatus_enum*
          type: string
        toolsVersion:
          description: |2
            Current version of VMware Tools, if known.
          type: string
        toolsInstallType:
          description: |2
            Current installation type of VMware Tools in the guest operating system.
            
            The set of possible values is described in
            *VirtualMachineToolsInstallType_enum*
          type: string
        guestId:
          description: |2
            Guest operating system identifier (short name), if known.
          type: string
        guestFamily:
          description: |2
            Guest operating system family, if known.
          type: string
        guestFullName:
          description: |2
            Guest operating system full name, if known.
          type: string
        guestDetailedData:
          description: |2
            Guest OS Detailed data.
            
            The guest detailed data string is a property list (space separated,
            name='value' pairs where the value is embedded in single quotes) of
            metadata provided by the guest OS when sufficiently recent tools are
            installed. The fields supplied will vary between distributions and
            distribution versions. The order of these fields is not guaranteed.
            
            The guest detailed data string is not available before a virtual machine
            is first powered on. The guest must first be booted and a supported
            version of tools must be run to record the data (approximately 30-60
            seconds after booting). Once the guest detailed data string has been
            recorded, it will be available whether the virtual machine is powered off
            or on.
            
            Available fields:
            <table summary="Available fields">
            <thead>
            <tr>
            <th>Name</th>
            <th>Description</th>
            <th>Tools version first available</th>
            </tr>
            </thead>
            <tbody>
            <tr>
            <td>architecture</td>
            <td>'Arm' or 'X86'</td>
            <td>11.2.0</td>
            </tr>
            <tr>
            <td>bitness</td>
            <td>'32' or '64'</td>
            <td>11.2.0</td>
            </tr>
            <tr>
            <td>buildNumber</td>
            <td>OS build number</td>
            <td>11.2.0</td>
            </tr>
            <tr>
            <td>cpeString</td>
            <td>NIST Common Platform Enumeration Specification string, a standardized identifier for the OS</td>
            <td>12.2.0</td>
            </tr>
            <tr>
            <td>distroAddlVersion</td>
            <td>Longer OS version string that may contain additional info (e.g. version name)</td>
            <td>12.2.0</td>
            </tr>
            <tr>
            <td>distroName</td>
            <td>OS distribution name</td>
            <td>11.2.0</td>
            </tr>
            <tr>
            <td>distroVersion</td>
            <td>OS version string</td>
            <td>11.2.0</td>
            </tr>
            <tr>
            <td>familyName</td>
            <td>OS family name (Windows, Linux, etc.)</td>
            <td>11.2.0</td>
            </tr>
            <tr>
            <td>kernelVersion</td>
            <td>Linux kernel version, Windows 10+ patch number, or Windows build number</td>
            <td>11.2.0</td>
            </tr>
            <tr>
            <td>prettyName</td>
            <td>Officially specified distro "pretty name"</td>
            <td>11.2.0</td>
            </tr>
            </tbody>
            </table>
            
            ***Since:*** vSphere API Release 8.0.2.0
          type: string
        hostName:
          description: |2
            Hostname of the guest operating system, if known.
          type: string
        ipAddress:
          description: |2
            Primary IP address assigned to the guest operating system, if known.
          type: string
        net:
          description: |2
            Guest information about network adapters, if known.
          type: array
          items:
            $ref: '#/components/schemas/GuestNicInfo'
        ipStack:
          description: |2
            Guest information about IP networking stack, if known.
          type: array
          items:
            $ref: '#/components/schemas/GuestStackInfo'
        disk:
          description: |2
            Guest information about disks.
            
            You can obtain Linux guest disk information for the following file system
            types: Ext2, Ext3, Ext4, ReiserFS, XFS, Btrfs, NTFS, VFAT, UFS, PCFS, HFS,
            and MS-DOS.
            
            NOTE: Installing a more recent version of VMware Tools in the guest may help
            obtain disk information for more file system types. Please refer the VMware Tools
            User Guide for up-to-date supported file system types.
          type: array
          items:
            $ref: '#/components/schemas/GuestDiskInfo'
        screen:
          description: |2
            Guest screen resolution info, if known.
          $ref: '#/components/schemas/GuestScreenInfo'
        guestState:
          description: |2
            Operation mode of guest operating system.
            
            One of:
            - "running" - Guest is running normally.
            - "shuttingdown" - Guest has a pending shutdown command.
            - "resetting" - Guest has a pending reset command.
            - "standby" - Guest has a pending standby command.
            - "notrunning" - Guest is not running.
            - "unknown" - Guest information is not available.
          type: string
        appHeartbeatStatus:
          description: |2
            Application heartbeat status.
            
            Please see *VirtualMachineAppHeartbeatStatusType_enum*
          type: string
        guestKernelCrashed:
          description: |2
            Guest operating system's kernel crash state.
            
            If true, the guest operating system's kernel has crashed.
          type: boolean
        appState:
          description: |2
            Application state.
            
            If vSphere HA is enabled and the vm is configured for Application Monitoring
            and this field's value is "appStateNeedReset" then HA will attempt immediately reset
            the vm.
            There are some system conditions which may delay the immediate reset. The immediate
            reset will be performed as soon as allowed by vSphere HA and ESX. If during these
            conditions the value is changed to appStateOk the reset will be cancelled.
            
            See also *GuestInfoAppStateType_enum*.
          type: string
        guestOperationsReady:
          description: |2
            Guest Operations availability.
            
            If true, the virtual machine is ready to process guest operations.
          type: boolean
        interactiveGuestOperationsReady:
          description: |2
            Interactive Guest Operations availability.
            
            If true, the virtual machine is ready to process guest operations
            as the user interacting with the guest desktop.
          type: boolean
        guestStateChangeSupported:
          description: |2
            State change support.
            
            If true, the virtual machine is ready to process soft power operations.
          type: boolean
        generationInfo:
          description: |2
            A list of namespaces and their corresponding generation numbers.
            
            Only namespaces with non-zero
            *VirtualMachineNamespaceManagerCreateSpec.maxSizeEventsFromGuest*
            are guaranteed to be present here.
            Use *VirtualMachineNamespaceManager.ListNamespaces* to retrieve list of
            namespaces.
          type: array
          items:
            $ref: '#/components/schemas/GuestInfoNamespaceGenerationInfo'
        hwVersion:
          description: |2
            The hardware version string for this virtual machine.
          type: string
        customizationInfo:
          description: |2
            Guest OS Customization status info.
            
            ***Since:*** vSphere API Release 7.0.2.0
          $ref: '#/components/schemas/GuestInfoCustomizationInfo'
      required:
        - guestState
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfGuestInfo:
      type: object
      description: |2
        A boxed array of *GuestInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/GuestInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    GuestInfoCustomizationInfo:
      type: object
      description: |2
        ***Since:*** vSphere API Release 7.0.2.0
      properties:
        customizationStatus:
          description: |2
            The customization status for this VM
            
            See also *GuestInfoCustomizationStatus_enum*for the list of supported values.
          type: string
        startTime:
          description: |2
            The time when the customization process has started inside the
            guest OS
          type: string
          format: date-time
        endTime:
          description: |2
            The time when the customization process has completed inside the
            guest OS
          type: string
          format: date-time
        errorMsg:
          description: |2
            Description of the error if there is error for the customization
            process inside the guest OS
          type: string
      required:
        - customizationStatus
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfGuestInfoCustomizationInfo:
      type: object
      description: |2
        A boxed array of *GuestInfoCustomizationInfo*. To be used in *Any* placeholders.
        
        ***Since:*** vSphere API Release 7.0.2.0
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/GuestInfoCustomizationInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    GuestDiskInfo:
      type: object
      description: |2
        Information about each local virtual disk configured in the
        guest operating system.
      properties:
        diskPath:
          description: |2
            Name of the virtual disk in the guest operating system.
            
            For example: C:\\
          type: string
        capacity:
          description: |2
            Total capacity of the disk, in bytes.
            
            This is part of the virtual machine configuration.
          type: integer
          format: int64
        freeSpace:
          description: |2
            Free space on the disk, in bytes.
            
            This is retrieved by VMware Tools.
          type: integer
          format: int64
        filesystemType:
          description: |2
            Filesystem type, if known.
            
            For example NTFS or ext3.
          type: string
        mappings:
          description: |2
            VirtualDisks backing the guest partition, if known.
          type: array
          items:
            $ref: '#/components/schemas/GuestInfoVirtualDiskMapping'
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfGuestDiskInfo:
      type: object
      description: |2
        A boxed array of *GuestDiskInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/GuestDiskInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    GuestInfoNamespaceGenerationInfo:
      type: object
      description: |2
        A data class for the namespace and its corresponding generation number
        The generation number can be used to track updates to the corresponding
        namespace.
        
        An update to the generation number indicates that the return
        value of *VirtualMachineNamespaceManager.FetchEventsFromGuest* may have
        changed.
      properties:
        key:
          description: |2
            The namespace name as the unique key.
          type: string
        generationNo:
          description: |2
            Namespace generation number.
            
            Generation number is changed whenever
            there is new unread event pending from the guest to the VMODL.
          type: integer
          format: int32
      required:
        - key
        - generationNo
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfGuestInfoNamespaceGenerationInfo:
      type: object
      description: |2
        A boxed array of *GuestInfoNamespaceGenerationInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/GuestInfoNamespaceGenerationInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    GuestNicInfo:
      type: object
      description: |2
        Information about each virtual network adapter
        configured in the guest operating system.
      properties:
        network:
          description: |2
            Name of the virtual switch portgroup or dvPort connected to this adapter.
          type: string
        ipAddress:
          deprecated: true
          description: |2
            Deprecated as of vSphere API 5.0, use ipConfig property.
            
            IP addresses of the adapter.
          type: array
          items:
            type: string
        macAddress:
          description: |2
            MAC address of the adapter.
          type: string
        connected:
          description: |2
            Flag indicating whether or not the virtual device is connected.
          type: boolean
        deviceConfigId:
          description: |2
            Link to the corresponding virtual device.
          type: integer
          format: int32
        dnsConfig:
          description: |2
            DNS configuration of the adapter.
            
            This property is set only when Guest OS supports it.
            See *GuestStackInfo* dnsConfig for system wide
            settings.
          $ref: '#/components/schemas/NetDnsConfigInfo'
        ipConfig:
          description: |2
            IP configuration settings of the adapter
            See *GuestStackInfo* ipStackConfig for system wide
            settings.
          $ref: '#/components/schemas/NetIpConfigInfo'
        netBIOSConfig:
          description: |2
            NetBIOS configuration of the adapter
          $ref: '#/components/schemas/NetBIOSConfigInfo'
      required:
        - connected
        - deviceConfigId
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfGuestNicInfo:
      type: object
      description: |2
        A boxed array of *GuestNicInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/GuestNicInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    GuestScreenInfo:
      type: object
      description: |2
        Screen settings
      properties:
        width:
          description: |2
            Width of the screen in pixels.
          type: integer
          format: int32
        height:
          description: |2
            Height of the screen in pixels.
          type: integer
          format: int32
      required:
        - width
        - height
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfGuestScreenInfo:
      type: object
      description: |2
        A boxed array of *GuestScreenInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/GuestScreenInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    GuestStackInfo:
      type: object
      description: |2
        Information about the Internet Protocol stack
        as configured in the guest operating system.
      properties:
        dnsConfig:
          description: |2
            Client DNS configuration.
            
            How DNS queries are resolved.
          $ref: '#/components/schemas/NetDnsConfigInfo'
        ipRouteConfig:
          description: |2
            IP route table configuration.
          $ref: '#/components/schemas/NetIpRouteConfigInfo'
        ipStackConfig:
          description: |2
            Report Kernel IP configuration settings.
            
            The key part contains a unique number in the report.
            The value part contains the 'key=value'
            as provided by the underlying provider.
            For example on Linux, BSD, the
            systcl -a output would be reported as:
            key='5', value='net.ipv4.tcp\_keepalive\_time = 7200'
          type: array
          items:
            $ref: '#/components/schemas/KeyValue'
        dhcpConfig:
          description: |2
            Client side DHCP for a given interface.
            
            This reports only the system wide dhcp client settings.
            See NicInfo.IpConfig for per interface settings.
            For example on Linux, BSD systems:
            Using the file dhclient.conf output would be reported as:
            key='1', value='timeout 60;'
            key='2', value='reboot 10;'
          $ref: '#/components/schemas/NetDhcpConfigInfo'
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfGuestStackInfo:
      type: object
      description: |2
        A boxed array of *GuestStackInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/GuestStackInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    GuestInfoVirtualDiskMapping:
      type: object
      description: |2
        Describes the virtual disk backing a local guest disk.
      properties:
        key:
          description: |2
            The key of the VirtualDevice.
            
            *VirtualDevice.key*
          type: integer
          format: int32
      required:
        - key
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfGuestInfoVirtualDiskMapping:
      type: object
      description: |2
        A boxed array of *GuestInfoVirtualDiskMapping*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/GuestInfoVirtualDiskMapping'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualMachineGuestIntegrityInfo:
      type: object
      description: |2
        This data object describes the guest integrity platform configuration of
        this virtual machine.
      properties:
        enabled:
          description: |2
            Flag to indicate whether guest integrity platform feature is enabled for
            this virtual machine.
            
            Guest integrity adds capabilities in the virtual
            platform to detect attacks on the guest OS kernel
          type: boolean
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVirtualMachineGuestIntegrityInfo:
      type: object
      description: |2
        A boxed array of *VirtualMachineGuestIntegrityInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineGuestIntegrityInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualMachineGuestMonitoringModeInfo:
      type: object
      description: |2
        This data object describes the GMM (Guest Mode Monitoring) configuration
        of this virtual machine.
      properties:
        gmmFile:
          type: string
        gmmAppliance:
          type: string
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVirtualMachineGuestMonitoringModeInfo:
      type: object
      description: |2
        A boxed array of *VirtualMachineGuestMonitoringModeInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineGuestMonitoringModeInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    GuestOsDescriptor:
      type: object
      description: |2
        This data object type contains information to describe a
        particular guest operating system.
      properties:
        id:
          description: |2
            Identifier (short name) for the guest operating system.
          type: string
        family:
          description: |2
            Family to which this guest operating system belongs.
          type: string
        fullName:
          description: |2
            Full name of the guest operating system.
            
            For example, if the value of "id" is "win2000Pro", then
            the value of "fullName" is "Windows 2000 Professional".
          type: string
        supportedMaxCPUs:
          description: |2
            Maximum number of processors supported for this guest.
          type: integer
          format: int32
        numSupportedPhysicalSockets:
          description: |2
            Maximum number of sockets supported for this guest.
          type: integer
          format: int32
        numSupportedCoresPerSocket:
          description: |2
            Maximum number of cores per socket for this guest.
          type: integer
          format: int32
        supportedMinMemMB:
          description: |2
            Minimum memory requirements supported for this guest, in MB.
          type: integer
          format: int32
        supportedMaxMemMB:
          description: |2
            Maximum memory requirements supported for this guest, in MB.
          type: integer
          format: int32
        recommendedMemMB:
          description: |2
            Recommended default memory size for this guest, in MB.
          type: integer
          format: int32
        recommendedColorDepth:
          description: |2
            Recommended default color depth for this guest.
          type: integer
          format: int32
        supportedDiskControllerList:
          description: |2
            List of supported disk controller types for this guest.
          type: array
          items:
            type: string
        recommendedSCSIController:
          description: |2
            Recommended default SCSI controller type for this guest.
          type: string
        recommendedDiskController:
          description: |2
            Recommended default disk controller type for this guest.
          type: string
        supportedNumDisks:
          description: |2
            Number of disks supported for this guest.
          type: integer
          format: int32
        recommendedDiskSizeMB:
          description: |2
            Recommended default disk size for this guest, in MB.
          type: integer
          format: int32
        recommendedCdromController:
          description: |2
            Recommended default CD-ROM type for this guest.
          type: string
        supportedEthernetCard:
          description: |2
            List of supported ethernet cards for this guest.
          type: array
          items:
            type: string
        recommendedEthernetCard:
          description: |2
            Recommended default ethernet controller type for this guest.
          type: string
        supportsSlaveDisk:
          description: |2
            Flag to indicate whether or not this guest can support
            a disk configured as a slave.
          type: boolean
        cpuFeatureMask:
          description: |2
            Specifies the CPU feature compatibility masks.
          type: array
          items:
            $ref: '#/components/schemas/HostCpuIdInfo'
        smcRequired:
          description: |2
            Flag that indicates wether the guest requires an SMC (Apple hardware).
            
            This is logically equivalent to GuestOS = Mac OS
          type: boolean
        supportsWakeOnLan:
          description: |2
            Flag to indicate whether or not this guest can support Wake-on-LAN.
          type: boolean
        supportsVMI:
          description: |2
            Flag indicating whether or not this guest supports the virtual
            machine interface.
          type: boolean
        supportsMemoryHotAdd:
          description: |2
            Whether the memory size for this guest can be changed
            while the virtual machine is running.
          type: boolean
        supportsCpuHotAdd:
          description: |2
            Whether virtual CPUs can be added to this guest
            while the virtual machine is running.
          type: boolean
        supportsCpuHotRemove:
          description: |2
            Whether virtual CPUs can be removed from this guest
            while the virtual machine is running.
          type: boolean
        supportedFirmware:
          description: |2
            Supported firmware types for this guest.
            
            Possible values are described in
            *GuestOsDescriptorFirmwareType_enum*
          type: array
          items:
            type: string
        recommendedFirmware:
          description: |2
            Recommended firmware type for this guest.
            
            Possible values are described in
            *GuestOsDescriptorFirmwareType_enum*
          type: string
        supportedUSBControllerList:
          description: |2
            List of supported USB controllers for this guest.
          type: array
          items:
            type: string
        recommendedUSBController:
          description: |2
            Recommended default USB controller type for this guest.
          type: string
        supports3D:
          description: |2
            Whether this guest supports 3D graphics.
          type: boolean
        recommended3D:
          description: |2
            Recommended 3D graphics for this guest.
          type: boolean
        smcRecommended:
          description: |2
            Whether SMC (Apple hardware) is recommended for this guest.
          type: boolean
        ich7mRecommended:
          description: |2
            Whether I/O Controller Hub is recommended for this guest.
          type: boolean
        usbRecommended:
          description: |2
            Whether USB controller is recommended for this guest.
          type: boolean
        supportLevel:
          description: |2
            Support level of this Guest
            Possible values are described in
            *GuestOsDescriptorSupportLevel_enum*
          type: string
        supportedForCreate:
          description: |2
            Whether or not this guest should be allowed for selection
            during virtual machine creation.
          type: boolean
        vRAMSizeInKB:
          description: |2
            Video RAM size limits supported by this guest, in KB.
          $ref: '#/components/schemas/IntOption'
        numSupportedFloppyDevices:
          description: |2
            Maximum number of floppies supported by this guest.
          type: integer
          format: int32
        wakeOnLanEthernetCard:
          description: |2
            List of NICs supported by this guest that support Wake-On-Lan.
          type: array
          items:
            type: string
        supportsPvscsiControllerForBoot:
          description: |2
            Whether or not this guest can use pvscsi as boot adapter.
          type: boolean
        diskUuidEnabled:
          description: |2
            Whether or not this guest should have disk uuid enabled by default.
          type: boolean
        supportsHotPlugPCI:
          description: |2
            Whether or not this guest supports hot plug of PCI devices.
          type: boolean
        supportsSecureBoot:
          description: |2
            Whether or not this guest supports Secure Boot.
            
            If some of the OS
            releases that fall under this guest OS descriptor support Secure Boot, it
            is reasonable to offer the ability to enable Secure Boot. Only
            meaningful when virtual EFI firmware is in use.
          type: boolean
        defaultSecureBoot:
          description: |2
            Whether or not Secure Boot should be enabled by default for this
            guest OS.
            
            If all OS releases that fall under this guest OS descriptor
            support Secure Boot and are known to operate correctly with Secure Boot
            enabled, it is reasonable to enable it by default. Only meaningful when
            virtual EFI firmware is in use.
          type: boolean
        persistentMemorySupported:
          description: |2
            Support of persistent memory (virtual NVDIMM device).
            
            See also *VirtualNVDIMM*.
          type: boolean
        supportedMinPersistentMemoryMB:
          description: |2
            Minimum persistent memory supported for this guest, in MB.
          type: integer
          format: int64
        supportedMaxPersistentMemoryMB:
          description: |2
            Maximum persistent memory supported for this guest, in MB.
            
            Total size of all the virtual NVDIMM devices should be less
            than this value.
          type: integer
          format: int64
        recommendedPersistentMemoryMB:
          description: |2
            Recommended default persistent memory size for this guest, in MB.
          type: integer
          format: int64
        persistentMemoryHotAddSupported:
          description: |2
            Support of persistent memory hot-add operation.
          type: boolean
        persistentMemoryHotRemoveSupported:
          description: |2
            Support of persistent memory hot-remove operation.
          type: boolean
        persistentMemoryColdGrowthSupported:
          description: |2
            Support of virtual NVDIMM cold-growth operation.
          type: boolean
        persistentMemoryColdGrowthGranularityMB:
          description: |2
            Virtual NVDIMM cold-growth granularity in MB.
          type: integer
          format: int64
        persistentMemoryHotGrowthSupported:
          description: |2
            Support of virtual NVDIMM hot-growth operation.
          type: boolean
        persistentMemoryHotGrowthGranularityMB:
          description: |2
            Virtual NVDIMM hot-growth granularity in MB.
          type: integer
          format: int64
        numRecommendedPhysicalSockets:
          description: |2
            Recommended number of sockets for this guest.
          type: integer
          format: int32
        numRecommendedCoresPerSocket:
          description: |2
            Recommended number of cores per socket for this guest.
          type: integer
          format: int32
        vvtdSupported:
          description: |2
            Support of Intel Virtualization Technology for Directed I/O.
          $ref: '#/components/schemas/BoolOption'
        vbsSupported:
          description: |2
            Support of Virtualization-based security.
          $ref: '#/components/schemas/BoolOption'
        vsgxSupported:
          description: |2
            Support for Intel Software Guard Extensions
          $ref: '#/components/schemas/BoolOption'
        vsgxRemoteAttestationSupported:
          description: |2
            Support for Intel Software Guard Extensions remote attestation.
            
            ***Since:*** vSphere API Release 8.0.0.1
          type: boolean
        supportsTPM20:
          description: |2
            Support for TPM 2.0.
          type: boolean
        recommendedTPM20:
          description: |2
            Support for default vTPM
            
            ***Since:*** vSphere API Release 8.0.0.1
          type: boolean
        vwdtSupported:
          description: |2
            Support for Virtual Watchdog Timer.
          type: boolean
      required:
        - id
        - family
        - fullName
        - supportedMaxCPUs
        - numSupportedPhysicalSockets
        - numSupportedCoresPerSocket
        - supportedMinMemMB
        - supportedMaxMemMB
        - recommendedMemMB
        - recommendedColorDepth
        - supportedDiskControllerList
        - recommendedDiskController
        - supportedNumDisks
        - recommendedDiskSizeMB
        - recommendedCdromController
        - supportedEthernetCard
        - smcRequired
        - supportsWakeOnLan
        - supportsVMI
        - supportsMemoryHotAdd
        - supportsCpuHotAdd
        - supportsCpuHotRemove
        - supportedFirmware
        - recommendedFirmware
        - supports3D
        - recommended3D
        - smcRecommended
        - ich7mRecommended
        - usbRecommended
        - supportLevel
        - supportedForCreate
        - vRAMSizeInKB
        - numSupportedFloppyDevices
        - supportsPvscsiControllerForBoot
        - diskUuidEnabled
        - supportsHotPlugPCI
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfGuestOsDescriptor:
      type: object
      description: |2
        A boxed array of *GuestOsDescriptor*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/GuestOsDescriptor'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualMachineGuestQuiesceSpec:
      type: object
      description: |2
        This data object type encapsulates configuration settings
        when creating a virtual machine quiesced snapshot.
      properties:
        timeout:
          description: |2
            The property to indicate maximum time in minutes for snapshot operation
            to be performed on the virtual machine.
            
            The timeout can not be less than 5 minutes or more than 240 minutes.
          type: integer
          format: int32
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVirtualMachineGuestQuiesceSpec:
      type: object
      description: |2
        A boxed array of *VirtualMachineGuestQuiesceSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineGuestQuiesceSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualMachineIdeDiskDeviceInfo:
      type: object
      description: |2
        The IdeDiskDeviceInfo class contains detailed information about a specific
        IDE disk hardware device.
        
        These devices are for the
        vim.vm.device.VirtualDisk.RawDiskVer2BackingInfo and
        vim.vm.device.VirtualDisk.PartitionedRawDiskVer2BackingInfo backings.
      properties:
        partitionTable:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineIdeDiskDevicePartitionInfo'
      allOf:
        - $ref: '#/components/schemas/VirtualMachineDiskDeviceInfo'

    ArrayOfVirtualMachineIdeDiskDeviceInfo:
      type: object
      description: |2
        A boxed array of *VirtualMachineIdeDiskDeviceInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineIdeDiskDeviceInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualMachineIdeDiskDevicePartitionInfo:
      type: object
      description: |2
        Describes the partition sizes
      properties:
        id:
          description: |2
            Identification of the partition
          type: integer
          format: int32
        capacity:
          description: |2
            Size of partition
          type: integer
          format: int32
      required:
        - id
        - capacity
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVirtualMachineIdeDiskDevicePartitionInfo:
      type: object
      description: |2
        A boxed array of *VirtualMachineIdeDiskDevicePartitionInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineIdeDiskDevicePartitionInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualMachineIndependentFilterSpec:
      type: object
      description: |2
        The IndependentFilterSpec data object is used to specify the independent
        filters to be associated with virtual machine disks.
        
        ***Since:*** vSphere API Release 7.0.2.1
      properties:
        filterName:
          description: |2
            Name/id of the IO filter.
          type: string
        filterClass:
          description: |2
            IO filter class.
          type: string
        filterCapabilities:
          description: |2
            Capabilities defined by the above filter.
            
            Basically this key value pair define the configurable properties
            of the independent filters. Users can specify desired values.
          type: array
          items:
            $ref: '#/components/schemas/KeyValue'
      required:
        - filterName
      allOf:
        - $ref: '#/components/schemas/VirtualMachineBaseIndependentFilterSpec'

    ArrayOfVirtualMachineIndependentFilterSpec:
      type: object
      description: |2
        A boxed array of *VirtualMachineIndependentFilterSpec*. To be used in *Any* placeholders.
        
        ***Since:*** vSphere API Release 7.0.2.1
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineIndependentFilterSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualMachineInstantCloneSpec:
      type: object
      description: |2
        Specification for creating an Instant Clone of a powered-on virtual machine.
      properties:
        name:
          description: |2
            The name of the cloned virtual machine.
          type: string
        location:
          description: |2
            A type of *VirtualMachineRelocateSpec* that specifies the location of
            resources the newly created virtual machine will use.
            
            The location might be empty or specify:
            - The folder where the virtual machine should be located. If not
              specified, the root VM folder of the source VM will be used.
            - A datastore where the InstantCloned virtual machine will be located
              on the physical storage.
            - A resource pool determines where compute resources will be
              available to the clone.
            - A device change specification. The only allowed device changes
              are edits of VirtualEthernetCard and filebacked Serial/Parallel
              ports.
              
            All other settings are NOT supported.
          $ref: '#/components/schemas/VirtualMachineRelocateSpec'
        config:
          description: |2
            A list of key value pairs that will be passed to the destination VM.
            
            These pairs should be used to provide user-defined customization to
            differentiate the destination VM from the source VM. Values will be
            queryable via destination VM's *VirtualMachineConfigInfo.extraConfig*.
          type: array
          items:
            $ref: '#/components/schemas/OptionValue'
        biosUuid:
          description: |2
            128-bit SMBIOS UUID of a virtual machine represented as a hexadecimal string
            in "12345678-abcd-1234-cdef-123456789abc" format.
          type: string
      required:
        - name
        - location
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVirtualMachineInstantCloneSpec:
      type: object
      description: |2
        A boxed array of *VirtualMachineInstantCloneSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineInstantCloneSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualMachineLegacyNetworkSwitchInfo:
      type: object
      description: |2
        The LegacyNetworkSwitchInfo data object type contains information about
        the legacy network switches available on the host.
        - VMware Server - Options available for the "custom" NetworkBackingType.
        - ESX Server - The "esxnet" NetworkBackingType.
      properties:
        name:
          description: |2
            The name of the network switch.
          type: string
      required:
        - name
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVirtualMachineLegacyNetworkSwitchInfo:
      type: object
      description: |2
        A boxed array of *VirtualMachineLegacyNetworkSwitchInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineLegacyNetworkSwitchInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualMachineMessage:
      type: object
      description: |2
        Message data which is intended to be displayed according
        to the locale of a client.
        
        A *VirtualMachineMessage* contains both a formatted, localized version of the
        text and the data needed to perform localization in conjunction
        with localization catalogs.
        
        Clients of the VIM API may use
        *SessionManager*.*SessionManager.SetLocale*
        to cause the server to emit localized *VirtualMachineMessage.text*, or may perform
        client-side localization based on message catalogs provided by the
        *LocalizationManager*.
        
        Message variables are always integers, e.g. {1} and {2}, which are
        1-based indexes into *VirtualMachineMessage.argument*.
        - The corresponding argument may be a recursive lookup:
          - *VirtualMachineMessage.argument* = \["button.cancel", "msg.revert"\]
          - CATALOG(locmsg, *VirtualMachineMessage.id*) = "Select '{1}' to {2}"
          - CATALOG(locmsg, button.cancel) = "Cancel"
          - CATALOG(locmsg, msg.revert) = "revert"
          - \==&gt; *VirtualMachineMessage.text* = "Select 'Cancel' to revert"
        - If the recursive lookup fails, the argument is a plain string.
          - *VirtualMachineMessage.argument* = \["127.0.0.1"\]
          - CATALOG(locmsg, *VirtualMachineMessage.id*) = "IP address is {1}"
          - \==&gt; *VirtualMachineMessage.text* "IP address is 127.0.0.1"
            
        See also *LocalizationManager*.
      properties:
        id:
          description: |2
            A unique identifier for this particular message.
            
            This field is a key for looking up format strings in the locmsg
            catalog.
          type: string
        argument:
          description: |2
            Substitution arguments for variables in the localized message.
            
            Substitution variables in the format string identified by *VirtualMachineMessage.id*
            are 1-based indexes into this array. Substitution variable {1}
            corresponds to argument\[0\], etc.
          type: array
          items:
            $ref: '#/components/schemas/Any'
        text:
          description: |2
            Text in session locale.
            
            Use *SessionManager*.*SessionManager.SetLocale* to
            change the session locale.
          type: string
      required:
        - id
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVirtualMachineMessage:
      type: object
      description: |2
        A boxed array of *VirtualMachineMessage*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineMessage'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualMachineMetadataManagerVmMetadata:
      type: object
      description: |2
        VmMetadata is a pair of VM ID and opaque metadata.
      properties:
        vmId:
          description: |2
            Datastore URL-based ID for VM, for example,
            "\[datastore1\] SomeVM/SomeVM.vmx".
          type: string
        metadata:
          description: |2
            Opaque metadata for the VM identified by vmId.
            
            If no
            value is supplied, the entry for this VM is removed.
          type: string
      required:
        - vmId
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVirtualMachineMetadataManagerVmMetadata:
      type: object
      description: |2
        A boxed array of *VirtualMachineMetadataManagerVmMetadata*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineMetadataManagerVmMetadata'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualMachineMetadataManagerVmMetadataInput:
      type: object
      description: |2
        VmMetadataInput specifies the operation and metadata for a
        specific VM.
      properties:
        operation:
          description: |2
            The input operation type.
            
            The values come from *VirtualMachineMetadataManagerVmMetadataOp_enum*
          type: string
        vmMetadata:
          description: |2
            the VM and optional metadata
          $ref: '#/components/schemas/VirtualMachineMetadataManagerVmMetadata'
      required:
        - operation
        - vmMetadata
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVirtualMachineMetadataManagerVmMetadataInput:
      type: object
      description: |2
        A boxed array of *VirtualMachineMetadataManagerVmMetadataInput*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineMetadataManagerVmMetadataInput'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualMachineMetadataManagerVmMetadataOwner:
      type: object
      description: |2
        VmMetadataOwner defines the namespace for an owner
      properties:
        name:
          description: |2
            A string representing the owner.
            
            Valid values come
            from *VirtualMachineMetadataManagerVmMetadataOwnerOwner_enum* for vSAN datastores. Otherwise, the
            owner field is interpreted by the implementation based on
            the datastore type.
          type: string
      required:
        - name
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVirtualMachineMetadataManagerVmMetadataOwner:
      type: object
      description: |2
        A boxed array of *VirtualMachineMetadataManagerVmMetadataOwner*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineMetadataManagerVmMetadataOwner'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualMachineMetadataManagerVmMetadataResult:
      type: object
      description: |2
        A list of VmMetadataResults are returned for successful and
        non-successful results of an update or retrieve operation.
        
        See also *VirtualMachineMetadataManager.UpdateMetadata*, *VirtualMachineMetadataManager.RetrieveMetadata*, *VirtualMachineMetadataManager.RetrieveAllMetadata*, *VirtualMachineMetadataManager.ClearMetadata*.
      properties:
        vmMetadata:
          description: |2
            The VM-specific metadata
          $ref: '#/components/schemas/VirtualMachineMetadataManagerVmMetadata'
        error:
          description: |2
            MethodFault set for errors in getting or setting
            the VmMetadata.
          $ref: '#/components/schemas/MethodFault'
      required:
        - vmMetadata
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVirtualMachineMetadataManagerVmMetadataResult:
      type: object
      description: |2
        A boxed array of *VirtualMachineMetadataManagerVmMetadataResult*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineMetadataManagerVmMetadataResult'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualMachineNetworkInfo:
      type: object
      description: |2
        NetworkInfo describes a network that a device backing
        can attached to.
      properties:
        network:
          description: |2
            Information about the network
          $ref: '#/components/schemas/NetworkSummary'
        vswitch:
          description: |2
            Key of parent vSwitch of the network
          type: string
      required:
        - network
      allOf:
        - $ref: '#/components/schemas/VirtualMachineTargetInfo'

    ArrayOfVirtualMachineNetworkInfo:
      type: object
      description: |2
        A boxed array of *VirtualMachineNetworkInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineNetworkInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualMachineNetworkShaperInfo:
      type: object
      description: |2
        Network traffic shaping specification.
        
        Traffic shaping is used to configure the network utilization
        characteristics of a virtual machine.
      properties:
        enabled:
          description: |2
            Is the shaper enabled?
          type: boolean
        peakBps:
          description: |2
            Peak bandwidth, in bits per second.
          type: integer
          format: int64
        averageBps:
          description: |2
            Average bandwidth, in bits per second.
          type: integer
          format: int64
        burstSize:
          description: |2
            Burst size, in bytes.
          type: integer
          format: int64
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVirtualMachineNetworkShaperInfo:
      type: object
      description: |2
        A boxed array of *VirtualMachineNetworkShaperInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineNetworkShaperInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    OpaqueNetworkTargetInfo:
      type: object
      description: |2
        This class describes an opaque network that a device backing
        can attached to.
      properties:
        network:
          description: |2
            Information about the opaque network
          $ref: '#/components/schemas/OpaqueNetworkSummary'
        networkReservationSupported:
          description: |2
            Indicates whether network bandwidth reservation is supported on
            the opaque network
          type: boolean
      required:
        - network
      allOf:
        - $ref: '#/components/schemas/VirtualMachineTargetInfo'

    ArrayOfOpaqueNetworkTargetInfo:
      type: object
      description: |2
        A boxed array of *OpaqueNetworkTargetInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/OpaqueNetworkTargetInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualMachineParallelInfo:
      type: object
      description: |2
        ParallelInfo class contains information about a physical parallel
        drive on the host.
      allOf:
        - $ref: '#/components/schemas/VirtualMachineTargetInfo'

    ArrayOfVirtualMachineParallelInfo:
      type: object
      description: |2
        A boxed array of *VirtualMachineParallelInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineParallelInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualMachinePciPassthroughInfo:
      type: object
      description: |2
        Description of a generic PCI device that can be attached to a virtual machine.
      properties:
        pciDevice:
          description: |2
            Details of the PCI device, including vendor, class and
            device identification information.
          $ref: '#/components/schemas/HostPciDevice'
        systemId:
          description: |2
            The ID of the system the PCI device is attached to.
          type: string
      required:
        - pciDevice
        - systemId
      allOf:
        - $ref: '#/components/schemas/VirtualMachineTargetInfo'

    ArrayOfVirtualMachinePciPassthroughInfo:
      type: object
      description: |2
        A boxed array of *VirtualMachinePciPassthroughInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachinePciPassthroughInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualMachinePciSharedGpuPassthroughInfo:
      type: object
      description: |2
        Description of a gpu PCI device that can be shared with a virtual machine.
      properties:
        vgpu:
          description: |2
            The VGPU corresponding to this GPU passthrough device.
          type: string
      required:
        - vgpu
      allOf:
        - $ref: '#/components/schemas/VirtualMachineTargetInfo'

    ArrayOfVirtualMachinePciSharedGpuPassthroughInfo:
      type: object
      description: |2
        A boxed array of *VirtualMachinePciSharedGpuPassthroughInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachinePciSharedGpuPassthroughInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualMachinePrecisionClockInfo:
      type: object
      description: |2
        The PrecisionClockInfo data object type describes available host
        clock resources, which can be used as backing reference for
        virtual precision clock devices.
      properties:
        systemClockProtocol:
          description: |2
            The currrent host system clock synchronization protocol.
            
            Used for specifying protocol in
            *VirtualPrecisionClockSystemClockBackingInfo*.
          type: string
      allOf:
        - $ref: '#/components/schemas/VirtualMachineTargetInfo'

    ArrayOfVirtualMachinePrecisionClockInfo:
      type: object
      description: |2
        A boxed array of *VirtualMachinePrecisionClockInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachinePrecisionClockInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualMachineProfileDetails:
      type: object
      description: |2
        The *VirtualMachineProfileDetails* data object type provides details of the policy
        associated with a virtual machine and it's virtual disks.
      properties:
        profile:
          description: |2
            Storage profile associated with Virtual Machine's home directory.
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineProfileSpec'
        diskProfileDetails:
          description: |2
            An optional list that allows specifying details of the policy associated
            with virutual disks.
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineProfileDetailsDiskProfileDetails'
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVirtualMachineProfileDetails:
      type: object
      description: |2
        A boxed array of *VirtualMachineProfileDetails*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineProfileDetails'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualMachineProfileDetailsDiskProfileDetails:
      type: object
      description: |2
        Details of the policies associated with Virtual Disks.
      properties:
        diskId:
          description: |2
            Virtual disk ID.
          type: integer
          format: int32
        profile:
          description: |2
            Storage profile associated with the Virtual Disk.
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineProfileSpec'
      required:
        - diskId
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVirtualMachineProfileDetailsDiskProfileDetails:
      type: object
      description: |2
        A boxed array of *VirtualMachineProfileDetailsDiskProfileDetails*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineProfileDetailsDiskProfileDetails'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualMachineProfileRawData:
      type: object
      description: |2
        The extensible data object type encapsulates additional data specific
        to Virtual Machine and its devices.
        
        This data is provided by vSphere Extensions which are integral part
        of vSphere.
        
        The data is not persisted in Virtual Machine configuration file but is
        stored and managed by extensions.
        
        Storage Profile Based Management (SPBM) will be one of the consumers of
        this data structure. SPBM will provide detailed information about
        Virtual Machine storage requirements.
      properties:
        extensionKey:
          description: |2
            vSphere Extension Identifier
          type: string
        objectData:
          description: |2
            Extension-specific additional data to be associated
            with Virtual machine and its devices.
          type: string
      required:
        - extensionKey
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVirtualMachineProfileRawData:
      type: object
      description: |2
        A boxed array of *VirtualMachineProfileRawData*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineProfileRawData'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualMachineProfileSpec:
      type: object
      description: |2
        The ProfileSpec data object is used to specify the Storage Policy to be
        associated with a Virtual Machine Home or a Virtual Disk.
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVirtualMachineProfileSpec:
      type: object
      description: |2
        A boxed array of *VirtualMachineProfileSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineProfileSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualMachinePropertyRelation:
      type: object
      description: |2
        Data object which represents relations between a
        property and its target value and the required values
        of any other properties in the vm configuration so
        that the target value can be set.
      properties:
        key:
          description: |2
            The target property and its value
          $ref: '#/components/schemas/DynamicProperty'
        relations:
          description: |2
            The related properties and their values
          type: array
          items:
            $ref: '#/components/schemas/DynamicProperty'
      required:
        - key
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVirtualMachinePropertyRelation:
      type: object
      description: |2
        A boxed array of *VirtualMachinePropertyRelation*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachinePropertyRelation'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualMachineQuestionInfo:
      type: object
      description: |2
        This data object type describes the question that is currently
        blocking a virtual machine.
      properties:
        id:
          description: |2
            Identifier with an opaque value that specifies the pending question.
          type: string
        text:
          description: |2
            Text that describes the pending question.
          type: string
        choice:
          description: |2
            List of key-value pairs that specify possible answers.
          $ref: '#/components/schemas/ChoiceOption'
        message:
          description: |2
            The message data for the individual messages that comprise the question.
            
            Only available on servers that support localization.
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineMessage'
      required:
        - id
        - text
        - choice
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVirtualMachineQuestionInfo:
      type: object
      description: |2
        A boxed array of *VirtualMachineQuestionInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineQuestionInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualMachineRelocateSpec:
      type: object
      description: |2
        Specification for moving or copying a virtual machine to a different datastore
        or host.
      properties:
        service:
          description: |2
            The service endpoint of vCenter where the virtual machine should be
            located.
            
            If not specified, the current vCenter service is used. If the
            virtual machine is relocated to a different vCenter service, the
            destination host, pool, and datastore parameters have to be explicitly
            specified by default when the task is submitted.
          $ref: '#/components/schemas/ServiceLocator'
        folder:
          description: |2
            The folder where the virtual machine should be located.
            
            If not specified,
            the root VM folder of the destination datacenter will be used.
            
            Refers instance of *Folder*.
          $ref: '#/components/schemas/ManagedObjectReference'
        datastore:
          description: |2
            The datastore where the virtual machine should be located.
            
            If
            not specified, the current datastore is used.
            
            Refers instance of *Datastore*.
          $ref: '#/components/schemas/ManagedObjectReference'
        diskMoveType:
          description: |2
            Manner in which to move the virtual disk to the *target datastore*.
            
            The set of possible values is described in
            *VirtualMachineRelocateDiskMoveOptions_enum*.
            
            This property applies to all the disks which the virtual machine has,
            but can be overridden on a per-disk basis using
            *VirtualMachineRelocateSpecDiskLocator.diskMoveType* prior to vSphere
            API 6.0 or using
            *VirtualDiskConfigSpec.diskMoveType* in vSphere API
            6.0 and later.
            
            This property can only be set if
            *HostCapability.deltaDiskBackingsSupported* is true.
            
            If left unset then
            *moveAllDiskBackingsAndDisallowSharing*
            is assumed.
          type: string
        pool:
          description: |2
            The resource pool to which this virtual machine should be attached.
            - For a relocate or clone operation to a virtual machine, if the
              argument is not supplied, the current resource pool of virtual
              machine is used.
            - For a clone operation from a template to a virtual machine,
              this argument is required.
            - If the virtual machine is relocated to a different vCenter service,
              and a resource pool is not specified, the destination host must be
              specified.
            - If a resource pool is specified, the virtual machine is powered
              on, and the target pool represents a cluster without DRS enabled,
              an InvalidArgument exception is thrown.
            - If the virtual machine is relocated to a different datacenter
              within the vCenter service, the resource pool has to be specified
              and cannot be unset.
              
            Refers instance of *ResourcePool*.
          $ref: '#/components/schemas/ManagedObjectReference'
        host:
          description: |2
            The target host for the virtual machine.
            
            If not specified,
            - if resource pool is not specified, current host is used.
            - if resource pool is specified, and the target pool represents
              a stand-alone host, the host is used.
            - if resource pool is specified, the virtual machine is powered on,
              and the target pool represents a DRS-enabled cluster, a host
              selected by DRS is used.
            - if resource pool is specified, the virtual machine is powered on,
              and the target pool represents a cluster without DRS enabled,
              an InvalidArgument exception is thrown.
            - if a resource pool is specified, the target pool represents a
              cluster, and this is a clone or the virtual machine is powered
              off, a random compatible host is chosen.
            - A destination host must be specified if the virtual machine is
              relocated to a different vCenter service, and a resource pool is
              not specified.
              
            Refers instance of *HostSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
        disk:
          description: |2
            An optional list that allows specifying the datastore location
            for each virtual disk.
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineRelocateSpecDiskLocator'
        transform:
          deprecated: true
          description: |2
            Deprecated as of vSphere API 5.0. Use
            *VirtualMachineRelocateSpecDiskLocator.diskBackingInfo* instead for
            disk format conversions. This setting will be ignored for
            disks with the above property set.
            
            Transformation to perform on the disks.
            
            The backend is free to ignore
            this hint if it is not valid for the current operation. This can be
            used by clients, for example, to create sparse disks for templates.
            
            See also *VirtualMachineRelocateTransformation_enum*.
          $ref: '#/components/schemas/VirtualMachineRelocateTransformation_enum'
        deviceChange:
          description: |2
            An optional list of virtual device specs that allow specifying the new
            device locations for the relocate operation.
            
            The supported device changes are:
            - For *VirtualEthernetCard*, it has to be used
              in *VirtualDeviceConfigSpec.device* to specify the
              target network backing.
            - For *VirtualDisk*, it can be used to specify
              vFlash cache configuration, or the storage profile for destination
              disks. The storage profiles are used to either upgrade the virtual
              disk's storage to a persistent memory, or keep the virtual disk
              in persistent memory when moving the virtual machine's overall
              storage.
            - All other specification are ignored.
          type: array
          items:
            $ref: '#/components/schemas/VirtualDeviceConfigSpec'
        profile:
          description: |2
            Storage profile requirement for Virtual Machine's home directory.
            
            Profiles are solution specific.
            Storage Profile Based Management(SPBM) is a vSphere server extension.
            The API users who want to provision VMs using Storage Profiles, need to
            interact with SPBM.
            This is an optional parameter and if user doesn't specify profile,
            the default behavior will apply.
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineProfileSpec'
        cryptoSpec:
          description: |2
            Virtual Machine cryptographic options.
            
            Encryption requirement for the virtual machine's metadata
            files (non-disk files).
          $ref: '#/components/schemas/CryptoSpec'
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVirtualMachineRelocateSpec:
      type: object
      description: |2
        A boxed array of *VirtualMachineRelocateSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineRelocateSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualMachineRelocateSpecDiskLocator:
      type: object
      description: |2
        The DiskLocator data object type specifies a virtual disk device (by ID) and
        a datastore locator for the disk's storage.
      properties:
        diskId:
          description: |2
            Device ID of the virtual disk.
          type: integer
          format: int32
        datastore:
          description: |2
            Target datastore.
            
            Refers instance of *Datastore*.
          $ref: '#/components/schemas/ManagedObjectReference'
        diskMoveType:
          description: |2
            Manner in which to move the virtual disk to the *target datastore*.
            
            The set of possible values is described
            in *VirtualMachineRelocateDiskMoveOptions_enum*.
            
            This property can only be set if *HostCapability.deltaDiskBackingsSupported* is true.
            
            If left unset then *moveAllDiskBackingsAndDisallowSharing*
            is assumed.
          type: string
        diskBackingInfo:
          description: |2
            Backing information for the virtual disk at the destination.
            
            This can be used, for instance, to change the format of the
            virtual disk. If the specified backing is invalid or not
            supported at the destination, *InvalidDeviceBacking* is thrown. Specific property
            changes may be ignored if they are not supported.
            
            Supported BackingInfo types and properties:
            - *VirtualDiskFlatVer2BackingInfo*
              - thinProvisioned
              - eagerlyScrub
            - *VirtualDiskSeSparseBackingInfo*
              (ESX 5.1 or later)
          $ref: '#/components/schemas/VirtualDeviceBackingInfo'
        profile:
          description: |2
            Virtual Disk Profile requirement.
            
            Profiles are solution specific.
            Profile Based Storage Management is a vSphere server extension.
            The API users who want to provision VMs using Storage Profiles, need to
            interact with it.
            This is an optional parameter and if user doesn't specify profile,
            the default behavior will apply.
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineProfileSpec'
        backing:
          description: |2
            Cryptographic option of the current disk.
          $ref: '#/components/schemas/VirtualMachineRelocateSpecDiskLocatorBackingSpec'
        filterSpec:
          description: |2
            List of independent filters *VirtualMachineIndependentFilterSpec*
            to be configured on the virtual disk after the relocate.
            
            ***Since:*** vSphere API Release 7.0.2.1
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineBaseIndependentFilterSpec'
      required:
        - diskId
        - datastore
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVirtualMachineRelocateSpecDiskLocator:
      type: object
      description: |2
        A boxed array of *VirtualMachineRelocateSpecDiskLocator*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineRelocateSpecDiskLocator'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualMachineRelocateSpecDiskLocatorBackingSpec:
      type: object
      description: |2
        <code>*VirtualMachineRelocateSpecDiskLocatorBackingSpec*</code> is a data
        object type for crytographic information about the backing of a
        device.
        
        The member *VirtualMachineRelocateSpecDiskLocatorBackingSpec.parent* refers the parent in the chain of
        *VirtualDeviceBackingInfo* objects.
      properties:
        parent:
          $ref: '#/components/schemas/VirtualMachineRelocateSpecDiskLocatorBackingSpec'
        crypto:
          $ref: '#/components/schemas/CryptoSpec'
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVirtualMachineRelocateSpecDiskLocatorBackingSpec:
      type: object
      description: |2
        A boxed array of *VirtualMachineRelocateSpecDiskLocatorBackingSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineRelocateSpecDiskLocatorBackingSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ReplicationConfigSpec:
      type: object
      description: |2
        The ReplicationConfigSpec object type encapsulates the replication
        configuration parameters for a virtual machine.
        
        It consists of two
        parts: 1) a set of virtual machine-wide replication properties; 2)
        a set of properties per replicated virtual disk. ReplicationSetting
        is passed as an argument for initial replication configuration
        (@see vim.HbrManager#enableReplication) as well as for
        re-configuration of a replicated VM's properties (@see
        vim.HbrManager#reconfigureReplication).
      properties:
        generation:
          description: |2
            A generation number (&gt;=0) that reflects the "freshness" of the
            ReplicationConfigSpec on which a re-configuration is based.
            
            The
            generation number is used to detect and disallow concurrent
            updates to a VM's replication settings.
            For initial replication enablement, generation = 0. The
            replication settings of every replication re-configuration
            operation must reflect the latest generation number known to the
            caller. It takes an explicit call to get the latest replication
            settings to find out what the latest generation number is. The
            update algorithm of the generation number is opaque to the
            caller; e.g., the caller cannot assume that the generation
            numbers are incremented by one every time replication is
            (re)configured, not even that they are changing monotonically.
          type: integer
          format: int64
        vmReplicationId:
          description: |2
            An opaque identifier that uniquely identifies a replicated VM
            between primary and secondary sites.
          type: string
        destination:
          description: |2
            The IP address of the HBR Server in the secondary site
            where this VM is replicated to.
            
            Note: If net encryption is enabled, this is the address of the
            encryption tunnelling agent.
          type: string
        port:
          description: |2
            The port on the HBR Server in the secondary site where this VM
            is replicated to.
            
            Note: If net encryption is enabled, this is the port of the
            encryption tunneling agent.
          type: integer
          format: int32
        rpo:
          description: |2
            The Recovery Point Objective specified for this VM, in minutes.
            
            Currently, valid values are in the range of 1 minute to 1440
            minutes (24 hours).
          type: integer
          format: int64
        quiesceGuestEnabled:
          description: |2
            Flag that indicates whether or not to quiesce the file system or
            applications in the guest OS before a consistent replica is
            created.
          type: boolean
        paused:
          description: |2
            Flag that indicates whether or not the vm or group has been paused for
            replication.
          type: boolean
        oppUpdatesEnabled:
          description: |2
            Flag that indicates whether or not to perform opportunistic
            updates in-between consistent replicas.
          type: boolean
        netCompressionEnabled:
          description: |2
            Flag that indicates whether or not compression should
            be used when sending traffic over the network.
            
            The primary will negotiate the best compression with
            the server on the secondary if this is enabled.
          type: boolean
        netEncryptionEnabled:
          description: |2
            Flag that indicates whether or not encription should
            be used when sending traffic over the network.
            
            The primary will use the remoteCertificateThumbprint
            to verify the identity of the remote server.
          type: boolean
        encryptionDestination:
          description: |2
            The IP address of the remote HBR server, target for encrypted LWD.
            
            This field is required when net encryption is enabled, ignored otherwise.
          type: string
        encryptionPort:
          description: |2
            The port on the remote HBR server, target for encrypted LWD.
            
            This field is only relevant when net encryption is enabled.
          type: integer
          format: int32
        remoteCertificateThumbprint:
          deprecated: true
          description: |2
            Deprecated field is deprecated, use
            *vim.HbrManager.configureReplicationTargets* instead.
            
            The SHA256 thumbprint of the remote server certificate.
            
            This field is only relevant when net encription is enabled.
          type: string
        dataSetsReplicationEnabled:
          description: |2
            Flag that indicates whether DataSets files are replicated or not.
            
            ***Since:*** vSphere API Release 8.0.0.0
          type: boolean
        disk:
          description: |2
            The set of the disks of this VM that are configured for
            replication.
          type: array
          items:
            $ref: '#/components/schemas/ReplicationInfoDiskSettings'
      required:
        - generation
        - vmReplicationId
        - destination
        - port
        - rpo
        - quiesceGuestEnabled
        - paused
        - oppUpdatesEnabled
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfReplicationConfigSpec:
      type: object
      description: |2
        A boxed array of *ReplicationConfigSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ReplicationConfigSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ReplicationInfoDiskSettings:
      type: object
      description: |2
        The ReplicationConfigSpec.DiskSettings object type encapsulates
        the replication properties of a replicated disk of a replicated
        virtual machine.
      properties:
        key:
          description: |2
            The disk's device key in the VM's configuration.
            
            Used to
            uniquely identify the disk to be configured for replication
            in the primary VM.
          type: integer
          format: int32
        diskReplicationId:
          description: |2
            An opaque identifier that uniquely identifies a replicated
            disk between primary and secondary sites.
          type: string
      required:
        - key
        - diskReplicationId
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfReplicationInfoDiskSettings:
      type: object
      description: |2
        A boxed array of *ReplicationInfoDiskSettings*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ReplicationInfoDiskSettings'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualMachineRuntimeInfo:
      type: object
      description: |2
        The RuntimeInfo data object type provides information about
        the execution state and history of a virtual machine.
      properties:
        device:
          description: |2
            Per-device runtime info.
            
            This array will be empty if the host
            software does not provide runtime info for any of the device
            types currently in use by the virtual machine.
            In releases after vSphere API 5.0, vSphere Servers might not
            generate property collector update notifications for this property.
            To obtain the latest value of the property, you can use
            PropertyCollector methods RetrievePropertiesEx or WaitForUpdatesEx.
            If you use the PropertyCollector.WaitForUpdatesEx method, specify
            an empty string for the version parameter.
            Since this property is on a DataObject, an update returned by WaitForUpdatesEx may
            contain values for this property when some other property on the DataObject changes.
            If this update is a result of a call to WaitForUpdatesEx with a non-empty
            version parameter, the value for this property may not be current.
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineDeviceRuntimeInfo'
        host:
          description: |2
            The host that is responsible for running a virtual machine.
            
            This property is null if the virtual machine is not running and is
            not assigned to run on a particular host.
            
            Refers instance of *HostSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
        connectionState:
          description: |2
            Indicates whether or not the virtual machine is available for management.
          $ref: '#/components/schemas/VirtualMachineConnectionState_enum'
        powerState:
          description: |2
            The current power state of the virtual machine.
          $ref: '#/components/schemas/VirtualMachinePowerState_enum'
        vmFailoverInProgress:
          description: |2
            Represents if the vm is currently being failed over by FDM
            
            ***Since:*** vSphere API Release 7.0.2.0
          type: boolean
        faultToleranceState:
          description: |2
            The fault tolerance state of the virtual machine.
          $ref: '#/components/schemas/VirtualMachineFaultToleranceState_enum'
        dasVmProtection:
          description: |2
            The vSphere HA protection state for a virtual machine.
            
            Property
            is unset if vSphere HA is not enabled.
          $ref: '#/components/schemas/VirtualMachineRuntimeInfoDasProtectionState'
        toolsInstallerMounted:
          description: |2
            Flag to indicate whether or not the VMware Tools installer
            is mounted as a CD-ROM.
          type: boolean
        suspendTime:
          description: |2
            The timestamp when the virtual machine was most recently suspended.
            
            This property is updated every time the virtual machine is suspended.
          type: string
          format: date-time
        bootTime:
          description: |2
            The timestamp when the virtual machine was most recently powered on.
            
            This property is updated when the virtual machine is powered on
            from the poweredOff state, and is cleared when the virtual machine is
            powered off. This property is not updated when a virtual machine is resumed
            from a suspended state.
          type: string
          format: date-time
        suspendInterval:
          description: |2
            The total time the virtual machine has been suspended
            since it was initially powered on.
            
            This time excludes the current period,
            if the virtual machine is currently suspended. This property is updated
            when the virtual machine resumes, and is reset to zero when the virtual machine
            is powered off.
          type: integer
          format: int64
        question:
          description: |2
            The current question, if any, that is blocking the virtual machine's execution.
          $ref: '#/components/schemas/VirtualMachineQuestionInfo'
        memoryOverhead:
          deprecated: true
          description: |2
            Deprecated as of vSphere API 4.1, use the *PerformanceManager*
            memory overhead counter to get this value.
            
            The amount of memory resource (in bytes) that will be used by
            the virtual machine above its guest memory requirements.
            
            This value is set if and only if the virtual machine is registered
            on a host that supports memory resource allocation features.
            
            For powered off VMs, this is the minimum overhead required to
            power on the VM on the registered host.
            
            For powered on VMs, this is the current overhead reservation, a
            value which is almost always larger than the minimum overhead, and
            which grows with time.
            
            See also *HostSystem.QueryMemoryOverheadEx*.
          type: integer
          format: int64
        maxCpuUsage:
          description: |2
            Current upper-bound on CPU usage.
            
            The upper-bound is based on the host
            the virtual machine is current running on, as well as limits configured
            on the virtual machine itself or any parent resource pool.
            Valid while the virtual machine is running.
            In releases after vSphere API 5.0, vSphere Servers might not
            generate property collector update notifications for this property.
            To obtain the latest value of the property, you can use
            PropertyCollector methods RetrievePropertiesEx or WaitForUpdatesEx.
            If you use the PropertyCollector.WaitForUpdatesEx method, specify
            an empty string for the version parameter.
            Since this property is on a DataObject, an update returned by WaitForUpdatesEx may
            contain values for this property when some other property on the DataObject changes.
            If this update is a result of a call to WaitForUpdatesEx with a non-empty
            version parameter, the value for this property may not be current.
          type: integer
          format: int32
        maxMemoryUsage:
          description: |2
            Current upper-bound on memory usage.
            
            The upper-bound is based on memory
            configuration of the virtual machine, as well as limits configured
            on the virtual machine itself or any parent resource pool.
            Valid while the virtual machine is running.
            In releases after vSphere API 5.0, vSphere Servers might not
            generate property collector update notifications for this property.
            To obtain the latest value of the property, you can use
            PropertyCollector methods RetrievePropertiesEx or WaitForUpdatesEx.
            If you use the PropertyCollector.WaitForUpdatesEx method, specify
            an empty string for the version parameter.
            Since this property is on a DataObject, an update returned by WaitForUpdatesEx may
            contain values for this property when some other property on the DataObject changes.
            If this update is a result of a call to WaitForUpdatesEx with a non-empty
            version parameter, the value for this property may not be current.
          type: integer
          format: int32
        numMksConnections:
          description: |2
            Number of active MKS connections to this virtual machine.
          type: integer
          format: int32
        recordReplayState:
          deprecated: true
          description: |2
            Deprecated as of vSphere API 6.0.
            
            Record / replay state of this virtual machine.
          $ref: '#/components/schemas/VirtualMachineRecordReplayState_enum'
        cleanPowerOff:
          description: |2
            For a powered off virtual machine, indicates whether the virtual
            machine's last shutdown was an orderly power off or not.
            
            Unset if
            the virtual machine is running or suspended.
          type: boolean
        needSecondaryReason:
          description: |2
            If set, indicates the reason the virtual machine needs a secondary.
          type: string
        onlineStandby:
          description: |2
            This property indicates whether the guest has gone into one of the
            s1, s2 or s3 standby modes, false indicates the guest is awake.
          type: boolean
        minRequiredEVCModeKey:
          description: |2
            For a powered-on or suspended virtual machine in a cluster with Enhanced
            VMotion Compatibility (EVC) enabled, this identifies the least-featured
            EVC mode (among those for the appropriate CPU vendor) that could admit
            the virtual machine.
            
            See *EVCMode*. Until vSphere 6.5, this
            property will be unset if the virtual machine is powered off or is not in
            an EVC cluster.
            
            This property may be used as a general indicator of the CPU feature
            baseline currently in use by the virtual machine. However, the virtual
            machine may be suppressing some of the features present in the CPU
            feature baseline of the indicated mode, either explicitly (in the
            virtual machine's configured
            *cpuFeatureMask*) or implicitly
            (in the default masks for the
            *GuestOsDescriptor* appropriate for the
            virtual machine's configured guest OS).
          type: string
        consolidationNeeded:
          description: |2
            Whether any disk of the virtual machine requires consolidation.
            
            This can happen for example when a snapshot is deleted but its
            associated disk is not committed back to the base disk.
            Use *VirtualMachine.ConsolidateVMDisks_Task* to consolidate if
            needed.
          type: boolean
        offlineFeatureRequirement:
          description: |2
            These requirements must have equivalent host capabilities
            *HostConfigInfo.featureCapability* in order to power on.
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineFeatureRequirement'
        featureRequirement:
          description: |2
            These requirements must have equivalent host capabilities
            *HostConfigInfo.featureCapability* in order to power on,
            resume, or migrate to the host.
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineFeatureRequirement'
        featureMask:
          description: |2
            The masks applied to an individual virtual machine as a result of its
            configuration.
          type: array
          items:
            $ref: '#/components/schemas/HostFeatureMask'
        vFlashCacheAllocation:
          deprecated: true
          description: |2
            Deprecated since vSphere 7.0 because vFlash Read Cache
            end of availability.
            
            Specifies the total allocated vFlash resource for the vFlash caches associated with VM's
            VMDKs when VM is powered on, in bytes.
          type: integer
          format: int64
        paused:
          description: |2
            Whether the virtual machine is paused, or not.
          type: boolean
        snapshotInBackground:
          description: |2
            Whether a snapshot operation is in progress in the background, or not.
          type: boolean
        quiescedForkParent:
          description: |2
            This flag indicates whether a parent virtual machine is in a fork ready
            state.
            
            A persistent instant clone child can be created only when this flag
            is true. While a non-persistent instant clone child can be created
            independent of this flag, it can only be powered on if this flag is true.
          type: boolean
        instantCloneFrozen:
          description: |2
            Whether the virtual machine is frozen for instant clone, or not.
          type: boolean
        cryptoState:
          description: |2
            Encryption state of the virtual machine.
            
            Valid values are enumerated by the
            *CryptoState* type.
          type: string
        suspendedToMemory:
          description: |2
            Whether the virtual machine is suspended to memory, or not.
            
            ***Since:*** vSphere API Release 7.0.2.0
          type: boolean
        opNotificationTimeout:
          description: |2
            Operation notification timeout in seconds.
            
            Specifies the maximum time duration the application may take to
            prepare for the operation after it has been notified.
            This property is set only for powered on VMs.
            
            ***Since:*** vSphere API Release 8.0.0.1
          type: integer
          format: int64
        iommuActive:
          description: |2
            Indicates whether there is active IOMMU domain in the current VM.
            
            ***Since:*** vSphere API Release 8.0.1.0
          type: boolean
      required:
        - connectionState
        - powerState
        - faultToleranceState
        - toolsInstallerMounted
        - numMksConnections
        - recordReplayState
        - onlineStandby
        - consolidationNeeded
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVirtualMachineRuntimeInfo:
      type: object
      description: |2
        A boxed array of *VirtualMachineRuntimeInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineRuntimeInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualMachineRuntimeInfoDasProtectionState:
      type: object
      description: |2
        The *VirtualMachineRuntimeInfoDasProtectionState* object describes the
        vSphere HA protection state of a virtual machine (VM).
      properties:
        dasProtected:
          description: |2
            Whether vSphere HA is protecting a virtual machine (VM).
            
            If a
            VM is protected, vSphere HA will enforce any availability
            features that have been enabled for this VM. For
            example, if the VM is running on a host
            that fails and the VM is configured to be restarted on a failure,
            then vSphere HA will attempt to restart the VM on another host.
            Similarly, if you enable VM/Application Health Monitoring
            for this VM, vSphere HA will monitor the heartbeats of the
            VM and reset the VM when needed, as dictated by the configured
            policy settings.
          type: boolean
      required:
        - dasProtected
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVirtualMachineRuntimeInfoDasProtectionState:
      type: object
      description: |2
        A boxed array of *VirtualMachineRuntimeInfoDasProtectionState*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineRuntimeInfoDasProtectionState'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ScheduledHardwareUpgradeInfo:
      type: object
      description: |2
        Data object type containing settings for the scheduled hardware upgrades.
      properties:
        upgradePolicy:
          description: |2
            Scheduled hardware upgrade policy setting for the virtual machine.
            
            See also *ScheduledHardwareUpgradeInfoHardwareUpgradePolicy_enum*.
          type: string
        versionKey:
          description: |2
            Key for target hardware version to be used on next scheduled upgrade
            in the format of *VirtualMachineConfigOptionDescriptor.key*.
          type: string
        scheduledHardwareUpgradeStatus:
          description: |2
            Status for last attempt to run scheduled hardware upgrade.
            
            See also *ScheduledHardwareUpgradeInfoHardwareUpgradeStatus_enum*.
          type: string
        fault:
          description: |2
            Contains information about the failure of last attempt to run
            scheduled hardware upgrade.
          $ref: '#/components/schemas/MethodFault'
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfScheduledHardwareUpgradeInfo:
      type: object
      description: |2
        A boxed array of *ScheduledHardwareUpgradeInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ScheduledHardwareUpgradeInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualMachineScsiDiskDeviceInfo:
      type: object
      description: |2
        The ScsiDiskDeviceInfo class contains detailed information about a specific
        scsi disk hardware device.
        
        These devices are for the
        vim.vm.device.VirtualDisk.RawDiskMappingVer1BackingInfo.
      properties:
        disk:
          description: |2
            Detailed information about the disk.
          $ref: '#/components/schemas/HostScsiDisk'
        transportHint:
          description: |2
            Transport identifier hint used to identify the device.
            
            To definitively
            correlate this device with a host physical disk, use the disk property.
            This identifier is intended as a hint to end users to identify the
            disk device.
          type: string
        lunNumber:
          description: |2
            LUN number hint used to identify the SCSI device.
            
            To definitively
            correlate this device with a host physical disk, use the disk property.
            This identifier is intended as a hint to end users to identify the
            disk device.
          type: integer
          format: int32
      allOf:
        - $ref: '#/components/schemas/VirtualMachineDiskDeviceInfo'

    ArrayOfVirtualMachineScsiDiskDeviceInfo:
      type: object
      description: |2
        A boxed array of *VirtualMachineScsiDiskDeviceInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineScsiDiskDeviceInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualMachineScsiPassthroughInfo:
      type: object
      description: |2
        Description of a generic SCSI device, including information about
        the device ID.
      properties:
        scsiClass:
          description: |2
            The class of the generic SCSI device.
          type: string
        vendor:
          description: |2
            The vendor name.
          type: string
        physicalUnitNumber:
          description: |2
            Unit number of the generic device on the physical host.
          type: integer
          format: int32
      required:
        - scsiClass
        - vendor
        - physicalUnitNumber
      allOf:
        - $ref: '#/components/schemas/VirtualMachineTargetInfo'

    ArrayOfVirtualMachineScsiPassthroughInfo:
      type: object
      description: |2
        A boxed array of *VirtualMachineScsiPassthroughInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineScsiPassthroughInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualMachineSerialInfo:
      type: object
      description: |2
        SerialInfo class contains information about a physical serial
        drive on the host.
      allOf:
        - $ref: '#/components/schemas/VirtualMachineTargetInfo'

    ArrayOfVirtualMachineSerialInfo:
      type: object
      description: |2
        A boxed array of *VirtualMachineSerialInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineSerialInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualMachineSgxInfo:
      type: object
      description: |2
        This data object describes the virtual software guard extension (vSGX)
        configuration of this virtual machine.
      properties:
        epcSize:
          description: |2
            Size of vEPC, in megabytes.
          type: integer
          format: int64
        flcMode:
          description: |2
            FLC mode for the virtual machine.
            
            The set of possible values are
            described in *VirtualMachineSgxInfoFlcModes_enum*. If no value is specified,
            then "unlocked" will be used.
          type: string
        lePubKeyHash:
          description: |2
            Public key hash of the provider launch enclave.
            
            This is the SHA256
            digest of the SIGSTRUCT.MODULUS(MR\_SIGNER) of the provider launch
            enclave. This hash must only be provided when the launch enclave mode is
            "locked", for the other cases the hash is ignored.
          type: string
        requireAttestation:
          description: |2
            Indicates whether or not a virtual machine requires remote
            attestation.
            
            ***Since:*** vSphere API Release 8.0.0.1
          type: boolean
      required:
        - epcSize
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVirtualMachineSgxInfo:
      type: object
      description: |2
        A boxed array of *VirtualMachineSgxInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineSgxInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualMachineSgxTargetInfo:
      type: object
      description: |2
        Description of Intel Software Guard Extensions information.
      properties:
        maxEpcSize:
          description: |2
            Maximum size, in bytes, of EPC available on the compute resource.
          type: integer
          format: int64
        flcModes:
          description: |2
            FLC modes available in the compute resource.
            
            The set of possible values
            are described in *VirtualMachineSgxInfoFlcModes_enum*.
          type: array
          items:
            type: string
        lePubKeyHashes:
          description: |2
            Public key hashes of the provider launch enclaves available in the
            compute resource.
          type: array
          items:
            type: string
        requireAttestationSupported:
          description: |2
            Whether the host/cluster supports requiring SGX remote attestation.
            
            ***Since:*** vSphere API Release 8.0.0.1
          type: boolean
      required:
        - maxEpcSize
      allOf:
        - $ref: '#/components/schemas/VirtualMachineTargetInfo'

    ArrayOfVirtualMachineSgxTargetInfo:
      type: object
      description: |2
        A boxed array of *VirtualMachineSgxTargetInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineSgxTargetInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualMachineSnapshotInfo:
      type: object
      description: |2
        The SnapshotInfo data object type provides all the information about the
        hierarchy of snapshots in a virtual machine.
      properties:
        currentSnapshot:
          description: |2
            Current snapshot of the virtual machine
            
            This property is set by calling
            *Snapshot.revert* or
            *VirtualMachine.createSnapshot*.
            This property will be empty when the working snapshot is at the root
            of the snapshot tree.
            
            Refers instance of *VirtualMachineSnapshot*.
          $ref: '#/components/schemas/ManagedObjectReference'
        rootSnapshotList:
          description: |2
            Data for the entire set of snapshots for one virtual machine.
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineSnapshotTree'
      required:
        - rootSnapshotList
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVirtualMachineSnapshotInfo:
      type: object
      description: |2
        A boxed array of *VirtualMachineSnapshotInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineSnapshotInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    SnapshotSelectionSpec:
      type: object
      description: |2
        This data type defines the filtering specification for removing snapshots
        from virtual machine.
        
        ***Since:*** vSphere API Release 8.0.3.0
      properties:
        retentionDays:
          description: |2
            This is the property to select snapshots older than X days.
          type: integer
          format: int32
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfSnapshotSelectionSpec:
      type: object
      description: |2
        A boxed array of *SnapshotSelectionSpec*. To be used in *Any* placeholders.
        
        ***Since:*** vSphere API Release 8.0.3.0
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/SnapshotSelectionSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualMachineSnapshotTree:
      type: object
      description: |2
        SnapshotTree encapsulates all the read-only data produced by the snapshot.
      properties:
        snapshot:
          description: |2
            The managed object for this snapshot.
            
            Refers instance of *VirtualMachineSnapshot*.
          $ref: '#/components/schemas/ManagedObjectReference'
        vm:
          description: |2
            The virtual machine for which the snapshot was taken.
            
            Refers instance of *VirtualMachine*.
          $ref: '#/components/schemas/ManagedObjectReference'
        name:
          description: |2
            Name of the snapshot.
          type: string
        description:
          description: |2
            Description of the snapshot.
          type: string
        id:
          description: |2
            The unique identifier that distinguishes this snapshot from
            other snapshots of the virtual machine.
          type: integer
          format: int32
        createTime:
          description: |2
            The date and time the snapshot was taken.
          type: string
          format: date-time
        state:
          description: |2
            The power state of the virtual machine when this snapshot was taken.
          $ref: '#/components/schemas/VirtualMachinePowerState_enum'
        quiesced:
          description: |2
            Flag to indicate whether or not the snapshot was created with
            the "quiesce" option, ensuring a consistent state of the file system.
          type: boolean
        backupManifest:
          description: |2
            The relative path from the snapshotDirectory pointing to the backup
            manifest.
            
            Available for certain quiesced snapshots only.
          type: string
        childSnapshotList:
          description: |2
            The snapshot data for all snapshots for which this snapshot is the parent.
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineSnapshotTree'
        replaySupported:
          deprecated: true
          description: |2
            Deprecated as of vSphere API 6.0.
            
            Flag to indicate whether this snapshot is associated with a recording
            session on the virtual machine that can be replayed.
          type: boolean
      required:
        - snapshot
        - vm
        - name
        - description
        - id
        - createTime
        - state
        - quiesced
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVirtualMachineSnapshotTree:
      type: object
      description: |2
        A boxed array of *VirtualMachineSnapshotTree*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineSnapshotTree'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualMachineSoundInfo:
      type: object
      description: |2
        SoundInfo class contains information about a physical sound
        card on the host.
      allOf:
        - $ref: '#/components/schemas/VirtualMachineTargetInfo'

    ArrayOfVirtualMachineSoundInfo:
      type: object
      description: |2
        A boxed array of *VirtualMachineSoundInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineSoundInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualMachineSriovDevicePoolInfo:
      type: object
      properties:
        key:
          description: |2
            To be used for extending to other device types
          type: string
      required:
        - key
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVirtualMachineSriovDevicePoolInfo:
      type: object
      description: |2
        A boxed array of *VirtualMachineSriovDevicePoolInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineSriovDevicePoolInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualMachineSriovInfo:
      type: object
      description: |2
        Description of a SRIOV device that can be attached to a virtual machine.
      properties:
        virtualFunction:
          description: |2
            Indicates whether corresponding PCI device is a virtual function
            instantiated by a SR-IOV capable device.
          type: boolean
        pnic:
          description: |2
            The name of the physical nic that is represented by a SR-IOV
            capable physical function.
          type: string
        devicePool:
          description: |2
            SRIOV DevicePool information
          $ref: '#/components/schemas/VirtualMachineSriovDevicePoolInfo'
      required:
        - virtualFunction
      allOf:
        - $ref: '#/components/schemas/VirtualMachinePciPassthroughInfo'

    ArrayOfVirtualMachineSriovInfo:
      type: object
      description: |2
        A boxed array of *VirtualMachineSriovInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineSriovInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualMachineSriovNetworkDevicePoolInfo:
      type: object
      description: |2
        This class is networking specific SR-IOV device pool info
      properties:
        switchKey:
          description: |2
            vSwitch key
          type: string
        switchUuid:
          description: |2
            DVSwitch Uuid
          type: string
      allOf:
        - $ref: '#/components/schemas/VirtualMachineSriovDevicePoolInfo'

    ArrayOfVirtualMachineSriovNetworkDevicePoolInfo:
      type: object
      description: |2
        A boxed array of *VirtualMachineSriovNetworkDevicePoolInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineSriovNetworkDevicePoolInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualMachineStorageInfo:
      type: object
      description: |2
        Information about the amount of storage used by a virtual machine across
        datastores that it is located on.
      properties:
        perDatastoreUsage:
          description: |2
            Storage space used by this virtual machine on all datastores that it
            is located on.
            
            Total storage space committed to this virtual machine across all datastores is
            simply an aggregate of the property
            *VirtualMachineUsageOnDatastore.committed*.
            
            See also *VirtualMachineStorageSummary.committed*.
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineUsageOnDatastore'
        timestamp:
          description: |2
            Time when values in this structure were last updated.
          type: string
          format: date-time
      required:
        - timestamp
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVirtualMachineStorageInfo:
      type: object
      description: |2
        A boxed array of *VirtualMachineStorageInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineStorageInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualMachineUsageOnDatastore:
      type: object
      description: |2
        Storage space used by this virtual machine on a particular datastore.
      properties:
        datastore:
          description: |2
            Reference to datastore for which information is being provided.
            
            Refers instance of *Datastore*.
          $ref: '#/components/schemas/ManagedObjectReference'
        committed:
          description: |2
            Storage space, in bytes, on this datastore that is actually being used by
            the virtual machine.
            
            It includes space actually occupied by disks, logs, snapshots,
            configuration files etc. Files of the virtual machine which are present
            on a different datastore (e.g. a virtual disk on another datastore) are not
            included here. *VirtualMachineFileLayoutEx* provides a detailed
            break-up of the committed space.
          type: integer
          format: int64
        uncommitted:
          description: |2
            Additional storage space, in bytes, potentially used by the virtual machine
            on this datastore.
            
            Additional space may be needed for example when lazily allocated disks grow,
            or storage for swap is allocated when powering on the virtual machine.
            
            If the virtual machine is running off delta disks (for example because
            a snapshot was taken), then only the potential growth of the currently
            used delta-disks is considered.
          type: integer
          format: int64
        unshared:
          description: |2
            Storage space, in bytes, occupied by the virtual machine on this datastore
            that is not shared with any other virtual machine.
          type: integer
          format: int64
      required:
        - datastore
        - committed
        - uncommitted
        - unshared
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVirtualMachineUsageOnDatastore:
      type: object
      description: |2
        A boxed array of *VirtualMachineUsageOnDatastore*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineUsageOnDatastore'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualMachineSummary:
      type: object
      description: |2
        The summary data object type encapsulates a typical set of virtual machine
        information that is useful for list views and summary pages.
        
        VirtualCenter can retrieve this information very efficiently,
        even for large sets of virtual machines.
      properties:
        vm:
          description: |2
            Reference to the virtual machine managed object.
            
            Refers instance of *VirtualMachine*.
          $ref: '#/components/schemas/ManagedObjectReference'
        runtime:
          description: |2
            Runtime and state information of a running virtual machine.
            
            Most of this information is also available when a virtual machine is powered off.
            In that case, it contains information from the last run, if available.
          $ref: '#/components/schemas/VirtualMachineRuntimeInfo'
        guest:
          description: |2
            Guest operating system and VMware Tools information.
            
            See *VirtualMachine.guest* for more information.
          $ref: '#/components/schemas/VirtualMachineGuestSummary'
        config:
          description: |2
            Basic configuration information about the virtual machine.
            
            This information
            is not available when the virtual machine is unavailable, for instance, when
            it is being created or deleted.
          $ref: '#/components/schemas/VirtualMachineConfigSummary'
        storage:
          description: |2
            Storage information of the virtual machine.
            
            It can be explicitly refreshed
            with the *VirtualMachine.RefreshStorageInfo* operation.
            In releases after vSphere API 5.0, vSphere Servers might not
            generate property collector update notifications for this property.
            To obtain the latest value of the property, you can use
            PropertyCollector methods RetrievePropertiesEx or WaitForUpdatesEx.
            If you use the PropertyCollector.WaitForUpdatesEx method, specify
            an empty string for the version parameter.
            Since this property is on a DataObject, an update returned by WaitForUpdatesEx may
            contain values for this property when some other property on the DataObject changes.
            If this update is a result of a call to WaitForUpdatesEx with a non-empty
            version parameter, the value for this property may not be current.
          $ref: '#/components/schemas/VirtualMachineStorageSummary'
        quickStats:
          description: |2
            A set of statistics that are typically updated with near real-time regularity.
            
            This data object type does not support notification, for scalability reasons.
            Therefore, changes in QuickStats do not generate property collector updates. To
            monitor statistics values, use the statistics and alarms modules instead.
          $ref: '#/components/schemas/VirtualMachineQuickStats'
        overallStatus:
          description: |2
            Overall alarm status on this node.
            
            In releases after vSphere API 5.0, vSphere Servers might not
            generate property collector update notifications for this property.
            To obtain the latest value of the property, you can use
            PropertyCollector methods RetrievePropertiesEx or WaitForUpdatesEx.
            If you use the PropertyCollector.WaitForUpdatesEx method, specify
            an empty string for the version parameter.
            Since this property is on a DataObject, an update returned by WaitForUpdatesEx may
            contain values for this property when some other property on the DataObject changes.
            If this update is a result of a call to WaitForUpdatesEx with a non-empty
            version parameter, the value for this property may not be current.
          $ref: '#/components/schemas/ManagedEntityStatus_enum'
        customValue:
          description: |2
            Custom field values.
          type: array
          items:
            $ref: '#/components/schemas/CustomFieldValue'
      required:
        - runtime
        - config
        - quickStats
        - overallStatus
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVirtualMachineSummary:
      type: object
      description: |2
        A boxed array of *VirtualMachineSummary*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineSummary'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualMachineConfigSummary:
      type: object
      description: |2
        A subset of virtual machine configuration.
      properties:
        name:
          description: |2
            Name of the virtual machine.
          type: string
        template:
          description: |2
            Flag to determine whether or not this virtual machine is a template.
          type: boolean
        vmPathName:
          description: |2
            Path name to the configuration file for the virtual machine
          type: string
        memorySizeMB:
          description: |2
            Memory size of the virtual machine, in megabytes.
          type: integer
          format: int32
        cpuReservation:
          description: |2
            Configured CPU reservation in MHz
          type: integer
          format: int32
        memoryReservation:
          description: |2
            Configured Memory reservation in MB
          type: integer
          format: int32
        numCpu:
          description: |2
            Number of processors in the virtual machine.
          type: integer
          format: int32
        numEthernetCards:
          description: |2
            Number of virtual network adapters.
          type: integer
          format: int32
        numVirtualDisks:
          description: |2
            Number of virtual disks attached to the virtual machine.
          type: integer
          format: int32
        uuid:
          description: |2
            Virtual machine BIOS identification.
          type: string
        instanceUuid:
          description: |2
            VC-specific identifier of the virtual machine
          type: string
        guestId:
          description: |2
            Guest operating system identifier (short name).
          type: string
        guestFullName:
          description: |2
            Guest operating system name configured on the virtual machine.
          type: string
        annotation:
          description: |2
            Description for the virtual machine.
          type: string
        product:
          description: |2
            Product information.
            
            References to properties in the URLs are expanded.
          $ref: '#/components/schemas/VAppProductInfo'
        installBootRequired:
          description: |2
            Whether the VM requires a reboot to finish installation.
            
            False if no vApp
            meta-data is configured.
          type: boolean
        ftInfo:
          description: |2
            Fault Tolerance settings for this virtual machine.
            
            This property will be populated only for fault tolerance virtual
            machines and will be left unset for all other virtual machines.
            See *FaultToleranceConfigInfo* for a description.
          $ref: '#/components/schemas/FaultToleranceConfigInfo'
        managedBy:
          description: |2
            Specifies that this VM is managed by a VC Extension.
            
            See the
            *managedBy* property in the ConfigSpec
            for more details.
          $ref: '#/components/schemas/ManagedByInfo'
        tpmPresent:
          description: |2
            Is TPM present in a VM?
          type: boolean
        numVmiopBackings:
          description: |2
            Number of VMIOP backed devices attached to the virtual machine.
          type: integer
          format: int32
        hwVersion:
          description: |2
            The hardware version string for this virtual machine.
          type: string
      required:
        - name
        - template
        - vmPathName
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVirtualMachineConfigSummary:
      type: object
      description: |2
        A boxed array of *VirtualMachineConfigSummary*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineConfigSummary'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualMachineGuestSummary:
      type: object
      description: |2
        A subset of virtual machine guest information.
      properties:
        guestId:
          description: |2
            Guest operating system identifier (short name), if known.
          type: string
        guestFullName:
          description: |2
            Guest operating system name configured on the virtual machine.
          type: string
        toolsStatus:
          deprecated: true
          description: |2
            Deprecated as of vSphere API 5.0 use *VirtualMachineGuestSummary.toolsVersionStatus2* and
            *VirtualMachineGuestSummary.toolsRunningStatus*.
            
            Current status of VMware Tools in the guest operating system, if known.
          $ref: '#/components/schemas/VirtualMachineToolsStatus_enum'
        toolsVersionStatus:
          deprecated: true
          description: |2
            Deprecated as of vSphere API 5.0 use *VirtualMachineGuestSummary.toolsVersionStatus2*.
            
            Current version status of VMware Tools in the guest operating system,
            if known.
          type: string
        toolsVersionStatus2:
          description: |2
            Current version status of VMware Tools in the guest operating system,
            if known.
          type: string
        toolsRunningStatus:
          description: |2
            Current running status of VMware Tools in the guest operating system,
            if known.
          type: string
        hostName:
          description: |2
            Hostname of the guest operating system, if known.
          type: string
        ipAddress:
          description: |2
            Primary IP address assigned to the guest operating system, if known.
          type: string
        hwVersion:
          description: |2
            The hardware version string for this virtual machine.
          type: string
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVirtualMachineGuestSummary:
      type: object
      description: |2
        A boxed array of *VirtualMachineGuestSummary*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineGuestSummary'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualMachineQuickStats:
      type: object
      description: |2
        A set of statistics that are typically updated with near real-time regularity.
        
        This data object type does not support notification, for scalability reasons.
        Therefore, changes in QuickStats do not generate property collector updates. To
        monitor statistics values, use the statistics and alarms modules instead.
      properties:
        overallCpuUsage:
          description: |2
            Basic CPU performance statistics, in MHz.
            
            Valid while the virtual machine is running.
          type: integer
          format: int32
        overallCpuDemand:
          description: |2
            Basic CPU performance statistics, in MHz.
            
            Valid while the virtual machine is running.
          type: integer
          format: int32
        overallCpuReadiness:
          description: |2
            Percentage of time that the virtual machine was ready, but could not
            get scheduled to run on the physical CPU.
            
            Valid while the virtual machine is running.
          type: integer
          format: int32
        guestMemoryUsage:
          description: |2
            Guest memory utilization statistics, in MB.
            
            This
            is also known as active guest memory. The number
            can be between 0 and the configured memory size of
            the virtual machine. Valid while the virtual machine is
            running.
          type: integer
          format: int32
        hostMemoryUsage:
          description: |2
            Host memory utilization statistics, in MB.
            
            This
            is also known as consumed host memory. This is between 0 and
            the configured resource limit. Valid while the virtual machine is
            running. This includes the overhead memory of the VM.
          type: integer
          format: int32
        guestHeartbeatStatus:
          description: |2
            Guest operating system heartbeat metric.
            
            See *VirtualMachine.guestHeartbeatStatus* for a description.
          $ref: '#/components/schemas/ManagedEntityStatus_enum'
        distributedCpuEntitlement:
          description: |2
            This is the amount of CPU resource, in MHz, that this VM is entitled to, as
            calculated by DRS.
            
            Valid only for a VM managed by DRS.
          type: integer
          format: int32
        distributedMemoryEntitlement:
          description: |2
            This is the amount of memory, in MB, that this VM is entitled to, as
            calculated by DRS.
            
            Valid only for a VM managed by DRS.
          type: integer
          format: int32
        staticCpuEntitlement:
          description: |2
            The static CPU resource entitlement for a virtual machine.
            
            This value is
            calculated based on this virtual machine's resource reservations, shares
            and limit, and doesn't take into account current usage. This is the worst
            case CPU allocation for this virtual machine, that is, the amount of CPU
            resource this virtual machine would receive if all virtual machines running
            in the cluster went to maximum consumption. Units are MHz.
          type: integer
          format: int32
        staticMemoryEntitlement:
          description: |2
            The static memory resource entitlement for a virtual machine.
            
            This value is
            calculated based on this virtual machine's resource reservations, shares
            and limit, and doesn't take into account current usage. This is the worst
            case memory allocation for this virtual machine, that is, the amount of
            memory this virtual machine would receive if all virtual machines running
            in the cluster went to maximum consumption. Units are MB.
          type: integer
          format: int32
        grantedMemory:
          description: |2
            Amount of host physical memory that is mapped for a virtual machine,
            in MB.
            
            The number can be between 0 and the configured memory size of
            the virtual machine. Valid while the virtual machine is running.
          type: integer
          format: int32
        privateMemory:
          description: |2
            The portion of memory, in MB, that is granted to this VM from non-shared
            host memory.
          type: integer
          format: int32
        sharedMemory:
          description: |2
            The portion of memory, in MB, that is granted to this VM from host memory
            that is shared between VMs.
          type: integer
          format: int32
        swappedMemory:
          description: |2
            The portion of memory, in MB, that is granted to this VM from the host's swap
            space.
            
            This is a sign that there is memory pressure on the host.
          type: integer
          format: int32
        balloonedMemory:
          description: |2
            The size of the balloon driver in the VM, in MB.
            
            The host will inflate the
            balloon driver to reclaim physical memory from the VM. This is a sign that
            there is memory pressure on the host.
          type: integer
          format: int32
        consumedOverheadMemory:
          description: |2
            The amount of consumed overhead memory, in MB, for this VM.
          type: integer
          format: int32
        ftLogBandwidth:
          description: |2
            The network bandwidth used for logging between the
            primary and secondary fault tolerance VMs.
            
            The unit is kilobytes per second.
          type: integer
          format: int32
        ftSecondaryLatency:
          description: |2
            The amount of time in wallclock that the VCPU of the secondary fault
            tolerance VM is behind the VCPU of the primary VM.
            
            The unit is millisecond.
          type: integer
          format: int32
        ftLatencyStatus:
          description: |2
            The latency status of the fault tolerance VM.
            
            ftLatencyStatus is determined by the value of ftSecondaryLatency.
            ftLatencyStatus is:
            green, if ftSecondaryLatency is less than or equal to 2 seconds;
            yellow, if ftSecondaryLatency is greater than 2 seconds,
            and less than or equal to 6 seconds;
            red, if ftSecondaryLatency is greater than 6 seconds;
            gray, if ftSecondaryLatency is unknown.
          $ref: '#/components/schemas/ManagedEntityStatus_enum'
        compressedMemory:
          description: |2
            The amount of compressed memory currently consumed by VM, in Kb.
          type: integer
          format: int64
        uptimeSeconds:
          description: |2
            The system uptime of the VM in seconds.
          type: integer
          format: int32
        ssdSwappedMemory:
          description: |2
            The amount of memory swapped to fast disk device such as
            SSD, in KB.
          type: integer
          format: int64
        activeMemory:
          description: |2
            The amount of memory that was recently touched by the VM, in MB.
            
            ***Since:*** vSphere API Release 7.0.3.0
          type: integer
          format: int32
        memoryTierStats:
          description: |2
            Stats for each physical memory tier.
            
            A physical memory tier consists of one or
            more logical memory tiers of the same *HostMemoryTierType_enum*. For
            example, the logical tiers can be tier0 (DRAM), tier1 (DRAM), and tier2 (PMEM),
            while the physical tiers are just DRAM and PMEM.
            
            ***Since:*** vSphere API Release 7.0.3.0
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineQuickStatsMemoryTierStats'
      required:
        - guestHeartbeatStatus
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVirtualMachineQuickStats:
      type: object
      description: |2
        A boxed array of *VirtualMachineQuickStats*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineQuickStats'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualMachineQuickStatsMemoryTierStats:
      type: object
      description: |2
        ***Since:*** vSphere API Release 7.0.3.0
      properties:
        memoryTierType:
          description: |2
            The memory tier type.
            
            See *HostMemoryTierType_enum* for supported
            values.
          type: string
        readBandwidth:
          description: |2
            Memory access bandwidth usage for the reads of the VM on this tier in
            MBps.
          type: integer
          format: int64
      required:
        - memoryTierType
        - readBandwidth
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVirtualMachineQuickStatsMemoryTierStats:
      type: object
      description: |2
        A boxed array of *VirtualMachineQuickStatsMemoryTierStats*. To be used in *Any* placeholders.
        
        ***Since:*** vSphere API Release 7.0.3.0
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineQuickStatsMemoryTierStats'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualMachineStorageSummary:
      type: object
      description: |2
        A subset of the storage information of this virtual machine.
        
        See *VirtualMachineStorageInfo* for a detailed storage break-up.
      properties:
        committed:
          description: |2
            Total storage space, in bytes, committed to this virtual machine across
            all datastores.
            
            Essentially an aggregate of the property
            *VirtualMachineUsageOnDatastore.committed* across all
            datastores that this virtual machine is located on.
          type: integer
          format: int64
        uncommitted:
          description: |2
            Additional storage space, in bytes, potentially used by this virtual machine
            on all datastores.
            
            Essentially an aggregate of the property
            *VirtualMachineUsageOnDatastore.uncommitted* across all
            datastores that this virtual machine is located on.
          type: integer
          format: int64
        unshared:
          description: |2
            Total storage space, in bytes, occupied by the virtual machine across
            all datastores, that is not shared with any other virtual machine.
          type: integer
          format: int64
        timestamp:
          description: |2
            Time when values in this structure were last updated.
          type: string
          format: date-time
      required:
        - committed
        - uncommitted
        - unshared
        - timestamp
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVirtualMachineStorageSummary:
      type: object
      description: |2
        A boxed array of *VirtualMachineStorageSummary*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineStorageSummary'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualMachineTargetInfo:
      type: object
      description: |2
        The TargetInfo specified a value that can be used in the device backings to
        connect the virtual machine to a physical (or logical) host device.
      properties:
        name:
          description: |2
            The identification of the endpoint on the host.
            
            The format of this depends
            on the kind of virtual device this endpoints is used for. For example,
            for a VirtualEthernetCard this would be a networkname, and for a VirtualCDROM
            it would be a device name.
          type: string
        configurationTag:
          description: |2
            List of configurations that this device is available for.
            
            This is only filled
            out if more than one configuration is requested.
          type: array
          items:
            type: string
      required:
        - name
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVirtualMachineTargetInfo:
      type: object
      description: |2
        A boxed array of *VirtualMachineTargetInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineTargetInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ToolsConfigInfo:
      type: object
      description: |2
        ToolsConfigInfo is a data object type containing settings for the VMware Tools
        software running in the guest operating system.
      properties:
        toolsVersion:
          description: |2
            Version of VMware Tools installed on the guest operating system.
          type: integer
          format: int32
        toolsInstallType:
          description: |2
            Installation type of VMware Tools in the guest operating system.
            
            The set of possible values is described in
            *VirtualMachineToolsInstallType_enum*
          type: string
        afterPowerOn:
          description: |2
            Flag to specify whether or not scripts should run
            after the virtual machine powers on.
          type: boolean
        afterResume:
          description: |2
            Flag to specify whether or not scripts should run
            after the virtual machine resumes.
          type: boolean
        beforeGuestStandby:
          description: |2
            Flag to specify whether or not scripts should run
            before the virtual machine suspends.
          type: boolean
        beforeGuestShutdown:
          description: |2
            Flag to specify whether or not scripts should run
            before the virtual machine powers off.
          type: boolean
        beforeGuestReboot:
          description: |2
            Flag to specify whether or not scripts should run
            before the virtual machine reboots.
          type: boolean
        toolsUpgradePolicy:
          description: |2
            Tools upgrade policy setting for the virtual machine.
            
            See also *UpgradePolicy_enum*.
          type: string
        pendingCustomization:
          description: |2
            When set, this indicates that a customization operation is pending on the VM.
            
            The value represents the filename of the customization package on the host.
          type: string
        customizationKeyId:
          description: |2
            When set, provides the id of the key used to encrypt the customization
            package attached to the VM.
          $ref: '#/components/schemas/CryptoKeyId'
        syncTimeWithHostAllowed:
          description: |2
            Indicates whether or not the tools program is allowed to synchronize
            guest time with host time.
            
            When set to <code>false</code>, disallows
            tool periodic time synchronization as well as guest time step corrections
            due to one-off events like resume from suspend.
            
            ***Since:*** vSphere API Release 7.0.1.0
          type: boolean
        syncTimeWithHost:
          description: |2
            Flag to specify whether or not the tools program will periodically
            synchronize guest time with host time.
            
            Periodical synchronization is
            only allowed if *ToolsConfigInfo.syncTimeWithHostAllowed*
            is not set to <code>false</code>.
          type: boolean
        lastInstallInfo:
          description: |2
            Information about the last tools upgrade attempt if applicable.
            
            This information is maintained by the server and is ignored if set by the client.
          $ref: '#/components/schemas/ToolsConfigInfoToolsLastInstallInfo'
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfToolsConfigInfo:
      type: object
      description: |2
        A boxed array of *ToolsConfigInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ToolsConfigInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ToolsConfigInfoToolsLastInstallInfo:
      type: object
      description: |2
        Describes status of last tools upgrade attempt
      properties:
        counter:
          description: |2
            Number of attempts that have been made to upgrade the version of tools
            installed on this virtual machine.
          type: integer
          format: int32
        fault:
          description: |2
            Error that happened, if any, during last attempt to upgrade tools.
          $ref: '#/components/schemas/MethodFault'
      required:
        - counter
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfToolsConfigInfoToolsLastInstallInfo:
      type: object
      description: |2
        A boxed array of *ToolsConfigInfoToolsLastInstallInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ToolsConfigInfoToolsLastInstallInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualMachineUsbInfo:
      type: object
      description: |2
        This data object contains information about a physical USB device
        on the host.
      properties:
        description:
          description: |2
            A user visible name of the USB device.
          type: string
        vendor:
          description: |2
            The vendor ID of the USB device.
          type: integer
          format: int32
        product:
          description: |2
            The product ID of the USB device.
          type: integer
          format: int32
        physicalPath:
          description: |2
            An autoconnect pattern which describes the device's physical
            path.
            
            This is the path to the specific port on the host where the
            USB device is attached.
          type: string
        family:
          description: |2
            The device class families.
            
            For possible values see
            *VirtualMachineUsbInfoFamily_enum*
          type: array
          items:
            type: string
        speed:
          description: |2
            The possible device speeds detected by server.
            
            For possible values see
            *VirtualMachineUsbInfoSpeed_enum*
          type: array
          items:
            type: string
        summary:
          description: |2
            Summary information about the virtual machine that is currently
            using this device, if any.
          $ref: '#/components/schemas/VirtualMachineSummary'
      required:
        - description
        - vendor
        - product
        - physicalPath
      allOf:
        - $ref: '#/components/schemas/VirtualMachineTargetInfo'

    ArrayOfVirtualMachineUsbInfo:
      type: object
      description: |2
        A boxed array of *VirtualMachineUsbInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineUsbInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    UsbScanCodeSpec:
      type: object
      description: |2
        This data object contains information about which USB HID codes
        to send to the Virtual Machine's keyboard.
      properties:
        keyEvents:
          type: array
          items:
            $ref: '#/components/schemas/UsbScanCodeSpecKeyEvent'
      required:
        - keyEvents
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfUsbScanCodeSpec:
      type: object
      description: |2
        A boxed array of *UsbScanCodeSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/UsbScanCodeSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    UsbScanCodeSpecKeyEvent:
      type: object
      properties:
        usbHidCode:
          description: |2
            USB HID code of the event
          type: integer
          format: int32
        modifiers:
          description: |2
            Modifiers to apply to the USB HID code
          $ref: '#/components/schemas/UsbScanCodeSpecModifierType'
      required:
        - usbHidCode
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfUsbScanCodeSpecKeyEvent:
      type: object
      description: |2
        A boxed array of *UsbScanCodeSpecKeyEvent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/UsbScanCodeSpecKeyEvent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    UsbScanCodeSpecModifierType:
      type: object
      description: |2
        The types of key modifiers to apply to each code.
      properties:
        leftControl:
          description: |2
            Left control key
          type: boolean
        leftShift:
          description: |2
            Left shift key
          type: boolean
        leftAlt:
          description: |2
            Left alt key
          type: boolean
        leftGui:
          description: |2
            Left gui key
          type: boolean
        rightControl:
          description: |2
            Right control key
          type: boolean
        rightShift:
          description: |2
            Right shift key
          type: boolean
        rightAlt:
          description: |2
            Right alt key
          type: boolean
        rightGui:
          description: |2
            Right gui key
          type: boolean
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfUsbScanCodeSpecModifierType:
      type: object
      description: |2
        A boxed array of *UsbScanCodeSpecModifierType*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/UsbScanCodeSpecModifierType'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualMachineVFlashModuleInfo:
      type: object
      description: |2
        VFlashModuleInfo class contains information about a vFlash module
        on the host.
      properties:
        vFlashModule:
          description: |2
            Information about the vFlash module
          $ref: '#/components/schemas/HostVFlashManagerVFlashCacheConfigInfoVFlashModuleConfigOption'
      required:
        - vFlashModule
      allOf:
        - $ref: '#/components/schemas/VirtualMachineTargetInfo'

    ArrayOfVirtualMachineVFlashModuleInfo:
      type: object
      description: |2
        A boxed array of *VirtualMachineVFlashModuleInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineVFlashModuleInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualMachineVMotionStunTimeInfo:
      type: object
      description: |2
        Description of VMotion Stun Time.
        
        ***Since:*** vSphere API Release 8.0.2.0
      properties:
        migrationBW:
          description: |2
            Migration bandwidth in Mbps
          type: integer
          format: int64
        stunTime:
          description: |2
            Stun Time in seconds
          type: integer
          format: int64
      required:
        - migrationBW
        - stunTime
      allOf:
        - $ref: '#/components/schemas/VirtualMachineTargetInfo'

    ArrayOfVirtualMachineVMotionStunTimeInfo:
      type: object
      description: |2
        A boxed array of *VirtualMachineVMotionStunTimeInfo*. To be used in *Any* placeholders.
        
        ***Since:*** vSphere API Release 8.0.2.0
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineVMotionStunTimeInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualMachineVcpuConfig:
      type: object
      description: |2
        Vcpu configuration.
      properties:
        latencySensitivity:
          description: |2
            Latency sensitivity specification for this vcpu.
            
            The latency sensitivity can be configured per-vcpu only when the VM
            *latencySensitivity* is
            configured to *high*
            in the same ConfigSpec.
            Setting *latencySensitivity*,
            but not setting the vcpu's LatencySensitivity would apply the VM's
            latency sensitivity level to all the vcpus of the VM.
            The latency sensitivity of the vcpu should not exceed the
            latency sensivity level of the VM.
            The only allowed levels for vcpu Latency sensitivity
            are *high* or
            *normal*
          $ref: '#/components/schemas/LatencySensitivity'
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVirtualMachineVcpuConfig:
      type: object
      description: |2
        A boxed array of *VirtualMachineVcpuConfig*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineVcpuConfig'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualMachineVendorDeviceGroupInfo:
      type: object
      description: |2
        Description of a PCI vendor device group device.
        
        ***Since:*** vSphere API Release 8.0.0.1
      properties:
        deviceGroupName:
          description: |2
            Name of Vendor Device Group.
          type: string
        deviceGroupDescription:
          description: |2
            Description of Vendor Device Group.
          type: string
        componentDeviceInfo:
          description: |2
            Array describing component devices of this Vendor Device Group.
            
            There is one entry per componentDevice in the deviceGroupSpec.
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineVendorDeviceGroupInfoComponentDeviceInfo'
      required:
        - deviceGroupName
      allOf:
        - $ref: '#/components/schemas/VirtualMachineTargetInfo'

    ArrayOfVirtualMachineVendorDeviceGroupInfo:
      type: object
      description: |2
        A boxed array of *VirtualMachineVendorDeviceGroupInfo*. To be used in *Any* placeholders.
        
        ***Since:*** vSphere API Release 8.0.0.1
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineVendorDeviceGroupInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualMachineVendorDeviceGroupInfoComponentDeviceInfo:
      type: object
      description: |2
        Class describing a component device within this vendor device group.
        
        ***Since:*** vSphere API Release 8.0.0.1
      properties:
        type:
          description: |2
            Type of this component.
            
            See *VirtualMachineVendorDeviceGroupInfoComponentDeviceInfoComponentType_enum* for supported types.
          type: string
        vendorName:
          description: |2
            Name of component device vendor.
          type: string
        deviceName:
          description: |2
            Name of component device.
          type: string
        isConfigurable:
          description: |2
            True if this device may be configured by user or UI.
          type: boolean
        device:
          description: |2
            VirtualDevice template for this device.
          $ref: '#/components/schemas/VirtualDevice'
      required:
        - type
        - vendorName
        - deviceName
        - isConfigurable
        - device
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVirtualMachineVendorDeviceGroupInfoComponentDeviceInfo:
      type: object
      description: |2
        A boxed array of *VirtualMachineVendorDeviceGroupInfoComponentDeviceInfo*. To be used in *Any* placeholders.
        
        ***Since:*** vSphere API Release 8.0.0.1
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineVendorDeviceGroupInfoComponentDeviceInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualMachineVgpuDeviceInfo:
      type: object
      description: |2
        Description of PCI vGPU device and its capabilities.
        
        ***Since:*** vSphere API Release 7.0.3.0
      properties:
        deviceName:
          description: |2
            The vGPU device name.
          type: string
        deviceVendorId:
          description: |2
            A well-known unique identifier for the device.
            
            It concatenates the
            16-bit PCI vendor id in lower bits followed by 16-bit PCI device id.
          type: integer
          format: int64
        maxFbSizeInGib:
          description: |2
            The maximum framebuffer size in gibibytes.
          type: integer
          format: int64
        timeSlicedCapable:
          description: |2
            Indicate whether device is time-sliced capable.
          type: boolean
        migCapable:
          description: |2
            Indicate whether device is Multiple Instance GPU capable.
          type: boolean
        computeProfileCapable:
          description: |2
            Indicate whether device is compute profile capable.
          type: boolean
        quadroProfileCapable:
          description: |2
            Indicate whether device is quadro profile capable.
          type: boolean
      required:
        - deviceName
        - deviceVendorId
        - maxFbSizeInGib
        - timeSlicedCapable
        - migCapable
        - computeProfileCapable
        - quadroProfileCapable
      allOf:
        - $ref: '#/components/schemas/VirtualMachineTargetInfo'

    ArrayOfVirtualMachineVgpuDeviceInfo:
      type: object
      description: |2
        A boxed array of *VirtualMachineVgpuDeviceInfo*. To be used in *Any* placeholders.
        
        ***Since:*** vSphere API Release 7.0.3.0
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineVgpuDeviceInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualMachineVgpuProfileInfo:
      type: object
      description: |2
        Description of PCI vGPU profile and its attributes.
        
        ***Since:*** vSphere API Release 7.0.3.0
      properties:
        profileName:
          description: |2
            The vGPU profile name.
          type: string
        deviceVendorId:
          description: |2
            A well-known unique identifier for the device that supports this
            profile.
            
            It concatenates the 16-bit PCI vendor id in lower bits
            followed by 16-bit PCI device id.
          type: integer
          format: int64
        fbSizeInGib:
          description: |2
            The profile framebuffer size in gibibytes.
          type: integer
          format: int64
        profileSharing:
          description: |2
            Indicate how this profile is shared within device.
          type: string
        profileClass:
          description: |2
            Indicate class for this profile.
          type: string
        stunTimeEstimates:
          description: |2
            VMotion stun time information for this profile.
            
            ***Since:*** vSphere API Release 8.0.2.0
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineVMotionStunTimeInfo'
      required:
        - profileName
        - deviceVendorId
        - fbSizeInGib
        - profileSharing
        - profileClass
      allOf:
        - $ref: '#/components/schemas/VirtualMachineTargetInfo'

    ArrayOfVirtualMachineVgpuProfileInfo:
      type: object
      description: |2
        A boxed array of *VirtualMachineVgpuProfileInfo*. To be used in *Any* placeholders.
        
        ***Since:*** vSphere API Release 7.0.3.0
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineVgpuProfileInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualMachineVirtualDeviceGroups:
      type: object
      description: |2
        The VirtualDeviceGroups data object
        type contains information about the backing that maps the
        virtual device onto a physical device for a Vendor Device Group device.
        
        Vendor Device Groups allow third-parties to define collections of
        devices that must be allocated to a virtual machine as a unit.
        Typically, this is because the set of devices are related in
        a some way, e.g. a physical link connects the devices.
        
        ***Since:*** vSphere API Release 8.0.0.1
      properties:
        deviceGroup:
          description: |2
            Information about device groups used by this VM.
            
            When adding a group, all devices that form the group
            must be added in the same request.
            When removing group, also all devices participating
            in the group must be removed.
            Modifying existing device group membership is not allowed.
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineVirtualDeviceGroupsDeviceGroup'
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVirtualMachineVirtualDeviceGroups:
      type: object
      description: |2
        A boxed array of *VirtualMachineVirtualDeviceGroups*. To be used in *Any* placeholders.
        
        ***Since:*** vSphere API Release 8.0.0.1
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineVirtualDeviceGroups'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualMachineVirtualDeviceGroupsDeviceGroup:
      type: object
      description: |2
        Base device group type.
      properties:
        groupInstanceKey:
          description: |2
            Group instance key.
            
            Unique integer referencing
            device group. During group creation client should
            use a temporary negative number. Once group is
            added to the virtual machine, server generates non-negative
            integer that stays constant during group lifetime.
            See *VirtualDevice.key* for details.
          type: integer
          format: int32
        deviceInfo:
          description: |2
            Provides a label and summary information for the device.
          $ref: '#/components/schemas/Description'
      required:
        - groupInstanceKey
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVirtualMachineVirtualDeviceGroupsDeviceGroup:
      type: object
      description: |2
        A boxed array of *VirtualMachineVirtualDeviceGroupsDeviceGroup*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineVirtualDeviceGroupsDeviceGroup'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualMachineVirtualDeviceGroupsVendorDeviceGroup:
      type: object
      description: |2
        Vendor device group.
        
        These groups are defined in the
        <code>*VirtualMachineVendorDeviceGroupInfo*</code>.
        When this group is added, all devices that form the group
        must be added in the same request.
        Modification of membership in the group is not allowed,
        devices cannot be added or removed.
        When group is removed, all devices that form the group
        must be removed in the same request.
      properties:
        deviceGroupName:
          description: |2
            The name of the vendor device group from
            <code>*VirtualMachineVendorDeviceGroupInfo*</code>.
          type: string
      required:
        - deviceGroupName
      allOf:
        - $ref: '#/components/schemas/VirtualMachineVirtualDeviceGroupsDeviceGroup'

    ArrayOfVirtualMachineVirtualDeviceGroupsVendorDeviceGroup:
      type: object
      description: |2
        A boxed array of *VirtualMachineVirtualDeviceGroupsVendorDeviceGroup*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineVirtualDeviceGroupsVendorDeviceGroup'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualMachineVirtualDeviceSwap:
      type: object
      description: |2
        Device Swap: Report current status of device swap feature.
        
        ***Since:*** vSphere API Release 8.0.0.1
      properties:
        lsiToPvscsi:
          $ref: '#/components/schemas/VirtualMachineVirtualDeviceSwapDeviceSwapInfo'
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVirtualMachineVirtualDeviceSwap:
      type: object
      description: |2
        A boxed array of *VirtualMachineVirtualDeviceSwap*. To be used in *Any* placeholders.
        
        ***Since:*** vSphere API Release 8.0.0.1
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineVirtualDeviceSwap'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualMachineVirtualDeviceSwapDeviceSwapInfo:
      type: object
      description: |2
        Information for the device swap operation.
        
        ***Since:*** vSphere API Release 8.0.0.1
      properties:
        enabled:
          description: |2
            Is the swap operation enabled for this virtual machine.
          type: boolean
        applicable:
          description: |2
            Is the swap operation applicable to this virtual machine?
            Operation is applicable if it is enabled for the virtual
            machine, for the host or cluster in which virtual machine
            resides, operating system supports device swap, and
            virtual machine has controllers that need to be replaced.
            
            This field is read-only and cannot be modified.
          type: boolean
        status:
          description: |2
            Status of the operation.
            
            One of
            *VirtualMachineVirtualDeviceSwapDeviceSwapStatus_enum*
            This field is read-only and cannot be modified.
          type: string
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVirtualMachineVirtualDeviceSwapDeviceSwapInfo:
      type: object
      description: |2
        A boxed array of *VirtualMachineVirtualDeviceSwapDeviceSwapInfo*. To be used in *Any* placeholders.
        
        ***Since:*** vSphere API Release 8.0.0.1
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineVirtualDeviceSwapDeviceSwapInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualHardware:
      type: object
      description: |2
        The VirtualHardware data object type contains the complete configuration
        of the hardware in a virtual machine.
      properties:
        numCPU:
          description: |2
            Number of virtual CPUs present in this virtual machine.
          type: integer
          format: int32
        numCoresPerSocket:
          description: |2
            Number of cores used to distribute virtual CPUs among sockets
            in this virtual machine.
            
            This field should be ignored for powered off VM with
            autoCoresPerSocket equals TRUE, because the virtual socket size
            will be assigned during power-on.
            This field could be unset for releases prior to 7.0 U3, and it
            implies numCoresPerSocket is 1.
            In other cases, this field represents the actual virtual socket
            size seen by the virtual machine.
          type: integer
          format: int32
        autoCoresPerSocket:
          description: |2
            Cores per socket is automatically determined.
            
            ***Since:*** vSphere API Release 8.0.0.1
          type: boolean
        memoryMB:
          description: |2
            Memory size, in MB.
          type: integer
          format: int32
        virtualICH7MPresent:
          description: |2
            Does this virtual machine have Virtual Intel I/O Controller Hub 7
          type: boolean
        virtualSMCPresent:
          description: |2
            Does this virtual machine have System Management Controller
          type: boolean
        device:
          description: |2
            The set of virtual devices belonging to the virtual machine.
            
            This list is unordered.
          type: array
          items:
            $ref: '#/components/schemas/VirtualDevice'
        motherboardLayout:
          description: |2
            One of motherboardLayout choices.
            
            Default is i440bxHostBridge. See
            *VirtualHardware.motherboardLayout*
            
            ***Since:*** vSphere API Release 8.0.0.1
          type: string
        simultaneousThreads:
          description: |2
            Number of SMT (Simultaneous multithreading) threads.
            
            If unset, then system defaults are in use.
            
            ***Since:*** vSphere API Release 8.0.0.1
          type: integer
          format: int32
      required:
        - numCPU
        - memoryMB
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVirtualHardware:
      type: object
      description: |2
        A boxed array of *VirtualHardware*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualHardware'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualHardwareOption:
      type: object
      description: |2
        The VirtualHardwareOption data object contains the options available
        for all virtual devices.
      properties:
        hwVersion:
          description: |2
            The virtual hardware version.
          type: integer
          format: int32
        virtualDeviceOption:
          description: |2
            Array of virtual device options valid for this virtual
            machine configuration.
            
            The list is unordered.
          type: array
          items:
            $ref: '#/components/schemas/VirtualDeviceOption'
        deviceListReadonly:
          description: |2
            Whether the set of virtual devices can be changed, e.g., can devices
            be added or removed.
            
            This does not preclude changing devices.
          type: boolean
        numCPU:
          description: |2
            List of acceptable values for the number of CPUs supported by this
            *ConfigOption*.
            
            This is usually superceded by the information available in the
            guest operating system descriptors.
            The guest operating system descriptor describes a maximum CPU
            count, but the acceptable values are still constrained to the
            set specified here. The default value is stored at index 0 in the list.
          type: array
          items:
            type: integer
            format: int32
        numCoresPerSocket:
          description: |2
            The minimum, maximum and default number of cores per socket that
            can be used when distributing virtual CPUs.
          $ref: '#/components/schemas/IntOption'
        autoCoresPerSocket:
          description: |2
            Whether auto cores per socket is supported.
            
            ***Since:*** vSphere API Release 8.0.0.1
          $ref: '#/components/schemas/BoolOption'
        numCpuReadonly:
          description: |2
            Can the number of virtual CPUs be changed
          type: boolean
        memoryMB:
          description: |2
            The minimum, maximum, and default memory options, in MB, per virtual machine,
            for this VirtualHardwareOption.
            
            These
            values are typically overruled by the supported and recommended
            values specified in the *GuestOsDescriptor* class.
          $ref: '#/components/schemas/LongOption'
        numPCIControllers:
          description: |2
            The minimum, maximum, and default number of PCI controllers for
            this virtual machine configuration.
          $ref: '#/components/schemas/IntOption'
        numIDEControllers:
          description: |2
            The minimum, maximum, and default number of IDE controllers for
            this virtual machine configuration.
            
            Note: SCSI controllers sit
            on the PCI controller so their options (minimum, maximum, and default values)
            are contained inside the
            *VirtualPCIControllerOption*
            class.
          $ref: '#/components/schemas/IntOption'
        numUSBControllers:
          description: |2
            The minimum, maximum, and default number of USB controllers for
            this virtual machine configuration.
          $ref: '#/components/schemas/IntOption'
        numUSBXHCIControllers:
          description: |2
            The minimum, maximum, and default number of XHCI (USB 3.0) controllers for
            this virtual machine configuration.
          $ref: '#/components/schemas/IntOption'
        numSIOControllers:
          description: |2
            The minimum, maximum, and default number of SIO controllers for
            this virtual machine configuration.
          $ref: '#/components/schemas/IntOption'
        numPS2Controllers:
          description: |2
            The minimum, maximum, and default number of PS2 controllers for
            this virtual machine configuration.
          $ref: '#/components/schemas/IntOption'
        licensingLimit:
          description: |2
            List of propery names which limits are given be a licensing
            restriction of the underlying product, e.g., a limit that is
            not derived based on the product or hardware features.
            
            For example, the property name "numCPU"
          type: array
          items:
            type: string
        numSupportedWwnPorts:
          description: |2
            The minimum, maximum and default number of NPIV WorldWideNode names
            supported for this virtual machine configuration.
          $ref: '#/components/schemas/IntOption'
        numSupportedWwnNodes:
          description: |2
            The minimum, maximum and default number of NPIV WorldWidePort names
            supported for this virtual machine configuration.
          $ref: '#/components/schemas/IntOption'
        resourceConfigOption:
          description: |2
            Default value and value range for *ResourceConfigOption*
          $ref: '#/components/schemas/ResourceConfigOption'
        numNVDIMMControllers:
          description: |2
            The minimum, maximum and default number of virtual NVDIMM controllers
            for this virtual machine configuration.
          $ref: '#/components/schemas/IntOption'
        numTPMDevices:
          description: |2
            The minimum, maximum, and default number of virtual TPMs.
          $ref: '#/components/schemas/IntOption'
        numWDTDevices:
          description: |2
            The minimum, maximum, and default number of virtual watchdog timers.
          $ref: '#/components/schemas/IntOption'
        numPrecisionClockDevices:
          description: |2
            The minimum, maximum and default number of PrecisionClock devices.
          $ref: '#/components/schemas/IntOption'
        epcMemoryMB:
          description: |2
            The minimum, maximum and default value of Intel's Secure Guard Extensions
            Enclave Page Cache (EPC) memory.
          $ref: '#/components/schemas/LongOption'
        acpiHostBridgesFirmware:
          description: |2
            Empty for HWv17 &amp; older, \["efi"\] for HWv18.
            
            ***Since:*** vSphere API Release 8.0.0.1
          type: array
          items:
            type: string
        numCpuSimultaneousThreads:
          description: |2
            The minimum, maximum and default number of CPU simultaneous threads.
            
            ***Since:*** vSphere API Release 8.0.0.1
          $ref: '#/components/schemas/IntOption'
        numNumaNodes:
          description: |2
            The minimum, maximum and default number of NUMA nodes.
            
            ***Since:*** vSphere API Release 8.0.0.1
          $ref: '#/components/schemas/IntOption'
        numDeviceGroups:
          description: |2
            Maximum number of device groups.
            
            ***Since:*** vSphere API Release 8.0.0.1
          $ref: '#/components/schemas/IntOption'
        deviceGroupTypes:
          description: |2
            Supported device group types.
            
            ***Since:*** vSphere API Release 8.0.0.1
          type: array
          items:
            type: string
      required:
        - hwVersion
        - virtualDeviceOption
        - deviceListReadonly
        - numCPU
        - numCoresPerSocket
        - numCpuReadonly
        - memoryMB
        - numPCIControllers
        - numIDEControllers
        - numUSBControllers
        - numUSBXHCIControllers
        - numSIOControllers
        - numPS2Controllers
        - resourceConfigOption
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVirtualHardwareOption:
      type: object
      description: |2
        A boxed array of *VirtualHardwareOption*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualHardwareOption'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualMachineVirtualNuma:
      type: object
      description: |2
        This data object describes the virtual NUMA configuration for
        this virtual machine and configured through ConfigSpec.
        
        ***Since:*** vSphere API Release 8.0.0.1
      properties:
        coresPerNumaNode:
          description: |2
            Cores per vNUMA node for this VM.
            
            The number of vNUMA nodes is
            calculated by total number of cores divided by corePerNumaNode.
            If set to be zero, it clears any manual override and autosize
            vNUMA node.
            If set to be non zero, VM uses the value as vNUMA node size.
            If unset, the VM continue to follow the behavior in last poweron.
          type: integer
          format: int32
        exposeVnumaOnCpuHotadd:
          description: |2
            Capability to expose virtual NUMA when CPU hotadd is enabled.
            
            If set to true, ESXi will consider exposing virtual NUMA to
            the VM when CPU hotadd is enabled.
            If set to false, ESXi will enforce the VM to have single
            virtual NUMA node when CPU hotadd is enabled.
            If unset, the VM continue to follow the behavior in last poweron.
          type: boolean
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVirtualMachineVirtualNuma:
      type: object
      description: |2
        A boxed array of *VirtualMachineVirtualNuma*. To be used in *Any* placeholders.
        
        ***Since:*** vSphere API Release 8.0.0.1
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineVirtualNuma'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualMachineVirtualNumaInfo:
      type: object
      description: |2
        vNUMA: This is read-only data for ConfigInfo since this portion is
        not configurable.
        
        ***Since:*** vSphere API Release 8.0.0.1
      properties:
        coresPerNumaNode:
          description: |2
            Cores per NUMA node.
            
            When this virtual machine is powered off and "autoCoresPerNumaNode"
            is True, coresPerNumaNode will be assigned during power-on and this
            field should be ignored.
            In other cases, this field represents the virtual NUMA node size
            seen by the guest.
          type: integer
          format: int32
        autoCoresPerNumaNode:
          description: |2
            Whether coresPerNode is determined automatically.
          type: boolean
        vnumaOnCpuHotaddExposed:
          description: |2
            Whether virtual NUMA topology is exposed when CPU hotadd is
            enabled.
          type: boolean
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVirtualMachineVirtualNumaInfo:
      type: object
      description: |2
        A boxed array of *VirtualMachineVirtualNumaInfo*. To be used in *Any* placeholders.
        
        ***Since:*** vSphere API Release 8.0.0.1
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineVirtualNumaInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualMachineVirtualPMem:
      type: object
      description: |2
        Virtual Persistent Memory configuration for the VM.
        
        ***Since:*** vSphere API Release 7.0.3.0
      properties:
        snapshotMode:
          description: |2
            An enum describing behavior of NVDIMM devices when a VM snapshot is taken
            and restored.
            
            If unset, taking a VM snapshot will fail when the VM is
            configured with NVDIMMs. See *VirtualMachineVirtualPMemSnapshotMode_enum* for supported values.
            The snapshot mode applies to all NVDIMMs configured for the VM.
            Property is currently only applicable to VMs with virtual NVDIMMs and not
            applicable to vPMem disks.
            Setting this property will fail if the VM has existing snapshots.
          type: string
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVirtualMachineVirtualPMem:
      type: object
      description: |2
        A boxed array of *VirtualMachineVirtualPMem*. To be used in *Any* placeholders.
        
        ***Since:*** vSphere API Release 7.0.3.0
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineVirtualPMem'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualMachineImportSpec:
      type: object
      description: |2
        A VmImportSpec is used by *ResourcePool.importVApp* when importing entities.
        
        It provides all information needed to import a *VirtualMachine*. So far,
        this coincides with *VirtualMachineConfigSpec*.
        
        A VmImportSpec can be contained in a *VirtualAppImportSpec* as part of
        the ImportSpec for an entity.
        
        See also *ImportSpec*.
      properties:
        configSpec:
          description: |2
            Configuration for the virtual machine.
          $ref: '#/components/schemas/VirtualMachineConfigSpec'
        resPoolEntity:
          deprecated: true
          description: |2
            Deprecated as of vSphere API 5.1.
            
            If specified, this resource pool will be used as the parent resource pool and the
            virtual machine will be made a linked child to the parent vApp.
            
            This field is ignored
            for the root node in an ImportSpec tree.
            
            Refers instance of *ResourcePool*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - configSpec
      allOf:
        - $ref: '#/components/schemas/ImportSpec'

    ArrayOfVirtualMachineImportSpec:
      type: object
      description: |2
        A boxed array of *VirtualMachineImportSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineImportSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualMachineWindowsQuiesceSpec:
      type: object
      description: |2
        This data object type encapsulates configuration settings
        when creating a virtual machine quiesced snapshot.
      properties:
        vssBackupType:
          description: |2
            The property to indicate what type of VSS backup operation is going
            to be performed on the virtual machine.
            
            See VSS\_BACKUP\_TYPE on MSDN:
            https://msdn.microsoft.com/en-us/library/aa384679(v=vs.85).aspx
          type: integer
          format: int32
        vssBootableSystemState:
          description: |2
            The property to indicate if a bootable system state during VSS backup
            to be performed on the virtual machine.
          type: boolean
        vssPartialFileSupport:
          description: |2
            The property to indicate if partial file support is enabled during VSS
            backup to be performed on the virtual machine.
          type: boolean
        vssBackupContext:
          description: |2
            The property to indicate what context of VSS backup operation to be
            performed on the virtual machine.
            
            For the list of supported values,
            see *VirtualMachineWindowsQuiesceSpecVssBackupContext_enum*
          type: string
      allOf:
        - $ref: '#/components/schemas/VirtualMachineGuestQuiesceSpec'

    ArrayOfVirtualMachineWindowsQuiesceSpec:
      type: object
      description: |2
        A boxed array of *VirtualMachineWindowsQuiesceSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineWindowsQuiesceSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    CheckResult:
      type: object
      description: |2
        The result of a call to any of the methods in either
        *VirtualMachineCompatibilityChecker* or *VirtualMachineProvisioningChecker*.
      properties:
        vm:
          description: |2
            The virtual machine involved in the testing.
            
            Refers instance of *VirtualMachine*.
          $ref: '#/components/schemas/ManagedObjectReference'
        host:
          description: |2
            The host involved in the testing.
            
            Refers instance of *HostSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
        warning:
          description: |2
            A list of faults representing problems which may
            require attention, but which are not fatal.
          type: array
          items:
            $ref: '#/components/schemas/MethodFault'
        error:
          description: |2
            A list of faults representing problems which are fatal
            to the operation.
            
            For *VirtualMachineProvisioningChecker* an error means that the
            given provisioning operation would fail.
            For *VirtualMachineCompatibilityChecker* an error means that either
            a power-on of this virtual machine would fail, or that the
            virtual machine would not run correctly once powered-on.
          type: array
          items:
            $ref: '#/components/schemas/MethodFault'
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfCheckResult:
      type: object
      description: |2
        A boxed array of *CheckResult*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/CheckResult'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    CustomizationAdapterMapping:
      type: object
      description: |2
        Data object type to associate a virtual network adapter with its IP settings.
      properties:
        macAddress:
          description: |2
            The MAC address of a network adapter being customized.
            
            The client cannot change
            this value because the guest operating system has no control over the MAC
            address of a virtual network adapter.
            
            This property is optional. If it is not included, the customization process maps
            the settings from the list of AdapterMappings.IPSettings in the
            Specification.nicSettingMap to the virtual machine's network adapters, in PCI
            slot order. The first virtual network adapter on the PCI bus is assigned
            nicSettingMap\[0\].IPSettings, the second adapter is assigned
            nicSettingMap\[1\].IPSettings, and so on.
            
            In vSphere 7.0 series, the MAC addresses must be specified in the
            ascending order of pciSlotNumber, otherwise a MAC address mismatch error
            will be reported. For further details, see the
            https://kb.vmware.com/s/article/87648
          type: string
        adapter:
          description: |2
            The IP settings for the associated virtual network adapter.
          $ref: '#/components/schemas/CustomizationIPSettings'
      required:
        - adapter
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfCustomizationAdapterMapping:
      type: object
      description: |2
        A boxed array of *CustomizationAdapterMapping*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/CustomizationAdapterMapping'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    CustomizationAutoIpV6Generator:
      type: object
      description: |2
        Use automatic address configuration to generate linklocal ipv6 addresses
      allOf:
        - $ref: '#/components/schemas/CustomizationIpV6Generator'

    ArrayOfCustomizationAutoIpV6Generator:
      type: object
      description: |2
        A boxed array of *CustomizationAutoIpV6Generator*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/CustomizationAutoIpV6Generator'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    CustomizationCloudinitPrep:
      type: object
      description: |2
        Guest customization settings to customize a Linux guest operating
        system with raw cloud-init data.
        
        ***Since:*** vSphere API Release 7.0.3.0
      properties:
        metadata:
          description: |2
            Metadata includes the network, instance id and hostname that cloud-init
            processes to configure the VM.
            
            It is in json or yaml format.
            The max size of the metadata is 524288 bytes.
            See detail information about <a href="https://cloudinit.readthedocs.io/en/latest/topics/instancedata.html#"target="_blank">Instance Metadata</a>.
          type: string
        userdata:
          description: |2
            Userdata is the user custom content that cloud-init processes to
            configure the VM.
            
            The max size of the userdata is 524288 bytes.
            See detail information about <a href="https://cloudinit.readthedocs.io/en/latest/topics/format.html"target="_blank">User-Data formats</a>.
          type: string
      required:
        - metadata
      allOf:
        - $ref: '#/components/schemas/CustomizationIdentitySettings'

    ArrayOfCustomizationCloudinitPrep:
      type: object
      description: |2
        A boxed array of *CustomizationCloudinitPrep*. To be used in *Any* placeholders.
        
        ***Since:*** vSphere API Release 7.0.3.0
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/CustomizationCloudinitPrep'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    CustomizationCustomIpGenerator:
      type: object
      description: |2
        Use a command-line program configured with the VirtualCenter server.
      properties:
        argument:
          description: |2
            An optional argument that is passed to the utility for this IP address.
            
            The
            meaning of this field is user-defined, in the script.
          type: string
      allOf:
        - $ref: '#/components/schemas/CustomizationIpGenerator'

    ArrayOfCustomizationCustomIpGenerator:
      type: object
      description: |2
        A boxed array of *CustomizationCustomIpGenerator*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/CustomizationCustomIpGenerator'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    CustomizationCustomIpV6Generator:
      type: object
      description: |2
        Use a command-line program configured with the VirtualCenter server.
      properties:
        argument:
          description: |2
            An optional argument that is passed to the utility for this ipv6 address.
            
            The
            meaning of this field is user-defined, in the script.
          type: string
      allOf:
        - $ref: '#/components/schemas/CustomizationIpV6Generator'

    ArrayOfCustomizationCustomIpV6Generator:
      type: object
      description: |2
        A boxed array of *CustomizationCustomIpV6Generator*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/CustomizationCustomIpV6Generator'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    CustomizationCustomName:
      type: object
      description: |2
        Specifies that the VirtualCenter server will launch an external application to
        generate the (hostname/IP).
        
        The command line for this application must be specified
        in the server configuration file (vpxd.cfg) in the vpxd/name-ip-generator key.
      properties:
        argument:
          description: |2
            An optional argument that is passed to the utility for this IP address.
            
            The
            meaning of this field is user-defined in the script.
          type: string
      allOf:
        - $ref: '#/components/schemas/CustomizationName'

    ArrayOfCustomizationCustomName:
      type: object
      description: |2
        A boxed array of *CustomizationCustomName*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/CustomizationCustomName'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    CustomizationDhcpIpGenerator:
      type: object
      description: |2
        Use a DHCP server to configure the virtual network adapter.
      allOf:
        - $ref: '#/components/schemas/CustomizationIpGenerator'

    ArrayOfCustomizationDhcpIpGenerator:
      type: object
      description: |2
        A boxed array of *CustomizationDhcpIpGenerator*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/CustomizationDhcpIpGenerator'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    CustomizationDhcpIpV6Generator:
      type: object
      description: |2
        Use a DHCP server to configure ipv6 address
      allOf:
        - $ref: '#/components/schemas/CustomizationIpV6Generator'

    ArrayOfCustomizationDhcpIpV6Generator:
      type: object
      description: |2
        A boxed array of *CustomizationDhcpIpV6Generator*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/CustomizationDhcpIpV6Generator'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    CustomizationFixedIp:
      type: object
      description: |2
        Use a static IP Address for the virtual network adapter.
      properties:
        ipAddress:
          type: string
      required:
        - ipAddress
      allOf:
        - $ref: '#/components/schemas/CustomizationIpGenerator'

    ArrayOfCustomizationFixedIp:
      type: object
      description: |2
        A boxed array of *CustomizationFixedIp*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/CustomizationFixedIp'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    CustomizationFixedIpV6:
      type: object
      description: |2
        Use a static ipv6 address for the virtual network adapter
      properties:
        ipAddress:
          type: string
        subnetMask:
          type: integer
          format: int32
      required:
        - ipAddress
        - subnetMask
      allOf:
        - $ref: '#/components/schemas/CustomizationIpV6Generator'

    ArrayOfCustomizationFixedIpV6:
      type: object
      description: |2
        A boxed array of *CustomizationFixedIpV6*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/CustomizationFixedIpV6'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    CustomizationFixedName:
      type: object
      description: |2
        A fixed name.
      properties:
        name:
          description: |2
            The virtual machine name specified by the client.
          type: string
      required:
        - name
      allOf:
        - $ref: '#/components/schemas/CustomizationName'

    ArrayOfCustomizationFixedName:
      type: object
      description: |2
        A boxed array of *CustomizationFixedName*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/CustomizationFixedName'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    CustomizationGlobalIPSettings:
      type: object
      description: |2
        A collection of global IP settings for a virtual network adapter.
        
        In Linux, DNS
        server settings are global. The settings can either be statically set or supplied
        by a DHCP server.
      properties:
        dnsSuffixList:
          description: |2
            List of name resolution suffixes for the virtual network adapter.
            
            This list
            applies to both Windows and Linux guest customization. For Linux, this setting
            is global, whereas in Windows, this setting is listed on a per-adapter basis,
            even though the setting is global in Windows.
          type: array
          items:
            type: string
        dnsServerList:
          description: |2
            List of DNS servers, for a virtual network adapter with a static IP address.
            
            If
            this list is empty, then the guest operating system is expected to use a DHCP
            server to get its DNS server settings. These settings configure the virtual
            machine to use the specified DNS servers. These DNS server settings are listed
            in order of preference.
          type: array
          items:
            type: string
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfCustomizationGlobalIPSettings:
      type: object
      description: |2
        A boxed array of *CustomizationGlobalIPSettings*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/CustomizationGlobalIPSettings'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    CustomizationGuiRunOnce:
      type: object
      description: |2
        The commands listed in the GuiRunOnce data object type are executed when a user
        logs on the first time after customization completes.
        
        The logon may be driven by
        the *AutoLogon* setting.
        
        The GuiRunOnce data object type maps to the GuiRunOnce key in the
        `sysprep.xml` answer file. These values are transferred into the
        `sysprep.xml` file that VirtualCenter stores on the target virtual disk. For
        more detailed information, see <a href="https://technet.microsoft.com/en-us/library/cc771830(v=ws.10).aspx"target="_blank">Performing Unattended Installations</a>.
      properties:
        commandList:
          description: |2
            A list of commands to run at first user logon, after guest customization.
          type: array
          items:
            type: string
      required:
        - commandList
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfCustomizationGuiRunOnce:
      type: object
      description: |2
        A boxed array of *CustomizationGuiRunOnce*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/CustomizationGuiRunOnce'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    CustomizationGuiUnattended:
      type: object
      description: |2
        The GuiUnattended type maps to the GuiUnattended key in the `sysprep.xml`
        answer file.
        
        These values are plugged directly into the `sysprep.xml` file
        that VirtualCenter stores on the target virtual disk. For more detailed
        information, see <a href="https://technet.microsoft.com/en-us/library/cc771830(v=ws.10).aspx"target="_blank">Performing Unattended Installations</a>.
      properties:
        password:
          description: |2
            The new administrator password for the machine.
            
            To specify that the password
            should be set to blank (that is, no password), set the password value to NULL.
            Because of encryption, "" is NOT a valid value.
            
            If password is set to blank and *CustomizationGuiUnattended.autoLogon* is set, the
            guest customization will fail.
            
            If the XML file is generated by the VirtualCenter Customization Wizard, then the
            password is encrypted. Otherwise, the client should set the plainText attribute
            to true, so that the customization process does not attempt to decrypt the
            string.
          $ref: '#/components/schemas/CustomizationPassword'
        timeZone:
          description: |2
            The time zone index for the virtual machine.
            
            Numbers correspond to time zones
            listed at <a href="https://support.microsoft.com/en-us/help/973627/microsoft-time-zone-index-values"target="_blank">Microsoft Time Zone Index Values</a>.
          type: integer
          format: int32
        autoLogon:
          description: |2
            Flag to determine whether or not the machine automatically logs on as
            Administrator.
            
            See also the password property.
            
            If the AutoLogon flag is set, *CustomizationGuiUnattended.password* must not be
            blank or the guest customization will fail.
          type: boolean
        autoLogonCount:
          description: |2
            If the AutoLogon flag is set, then the AutoLogonCount property specifies the
            number of times the machine should automatically log on as Administrator.
            
            Generally it should be 1, but if your setup requires a number of reboots, you
            may want to increase it. This number may be determined by the list of commands
            executed by the *GuiRunOnce* command.
          type: integer
          format: int32
      required:
        - timeZone
        - autoLogon
        - autoLogonCount
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfCustomizationGuiUnattended:
      type: object
      description: |2
        A boxed array of *CustomizationGuiUnattended*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/CustomizationGuiUnattended'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    CustomizationIPSettings:
      type: object
      description: |2
        IP settings for a virtual network adapter.
      properties:
        ip:
          description: |2
            Specification to obtain a unique IP address for this virtual network adapter.
          $ref: '#/components/schemas/CustomizationIpGenerator'
        subnetMask:
          description: |2
            Subnet mask for this virtual network adapter.
          type: string
        gateway:
          description: |2
            For a virtual network adapter with a static IP address, this data object type
            contains a list of gateways, in order of preference.
          type: array
          items:
            type: string
        ipV6Spec:
          description: |2
            This contains the IpGenerator, subnet mask and gateway info for all
            the ipv6 addresses associated with the virtual network adapter.
          $ref: '#/components/schemas/CustomizationIPSettingsIpV6AddressSpec'
        dnsServerList:
          description: |2
            A list of server IP addresses to use for DNS lookup in a Windows guest operating
            system.
            
            In Windows, these settings are adapter-specific, whereas in Linux, they
            are global. As a result, the Linux guest customization process ignores this
            setting and looks for its DNS servers in the globalIPSettings object.
            
            Specify these servers in order of preference. If this list is not empty, and if
            a DHCP IpGenerator is used, then these settings override the DHCP settings.
          type: array
          items:
            type: string
        dnsDomain:
          description: |2
            A DNS domain suffix such as vmware.com.
          type: string
        primaryWINS:
          description: |2
            The IP address of the primary WINS server.
            
            This property is ignored for Linux
            guest operating systems.
          type: string
        secondaryWINS:
          description: |2
            The IP address of the secondary WINS server.
            
            This property is ignored for Linux
            guest operating systems.
          type: string
        netBIOS:
          description: |2
            NetBIOS setting for Windows.
          $ref: '#/components/schemas/CustomizationNetBIOSMode_enum'
      required:
        - ip
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfCustomizationIPSettings:
      type: object
      description: |2
        A boxed array of *CustomizationIPSettings*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/CustomizationIPSettings'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    CustomizationIPSettingsIpV6AddressSpec:
      type: object
      description: |2
        IPv6 settings
      properties:
        ip:
          description: |2
            ipv6 address generators
          type: array
          items:
            $ref: '#/components/schemas/CustomizationIpV6Generator'
        gateway:
          description: |2
            gateways
          type: array
          items:
            type: string
      required:
        - ip
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfCustomizationIPSettingsIpV6AddressSpec:
      type: object
      description: |2
        A boxed array of *CustomizationIPSettingsIpV6AddressSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/CustomizationIPSettingsIpV6AddressSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    CustomizationIdentification:
      type: object
      description: |2
        The Identification data object type provides information needed to join a workgroup
        or domain.
        
        The Identification data object type maps to the Identification key in the
        `sysprep.xml` answer file. These values are transferred into the
        `sysprep.xml` file that VirtualCenter stores on the target virtual disk. For
        more detailed information, see <a href="https://technet.microsoft.com/en-us/library/cc771830(v=ws.10).aspx"target="_blank">Performing Unattended Installations</a>.
      properties:
        joinWorkgroup:
          description: |2
            The workgroup that the virtual machine should join.
            
            If this value is supplied,
            then the domain name and authentication fields must be empty.
          type: string
        joinDomain:
          description: |2
            The domain that the virtual machine should join.
            
            If this value is supplied, then
            domainAdmin and domainAdminPassword must also be supplied, and the workgroup
            name must be empty.
          type: string
        domainAdmin:
          description: |2
            This is the domain user account used for authentication if the virtual machine
            is joining a domain.
            
            The user does not need to be a domain administrator, but
            the account must have the privileges required to add computers to the domain.
          type: string
        domainAdminPassword:
          description: |2
            This is the password for the domain user account used for authentication if the
            virtual machine is joining a domain.
          $ref: '#/components/schemas/CustomizationPassword'
        domainOU:
          description: |2
            This is the MachineObjectOU which specifies the full LDAP path name of
            the OU to which the computer belongs.
            
            For example, OU=MyOu,DC=MyDom,DC=MyCompany,DC=com
            Refer to: https://docs.microsoft.com/en-us/windows-hardware/customize/
            desktop/unattend/microsoft-windows-unattendedjoin-
            identification-machineobjectou
            
            ***Since:*** vSphere API Release 8.0.2.0
          type: string
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfCustomizationIdentification:
      type: object
      description: |2
        A boxed array of *CustomizationIdentification*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/CustomizationIdentification'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    CustomizationIdentitySettings:
      type: object
      description: |2
        Base type for sysprep, sysprepText, or linuxPrep object type.
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfCustomizationIdentitySettings:
      type: object
      description: |2
        A boxed array of *CustomizationIdentitySettings*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/CustomizationIdentitySettings'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    CustomizationIpGenerator:
      type: object
      description: |2
        Base type for the various IP specification possibilities.
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfCustomizationIpGenerator:
      type: object
      description: |2
        A boxed array of *CustomizationIpGenerator*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/CustomizationIpGenerator'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    CustomizationIpV6Generator:
      type: object
      description: |2
        Base type for the various IpV6 specification possibilities
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfCustomizationIpV6Generator:
      type: object
      description: |2
        A boxed array of *CustomizationIpV6Generator*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/CustomizationIpV6Generator'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    CustomizationLicenseFilePrintData:
      type: object
      description: |2
        The LicenseFilePrintData type maps directly to the LicenseFilePrintData key in the
        `sysprep.xml` answer file.
        
        These values are transferred into the
        `sysprep.xml` file that VirtualCenter stores on the target virtual disk. For
        more detailed information, see <a href="https://technet.microsoft.com/en-us/library/cc771830(v=ws.10).aspx"target="_blank">Performing Unattended Installations</a>.
        LicenseFilePrintData provides licensing information for Windows server operating
        systems.
      properties:
        autoMode:
          description: |2
            Server licensing mode
          $ref: '#/components/schemas/CustomizationLicenseDataMode_enum'
        autoUsers:
          description: |2
            This key is valid only if AutoMode = PerServer.
            
            The integer value indicates the
            number of client licenses purchased for the VirtualCenter server being
            installed.
          type: integer
          format: int32
      required:
        - autoMode
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfCustomizationLicenseFilePrintData:
      type: object
      description: |2
        A boxed array of *CustomizationLicenseFilePrintData*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/CustomizationLicenseFilePrintData'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    CustomizationLinuxOptions:
      type: object
      description: |2
        Base object type for optional operations supported by the customization process for
        Linux.
      allOf:
        - $ref: '#/components/schemas/CustomizationOptions'

    ArrayOfCustomizationLinuxOptions:
      type: object
      description: |2
        A boxed array of *CustomizationLinuxOptions*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/CustomizationLinuxOptions'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    CustomizationLinuxPrep:
      type: object
      description: |2
        This is the Linux counterpart to the Windows Sysprep object.
        
        LinuxPrep contains
        machine-wide settings that identify a Linux machine in the same way that the
        Sysprep type identifies a Windows machine.
      properties:
        hostName:
          description: |2
            The network host name of the (Linux) virtual machine.
          $ref: '#/components/schemas/CustomizationName'
        domain:
          description: |2
            The fully qualified domain name.
          type: string
        timeZone:
          description: |2
            The case-sensitive timezone, such as Europe/Sofia.
            
            <a href="timezone.html"title="Display list of Valid timeZone values...">
            **Valid timeZone values**</a> are based on the tz (timezone)
            database used by Linux and other Unix systems.
            The values are strings (xsd:string) in the form "Area/Location," in which
            Area is a continent or ocean name, and Location is the city, island, or
            other regional designation.
            
            See the <a href="https://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=2145518"target="_blank">List of supported time zones for different vSphere versions in Linux/Unix systems</a>.
          type: string
        hwClockUTC:
          description: |2
            Specifies whether the hardware clock is in UTC or local time.
            - True when the hardware clock is in UTC.
            - False when the hardware clock is in local time.
          type: boolean
        scriptText:
          description: |2
            The script to run before and after GOS customization.
          type: string
        compatibleCustomizationMethod:
          description: |2
            The compatible customization method is an identifier of a customization
            strategy which is implementable in a group of Linux operating systems.
            
            This value does not need to be set if your operating system is officially
            supported by VMware guest operating system customization. When using a
            Linux operating system which hasn't been officially supported and it is
            designed to be 100% bug-for-bug compatible with an officially supported
            Linux operating system, it can be customized by an existing customization
            method.
            
            Please set the compatible customization method to a supported string value
            e.g. "GOSC\_METHOD\_1".  
            See <a href="https://kb.vmware.com/s/article/95903"target="_blank">Supported compatible customization method list</a>.
            
            ***Since:*** vSphere API Release 8.0.3.0
          type: string
      required:
        - hostName
        - domain
      allOf:
        - $ref: '#/components/schemas/CustomizationIdentitySettings'

    ArrayOfCustomizationLinuxPrep:
      type: object
      description: |2
        A boxed array of *CustomizationLinuxPrep*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/CustomizationLinuxPrep'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    CustomizationName:
      type: object
      description: |2
        A base object type for a virtual machine name that can be either fixed or
        auto-generated.
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfCustomizationName:
      type: object
      description: |2
        A boxed array of *CustomizationName*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/CustomizationName'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    CustomizationOptions:
      type: object
      description: |2
        Base object type for optional operations supported by the customization process.
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfCustomizationOptions:
      type: object
      description: |2
        A boxed array of *CustomizationOptions*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/CustomizationOptions'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    CustomizationPassword:
      type: object
      description: |2
        Contains a password string and a flag that specifies whether the string is in plain
        text or encrypted.
      properties:
        value:
          description: |2
            The password string.
            
            It is encrypted if the associated plainText flag is false.
          type: string
          format: password
        plainText:
          description: |2
            Flag to specify whether or not the password is in plain text, rather than
            encrypted.
          type: boolean
      required:
        - value
        - plainText
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfCustomizationPassword:
      type: object
      description: |2
        A boxed array of *CustomizationPassword*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/CustomizationPassword'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    CustomizationPrefixName:
      type: object
      description: |2
        Specifies that a unique name should be generated by concatenating the base string
        with a number.
        
        Virtual machine names are unique across the set of hosts and virtual machines known
        to the VirtualCenter instance. VirtualCenter tracks the network names of virtual
        machines as well as hosts. VMware Tools runs in a guest operating system and
        reports information to VirtualCenter, including the network name of the guest.
      properties:
        base:
          description: |2
            Base prefix, to which a unique number is appended.
          type: string
      required:
        - base
      allOf:
        - $ref: '#/components/schemas/CustomizationName'

    ArrayOfCustomizationPrefixName:
      type: object
      description: |2
        A boxed array of *CustomizationPrefixName*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/CustomizationPrefixName'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    CustomizationSpec:
      type: object
      description: |2
        The Specification data object type contains information required to customize a
        virtual machine when deploying it or migrating it to a new host.
      properties:
        options:
          description: |2
            Optional operations (either LinuxOptions or WinOptions).
          $ref: '#/components/schemas/CustomizationOptions'
        identity:
          description: |2
            Network identity and settings, similar to Microsoft's Sysprep tool.
            
            This is a
            Sysprep, LinuxPrep, CloudinitPrep, or SysprepText object.
          $ref: '#/components/schemas/CustomizationIdentitySettings'
        globalIPSettings:
          description: |2
            Global IP settings constitute the IP settings that are not specific to a
            particular virtual network adapter.
          $ref: '#/components/schemas/CustomizationGlobalIPSettings'
        nicSettingMap:
          description: |2
            IP settings that are specific to a particular virtual network adapter.
            
            The
            AdapterMapping object maps a network adapter's MAC address to its Adapter
            settings object. May be empty if there are no network adapters, else should
            match number of network adapters in the VM.
          type: array
          items:
            $ref: '#/components/schemas/CustomizationAdapterMapping'
        encryptionKey:
          description: |2
            Byte array containing the public key used to encrypt any passwords stored in the
            specification.
            
            Both the client and the server can use this to determine if
            stored passwords can be decrypted by the server or if the passwords need to be
            re-entered and re-encrypted before the specification can be used.
          type: array
          items:
            type: integer
            minimum: -128
            maximum: 127
      required:
        - identity
        - globalIPSettings
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfCustomizationSpec:
      type: object
      description: |2
        A boxed array of *CustomizationSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/CustomizationSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    CustomizationStatelessIpV6Generator:
      type: object
      description: |2
        Use stateless autoconfiguration to configure to ipv6 address
      allOf:
        - $ref: '#/components/schemas/CustomizationIpV6Generator'

    ArrayOfCustomizationStatelessIpV6Generator:
      type: object
      description: |2
        A boxed array of *CustomizationStatelessIpV6Generator*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/CustomizationStatelessIpV6Generator'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    CustomizationSysprep:
      type: object
      description: |2
        An object representation of a Windows `sysprep.xml` answer file.
        
        The sysprep
        type encloses all the individual keys listed in a `sysprep.xml` file. For
        more detailed information, see <a href="https://technet.microsoft.com/en-us/library/cc771830(v=ws.10).aspx"target="_blank">Performing Unattended Installations</a>.
      properties:
        guiUnattended:
          description: |2
            An object representation of the sysprep GuiUnattended key.
          $ref: '#/components/schemas/CustomizationGuiUnattended'
        userData:
          description: |2
            An object representation of the sysprep UserData key.
          $ref: '#/components/schemas/CustomizationUserData'
        guiRunOnce:
          description: |2
            An object representation of the sysprep GuiRunOnce key.
          $ref: '#/components/schemas/CustomizationGuiRunOnce'
        identification:
          description: |2
            An object representation of the sysprep Identification key.
          $ref: '#/components/schemas/CustomizationIdentification'
        licenseFilePrintData:
          description: |2
            An object representation of the sysprep LicenseFilePrintData key.
            
            Required only
            for Windows 2000 Server and Windows Server 2003.
          $ref: '#/components/schemas/CustomizationLicenseFilePrintData'
      required:
        - guiUnattended
        - userData
        - identification
      allOf:
        - $ref: '#/components/schemas/CustomizationIdentitySettings'

    ArrayOfCustomizationSysprep:
      type: object
      description: |2
        A boxed array of *CustomizationSysprep*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/CustomizationSysprep'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    CustomizationSysprepText:
      type: object
      description: |2
        An alternate way to specify the `sysprep.xml` answer file.
        
        This string is
        written to the `sysprep.xml` answer file on the target virtual disk.
      properties:
        value:
          description: |2
            Text for the `sysprep.xml` answer file.
            
            For additional details, see <a href="https://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=2151684"target="_blank">Using custom sysprep.xml for vCenter Guest Customization</a> and
            <a href="https://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=1029174"target="_blank">Specifying network settings in custom sysprep.xml</a>.
          type: string
      required:
        - value
      allOf:
        - $ref: '#/components/schemas/CustomizationIdentitySettings'

    ArrayOfCustomizationSysprepText:
      type: object
      description: |2
        A boxed array of *CustomizationSysprepText*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/CustomizationSysprepText'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    CustomizationUnknownIpGenerator:
      type: object
      description: |2
        The IP address is left unspecified.
        
        The user must be prompted to supply an IP
        address.
      allOf:
        - $ref: '#/components/schemas/CustomizationIpGenerator'

    ArrayOfCustomizationUnknownIpGenerator:
      type: object
      description: |2
        A boxed array of *CustomizationUnknownIpGenerator*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/CustomizationUnknownIpGenerator'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    CustomizationUnknownIpV6Generator:
      type: object
      description: |2
        The ipv6 address is left unspecified.
        
        The user must be prompted to supply an ipv6
        address.
      allOf:
        - $ref: '#/components/schemas/CustomizationIpV6Generator'

    ArrayOfCustomizationUnknownIpV6Generator:
      type: object
      description: |2
        A boxed array of *CustomizationUnknownIpV6Generator*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/CustomizationUnknownIpV6Generator'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    CustomizationUnknownName:
      type: object
      description: |2
        Indicates that the name is not specified in advance.
        
        The client should prompt the
        user for the value to complete the specification.
      allOf:
        - $ref: '#/components/schemas/CustomizationName'

    ArrayOfCustomizationUnknownName:
      type: object
      description: |2
        A boxed array of *CustomizationUnknownName*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/CustomizationUnknownName'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    CustomizationUserData:
      type: object
      description: |2
        Personal data pertaining to the owner of the virtual machine.
        
        The UserData data object type maps to the UserData key in the `sysprep.xml`
        answer file. These values are transferred directly into the `sysprep.xml`
        file that VirtualCenter stores on the target virtual disk. For more detailed
        information, see <a href="https://technet.microsoft.com/en-us/library/cc771830(v=ws.10).aspx"target="_blank">Performing Unattended Installations</a>.
      properties:
        fullName:
          description: |2
            User's full name.
          type: string
        orgName:
          description: |2
            User's organization.
          type: string
        computerName:
          description: |2
            The computer name of the (Windows) virtual machine.
            
            Computer name may contain
            letters (A-Z), numbers(0-9) and hyphens (-) but no spaces or periods (.).
            The name may not consists entirely of digits.
            Computer name is restricted to 15 characters in length. If the computer
            name is longer than 15 characters, it will be truncated to 15 characters.
          $ref: '#/components/schemas/CustomizationName'
        productId:
          description: |2
            Microsoft Sysprep requires that a valid serial number be included in the answer
            file when mini-setup runs.
            
            This serial number is ignored if the original guest
            operating system was installed using a volume-licensed CD.
          type: string
      required:
        - fullName
        - orgName
        - computerName
        - productId
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfCustomizationUserData:
      type: object
      description: |2
        A boxed array of *CustomizationUserData*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/CustomizationUserData'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    CustomizationVirtualMachineName:
      type: object
      description: |2
        Specifies that VirtualCenter should generate a virtual machine name from a base
        prefix comprising the virtual machine entity name.
        
        A number is appended, if
        necessary, to make it unique.
        
        Virtual machine names are unique across the set of hosts and virtual machines known
        to the VirtualCenter instance. VMware Tools reports the names of existing virtual
        machines.
      allOf:
        - $ref: '#/components/schemas/CustomizationName'

    ArrayOfCustomizationVirtualMachineName:
      type: object
      description: |2
        A boxed array of *CustomizationVirtualMachineName*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/CustomizationVirtualMachineName'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    CustomizationWinOptions:
      type: object
      description: |2
        Optional operations supported by the customization process for Windows.
      properties:
        changeSID:
          description: |2
            The customization process should modify the machine's security identifier (SID).
            
            For Vista OS and greater, SID will always be modified and a value of false will
            generate an error.
          type: boolean
        deleteAccounts:
          deprecated: true
          description: |2
            Deprecated as of VI API 2.5, this value is ignored. Removing user accounts
            during customization is no longer supported. To change the
            administrator password, set the administrator password to
            blank in the master vm. Sysprep will then be able to change the
            password to the one specified by the *CustomizationGuiUnattended.password*.
            
            If deleteAccounts is true, then all user accounts are removed from the system as
            part of the customization.
            
            Mini-setup creates a new Administrator account with a
            blank password.
          type: boolean
        reboot:
          description: |2
            A value of type SysprepRebootOption specifying the action that should be
            taken after running sysprep.
            
            Defaults to "reboot".
          $ref: '#/components/schemas/CustomizationSysprepRebootOption_enum'
      required:
        - changeSID
        - deleteAccounts
      allOf:
        - $ref: '#/components/schemas/CustomizationOptions'

    ArrayOfCustomizationWinOptions:
      type: object
      description: |2
        A boxed array of *CustomizationWinOptions*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/CustomizationWinOptions'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostDiskMappingInfo:
      type: object
      description: |2
        The HostDiskMappingInfo data object type describes
        a virtual disk mapping to a host disk.
      properties:
        physicalPartition:
          description: |2
            The partition used on the host, if not mapping
            to a full disk device.
          $ref: '#/components/schemas/HostDiskMappingPartitionInfo'
        name:
          description: |2
            Host resource name.
          type: string
        exclusive:
          description: |2
            Flag to indicate whether or not the virtual machine has exclusive access
            to the host device.
          type: boolean
      required:
        - name
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostDiskMappingInfo:
      type: object
      description: |2
        A boxed array of *HostDiskMappingInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostDiskMappingInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostDiskMappingPartitionInfo:
      type: object
      description: |2
        The PhysicalPartitionInfo data class.
      properties:
        name:
          description: |2
            Partition name.
          type: string
        fileSystem:
          description: |2
            Filesystem, if the partition is formatted.
          type: string
        capacityInKb:
          description: |2
            Partition capacity, in KB.
          type: integer
          format: int64
      required:
        - name
        - fileSystem
        - capacityInKb
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostDiskMappingPartitionInfo:
      type: object
      description: |2
        A boxed array of *HostDiskMappingPartitionInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostDiskMappingPartitionInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostDiskMappingOption:
      type: object
      description: |2
        The HostDiskMappingOption data object type describes
        the options for a virtual disk mapping to a host disk.
      properties:
        physicalPartition:
          description: |2
            Array of valid partitions on this physical disk.
            
            There is no default for this array.
          type: array
          items:
            $ref: '#/components/schemas/HostDiskMappingPartitionOption'
        name:
          description: |2
            Host resource name.
          type: string
      required:
        - name
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostDiskMappingOption:
      type: object
      description: |2
        A boxed array of *HostDiskMappingOption*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostDiskMappingOption'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostDiskMappingPartitionOption:
      type: object
      description: |2
        The PhysicalPartitionOption data class contains the options
        for a partition on a physical disk.
      properties:
        name:
          description: |2
            Partition name.
          type: string
        fileSystem:
          description: |2
            File system, if the partition is formatted.
          type: string
        capacityInKb:
          description: |2
            Partition capacity, in KB.
          type: integer
          format: int64
      required:
        - name
        - fileSystem
        - capacityInKb
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfHostDiskMappingPartitionOption:
      type: object
      description: |2
        A boxed array of *HostDiskMappingPartitionOption*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostDiskMappingPartitionOption'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ParaVirtualSCSIController:
      type: object
      description: |2
        ParaVirtualSCSIController is the data object that represents
        a paravirtualized SCSI controller.
      allOf:
        - $ref: '#/components/schemas/VirtualSCSIController'

    ArrayOfParaVirtualSCSIController:
      type: object
      description: |2
        A boxed array of *ParaVirtualSCSIController*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ParaVirtualSCSIController'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ParaVirtualSCSIControllerOption:
      type: object
      description: |2
        ParaVirtualSCSIControllerOption is the data object that contains
        the options for a a paravirtualized SCSI controller.
      allOf:
        - $ref: '#/components/schemas/VirtualSCSIControllerOption'

    ArrayOfParaVirtualSCSIControllerOption:
      type: object
      description: |2
        A boxed array of *ParaVirtualSCSIControllerOption*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ParaVirtualSCSIControllerOption'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualAHCIController:
      type: object
      description: |2
        The VirtualAHCIController data object type represents
        an AHCI SATA controller in a virtual machine.
      allOf:
        - $ref: '#/components/schemas/VirtualSATAController'

    ArrayOfVirtualAHCIController:
      type: object
      description: |2
        A boxed array of *VirtualAHCIController*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualAHCIController'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualAHCIControllerOption:
      type: object
      description: |2
        VirtualAHCIControllerOption is the data object that contains
        the options for an AHCI SATA controller.
      allOf:
        - $ref: '#/components/schemas/VirtualSATAControllerOption'

    ArrayOfVirtualAHCIControllerOption:
      type: object
      description: |2
        A boxed array of *VirtualAHCIControllerOption*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualAHCIControllerOption'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualBusLogicController:
      type: object
      description: |2
        VirtualBusLogicController is the data object that represents
        a BusLogic SCSI controller.
      allOf:
        - $ref: '#/components/schemas/VirtualSCSIController'

    ArrayOfVirtualBusLogicController:
      type: object
      description: |2
        A boxed array of *VirtualBusLogicController*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualBusLogicController'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualBusLogicControllerOption:
      type: object
      description: |2
        This data object contains
        the options for a BusLogic SCSI controller.
      allOf:
        - $ref: '#/components/schemas/VirtualSCSIControllerOption'

    ArrayOfVirtualBusLogicControllerOption:
      type: object
      description: |2
        A boxed array of *VirtualBusLogicControllerOption*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualBusLogicControllerOption'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualCdrom:
      type: object
      description: |2
        The VirtualCdrom data object type describes the configuration of a CD-ROM device
        in a virtual machine.
      allOf:
        - $ref: '#/components/schemas/VirtualDevice'

    ArrayOfVirtualCdrom:
      type: object
      description: |2
        A boxed array of *VirtualCdrom*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualCdrom'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualCdromAtapiBackingInfo:
      type: object
      description: |2
        The VirtualCdrom.AtapiBackingInfo data object type
        represents an ATAPI device backing for a virtual CD-ROM.
      allOf:
        - $ref: '#/components/schemas/VirtualDeviceDeviceBackingInfo'

    ArrayOfVirtualCdromAtapiBackingInfo:
      type: object
      description: |2
        A boxed array of *VirtualCdromAtapiBackingInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualCdromAtapiBackingInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualCdromIsoBackingInfo:
      type: object
      description: |2
        The VirtualCdrom.IsoBackingInfo data class represents
        an ISO backing for a virtual CD-ROM.
      allOf:
        - $ref: '#/components/schemas/VirtualDeviceFileBackingInfo'

    ArrayOfVirtualCdromIsoBackingInfo:
      type: object
      description: |2
        A boxed array of *VirtualCdromIsoBackingInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualCdromIsoBackingInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualCdromPassthroughBackingInfo:
      type: object
      description: |2
        The VirtualCdrom.PassthroughBackingInfo data class
        represents a device pass-through backing for a
        virtual CD-ROM.
      properties:
        exclusive:
          description: |2
            Flag to indicate whether or not the virtual machine has
            exclusive CD-ROM device access.
          type: boolean
      required:
        - exclusive
      allOf:
        - $ref: '#/components/schemas/VirtualDeviceDeviceBackingInfo'

    ArrayOfVirtualCdromPassthroughBackingInfo:
      type: object
      description: |2
        A boxed array of *VirtualCdromPassthroughBackingInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualCdromPassthroughBackingInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualCdromRemoteAtapiBackingInfo:
      type: object
      description: |2
        The VirtualCdrom.RemoteAtapiBackingInfo data class
        represents a remote ATAPI device backing for a virtual CD-ROM.
      allOf:
        - $ref: '#/components/schemas/VirtualDeviceRemoteDeviceBackingInfo'

    ArrayOfVirtualCdromRemoteAtapiBackingInfo:
      type: object
      description: |2
        A boxed array of *VirtualCdromRemoteAtapiBackingInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualCdromRemoteAtapiBackingInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualCdromRemotePassthroughBackingInfo:
      type: object
      description: |2
        The VirtualCdrom.RemotePassthroughBackingInfo data object type
        contains the information to specify a remote pass-through device
        backing of a virtual CD-ROM.
      properties:
        exclusive:
          description: |2
            Flag to indicate whether or not the virtual machine
            has exclusive access to the CD-ROM device.
          type: boolean
      required:
        - exclusive
      allOf:
        - $ref: '#/components/schemas/VirtualDeviceRemoteDeviceBackingInfo'

    ArrayOfVirtualCdromRemotePassthroughBackingInfo:
      type: object
      description: |2
        A boxed array of *VirtualCdromRemotePassthroughBackingInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualCdromRemotePassthroughBackingInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualCdromOption:
      type: object
      description: |2
        The VirtualCdromOption data object type contains the options for the
        virtual CD-ROM class.
      allOf:
        - $ref: '#/components/schemas/VirtualDeviceOption'

    ArrayOfVirtualCdromOption:
      type: object
      description: |2
        A boxed array of *VirtualCdromOption*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualCdromOption'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualCdromAtapiBackingOption:
      type: object
      description: |2
        The VirtualCdromOption.AtapiBackingOption data object type
        contains the options for the ATAPI CD-ROM device backing.
      allOf:
        - $ref: '#/components/schemas/VirtualDeviceDeviceBackingOption'

    ArrayOfVirtualCdromAtapiBackingOption:
      type: object
      description: |2
        A boxed array of *VirtualCdromAtapiBackingOption*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualCdromAtapiBackingOption'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualCdromIsoBackingOption:
      type: object
      description: |2
        The VirtualCdromOption.IsoBackingOption data object type contains
        the options for an ISO image backing.
      allOf:
        - $ref: '#/components/schemas/VirtualDeviceFileBackingOption'

    ArrayOfVirtualCdromIsoBackingOption:
      type: object
      description: |2
        A boxed array of *VirtualCdromIsoBackingOption*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualCdromIsoBackingOption'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualCdromPassthroughBackingOption:
      type: object
      description: |2
        The VirtualCdromOption.PassthroughBackingOption data object type
        contains the options for a pass-through CD-ROM device backing.
      properties:
        exclusive:
          description: |2
            Flag to indicate whether or not exclusive CD-ROM device access is supported.
          $ref: '#/components/schemas/BoolOption'
      required:
        - exclusive
      allOf:
        - $ref: '#/components/schemas/VirtualDeviceDeviceBackingOption'

    ArrayOfVirtualCdromPassthroughBackingOption:
      type: object
      description: |2
        A boxed array of *VirtualCdromPassthroughBackingOption*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualCdromPassthroughBackingOption'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualCdromRemoteAtapiBackingOption:
      type: object
      description: |2
        The VirtualCdromOption.RemoteAtapiBackingOption data object type
        contains the options for the remote ATAPI CD-ROM device backing.
        
        Note that the server cannot present a list of valid remote backing devices
        because it is unable to scan remote hosts.
      allOf:
        - $ref: '#/components/schemas/VirtualDeviceDeviceBackingOption'

    ArrayOfVirtualCdromRemoteAtapiBackingOption:
      type: object
      description: |2
        A boxed array of *VirtualCdromRemoteAtapiBackingOption*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualCdromRemoteAtapiBackingOption'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualCdromRemotePassthroughBackingOption:
      type: object
      description: |2
        The VirtualCdromOption.RemotePassthroughBackingOption data object type
        contains the options for a remote pass-through CD-ROM device backing.
        
        Note that the server cannot present a list of valid remote backing devices
        because it is unable to scan remote hosts.
      properties:
        exclusive:
          description: |2
            Flag to indicate whether or not exclusive CD-ROM device access is supported.
          $ref: '#/components/schemas/BoolOption'
      required:
        - exclusive
      allOf:
        - $ref: '#/components/schemas/VirtualDeviceRemoteDeviceBackingOption'

    ArrayOfVirtualCdromRemotePassthroughBackingOption:
      type: object
      description: |2
        A boxed array of *VirtualCdromRemotePassthroughBackingOption*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualCdromRemotePassthroughBackingOption'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualController:
      type: object
      description: |2
        VirtualController is the base data object type for a device controller in
        a virtual machine.
        
        VirtualController extends
        *VirtualDevice* to inherit
        general information about a controller (such as name and description), and to allow
        controllers to appear in a generic list of virtual devices.
      properties:
        busNumber:
          description: |2
            Bus number associated with this controller.
          type: integer
          format: int32
        device:
          description: |2
            List of devices currently controlled by this controller.
            
            Each entry contains the *VirtualDevice.key* property of the
            corresponding device object.
          type: array
          items:
            type: integer
            format: int32
      required:
        - busNumber
      allOf:
        - $ref: '#/components/schemas/VirtualDevice'

    ArrayOfVirtualController:
      type: object
      description: |2
        A boxed array of *VirtualController*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualController'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualControllerOption:
      type: object
      description: |2
        The VirtualControllerOption data object type contains information about
        a virtual controller type.
      properties:
        devices:
          description: |2
            The minimum and maximum number of devices this controller can control
            at run time.
          $ref: '#/components/schemas/IntOption'
        supportedDevice:
          description: |2
            Array of supported device options for this controller.
          type: array
          items:
            type: string
      required:
        - devices
      allOf:
        - $ref: '#/components/schemas/VirtualDeviceOption'

    ArrayOfVirtualControllerOption:
      type: object
      description: |2
        A boxed array of *VirtualControllerOption*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualControllerOption'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualDevice:
      type: object
      description: |2
        VirtualDevice is the base data object type for devices in a virtual machine.
        
        This type contains enough information about a virtual device to allow clients
        to display devices they do not recognize. For example, a client with an
        older version than the server to which it connects may see a device
        without knowing what it is.
      properties:
        key:
          description: |2
            A unique key that distinguishes this device from other
            devices in the same virtual machine.
            
            Keys are immutable but may be
            recycled; that is, a key does not change as long as the device is
            associated with a particular virtual machine. However, once a device is
            removed, its key may be used when another device is added.
            
            This property is not read-only, but the client cannot control its value.
            Persistent device keys are always assigned and managed by the server, which
            guarantees that all devices will have non-negative key values.
            
            When adding new devices, it may be necessary for a client to assign keys
            temporarily in order to associate controllers with devices in
            configuring a virtual machine. However, the server does not allow a
            client to reassign a device key, and the server may assign a different
            value from the one passed during configuration. Clients should ensure
            that existing device keys are not reused as temporary key values for the
            new device to be added (for example, by using unique negative integers as
            temporary keys).
            
            When editing or deleting a device, clients must use the server-provided key
            to refer to an existing device.
          type: integer
          format: int32
        deviceInfo:
          description: |2
            Provides a label and summary information for the device.
          $ref: '#/components/schemas/Description'
        backing:
          description: |2
            Information about the backing of this virtual device presented
            in the context of the virtual machine's environment.
            
            Not all devices are required to have backing information.
            
            See also *VirtualMachineConfigOption*.
          $ref: '#/components/schemas/VirtualDeviceBackingInfo'
        connectable:
          description: |2
            Provides information about restrictions on removing this device while
            a virtual machine is running.
            
            If the device is not removable, then
            this property is null.
          $ref: '#/components/schemas/VirtualDeviceConnectInfo'
        slotInfo:
          description: |2
            Information about the bus slot of a device in a virtual machine.
          $ref: '#/components/schemas/VirtualDeviceBusSlotInfo'
        controllerKey:
          description: |2
            Object key for the controller object for this device.
            
            This property contains the key property value of the controller device
            object.
          type: integer
          format: int32
        unitNumber:
          description: |2
            The unit number of this device on its controller.
            
            This property is null if
            the controller property is null (for example, when the device is not
            attached to a specific controller object).
            
            Normally, two devices on the same controller
            may not be assigned the same unit number. If
            multiple devices could exist on a controller,
            then unit number has to be specified to
            configure respective devices.
          type: integer
          format: int32
        numaNode:
          description: |2
            The virtual NUMA node.
            
            A negative number means there is no
            affinity for the device. A positive number is a vNUMA node.
            An unset value of numaNode is status-quo during Reconfigure time.
            If numaNode is unset during ConfigInfo, then it means there is no
            affinity for the device.
            
            ***Since:*** vSphere API Release 8.0.0.1
          type: integer
          format: int32
        deviceGroupInfo:
          description: |2
            Information about device group device is part of.
            
            Devices in the device group cannot be added/removed individually,
            whole group has to be added/removed at once. Value can be set
            during device add, it cannot be modified later.
            
            ***Since:*** vSphere API Release 8.0.0.1
          $ref: '#/components/schemas/VirtualDeviceDeviceGroupInfo'
      required:
        - key
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVirtualDevice:
      type: object
      description: |2
        A boxed array of *VirtualDevice*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualDevice'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualDeviceBackingInfo:
      type: object
      description: |2
        <code>*VirtualDeviceBackingInfo*</code> is a base data object type
        for information about the backing of a device in a virtual machine.
        
        This base type does not define any properties. It is used as a namespace
        for general-purpose subtypes. Specific devices are represented by subtypes
        which define properties for device-specific backing information.
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVirtualDeviceBackingInfo:
      type: object
      description: |2
        A boxed array of *VirtualDeviceBackingInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualDeviceBackingInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualDeviceBusSlotInfo:
      type: object
      description: |2
        <code>*VirtualDeviceBusSlotInfo*</code> is a base data object type
        for information about device connection to its bus.
        
        This base type does not
        define any properties. It is used as a namespace for general-purpose subtypes.
        Specific devices types are represented by subtypes which define properties for
        device-specific backing information.
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVirtualDeviceBusSlotInfo:
      type: object
      description: |2
        A boxed array of *VirtualDeviceBusSlotInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualDeviceBusSlotInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualDeviceConnectInfo:
      type: object
      description: |2
        The <code>*VirtualDeviceConnectInfo*</code> data object type
        contains information about connectable virtual devices.
      properties:
        migrateConnect:
          description: |2
            Specifies whether the virtual machine should override the
            virtual device connection state upon the completion of a
            migration.
            
            At this time, this property is only applicable to instant
            clone operations, and will be ignored for other migration
            types. The property is also only valid with
            VirtualEthernetCards, and any attempt to set this property
            on an unsupported device will result in an error.
            This property will persist only until the virtual machine
            undergoes a supported migration, at which point it will be
            consumed and unset on the destination virtual machine,
            preventing the property from affecting future migrations.
            The migration's success is not dependent on whether the device
            reaches the desired connection state.
            The set of possible values are described in
            *VirtualDeviceConnectInfoMigrateConnectOp_enum*.
          type: string
        startConnected:
          description: |2
            Specifies whether or not to connect the device
            when the virtual machine starts.
          type: boolean
        allowGuestControl:
          description: |2
            Enables guest control over whether the connectable device is
            connected.
          type: boolean
        connected:
          description: |2
            Indicates whether the device is currently connected.
            
            Valid only while the virtual machine is running.
          type: boolean
        status:
          description: |2
            Indicates the current status of the connectable device.
            
            Valid only while the
            virtual machine is running. The set of possible values is described in
            *VirtualDeviceConnectInfoStatus_enum*
          type: string
      required:
        - startConnected
        - allowGuestControl
        - connected
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVirtualDeviceConnectInfo:
      type: object
      description: |2
        A boxed array of *VirtualDeviceConnectInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualDeviceConnectInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualDeviceDeviceBackingInfo:
      type: object
      description: |2
        The <code>*VirtualDeviceDeviceBackingInfo*</code> data object type
        defines information about a host device or resource that backs a device
        in a virtual machine.
      properties:
        deviceName:
          description: |2
            The name of the device on the host system.
          type: string
        useAutoDetect:
          description: |2
            Indicates whether the device should be auto detected
            instead of directly specified.
            
            If this value is set to TRUE,
            deviceName is ignored.
          type: boolean
      required:
        - deviceName
      allOf:
        - $ref: '#/components/schemas/VirtualDeviceBackingInfo'

    ArrayOfVirtualDeviceDeviceBackingInfo:
      type: object
      description: |2
        A boxed array of *VirtualDeviceDeviceBackingInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualDeviceDeviceBackingInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualDeviceDeviceGroupInfo:
      type: object
      description: |2
        <code>*VirtualDeviceDeviceGroupInfo*</code> contains information
        about the device group device is assigned to.
        
        ***Since:*** vSphere API Release 8.0.0.1
      properties:
        groupInstanceKey:
          description: |2
            Device group instance key from
            <code>*VirtualMachineVirtualDeviceGroupsDeviceGroup*</code>.
          type: integer
          format: int32
        sequenceId:
          description: |2
            Device sequence in the group.
            
            Small unique positive integer obtained
            from <code>*VirtualMachineVendorDeviceGroupInfoComponentDeviceInfo.device*</code>
            template.
          type: integer
          format: int32
      required:
        - groupInstanceKey
        - sequenceId
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVirtualDeviceDeviceGroupInfo:
      type: object
      description: |2
        A boxed array of *VirtualDeviceDeviceGroupInfo*. To be used in *Any* placeholders.
        
        ***Since:*** vSphere API Release 8.0.0.1
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualDeviceDeviceGroupInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualDeviceFileBackingInfo:
      type: object
      description: |2
        <code>*VirtualDeviceFileBackingInfo*</code> is a data object type
        for information about file backing for a device in a virtual machine.
      properties:
        fileName:
          description: |2
            Filename for the host file used in this backing.
          type: string
        datastore:
          description: |2
            Reference to the datastore managed object where this file is stored.
            
            If the file is not located on a datastore, then this reference is null.
            This is not used for configuration.
            
            Refers instance of *Datastore*.
          $ref: '#/components/schemas/ManagedObjectReference'
        backingObjectId:
          description: |2
            Backing object's durable and unmutable identifier.
            
            Each backing object has a unique identifier which is not settable.
          type: string
      required:
        - fileName
      allOf:
        - $ref: '#/components/schemas/VirtualDeviceBackingInfo'

    ArrayOfVirtualDeviceFileBackingInfo:
      type: object
      description: |2
        A boxed array of *VirtualDeviceFileBackingInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualDeviceFileBackingInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualDevicePciBusSlotInfo:
      type: object
      description: |2
        The <code>*VirtualDevicePciBusSlotInfo*</code> data object type
        defines information about a pci bus slot of pci device in a virtual machine.
      properties:
        pciSlotNumber:
          description: |2
            The pci slot number of the virtual device.
            
            The pci slot number assignment should generally be left to the system.
            If assigned a value, and the value is invalid or duplicated, it will
            automatically be reassigned. This will not cause an error.
            
            Generally, the PCI slot numbers should never be specified in an
            Reconfigure operation, and only in a CreateVM operation if i) they
            are specified for all devices, and ii) the numbers have been
            determined by looking at an existing VM configuration of similar
            hardware version. In other words, when the virtual hardware configuration
            is duplicated.
          type: integer
          format: int32
      required:
        - pciSlotNumber
      allOf:
        - $ref: '#/components/schemas/VirtualDeviceBusSlotInfo'

    ArrayOfVirtualDevicePciBusSlotInfo:
      type: object
      description: |2
        A boxed array of *VirtualDevicePciBusSlotInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualDevicePciBusSlotInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualDevicePipeBackingInfo:
      type: object
      description: |2
        The <code>*VirtualDevicePipeBackingInfo*</code> data object type
        defines information for using a named pipe as backing for a device
        in a virtual machine.
      properties:
        pipeName:
          description: |2
            Pipe name for the host pipe associated with this backing.
          type: string
      required:
        - pipeName
      allOf:
        - $ref: '#/components/schemas/VirtualDeviceBackingInfo'

    ArrayOfVirtualDevicePipeBackingInfo:
      type: object
      description: |2
        A boxed array of *VirtualDevicePipeBackingInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualDevicePipeBackingInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualDeviceRemoteDeviceBackingInfo:
      type: object
      description: |2
        <code>*VirtualDeviceRemoteDeviceBackingInfo*</code> is a data object type
        for information
        about a remote device backing used by a device in a virtual machine.
        
        The primary difference between a remote device backing and a
        local device backing is that the VirtualCenter server cannot provide a list
        of remote host devices available for this virtual device backing.
      properties:
        deviceName:
          description: |2
            The name of the device on the remote system.
          type: string
        useAutoDetect:
          description: |2
            Indicates whether the device should be auto detected
            instead of directly specified.
            
            If this value is set to TRUE,
            <code>deviceName</code> is ignored.
          type: boolean
      required:
        - deviceName
      allOf:
        - $ref: '#/components/schemas/VirtualDeviceBackingInfo'

    ArrayOfVirtualDeviceRemoteDeviceBackingInfo:
      type: object
      description: |2
        A boxed array of *VirtualDeviceRemoteDeviceBackingInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualDeviceRemoteDeviceBackingInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualDeviceURIBackingInfo:
      type: object
      description: |2
        The <code>*VirtualDeviceURIBackingInfo*</code> data object type
        defines information for using a network socket as backing for a virtual device.
      properties:
        serviceURI:
          description: |2
            Identifies the local host or a system on the network,
            depending on the value of <code>*VirtualDeviceURIBackingInfo.direction*</code>.
            - If you use the virtual machine as a server, the URI identifies
              the host on which the virtual machine runs. In this case,
              the host name part of the URI should be empty, or it should
              specify the address of the local host.
            - If you use the virtual machine as a client, the URI identifies
              the remote system on the network.
          type: string
        direction:
          description: |2
            The direction of the connection.
            
            For possible values see
            *VirtualDeviceURIBackingOptionDirection_enum*
          type: string
        proxyURI:
          description: |2
            Identifies a proxy service that provides network access to the
            <code>*VirtualDeviceURIBackingInfo.serviceURI*</code>.
            
            If you specify a proxy URI, the virtual machine initiates
            a connection with the proxy service and forwards the
            *VirtualDeviceURIBackingInfo.serviceURI* and *VirtualDeviceURIBackingInfo.direction* to the proxy.
          type: string
      required:
        - serviceURI
        - direction
      allOf:
        - $ref: '#/components/schemas/VirtualDeviceBackingInfo'

    ArrayOfVirtualDeviceURIBackingInfo:
      type: object
      description: |2
        A boxed array of *VirtualDeviceURIBackingInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualDeviceURIBackingInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualDeviceOption:
      type: object
      description: |2
        The VirtualDeviceOption data object type contains information about
        a virtual device type, the options for configuring the virtual device,
        and the relationship between this virtual device and other devices.
        
        The vSphere API groups device configurations that are mutually exclusive
        into different configuration objects; each of these configuration objects
        may define subtypes for virtual device backing options
        that are independent of the virtual device.
        Backing-dependent options should appear in a subtype of
        *VirtualDeviceBackingOption*.
      properties:
        type:
          description: |2
            The name of the run-time class the client should instantiate
            to create a run-time instance of this device.
          type: string
        connectOption:
          description: |2
            If the device is connectable, then the connectOption
            describes the connect options and defaults.
          $ref: '#/components/schemas/VirtualDeviceConnectOption'
        busSlotOption:
          description: |2
            If the device can use a bus slot configuration, then the busSlotOption
            describes the bus slot options.
          $ref: '#/components/schemas/VirtualDeviceBusSlotOption'
        controllerType:
          description: |2
            Data object type that denotes the controller option object that is
            valid for controlling this device.
          type: string
        autoAssignController:
          description: |2
            Flag to indicate whether or not this device will be auto-assigned a controller
            if one is required.
            
            If this is true, then a client need not explicitly create
            the controller that this device will plug into.
          $ref: '#/components/schemas/BoolOption'
        backingOption:
          description: |2
            A list of backing options that can be used to map the virtual
            device to the host.
            
            The list is optional, since some devices exist only within
            the virtual machine; for example, a VirtualController.
          type: array
          items:
            $ref: '#/components/schemas/VirtualDeviceBackingOption'
        defaultBackingOptionIndex:
          description: |2
            Index into the backingOption list, indicating the default backing.
          type: integer
          format: int32
        licensingLimit:
          description: |2
            List of property names enforced by a licensing restriction
            of the underlying product.
            
            For example, a limit that is not
            derived based on the product or hardware features; the
            property name "numCPU".
          type: array
          items:
            type: string
        deprecated:
          description: |2
            Indicates whether this device is deprecated.
            
            Hence, if set the device
            cannot be used when creating a new virtual machine or be added to an existing
            virtual machine. However, the device is still supported by the platform.
          type: boolean
        plugAndPlay:
          description: |2
            Indicates if this type of device can be hot-added to the virtual machine
            via a reconfigure operation when the virtual machine is powered on.
          type: boolean
        hotRemoveSupported:
          description: |2
            Indicates if this type of device can be hot-removed from the virtual machine
            via a reconfigure operation when the virtual machine is powered on.
          type: boolean
        numaSupported:
          description: |2
            ***Since:*** vSphere API Release 8.0.0.1
          type: boolean
      required:
        - type
        - deprecated
        - plugAndPlay
        - hotRemoveSupported
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVirtualDeviceOption:
      type: object
      description: |2
        A boxed array of *VirtualDeviceOption*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualDeviceOption'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualDeviceBackingOption:
      type: object
      description: |2
        The *VirtualDeviceBackingOption* data class
        defines options for device-specific virtual backing objects.
      properties:
        type:
          description: |2
            The name of the class the client should use to instantiate backing
            for the virtual device.
          type: string
      required:
        - type
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVirtualDeviceBackingOption:
      type: object
      description: |2
        A boxed array of *VirtualDeviceBackingOption*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualDeviceBackingOption'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualDeviceBusSlotOption:
      type: object
      description: |2
        The *VirtualDeviceBusSlotOption* data class
        defines options for device-specific bus slot objects.
      properties:
        type:
          description: |2
            The name of the class the client should use to instantiate bus slot
            object for the virtual device.
          type: string
      required:
        - type
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVirtualDeviceBusSlotOption:
      type: object
      description: |2
        A boxed array of *VirtualDeviceBusSlotOption*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualDeviceBusSlotOption'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualDeviceConnectOption:
      type: object
      description: |2
        The ConnectOption data object type contains information about options for
        connectable virtual devices.
      properties:
        startConnected:
          description: |2
            Flag to indicate whether or not the device supports
            the startConnected feature.
          $ref: '#/components/schemas/BoolOption'
        allowGuestControl:
          description: |2
            Flag to indicate whether or not the device can be
            connected and disconnected from within the guest operating system.
          $ref: '#/components/schemas/BoolOption'
      required:
        - startConnected
        - allowGuestControl
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVirtualDeviceConnectOption:
      type: object
      description: |2
        A boxed array of *VirtualDeviceConnectOption*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualDeviceConnectOption'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualDeviceDeviceBackingOption:
      type: object
      description: |2
        The DeviceBackingOption data class contains device-specific backing options.
      properties:
        autoDetectAvailable:
          description: |2
            Flag to indicate whether the specific instance of this device can
            be auto-detected on the host instead of having to specify a
            particular physical device.
          $ref: '#/components/schemas/BoolOption'
      required:
        - autoDetectAvailable
      allOf:
        - $ref: '#/components/schemas/VirtualDeviceBackingOption'

    ArrayOfVirtualDeviceDeviceBackingOption:
      type: object
      description: |2
        A boxed array of *VirtualDeviceDeviceBackingOption*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualDeviceDeviceBackingOption'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualDeviceFileBackingOption:
      type: object
      description: |2
        The FileBackingOption data class contains file-specific backing options.
      properties:
        fileNameExtensions:
          description: |2
            Valid filename extension for the filename.
            
            If no extensions are present, any file extension is acceptable.
          $ref: '#/components/schemas/ChoiceOption'
      allOf:
        - $ref: '#/components/schemas/VirtualDeviceBackingOption'

    ArrayOfVirtualDeviceFileBackingOption:
      type: object
      description: |2
        A boxed array of *VirtualDeviceFileBackingOption*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualDeviceFileBackingOption'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualDevicePipeBackingOption:
      type: object
      description: |2
        The <code>*VirtualDevicePipeBackingOption*</code> data object type contains options
        specific to pipe backings.
      allOf:
        - $ref: '#/components/schemas/VirtualDeviceBackingOption'

    ArrayOfVirtualDevicePipeBackingOption:
      type: object
      description: |2
        A boxed array of *VirtualDevicePipeBackingOption*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualDevicePipeBackingOption'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualDeviceRemoteDeviceBackingOption:
      type: object
      description: |2
        VirtualDeviceOption.RemoteDeviceBackingOption describes the options
        for a remote device backing.
        
        The primary difference
        between a remote device backing and a local device backing is that
        the VirtualCenter server cannot provide a list of remote host devices
        available for this virtual device backing.
      properties:
        autoDetectAvailable:
          description: |2
            Flag to indicate whether the specific instance of this device can
            be auto-detected on the host instead of having to specify a
            particular physical device.
          $ref: '#/components/schemas/BoolOption'
      required:
        - autoDetectAvailable
      allOf:
        - $ref: '#/components/schemas/VirtualDeviceBackingOption'

    ArrayOfVirtualDeviceRemoteDeviceBackingOption:
      type: object
      description: |2
        A boxed array of *VirtualDeviceRemoteDeviceBackingOption*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualDeviceRemoteDeviceBackingOption'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualDeviceURIBackingOption:
      type: object
      description: |2
        The *VirtualDeviceURIBackingOption* data object type describes network communication
        options for virtual devices.
        
        When establishing a connection with a remote system on the network,
        the virtual machine can act as a server or a client.
        When the virtual machine acts as a server, it accepts a connection.
        When the virtual machine acts as a client, it initiates the connection.
      properties:
        directions:
          description: |2
            List of possible directions.
            
            Valid directions are:
            - *server*
            - *client*
          $ref: '#/components/schemas/ChoiceOption'
      required:
        - directions
      allOf:
        - $ref: '#/components/schemas/VirtualDeviceBackingOption'

    ArrayOfVirtualDeviceURIBackingOption:
      type: object
      description: |2
        A boxed array of *VirtualDeviceURIBackingOption*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualDeviceURIBackingOption'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualDeviceConfigSpec:
      type: object
      description: |2
        The VirtualDeviceSpec data object type encapsulates change
        specifications for an individual virtual device.
        
        The virtual
        device being added or modified must be fully specified.
      properties:
        operation:
          description: |2
            Type of operation being performed on the specified virtual device.
            
            If no operation is specified, the spec. is ignored.
          $ref: '#/components/schemas/VirtualDeviceConfigSpecOperation_enum'
        fileOperation:
          description: |2
            Type of operation being performed on the backing
            of the specified virtual device.
            
            If no file operation is specified in the VirtualDeviceSpec,
            then any backing filenames in the
            *VirtualDevice*
            must refer to files that already exist.
            The "replace" and "delete" values for this property are only
            applicable to virtual disk backing files.
          $ref: '#/components/schemas/VirtualDeviceConfigSpecFileOperation_enum'
        device:
          description: |2
            Device specification, with all necessary properties set.
          $ref: '#/components/schemas/VirtualDevice'
        profile:
          description: |2
            Virtual Device Profile requirement.
            
            Profiles are solution specifics.
            Storage Profile Based Management(SPBM) is a vSphere server extension.
            The API users who want to provision VMs using Storage Profiles, need to
            interact with SPBM service.
            This is an optional parameter and if user doesn't specify profile,
            the default behavior will apply.
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineProfileSpec'
        backing:
          description: |2
            BackingInfo configuration options.
            
            Each BackingSpec corresponds to a BackingInfo object. The member
            *VirtualDeviceConfigSpec.backing* refers to the
            *VirtualDeviceConfigSpec.device*.*VirtualDevice.backing*.
          $ref: '#/components/schemas/VirtualDeviceConfigSpecBackingSpec'
        filterSpec:
          description: |2
            List of independent filters *VirtualMachineIndependentFilterSpec*
            to configure on the virtual device.
            
            ***Since:*** vSphere API Release 7.0.2.1
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineBaseIndependentFilterSpec'
        changeMode:
          description: |2
            The change mode of the device.
            
            The values of the mode will be one of *VirtualDeviceConfigSpecChangeMode_enum* enumerations.
            On unset, default to 'fail'.
            
            ***Since:*** vSphere API Release 8.0.0.1
          type: string
      required:
        - device
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVirtualDeviceConfigSpec:
      type: object
      description: |2
        A boxed array of *VirtualDeviceConfigSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualDeviceConfigSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualDeviceConfigSpecBackingSpec:
      type: object
      description: |2
        <code>*VirtualDeviceConfigSpecBackingSpec*</code> is a data object
        type for information about configuration of the backing of a device
        in a virtual machine.
        
        The member *VirtualDeviceConfigSpecBackingSpec.parent* refers the parent in the chain of
        *VirtualDeviceBackingInfo* objects.
      properties:
        parent:
          $ref: '#/components/schemas/VirtualDeviceConfigSpecBackingSpec'
        crypto:
          $ref: '#/components/schemas/CryptoSpec'
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVirtualDeviceConfigSpecBackingSpec:
      type: object
      description: |2
        A boxed array of *VirtualDeviceConfigSpecBackingSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualDeviceConfigSpecBackingSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualDisk:
      type: object
      description: |2
        This data object type contains information about a disk in a virtual machine.
        
        The virtual disk backing object types describe the different virtual disk backings
        available.
        The disk format version in each case describes
        the version of the format that is used.
        
        Supported virtual disk backings:
        <dl>
        <dt>Sparse disk format, version 1 and 2</dt>
        <dd>The virtual disk backing grows when needed.
        Supported only for VMware Server.</dd>
        <dt>Flat disk format, version 1 and 2</dt>
        <dd>The virtual disk backing is preallocated.
        Version 1 is supported only for VMware Server.</dd>
        <dt>Space efficient sparse disk format</dt>
        <dd>The virtual disk backing grows on demand and
        incorporates additional space optimizations.</dd>
        <dt>Raw disk format, version 2</dt>
        <dd>The virtual disk backing uses a full physical disk drive
        to back the virtual disk. Supported only for VMware Server.</dd>
        <dt>Partitioned raw disk format, version 2</dt>
        <dd>The virtual disk backing uses one or more partitions on a
        physical disk drive to back a virtual disk. Supported only for VMware Server.</dd>
        <dt>Raw disk mapping, version 1</dt>
        <dd>The virtual disk backing uses a raw device mapping to back the virtual disk.
        Supported for ESX Server 2.5 and 3.x.</dd>
        </dl>
      properties:
        capacityInKB:
          deprecated: true
          description: |2
            Deprecated as of vSphere API 5.5, use *VirtualDisk.capacityInBytes*.
            
            Capacity of this virtual disk in kilobytes.
            
            Information might be lost when actual disk size is rounded off to kilobytes.
            If the disk is on a Virtual Volume datastore the disk size must be a multiple
            of a megabyte.
          type: integer
          format: int64
        capacityInBytes:
          description: |2
            Capacity of this virtual disk in bytes.
            
            Server will always populate this property. Clients must initialize it when
            creating a new non -RDM disk or in case they want to change the current
            capacity of an existing virtual disk, but can omit it otherwise.
            If the disk is on a Virtual Volume datastore the disk size must be a multiple
            of a megabyte.
          type: integer
          format: int64
        shares:
          deprecated: true
          description: |2
            Deprecated as of vSphere API 4.1, use
            *StorageIOAllocationInfo.shares*.
            
            Disk shares, used for resource scheduling.
          $ref: '#/components/schemas/SharesInfo'
        storageIOAllocation:
          deprecated: true
          description: |2
            Deprecated as of vSphere API 6.5, use.
            
            Resource allocation for storage I/O.
          $ref: '#/components/schemas/StorageIOAllocationInfo'
        diskObjectId:
          deprecated: true
          description: |2
            Deprecated as of vSphere API 6.5, use *VirtualDisk.vDiskId*.
            
            Virtual disk durable and unmutable identifier.
            
            Virtual disk has a UUID field but that can be set through
            VirtualDiskManager APIs.
            This identifier is a universally unique identifier which is not settable.
            VirtualDisk can remain in existence even if it is not associated with VM.
          type: string
        vFlashCacheConfigInfo:
          deprecated: true
          description: |2
            Deprecated since vSphere 7.0 because vFlash Read Cache
            end of availability.
            
            vFlash cache configuration supported on this virtual disk.
          $ref: '#/components/schemas/VirtualDiskVFlashCacheConfigInfo'
        iofilter:
          description: |2
            IDs of the IO Filters associated with the virtual disk.
            
            See *IoFilterInfo.id*. This information
            is provided when retrieving configuration information for
            an existing virtual machine. The client cannot modify this information
            on a virtual machine.
          type: array
          items:
            type: string
        vDiskId:
          description: |2
            ID of the virtual disk object as the first class entity.
            
            See *ID*
            The ID is a universally unique identifier for the disk lifecycle,
            even if the virtual disk is not associated with VM.
          $ref: '#/components/schemas/ID'
        vDiskVersion:
          description: |2
            Disk descriptor version of the virtual disk.
            
            ***Since:*** vSphere API Release 8.0.1.0
          type: integer
          format: int32
        nativeUnmanagedLinkedClone:
          description: |2
            Indicates whether a disk with
            *VirtualDiskFlatVer2BackingInfo* backing is a linked
            clone from an unmanaged delta disk and hence the
            *VirtualDiskFlatVer2BackingInfo.parent* chain to
            this delta disk will not be available.
          type: boolean
        independentFilters:
          description: |2
            The IDs of the independent filters associated with the virtual disk.
            
            This information is provided when retrieving configuration information for
            an existing virtual machine. The client cannot modify this information on
            a virtual machine.
            
            ***Since:*** vSphere API Release 7.0.2.1
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineBaseIndependentFilterSpec'
        guestReadOnly:
          description: |2
            Flag to indicate whether a disk should be presented to the guest
            in read-only mode (limited by choice of adapter).
            
            ***Since:*** vSphere API Release 8.0.2.0
          type: boolean
      required:
        - capacityInKB
      allOf:
        - $ref: '#/components/schemas/VirtualDevice'

    ArrayOfVirtualDisk:
      type: object
      description: |2
        A boxed array of *VirtualDisk*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualDisk'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualDiskFlatVer1BackingInfo:
      type: object
      description: |2
        This data object type contains information about backing a virtual disk by
        using a virtual disk file on the host, in the flat file format used by
        GSX Server 2.x.
        
        Flat disks are allocated when created, unlike sparse disks, which
        grow as needed.
      properties:
        diskMode:
          description: |2
            The disk persistence mode.
            
            Valid modes are:
            - *persistent*
            - *nonpersistent*
            - *undoable*
              
            See also *VirtualDiskMode_enum*.
          type: string
        split:
          description: |2
            Flag to indicate the type of virtual disk file: split or monolithic.
            
            If true, the virtual disk is stored in multiple files, each 2GB.
          type: boolean
        writeThrough:
          description: |2
            Flag to indicate whether writes should go directly to the file system
            or should be buffered.
          type: boolean
        contentId:
          description: |2
            Content ID of the virtual disk file, if available.
            
            A content ID indicates the logical contents of the disk backing and its parents.
            
            This property is only guaranteed to be up to date if this disk backing is not
            currently being written to by any virtual machine.
            
            The only supported operation is comparing if two content IDs are equal or not.
            The guarantee provided by the content ID is that if two disk backings have the
            same content ID and are not currently being written to, then reads issued from
            the guest operating system to those disk backings will return the same data.
          type: string
        parent:
          description: |2
            The parent of this virtual disk file, if this is a delta disk backing.
            
            This will be unset if this is not a delta disk backing.
            
            A delta disk backing is a way to preserve a virtual disk backing
            at some point in time. A delta disk backing is a file backing which in
            turn points to the original virtual disk backing (the parent). After a delta
            disk backing is added, all writes go to the delta disk backing. All reads
            first try the delta disk backing and then try the parent backing if needed.
            
            A delta disk backing can be added to a disk either implicitly during
            snapshot operations, or explicitly during create or reconfigure of the virtual
            machine.
            
            Note that the type of the backing is consistent throughout the chain; any new
            delta disk backing which is added is of the same type as the original disk .
            Also note that since the parent backing is not being written to,
            it is possible that the parent backing may be shared among multiple
            disks belonging to multiple virtual machines.
            
            During virtual machine *creation* and
            *reconfiguration* this property is
            only checked if the *VirtualDeviceConfigSpec* specifies
            an *add operation* with a
            *create file operation*.
            In this case, a new delta disk backing is created which points to the parent
            disk backing. Only the *fileName*
            property is important; all other properties will be ignored. The parent backing
            is assumed to exist and will not be recursively created.
            
            This property may only be set if
            *deltaDiskBackingsSupported*
            is true.
          $ref: '#/components/schemas/VirtualDiskFlatVer1BackingInfo'
      required:
        - diskMode
      allOf:
        - $ref: '#/components/schemas/VirtualDeviceFileBackingInfo'

    ArrayOfVirtualDiskFlatVer1BackingInfo:
      type: object
      description: |2
        A boxed array of *VirtualDiskFlatVer1BackingInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualDiskFlatVer1BackingInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualDiskFlatVer2BackingInfo:
      type: object
      description: |2
        This data object type contains information about backing a virtual disk using a
        virtual disk file on the host, in the flat file format used by VMware Server,
        ESX Server 2.x, and ESX Server 3.x.
        
        Flat disks are allocated when created, unlike sparse disks, which
        grow as needed.
      properties:
        diskMode:
          description: |2
            The disk persistence mode.
            
            Valid modes are:
            - *persistent*
            - *independent_persistent*
            - *independent_nonpersistent*
            - *nonpersistent*
            - *undoable*
            - *append*
              
            See also *VirtualDiskMode_enum*.
          type: string
        split:
          description: |2
            Flag to indicate the type of virtual disk file: split or monolithic.
            
            If true, the virtual disk is stored in multiple files, each 2GB.
            On ESX this property is ignored when creating new disks or
            editing existing disks. This property is always false for disks
            created on ESX.
            When an existing split disk such as those created by VMware
            Server is added to a virtual machine on ESX, the property will
            be set to true when retrieved from *VirtualMachineConfigInfo*.
          type: boolean
        writeThrough:
          description: |2
            Flag to indicate whether writes should go directly to the file system
            or should be buffered.
          type: boolean
        thinProvisioned:
          description: |2
            Flag to indicate to the underlying filesystem, whether the
            virtual disk backing file should be allocated lazily (using
            thin provisioning). This flag is only used for file systems
            that support configuring the provisioning policy on a per file
            basis, such as VMFS3.
            
            When specified as part of a *VirtualMachineConfigSpec*, this
            property applies only when creating a new virtual disk; it is
            ignored when editing an existing virtual disk.
            
            see *DatastoreCapability.perFileThinProvisioningSupported*
          type: boolean
        eagerlyScrub:
          description: |2
            Flag to indicate to the underlying filesystem whether the
            virtual disk backing file should be scrubbed completely at
            this time.
            
            Virtual disks on some filesystems like VMFS3 are zeroed-out
            lazily so that disk creation time doesn't take too long.
            However, clustering applications and features like
            Fault Tolerance require that the virtual disk be
            completely scrubbed. This setting allows controlling the
            scrubbing policy on a per-disk basis.
            
            If this flag is unset or set to false when creating a new disk,
            the disk scrubbing policy will be decided by the filesystem. If
            this flag is unset or set to false when editing an existing disk,
            it is ignored.
            When returned as part of a *VirtualMachineConfigInfo*, this
            property may be unset if its value is unknown.
          type: boolean
        uuid:
          description: |2
            Disk UUID for the virtual disk, if available.
          type: string
        contentId:
          description: |2
            Content ID of the virtual disk file, if available.
            
            A content ID indicates the logical contents of the disk backing and its parents.
            
            This property is only guaranteed to be up to date if this disk backing is not
            currently being written to by any virtual machine.
            
            The only supported operation is comparing if two content IDs are equal or not.
            The guarantee provided by the content ID is that if two disk backings have the
            same content ID and are not currently being written to, then reads issued from
            the guest operating system to those disk backings will return the same data.
          type: string
        changeId:
          description: |2
            The change ID of the virtual disk for the corresponding
            snapshot or virtual machine.
            
            This can be used to track
            incremental changes to a virtual disk. See
            *VirtualMachine.QueryChangedDiskAreas*.
          type: string
        parent:
          description: |2
            The parent of this virtual disk file, if this is a delta disk backing.
            
            This will be unset if this is not a delta disk backing.
            
            A delta disk backing is a way to preserve a virtual disk backing
            at some point in time. A delta disk backing is a file backing which in
            turn points to the original virtual disk backing (the parent). After a delta
            disk backing is added, all writes go to the delta disk backing. All reads
            first try the delta disk backing and then try the parent backing if needed.
            
            A delta disk backing can be added to a disk either implicitly during
            snapshot operations, or explicitly during create or reconfigure of the virtual
            machine.
            
            Note that the type of the backing is consistent throughout the chain; any new
            delta disk backing which is added is of the same type as the original disk .
            Also note that since the parent backing is not being written to,
            it is possible that the parent backing may be shared among multiple
            disks belonging to multiple virtual machines.
            
            During virtual machine *creation* and
            *reconfiguration* this property is
            only checked if the *VirtualDeviceConfigSpec* specifies
            an *add operation* with a
            *create file operation*.
            In this case, a new delta disk backing is created which points to the parent
            disk backing. Only the *fileName*
            property is important; all other properties will be ignored. The parent backing
            is assumed to exist and will not be recursively created.
            
            This property may only be set if
            *deltaDiskBackingsSupported*
            is true.
          $ref: '#/components/schemas/VirtualDiskFlatVer2BackingInfo'
        deltaDiskFormat:
          description: |2
            The format of the delta disk.
            
            This field is valid only for a delta disk.
            
            See *DeltaDiskFormat* for the
            supported formats. If not specified, the default value used is
            *redoLogFormat*.
            
            If *nativeFormat*
            is specified and the datastore does not support this format or the parent is
            on a different datastore,
            *DeltaDiskFormatNotSupported* is
            thrown.
            
            vSphere server does not support relocation of virtual machines with
            *nativeFormat*.
            An exception is thrown for such requests.
          type: string
        digestEnabled:
          description: |2
            Indicates whether the disk backing has digest file enabled.
          type: boolean
        deltaGrainSize:
          description: |2
            Grain size in kB for a delta disk of format type seSparseFormat.
            
            The default
            size is 4 kB.
            This setting is used to specify the grain size of
            *Flex-SE* delta disks
            when the base disk is of type FlatVer2BackingInfo.
            The *DeltaDiskFormat* must also
            be set to seSparseFormat.
          type: integer
          format: int32
        deltaDiskFormatVariant:
          description: |2
            The delta disk format variant, if applicable.
            
            This field is valid only for a delta disk and may specify more detailed
            information for the delta disk format specified in
            *deltaDiskFormat*.
            
            If *redoLogFormat* is
            specified for the
            *deltaDiskFormat*,
            see *DeltaDiskFormatVariant* for the
            supported formats. If this is not specified for
            *redoLogFormat*,
            the default value used is
            *vmfsSparseVariant*.
            
            For other delta disk formats, this currently remains unspecified.
          type: string
        sharing:
          description: |2
            The sharing mode of the virtual disk.
            
            See *VirtualDiskSharing_enum*. The default value is
            no sharing.
          type: string
        keyId:
          description: |2
            Virtual Disk Backing encryption options.
            
            On modification operations the value is ignored, use the specification
            *VirtualDeviceConfigSpecBackingSpec.crypto* in
            *VirtualDeviceConfigSpec.backing*.
          $ref: '#/components/schemas/CryptoKeyId'
      required:
        - diskMode
      allOf:
        - $ref: '#/components/schemas/VirtualDeviceFileBackingInfo'

    ArrayOfVirtualDiskFlatVer2BackingInfo:
      type: object
      description: |2
        A boxed array of *VirtualDiskFlatVer2BackingInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualDiskFlatVer2BackingInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualDiskLocalPMemBackingInfo:
      type: object
      description: |2
        This data object type contains information about backing a virtual disk
        using non-volatile memory technologies (persistent memory).
        
        Supported for ESX Server 6.5 and later.
      properties:
        diskMode:
          description: |2
            The disk persistence mode.
            
            See also *VirtualDiskMode_enum*.
          type: string
        uuid:
          description: |2
            Disk UUID for the virtual disk, if available.
          type: string
        volumeUUID:
          description: |2
            Persistent memory volume UUID - UUID which associates this
            virtual disk with a specific host.
            
            This is read only property.
            
            See also *HostPersistentMemoryInfo.volumeUUID*.
          type: string
        contentId:
          description: |2
            Content ID of the virtual disk file, if available.
            
            A content ID indicates the logical contents of the disk backing and
            its parents.
            
            This property is only guaranteed to be up to date if this disk backing
            is not currently being written to by any virtual machine.
            
            The only supported operation is comparing if two content IDs are equal
            or not. The guarantee provided by the content ID is that if two disk
            backings have the same content ID and are not currently being written
            to, then reads issued from the guest operating system to those disk
            backings will return the same data.
          type: string
      required:
        - diskMode
      allOf:
        - $ref: '#/components/schemas/VirtualDeviceFileBackingInfo'

    ArrayOfVirtualDiskLocalPMemBackingInfo:
      type: object
      description: |2
        A boxed array of *VirtualDiskLocalPMemBackingInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualDiskLocalPMemBackingInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualDiskPartitionedRawDiskVer2BackingInfo:
      type: object
      description: |2
        This data object type contains information about backing a virtual disk
        using one or more partitions on a physical disk device.
        
        This type of
        backing is supported for VMware Server.
      properties:
        partition:
          description: |2
            Array of partition indexes.
            
            This array identifies the
            partitions that are used on the physical disk drive.
          type: array
          items:
            type: integer
            format: int32
      required:
        - partition
      allOf:
        - $ref: '#/components/schemas/VirtualDiskRawDiskVer2BackingInfo'

    ArrayOfVirtualDiskPartitionedRawDiskVer2BackingInfo:
      type: object
      description: |2
        A boxed array of *VirtualDiskPartitionedRawDiskVer2BackingInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualDiskPartitionedRawDiskVer2BackingInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualDiskRawDiskMappingVer1BackingInfo:
      type: object
      description: |2
        This data object type contains information about backing a virtual disk using a
        raw device mapping.
        
        Supported for ESX Server 2.5 and 3.x.
      properties:
        lunUuid:
          description: |2
            Unique identifier of the LUN accessed by the raw disk mapping.
          type: string
        deviceName:
          description: |2
            The host-specific device the LUN is being accessed through.
            
            If the
            target LUN is not available on the host then it is empty. For example, this
            could happen if it has accidentally been masked out.
          type: string
        compatibilityMode:
          description: |2
            The compatibility mode of the raw disk mapping (RDM).
            
            This must be specified
            when a new virtual disk with an RDM backing is created. On subsequent virtual
            machine reconfigurations, this property should be handled as follows,
            depending on the version of the host:
            
            On ESX Server 2.5, the compatibility mode of an RDM backing is a
            characteristic of the virtual machine's configuration. When reconfiguring
            a virtual machine that currently uses a virtual disk backed by an RDM,
            the compatibility mode of that backing may be modified. When reconfiguring a
            virtual machine to add an existing virtual disk backed by an RDM, the
            compatibility mode of that backing may be specified. If left unspecified it
            defaults to "physicalMode".
            
            On ESX Server 3.x, the compatibility mode of an RDM backing is a
            characteristic of the RDM itself. Once the RDM is created, its compatibility
            mode cannot be changed by reconfiguring the virtual machine. When
            reconfiguring a virtual machine to add an existing virtual disk backed by an
            RDM, the compatibility mode of that backing must be left unspecified.
            
            See also *VirtualDiskCompatibilityMode_enum*.
          type: string
        diskMode:
          description: |2
            The disk mode.
            
            Valid values are:
            - *persistent*
            - *independent_persistent*
            - *independent_nonpersistent*
            - *nonpersistent*
            - *undoable*
            - *append*
              
            Disk modes are only supported when the raw disk mapping is using virtual
            compatibility mode.
            
            See also *VirtualDiskMode_enum*.
          type: string
        uuid:
          description: |2
            Disk UUID for the virtual disk, if available.
            
            Disk UUID is not available if
            the raw disk mapping is in physical compatibility mode.
          type: string
        contentId:
          description: |2
            Content ID of the virtual disk file, if available.
            
            A content ID indicates the logical contents of the disk backing and its parents.
            
            This property is only guaranteed to be up to date if this disk backing is not
            currently being written to by any virtual machine.
            
            The only supported operation is comparing if two content IDs are equal or not.
            The guarantee provided by the content ID is that if two disk backings have the
            same content ID and are not currently being written to, then reads issued from
            the guest operating system to those disk backings will return the same data.
          type: string
        changeId:
          description: |2
            The change ID of the virtual disk for the corresponding
            snapshot or virtual machine.
            
            This can be used to track
            incremental changes to a virtual disk. See
            *VirtualMachine.QueryChangedDiskAreas*.
          type: string
        parent:
          description: |2
            The parent of this virtual disk file, if this is a delta disk backing.
            
            This will be unset if this is not a delta disk backing.
            
            A delta disk backing is a way to preserve a virtual disk backing
            at some point in time. A delta disk backing is a file backing which in
            turn points to the original virtual disk backing (the parent). After a delta
            disk backing is added, all writes go to the delta disk backing. All reads
            first try the delta disk backing and then try the parent backing if needed.
            
            A delta disk backing can be added to a disk either implicitly during
            snapshot operations, or explicitly during create or reconfigure of the virtual
            machine.
            
            Note that the type of the backing is consistent throughout the chain; any new
            delta disk backing which is added is of the same type as the original disk .
            Also note that since the parent backing is not being written to,
            it is possible that the parent backing may be shared among multiple
            disks belonging to multiple virtual machines.
            
            During virtual machine *creation* and
            *reconfiguration* this property is
            only checked if the *VirtualDeviceConfigSpec* specifies
            an *add operation* with a
            *create file operation*.
            In this case, a new delta disk backing is created which points to the parent
            disk backing. Only the *fileName*
            property is important; all other properties will be ignored. The parent backing
            is assumed to exist and will not be recursively created.
            
            Only raw disk mappings in *virtual compatibility mode* can have parents.
            
            This property may only be set if
            *deltaDiskBackingsSupported*
            is true.
          $ref: '#/components/schemas/VirtualDiskRawDiskMappingVer1BackingInfo'
        deltaDiskFormat:
          description: |2
            The format of the delta disk.
            
            This field is valid only for a delta disk.
            
            See *DeltaDiskFormat* for the
            supported formats. The default value used for VM with hardware
            version 8 and lower is
            *redoLogFormat*.
            The default value used for VM with hardware
            version 9 and higher is
            *seSparseFormat*.
            
            *nativeFormat* is not
            supported for bask disk of type RawDiskMappingVer1BackingInfo.
          type: string
        deltaGrainSize:
          description: |2
            Grain size in kB for a delta disk of format type seSparseFormat.
            
            The default
            size is 4 kB.
            The grain size of
            *Flex-SE* delta disks
            when the base disk is of type RawDiskMappingVer1BackingInfo.
            The *DeltaDiskFormat* must also
            be set to seSparseFormat.
          type: integer
          format: int32
        sharing:
          description: |2
            The sharing mode of the virtual disk.
            
            See *VirtualDiskSharing_enum*. The default value is
            no sharing.
          type: string
      allOf:
        - $ref: '#/components/schemas/VirtualDeviceFileBackingInfo'

    ArrayOfVirtualDiskRawDiskMappingVer1BackingInfo:
      type: object
      description: |2
        A boxed array of *VirtualDiskRawDiskMappingVer1BackingInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualDiskRawDiskMappingVer1BackingInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualDiskRawDiskVer2BackingInfo:
      type: object
      description: |2
        This data object type contains information about backing a virtual disk by
        using a host device, as used by VMware Server.
      properties:
        descriptorFileName:
          description: |2
            The name of the raw disk descriptor file.
          type: string
        uuid:
          description: |2
            Disk UUID for the virtual disk, if available.
          type: string
        changeId:
          description: |2
            The change ID of the virtual disk for the corresponding
            snapshot or virtual machine.
            
            This can be used to track
            incremental changes to a virtual disk. See
            *VirtualMachine.QueryChangedDiskAreas*.
          type: string
        sharing:
          description: |2
            The sharing mode of the virtual disk.
            
            See *VirtualDiskSharing_enum*. The default value is
            no sharing.
          type: string
      required:
        - descriptorFileName
      allOf:
        - $ref: '#/components/schemas/VirtualDeviceDeviceBackingInfo'

    ArrayOfVirtualDiskRawDiskVer2BackingInfo:
      type: object
      description: |2
        A boxed array of *VirtualDiskRawDiskVer2BackingInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualDiskRawDiskVer2BackingInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualDiskSeSparseBackingInfo:
      type: object
      description: |2
        Backing type for virtual disks that use the space efficient
        sparse format.
        
        Space for space efficient sparse disks is allocated on
        demand and optimizations are applied to achieve additional
        space savings. The effective space usage of such a disk can
        be obtained from *VirtualMachineFileLayoutEx*.
      properties:
        diskMode:
          description: |2
            The disk persistence mode.
            
            Valid modes are:
            - *persistent*
            - *independent_persistent*
            - *independent_nonpersistent*
            - *nonpersistent*
            - *undoable*
            - *append*
              
            See also *VirtualDiskMode_enum*.
          type: string
        writeThrough:
          description: |2
            Flag to indicate whether writes should go directly to the file system
            or should be buffered.
          type: boolean
        uuid:
          description: |2
            Disk UUID for the virtual disk, if available.
          type: string
        contentId:
          description: |2
            Content ID of the virtual disk file, if available.
            
            A content ID indicates the logical contents of the disk backing and its parents.
            
            This property is only guaranteed to be up to date if this disk backing is not
            currently being written to by any virtual machine.
            
            The only supported operation is comparing if two content IDs are equal or not.
            The guarantee provided by the content ID is that if two disk backings have the
            same content ID and are not currently being written to, then reads issued from
            the guest operating system to those disk backings will return the same data.
          type: string
        changeId:
          description: |2
            The change ID of the virtual disk for the corresponding
            snapshot or virtual machine.
            
            This can be used to track
            incremental changes to a virtual disk. See *VirtualMachine.QueryChangedDiskAreas*.
          type: string
        parent:
          description: |2
            The parent of this virtual disk file, if this is a delta disk backing.
            
            This will be unset if this is not a delta disk backing.
            
            A delta disk backing is a way to preserve a virtual disk backing
            at some point in time. A delta disk backing is a file backing which in
            turn points to the original virtual disk backing (the parent). After a delta
            disk backing is added, all writes go to the delta disk backing. All reads
            first try the delta disk backing and then try the parent backing if needed.
            
            A delta disk backing can be added to a disk either implicitly during
            snapshot operations, or explicitly during create or reconfigure of the virtual
            machine.
            
            Note that the type of the backing is consistent throughout the chain; any new
            delta disk backing which is added is of the same type as the original disk .
            Also note that since the parent backing is not being written to,
            it is possible that the parent backing may be shared among multiple
            disks belonging to multiple virtual machines.
            
            During virtual machine *creation* and
            *reconfiguration* this property is
            only checked if the *VirtualDeviceConfigSpec* specifies
            an *add operation* with a
            *create file operation*.
            In this case, a new delta disk backing is created which points to the parent
            disk backing. Only the *fileName*
            property is important; all other properties will be ignored. The parent backing
            is assumed to exist and will not be recursively created.
            
            This property may only be set if
            *deltaDiskBackingsSupported*
            is true.
          $ref: '#/components/schemas/VirtualDiskSeSparseBackingInfo'
        deltaDiskFormat:
          description: |2
            The format of the delta disk.
            
            This field is valid only for a delta disk.
            
            See *DeltaDiskFormat* for the
            supported formats. If not specified, the default value used is
            *redoLogFormat*.
          type: string
        digestEnabled:
          description: |2
            Indicates whether the disk backing has digest file enabled.
          type: boolean
        grainSize:
          description: |2
            Specify the grain size in kB.
            
            The default size is 4 kB.
          type: integer
          format: int32
        keyId:
          description: |2
            Virtual Disk Backing encryption options.
            
            On modification operations the value is ignored, use the specification
            *VirtualDeviceConfigSpecBackingSpec.crypto* in
            *VirtualDeviceConfigSpec.backing*.
          $ref: '#/components/schemas/CryptoKeyId'
      required:
        - diskMode
      allOf:
        - $ref: '#/components/schemas/VirtualDeviceFileBackingInfo'

    ArrayOfVirtualDiskSeSparseBackingInfo:
      type: object
      description: |2
        A boxed array of *VirtualDiskSeSparseBackingInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualDiskSeSparseBackingInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualDiskSparseVer1BackingInfo:
      type: object
      description: |2
        This data object type contains information about backing a virtual disk by
        using a virtual disk file on the host, in the sparse disk format used by
        GSX Server 2.x.
      properties:
        diskMode:
          description: |2
            The disk persistence mode.
            
            Valid values are:
            - *persistent*
            - *nonpersistent*
            - *undoable*
            - *independent_persistent*
            - *independent_nonpersistent*
            - *append*
              
            See also *VirtualDiskMode_enum*.
          type: string
        split:
          description: |2
            Flag to indicate the type of virtual disk file: split or monolithic.
            
            If true, the virtual disk is stored in multiple files, each 2GB.
          type: boolean
        writeThrough:
          description: |2
            Flag to indicate whether writes should go directly to the file system
            or should be buffered.
          type: boolean
        spaceUsedInKB:
          description: |2
            The space in use for this sparse disk.
            
            This information is provided
            when retrieving configuration information for an existing virtual
            machine. The client cannot modify this information using reconfigure
            on a virtual machine.
          type: integer
          format: int64
        contentId:
          description: |2
            Content ID of the virtual disk file, if available.
            
            A content ID indicates the logical contents of the disk backing and its parents.
            
            This property is only guaranteed to be up to date if this disk backing is not
            currently being written to by any virtual machine.
            
            The only supported operation is comparing if two content IDs are equal or not.
            The guarantee provided by the content ID is that if two disk backings have the
            same content ID and are not currently being written to, then reads issued from
            the guest operating system to those disk backings will return the same data.
          type: string
        parent:
          description: |2
            The parent of this virtual disk file, if this is a delta disk backing.
            
            This will be unset if this is not a delta disk backing.
            
            A delta disk backing is a way to preserve a virtual disk backing
            at some point in time. A delta disk backing is a file backing which in
            turn points to the original virtual disk backing (the parent). After a delta
            disk backing is added, all writes go to the delta disk backing. All reads
            first try the delta disk backing and then try the parent backing if needed.
            
            A delta disk backing can be added to a disk either implicitly during
            snapshot operations, or explicitly during create or reconfigure of the virtual
            machine.
            
            Note that the type of the backing is consistent throughout the chain; any new
            delta disk backing which is added is of the same type as the original disk .
            Also note that since the parent backing is not being written to,
            it is possible that the parent backing may be shared among multiple
            disks belonging to multiple virtual machines.
            
            During virtual machine *creation* and
            *reconfiguration* this property is
            only checked if the *VirtualDeviceConfigSpec* specifies
            an *add operation* with a
            *create file operation*.
            In this case, a new delta disk backing is created which points to the parent
            disk backing. Only the *fileName*
            property is important; all other properties will be ignored. The parent backing
            is assumed to exist and will not be recursively created.
            
            This property may only be set if
            *deltaDiskBackingsSupported*
            is true.
          $ref: '#/components/schemas/VirtualDiskSparseVer1BackingInfo'
      required:
        - diskMode
      allOf:
        - $ref: '#/components/schemas/VirtualDeviceFileBackingInfo'

    ArrayOfVirtualDiskSparseVer1BackingInfo:
      type: object
      description: |2
        A boxed array of *VirtualDiskSparseVer1BackingInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualDiskSparseVer1BackingInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualDiskSparseVer2BackingInfo:
      type: object
      description: |2
        This data object type contains information about backing a virtual disk by
        using a virtual disk file on the host, in the sparse disk format used by
        VMware Server.
      properties:
        diskMode:
          description: |2
            The disk persistence mode.
            
            Valid modes are:
            - *persistent*
            - *independent_persistent*
            - *independent_nonpersistent*
              
            See also *VirtualDiskMode_enum*.
          type: string
        split:
          description: |2
            Flag to indicate the type of virtual disk file: split or monolithic.
            
            If true, the virtual disk is stored in multiple files, each 2GB.
          type: boolean
        writeThrough:
          description: |2
            Flag to indicate whether writes should go directly to the file system
            or should be buffered.
          type: boolean
        spaceUsedInKB:
          description: |2
            The space in use for this sparse disk.
            
            This information is provided
            when retrieving configuration information for an exisiting virtual
            machine. The client cannot modify this information using reconfigure
            on a virtual machine.
          type: integer
          format: int64
        uuid:
          description: |2
            Disk UUID for the virtual disk, if available.
          type: string
        contentId:
          description: |2
            Content ID of the virtual disk file, if available.
            
            A content ID indicates the logical contents of the disk backing and its parents.
            
            This property is only guaranteed to be up to date if this disk backing is not
            currently being written to by any virtual machine.
            
            The only supported operation is comparing if two content IDs are equal or not.
            The guarantee provided by the content ID is that if two disk backings have the
            same content ID and are not currently being written to, then reads issued from
            the guest operating system to those disk backings will return the same data.
          type: string
        changeId:
          description: |2
            The change ID of the virtual disk for the corresponding
            snapshot or virtual machine.
            
            This can be used to track
            incremental changes to a virtual disk. See
            *VirtualMachine.QueryChangedDiskAreas*.
          type: string
        parent:
          description: |2
            The parent of this virtual disk file, if this is a delta disk backing.
            
            This will be unset if this is not a delta disk backing.
            
            A delta disk backing is a way to preserve a virtual disk backing
            at some point in time. A delta disk backing is a file backing which in
            turn points to the original virtual disk backing (the parent). After a delta
            disk backing is added, all writes go to the delta disk backing. All reads
            first try the delta disk backing and then try the parent backing if needed.
            
            A delta disk backing can be added to a disk either implicitly during
            snapshot operations, or explicitly during create or reconfigure of the virtual
            machine.
            
            Note that the type of the backing is consistent throughout the chain; any new
            delta disk backing which is added is of the same type as the original disk .
            Also note that since the parent backing is not being written to,
            it is possible that the parent backing may be shared among multiple
            disks belonging to multiple virtual machines.
            
            During virtual machine *creation* and
            *reconfiguration* this property is
            only checked if the *VirtualDeviceConfigSpec* specifies
            an *add operation* with a
            *create file operation*.
            In this case, a new delta disk backing is created which points to the parent
            disk backing. Only the *fileName*
            property is important; all other properties will be ignored. The parent backing
            is assumed to exist and will not be recursively created.
            
            This property may only be set if
            *deltaDiskBackingsSupported*
            is true.
          $ref: '#/components/schemas/VirtualDiskSparseVer2BackingInfo'
        keyId:
          description: |2
            Virtual Disk Backing encryption options.
            
            On modification operations the value is ignored, use the specification
            *VirtualDeviceConfigSpecBackingSpec.crypto* in
            *VirtualDeviceConfigSpec.backing*.
          $ref: '#/components/schemas/CryptoKeyId'
      required:
        - diskMode
      allOf:
        - $ref: '#/components/schemas/VirtualDeviceFileBackingInfo'

    ArrayOfVirtualDiskSparseVer2BackingInfo:
      type: object
      description: |2
        A boxed array of *VirtualDiskSparseVer2BackingInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualDiskSparseVer2BackingInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualDiskVFlashCacheConfigInfo:
      type: object
      description: |2
        Data object describes the vFlash cache configuration on this virtual disk.
      properties:
        vFlashModule:
          deprecated: true
          description: |2
            Deprecated since vSphere 7.0 because vFlash Read Cache
            end of availability.
            
            Name of vFlash module which manages the cache.
            
            If not specified, default setting
            *HostVFlashManagerVFlashCacheConfigSpec.defaultVFlashModule*
            will be used.
          type: string
        reservationInMB:
          deprecated: true
          description: |2
            Deprecated since vSphere 7.0 because vFlash Read Cache
            end of availability.
            
            Amount of vFlash resource that is guaranteed available to the cache.
            
            If not specified,
            default reservation will be used.
          type: integer
          format: int64
        cacheConsistencyType:
          deprecated: true
          description: |2
            Deprecated since vSphere 7.0 because vFlash Read Cache
            end of availability.
            
            Cache data consistency types after a crash.
            
            See *VirtualDiskVFlashCacheConfigInfoCacheConsistencyType_enum*
            for supported types. If not specified, the default value used is
            *strong*
          type: string
        cacheMode:
          deprecated: true
          description: |2
            Deprecated since vSphere 7.0 because vFlash Read Cache
            end of availability.
            
            Cache modes.
            
            See *VirtualDiskVFlashCacheConfigInfoCacheMode_enum*
            for supported modes. If not specified, the default value used is
            *write_thru*.
          type: string
        blockSizeInKB:
          deprecated: true
          description: |2
            Deprecated since vSphere 7.0 because vFlash Read Cache
            end of availability.
            
            Cache block size.
            
            This parameter allows the user to control how much
            data gets cached on a single access to the VMDK. Max block size is 1MB.
            Default is 4KB.
          type: integer
          format: int64
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVirtualDiskVFlashCacheConfigInfo:
      type: object
      description: |2
        A boxed array of *VirtualDiskVFlashCacheConfigInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualDiskVFlashCacheConfigInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualDiskId:
      type: object
      description: |2
        Identifier for a virtual disk.
      properties:
        vm:
          description: |2
            Virtual machine reference.
            
            Refers instance of *VirtualMachine*.
          $ref: '#/components/schemas/ManagedObjectReference'
        diskId:
          description: |2
            Device ID *VirtualDevice.key* of the virtual disk.
          type: integer
          format: int32
      required:
        - vm
        - diskId
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVirtualDiskId:
      type: object
      description: |2
        A boxed array of *VirtualDiskId*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualDiskId'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualDiskOption:
      type: object
      description: |2
        The VirtualDiskOption data class contains the options for the
        virtual disk data object type.
      properties:
        capacityInKB:
          description: |2
            Minimum, maximum, and default capacity of the disk.
          $ref: '#/components/schemas/LongOption'
        ioAllocationOption:
          deprecated: true
          description: |2
            Deprecated as of vSphere8.0 U3, and there is no replacement for it.
            
            Minimum, maximum, and default values for Storage I/O allocation.
            
            See also *StorageIOAllocationInfo*.
          $ref: '#/components/schemas/StorageIOAllocationOption'
        vFlashCacheConfigOption:
          deprecated: true
          description: |2
            Deprecated since vSphere 7.0 because vFlash Read Cache
            end of availability.
            
            vFlash cache configuration on the disk.
          $ref: '#/components/schemas/VirtualDiskOptionVFlashCacheConfigOption'
      required:
        - capacityInKB
        - ioAllocationOption
      allOf:
        - $ref: '#/components/schemas/VirtualDeviceOption'

    ArrayOfVirtualDiskOption:
      type: object
      description: |2
        A boxed array of *VirtualDiskOption*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualDiskOption'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualDiskDeltaDiskFormatsSupported:
      type: object
      description: |2
        Delta disk format supported for each datastore type.
      properties:
        datastoreType:
          description: |2
            Datastore type name
          type: string
        deltaDiskFormat:
          description: |2
            Delta disk formats supported.
            
            Valid values are:
            - *redoLogFormat*
            - *nativeFormat*
          $ref: '#/components/schemas/ChoiceOption'
      required:
        - datastoreType
        - deltaDiskFormat
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVirtualDiskDeltaDiskFormatsSupported:
      type: object
      description: |2
        A boxed array of *VirtualDiskDeltaDiskFormatsSupported*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualDiskDeltaDiskFormatsSupported'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualDiskFlatVer1BackingOption:
      type: object
      description: |2
        This data object type contains the available options when backing a virtual disk
        using a host file with the flat file format from GSX Server 2.x.
        
        Flat disks are pre-allocated, whereas sparse disks are grown as needed.
      properties:
        diskMode:
          description: |2
            The disk mode.
            
            Valid disk modes are:
            - *persistent*
            - *nonpersistent*
            - *undoable*
            - *independent_persistent*
            - *independent_nonpersistent*
            - *append*
              
            See also *VirtualDiskMode_enum*.
          $ref: '#/components/schemas/ChoiceOption'
        split:
          description: |2
            Flag to indicate whether or not the host supports
            allowing the client to select whether or not a disk
            should be split.
          $ref: '#/components/schemas/BoolOption'
        writeThrough:
          description: |2
            Flag to indicate whether or not the host supports
            allowing the client to select "writethrough" as a mode for
            virtual disks.
            
            Typically, this is available only for GSX Server Linux hosts.
          $ref: '#/components/schemas/BoolOption'
        growable:
          description: |2
            Flag to indicate whether this backing can have its size changed.
          type: boolean
      required:
        - diskMode
        - split
        - writeThrough
        - growable
      allOf:
        - $ref: '#/components/schemas/VirtualDeviceFileBackingOption'

    ArrayOfVirtualDiskFlatVer1BackingOption:
      type: object
      description: |2
        A boxed array of *VirtualDiskFlatVer1BackingOption*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualDiskFlatVer1BackingOption'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualDiskFlatVer2BackingOption:
      type: object
      description: |2
        This data object type contains the available options when backing a virtual
        disk using a host file with the flat file format used in VMware Server and
        in ESX Server 2.x and greater.
        
        Flat disks are pre-allocated, whereas sparse disks are grown as needed.
      properties:
        diskMode:
          description: |2
            The disk mode.
            
            Valid disk modes are:
            - *persistent*
            - *independent_persistent*
            - *independent_nonpersistent*
              
            See also *VirtualDiskMode_enum*.
          $ref: '#/components/schemas/ChoiceOption'
        split:
          description: |2
            Flag to indicate whether or not the host supports
            allowing the client to select whether or not a disk
            should be split.
          $ref: '#/components/schemas/BoolOption'
        writeThrough:
          description: |2
            Flag to indicate whether or not the host supports
            allowing the client to select "writethrough" as a mode for
            virtual disks.
            
            Typically, this is available only for VMware Server Linux hosts.
          $ref: '#/components/schemas/BoolOption'
        growable:
          description: |2
            Indicates whether or not this disk backing can be
            extended to larger sizes through a reconfigure operation.
            
            If set to true, reconfiguring this virtual disk
            with a *VirtualDisk.capacityInKB* value greater
            than its current value will grow the disk to the newly specified size.
          type: boolean
        hotGrowable:
          description: |2
            Indicates whether or not this disk backing can be
            extended to larger sizes through a reconfigure operation while
            the virtual machine is powered on.
            
            If set to true, reconfiguring this virtual disk
            with a *VirtualDisk.capacityInKB* value greater
            than its current value will grow the disk to the newly specified size
            while the virtual machine is powered on.
          type: boolean
        uuid:
          description: |2
            Flag to indicate whether this backing supports disk UUID property.
          type: boolean
        thinProvisioned:
          description: |2
            Flag to indicate if this backing supports thin-provisioned disks.
            
            When creating a thin-provisioned disk (or converting an existing disk to
            to a thin-provisioned one), both the target datastore and the
            host accessing it must support thin-provisioning. This flag indicates only
            the host capability. See *DatastoreCapability.perFileThinProvisioningSupported*
            for datastore capability.
          $ref: '#/components/schemas/BoolOption'
        eagerlyScrub:
          description: |2
            Flag to indicate if this backing supports eager scrubbing.
          $ref: '#/components/schemas/BoolOption'
        deltaDiskFormat:
          deprecated: true
          description: |2
            Deprecated as of vSphere API 5.1, please use
            *VirtualDiskFlatVer2BackingOption.deltaDiskFormatsSupported*.
            
            Delta disk formats supported.
            
            Valid values are:
            - *redoLogFormat*
            - *nativeFormat*
          $ref: '#/components/schemas/ChoiceOption'
        deltaDiskFormatsSupported:
          description: |2
            Delta disk formats supported for each datastore type.
          type: array
          items:
            $ref: '#/components/schemas/VirtualDiskDeltaDiskFormatsSupported'
      required:
        - diskMode
        - split
        - writeThrough
        - growable
        - hotGrowable
        - uuid
        - thinProvisioned
        - eagerlyScrub
        - deltaDiskFormat
        - deltaDiskFormatsSupported
      allOf:
        - $ref: '#/components/schemas/VirtualDeviceFileBackingOption'

    ArrayOfVirtualDiskFlatVer2BackingOption:
      type: object
      description: |2
        A boxed array of *VirtualDiskFlatVer2BackingOption*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualDiskFlatVer2BackingOption'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualDiskLocalPMemBackingOption:
      type: object
      description: |2
        This data object type contains the available options when backing
        a virtualdisk using persistent memory.
      properties:
        diskMode:
          description: |2
            The disk mode.
            
            See also *VirtualDiskMode_enum*.
          $ref: '#/components/schemas/ChoiceOption'
        growable:
          description: |2
            Indicates whether or not this disk backing can be
            extended to larger sizes through a reconfigure operation.
            
            If set to true, reconfiguring this virtual disk
            with a *VirtualDisk.capacityInKB* value greater
            than its current value will grow the disk to the newly specified size.
          type: boolean
        hotGrowable:
          description: |2
            Indicates whether or not this disk backing can be
            extended to larger sizes through a reconfigure operation while
            the virtual machine is powered on.
            
            If set to true, reconfiguring this virtual disk
            with a *VirtualDisk.capacityInKB* value greater
            than its current value will grow the disk to the newly specified size
            while the virtual machine is powered on.
          type: boolean
        uuid:
          description: |2
            Flag to indicate whether this backing supports disk UUID property.
          type: boolean
      required:
        - diskMode
        - growable
        - hotGrowable
        - uuid
      allOf:
        - $ref: '#/components/schemas/VirtualDeviceFileBackingOption'

    ArrayOfVirtualDiskLocalPMemBackingOption:
      type: object
      description: |2
        A boxed array of *VirtualDiskLocalPMemBackingOption*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualDiskLocalPMemBackingOption'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualDiskPartitionedRawDiskVer2BackingOption:
      type: object
      description: |2
        The VirtualDiskOption.PartitionedRawDiskVer2BackingOption object
        type contains the available options when backing a virtual disk
        using one or more partitions on a physical disk device.
        
        This
        backing is supported in VMware Server.
      allOf:
        - $ref: '#/components/schemas/VirtualDiskRawDiskVer2BackingOption'

    ArrayOfVirtualDiskPartitionedRawDiskVer2BackingOption:
      type: object
      description: |2
        A boxed array of *VirtualDiskPartitionedRawDiskVer2BackingOption*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualDiskPartitionedRawDiskVer2BackingOption'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualDiskRawDiskMappingVer1BackingOption:
      type: object
      description: |2
        The VirtualDiskOption.RawDiskMappingVer1BackingOption object type
        contains the available options when backing a virtual disk using
        a raw device mapping on ESX Server 2.5 or 3.x.
      properties:
        descriptorFileNameExtensions:
          description: |2
            Valid extensions for the filename of the optional
            raw disk mapping descriptor file.
            
            This is present only for ESX Server 3.x and greater hosts.
          $ref: '#/components/schemas/ChoiceOption'
        compatibilityMode:
          description: |2
            The supported raw disk mapping compatibility modes.
            
            See also *VirtualDiskCompatibilityMode_enum*.
          $ref: '#/components/schemas/ChoiceOption'
        diskMode:
          description: |2
            The disk mode.
            
            Valid values are:
            - *persistent*
            - *independent_persistent*
            - *independent_nonpersistent*
              
            See also *VirtualDiskMode_enum*.
          $ref: '#/components/schemas/ChoiceOption'
        uuid:
          description: |2
            Flag to indicate whether this backing supports disk UUID property.
          type: boolean
      required:
        - compatibilityMode
        - diskMode
        - uuid
      allOf:
        - $ref: '#/components/schemas/VirtualDeviceDeviceBackingOption'

    ArrayOfVirtualDiskRawDiskMappingVer1BackingOption:
      type: object
      description: |2
        A boxed array of *VirtualDiskRawDiskMappingVer1BackingOption*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualDiskRawDiskMappingVer1BackingOption'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualDiskRawDiskVer2BackingOption:
      type: object
      description: |2
        The VirtualDiskOption.RawDiskVer2BackingOption object type
        contains the available options when backing a virtual disk
        using a host device on VMware Server.
      properties:
        descriptorFileNameExtensions:
          description: |2
            Valid extensions for the filename of the raw disk descriptor
            file.
          $ref: '#/components/schemas/ChoiceOption'
        uuid:
          description: |2
            Flag to indicate whether this backing supports disk UUID property.
          type: boolean
      required:
        - descriptorFileNameExtensions
        - uuid
      allOf:
        - $ref: '#/components/schemas/VirtualDeviceDeviceBackingOption'

    ArrayOfVirtualDiskRawDiskVer2BackingOption:
      type: object
      description: |2
        A boxed array of *VirtualDiskRawDiskVer2BackingOption*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualDiskRawDiskVer2BackingOption'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualDiskSeSparseBackingOption:
      type: object
      description: |2
        Backing options for virtual disks that use the space
        efficient sparse format.
        
        Space for Flex-SE disks is allocated on demand and
        optimizations are applied to achieve additional
        space savings.
      properties:
        diskMode:
          description: |2
            The disk mode.
            
            Valid disk modes are:
            - *persistent*
            - *independent_persistent*
            - *independent_nonpersistent*
              
            See also *VirtualDiskMode_enum*.
          $ref: '#/components/schemas/ChoiceOption'
        writeThrough:
          description: |2
            Flag to indicate whether or not the host supports
            allowing the client to select "writethrough" as a mode for
            virtual disks.
            
            Typically, this is available only for VMware Server Linux hosts.
          $ref: '#/components/schemas/BoolOption'
        growable:
          description: |2
            Indicates whether or not this disk backing can be
            extended to larger sizes through a reconfigure operation.
            
            If set to true, reconfiguring this virtual disk
            with a *VirtualDisk.capacityInKB* value greater
            than its current value will grow the disk to the newly specified size.
          type: boolean
        hotGrowable:
          description: |2
            Indicates whether or not this disk backing can be
            extended to larger sizes through a reconfigure operation while
            the virtual machine is powered on.
            
            If set to true, reconfiguring this virtual disk
            with a *VirtualDisk.capacityInKB* value greater
            than its current value will grow the disk to the newly specified size
            while the virtual machine is powered on.
          type: boolean
        uuid:
          description: |2
            Flag to indicate whether this backing supports disk UUID property.
          type: boolean
        deltaDiskFormatsSupported:
          description: |2
            Delta disk formats supported for each datastore type.
          type: array
          items:
            $ref: '#/components/schemas/VirtualDiskDeltaDiskFormatsSupported'
      required:
        - diskMode
        - writeThrough
        - growable
        - hotGrowable
        - uuid
        - deltaDiskFormatsSupported
      allOf:
        - $ref: '#/components/schemas/VirtualDeviceFileBackingOption'

    ArrayOfVirtualDiskSeSparseBackingOption:
      type: object
      description: |2
        A boxed array of *VirtualDiskSeSparseBackingOption*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualDiskSeSparseBackingOption'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualDiskSparseVer1BackingOption:
      type: object
      description: |2
        This data object type contains the available options when backing a virtual
        disk using a host file with the sparse file format from GSX Server 2.x.
      properties:
        diskModes:
          description: |2
            The disk mode.
            
            Valid disk modes are:
            - *persistent*
            - *nonpersistent*
            - *undoable*
            - *independent_persistent*
            - *independent_nonpersistent*
            - *append*
              
            See also *VirtualDiskMode_enum*.
          $ref: '#/components/schemas/ChoiceOption'
        split:
          description: |2
            Flag to indicate whether or not the host supports
            allowing the client to select whether or not a sparse disk
            should be split.
          $ref: '#/components/schemas/BoolOption'
        writeThrough:
          description: |2
            Flag to indicate whether or not the host supports
            allowing the client to select "writethrough" as a mode for
            virtual disks.
            
            Typically, this is available only for VMware Server Linux hosts.
          $ref: '#/components/schemas/BoolOption'
        growable:
          description: |2
            Flag to indicate whether this backing can have its size changed.
          type: boolean
      required:
        - diskModes
        - split
        - writeThrough
        - growable
      allOf:
        - $ref: '#/components/schemas/VirtualDeviceFileBackingOption'

    ArrayOfVirtualDiskSparseVer1BackingOption:
      type: object
      description: |2
        A boxed array of *VirtualDiskSparseVer1BackingOption*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualDiskSparseVer1BackingOption'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualDiskSparseVer2BackingOption:
      type: object
      description: |2
        This data object type contains the options available when backing a virtual
        disk using a host file with the sparse file format from VMware Server.
      properties:
        diskMode:
          description: |2
            The disk mode.
            
            Valid disk modes are:
            - *persistent*
            - *nonpersistent*
            - *undoable*
            - *independent_persistent*
            - *independent_nonpersistent*
            - *append*
              
            See also *VirtualDiskMode_enum*.
          $ref: '#/components/schemas/ChoiceOption'
        split:
          description: |2
            Flag to indicate whether or not the host supports
            allowing the client to select whether or not a sparse disk
            should be split.
          $ref: '#/components/schemas/BoolOption'
        writeThrough:
          description: |2
            Flag to indicate whether or not the host supports
            allowing the client to select "writethrough" as a mode for
            virtual disks.
            
            Typically, this is available only for VMware Server Linux hosts.
          $ref: '#/components/schemas/BoolOption'
        growable:
          description: |2
            Indicates whether or not this disk backing can be
            extended to larger sizes through a reconfigure operation.
            
            If set to true, reconfiguring this virtual disk
            with a *VirtualDisk.capacityInKB* value greater
            than its current value will grow the disk to the newly specified size.
          type: boolean
        hotGrowable:
          description: |2
            Indicates whether or not this disk backing can be
            extended to larger sizes through a reconfigure operation while
            the virtual machine is powered on.
            
            If set to true, reconfiguring this virtual disk
            with a *VirtualDisk.capacityInKB* value greater
            than its current value will grow the disk to the newly specified size
            while the virtual machine is powered on.
          type: boolean
        uuid:
          description: |2
            Flag to indicate whether this backing supports disk UUID property.
          type: boolean
      required:
        - diskMode
        - split
        - writeThrough
        - growable
        - hotGrowable
        - uuid
      allOf:
        - $ref: '#/components/schemas/VirtualDeviceFileBackingOption'

    ArrayOfVirtualDiskSparseVer2BackingOption:
      type: object
      description: |2
        A boxed array of *VirtualDiskSparseVer2BackingOption*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualDiskSparseVer2BackingOption'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualDiskOptionVFlashCacheConfigOption:
      type: object
      deprecated: true
      description: |2
        Deprecated since vSphere 7.0 because vFlash Read Cache
        end of availability.
        
        Options for vFlash cache configuration.
      properties:
        cacheConsistencyType:
          description: |2
            Cache data consistency type.
            
            See *VirtualDiskVFlashCacheConfigInfoCacheConsistencyType_enum*
          $ref: '#/components/schemas/ChoiceOption'
        cacheMode:
          description: |2
            Cache mode
            See *VirtualDiskVFlashCacheConfigInfoCacheMode_enum*
          $ref: '#/components/schemas/ChoiceOption'
        reservationInMB:
          description: |2
            Cache reservation
          $ref: '#/components/schemas/LongOption'
        blockSizeInKB:
          description: |2
            Cache block size
          $ref: '#/components/schemas/LongOption'
      required:
        - cacheConsistencyType
        - cacheMode
        - reservationInMB
        - blockSizeInKB
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVirtualDiskOptionVFlashCacheConfigOption:
      type: object
      description: |2
        A boxed array of *VirtualDiskOptionVFlashCacheConfigOption*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualDiskOptionVFlashCacheConfigOption'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualDiskConfigSpec:
      type: object
      description: |2
        The VirtualDiskSpec data object type encapsulates change
        specifications for an individual virtual disk device.
        
        The virtual
        disk being added or modified must be fully specified.
      properties:
        diskMoveType:
          description: |2
            Manner in which to move the virtual disk to the target datastore.
            
            The set of possible values is described in
            *VirtualMachineRelocateDiskMoveOptions_enum*.
            
            This property can only be set if *HostCapability.deltaDiskBackingsSupported* is true.
            
            If left unset then *moveAllDiskBackingsAndDisallowSharing*
            is assumed.
          type: string
        migrateCache:
          deprecated: true
          description: |2
            Deprecated since vSphere 7.0 because vFlash Read Cache
            end of availability.
            
            Manner in which to transfer the cache associated with the virtual disk to the
            target host.
            
            If left unset then migrate is used when virtual flash resource on the source host
            is accessible and when the backing vFlash module version is compatible with the
            specific vFalsh module on the target host; otherwise flush is used for write back
            cache, or a no-op for write through cache. This setting can avoid VM migration failure
            due to incompatibility.
            If true then migrate is always used. VM migration may fail if the backing vFlash module
            version is incompatible with the module on the target host.
            If false then flush is used for write back cache. It is a no-op for write through
            cache. This setting can avoid VM migration failure due to incompatibility, but cache
            files have to be rebuilt on the target host.
            Default is unset.
            
            See also *HostVFlashManagerVFlashCacheConfigInfoVFlashModuleConfigOption*.
          type: boolean
      allOf:
        - $ref: '#/components/schemas/VirtualDeviceConfigSpec'

    ArrayOfVirtualDiskConfigSpec:
      type: object
      description: |2
        A boxed array of *VirtualDiskConfigSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualDiskConfigSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualE1000:
      type: object
      description: |2
        The VirtualE1000 data object type represents an instance
        of the E1000 virtual Ethernet adapter attached to a virtual machine.
      allOf:
        - $ref: '#/components/schemas/VirtualEthernetCard'

    ArrayOfVirtualE1000:
      type: object
      description: |2
        A boxed array of *VirtualE1000*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualE1000'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualE1000Option:
      type: object
      description: |2
        The VirtualE1000 option data object type contains the options for the
        *VirtualE1000* data object type.
      allOf:
        - $ref: '#/components/schemas/VirtualEthernetCardOption'

    ArrayOfVirtualE1000Option:
      type: object
      description: |2
        A boxed array of *VirtualE1000Option*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualE1000Option'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualE1000e:
      type: object
      description: |2
        The VirtualE1000e data object type represents an instance
        of the E1000e virtual Ethernet adapter attached to a virtual machine.
      allOf:
        - $ref: '#/components/schemas/VirtualEthernetCard'

    ArrayOfVirtualE1000e:
      type: object
      description: |2
        A boxed array of *VirtualE1000e*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualE1000e'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualE1000eOption:
      type: object
      description: |2
        The VirtualE1000e option data object type contains the options for the
        *VirtualE1000e* data object type.
      allOf:
        - $ref: '#/components/schemas/VirtualEthernetCardOption'

    ArrayOfVirtualE1000eOption:
      type: object
      description: |2
        A boxed array of *VirtualE1000eOption*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualE1000eOption'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualEnsoniq1371:
      type: object
      description: |2
        The VirtualEnsoniq1371 data object type represents an Ensoniq 1371
        sound card in a virtual machine.
      allOf:
        - $ref: '#/components/schemas/VirtualSoundCard'

    ArrayOfVirtualEnsoniq1371:
      type: object
      description: |2
        A boxed array of *VirtualEnsoniq1371*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualEnsoniq1371'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualEnsoniq1371Option:
      type: object
      description: |2
        The VirtualEnsoniq1371Option data object type contains the options for the
        virtual Ensoniq 1371 sound card.
      allOf:
        - $ref: '#/components/schemas/VirtualSoundCardOption'

    ArrayOfVirtualEnsoniq1371Option:
      type: object
      description: |2
        A boxed array of *VirtualEnsoniq1371Option*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualEnsoniq1371Option'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualEthernetCard:
      type: object
      description: |2
        The *VirtualEthernetCard* data object contains the properties
        of an Ethernet adapter attached to a virtual machine.
      properties:
        dynamicProperty:
          description: |2
            Set of dynamic properties.
            
            This property is optional because only the
            properties of an object that are unknown to a client will be part of this set.
            This property is not readonly just in case we want to send such properties
            from a client in the future.
          type: array
          items:
            $ref: '#/components/schemas/DynamicProperty'
        addressType:
          description: |2
            MAC address type.
            
            Valid values for address type are:
            <dl>
            <dt>Manual</dt>
            <dd>Statically assigned MAC address.</dd>
            <dt>Generated</dt>
            <dd>Automatically generated MAC address.</dd>
            <dt>Assigned</dt>
            <dd>MAC address assigned by VirtualCenter.</dd>
            </dl>
          type: string
        macAddress:
          description: |2
            MAC address assigned to the virtual network adapter.
            
            Clients can
            set this property to any of the allowed address types. The server might
            override the specified value for "Generated" or "Assigned" if it does not
            fall in the right ranges or is determined to be a duplicate.
          type: string
        wakeOnLanEnabled:
          description: |2
            Indicates whether wake-on-LAN is enabled on this virtual network adapter.
            
            Clients
            can set this property to selectively enable or disable wake-on-LAN.
          type: boolean
        resourceAllocation:
          description: |2
            Resource requirements of the virtual network adapter
          $ref: '#/components/schemas/VirtualEthernetCardResourceAllocation'
        externalId:
          description: |2
            An ID assigned to the virtual network adapter by external management plane or
            controller.
            
            The value and format of this property is determined by external
            management plane or controller, and vSphere doesn't do any validation. It's
            also up to external management plane or controller to set, unset or maintain
            this property. Setting this property with an empty string value will unset the
            property.
          type: string
        uptCompatibilityEnabled:
          deprecated: true
          description: |2
            Deprecated as of vSphere API 8.0. VMDirectPath Gen 2 is no longer supported and
            there is no replacement.
            
            Indicates whether UPT(Universal Pass-through) compatibility is enabled
            on this network adapter.
            
            UPT is only compatible for Vmxnet3 adapter.
            Clients can set this property enabled or disabled if ethernet
            virtual device is Vmxnet3.
          type: boolean
      allOf:
        - $ref: '#/components/schemas/VirtualDevice'

    ArrayOfVirtualEthernetCard:
      type: object
      description: |2
        A boxed array of *VirtualEthernetCard*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualEthernetCard'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualEthernetCardDistributedVirtualPortBackingInfo:
      type: object
      description: |2
        The *VirtualEthernetCardDistributedVirtualPortBackingInfo*
        data object defines backing for a virtual Ethernet card that connects
        to a distributed virtual switch port or portgroup.
      properties:
        port:
          description: |2
            *DistributedVirtualPort* or *DistributedVirtualPortgroup*
            connection.
            
            To specify a port connection, set the
            *DistributedVirtualSwitchPortConnection.portKey* property.
            To specify a portgroup connection, set the
            *DistributedVirtualSwitchPortConnection.portgroupKey* property.
            
            This property will be unset during Virtual Machine or template cloning
            operation unless it's set to a *DistributedVirtualSwitchPortConnection*
            object and the portgroup is a late binding portgroup.
          $ref: '#/components/schemas/DistributedVirtualSwitchPortConnection'
      required:
        - port
      allOf:
        - $ref: '#/components/schemas/VirtualDeviceBackingInfo'

    ArrayOfVirtualEthernetCardDistributedVirtualPortBackingInfo:
      type: object
      description: |2
        A boxed array of *VirtualEthernetCardDistributedVirtualPortBackingInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualEthernetCardDistributedVirtualPortBackingInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualEthernetCardLegacyNetworkBackingInfo:
      type: object
      description: |2
        The *VirtualEthernetCardLegacyNetworkBackingInfo* data object
        provides legacy backing for a virtual Ethernet card.
      allOf:
        - $ref: '#/components/schemas/VirtualDeviceDeviceBackingInfo'

    ArrayOfVirtualEthernetCardLegacyNetworkBackingInfo:
      type: object
      description: |2
        A boxed array of *VirtualEthernetCardLegacyNetworkBackingInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualEthernetCardLegacyNetworkBackingInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualEthernetCardNetworkBackingInfo:
      type: object
      description: |2
        The *VirtualEthernetCardNetworkBackingInfo* data object
        defines network backing for a virtual Ethernet card.
      properties:
        network:
          description: |2
            Reference to the network managed object to which this backing applies.
            
            This is not used during configuration.
            
            Refers instance of *Network*.
          $ref: '#/components/schemas/ManagedObjectReference'
        inPassthroughMode:
          deprecated: true
          description: |2
            Deprecated as of vSphere API 4.0, this property is not supported.
            &nbsp;.
            
            &nbsp;
          type: boolean
      allOf:
        - $ref: '#/components/schemas/VirtualDeviceDeviceBackingInfo'

    ArrayOfVirtualEthernetCardNetworkBackingInfo:
      type: object
      description: |2
        A boxed array of *VirtualEthernetCardNetworkBackingInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualEthernetCardNetworkBackingInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualEthernetCardOpaqueNetworkBackingInfo:
      type: object
      description: |2
        This class defines backing for a virtual Ethernet card that connects
        to an opaque network.
      properties:
        opaqueNetworkId:
          description: |2
            The opaque network ID
          type: string
        opaqueNetworkType:
          description: |2
            The opaque network type
          type: string
      required:
        - opaqueNetworkId
        - opaqueNetworkType
      allOf:
        - $ref: '#/components/schemas/VirtualDeviceBackingInfo'

    ArrayOfVirtualEthernetCardOpaqueNetworkBackingInfo:
      type: object
      description: |2
        A boxed array of *VirtualEthernetCardOpaqueNetworkBackingInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualEthernetCardOpaqueNetworkBackingInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualEthernetCardResourceAllocation:
      type: object
      description: |2
        This class specifies the network resource requirement.
      properties:
        reservation:
          description: |2
            Amount of network bandwidth that is guaranteed to the
            virtual network adapter.
            
            If utilization is less than reservation, the resource can be used by
            other virtual network adapters. Reservation is not allowed to exceed the
            value of *VirtualEthernetCardResourceAllocation.limit* if
            *VirtualEthernetCardResourceAllocation.limit* is set.
            Units in Mbits/sec.
          type: integer
          format: int64
        share:
          description: |2
            Network share.
            
            The value is used as a relative weight in
            competing for shared bandwidth, in case of resource contention.
          $ref: '#/components/schemas/SharesInfo'
        limit:
          description: |2
            The bandwidth limit for the virtual network adapter.
            
            The utilization of the virtual network adapter will not
            exceed this limit, even if there are available resources.
            To clear the value of this property and revert it to unset,
            set the vaule to "-1" in an update operation.
            Units in Mbits/sec.
          type: integer
          format: int64
      required:
        - share
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVirtualEthernetCardResourceAllocation:
      type: object
      description: |2
        A boxed array of *VirtualEthernetCardResourceAllocation*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualEthernetCardResourceAllocation'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualEthernetCardOption:
      type: object
      description: |2
        This data object type contains the options for the
        virtual ethernet card data object type.
      properties:
        supportedOUI:
          description: |2
            The valid Organizational Unique Identifiers (OUIs)
            supported by this virtual Ethernet card.
            
            <dl>
            <dt>Supported OUIs for statically assigned MAC addresses:</dt>
            <dd>"00:50:56"</dd>
            </dl>
          $ref: '#/components/schemas/ChoiceOption'
        macType:
          description: |2
            The supported MAC address types.
          $ref: '#/components/schemas/ChoiceOption'
        wakeOnLanEnabled:
          description: |2
            Flag to indicate whether or not wake-on-LAN is settable on this device.
          $ref: '#/components/schemas/BoolOption'
        vmDirectPathGen2Supported:
          deprecated: true
          description: |2
            Deprecated as of vSphere API 8.0. VMDirectPath Gen 2 is no longer supported and
            there is no replacement.
            
            Flag to indicate whether VMDirectPath Gen 2 is available on this device.
          type: boolean
        uptCompatibilityEnabled:
          deprecated: true
          description: |2
            Deprecated as of vSphere API 8.0. VMDirectPath Gen 2 is no longer supported and
            there is no replacement.
            
            Flag to indicate whether Universal Pass-through(UPT) is settable on this device.
          $ref: '#/components/schemas/BoolOption'
      required:
        - supportedOUI
        - macType
        - wakeOnLanEnabled
      allOf:
        - $ref: '#/components/schemas/VirtualDeviceOption'

    ArrayOfVirtualEthernetCardOption:
      type: object
      description: |2
        A boxed array of *VirtualEthernetCardOption*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualEthernetCardOption'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualEthernetCardDVPortBackingOption:
      type: object
      description: |2
        This data object type contains the options for using a distributed
        virtual port virtual network card backing data object type.
      allOf:
        - $ref: '#/components/schemas/VirtualDeviceBackingOption'

    ArrayOfVirtualEthernetCardDVPortBackingOption:
      type: object
      description: |2
        A boxed array of *VirtualEthernetCardDVPortBackingOption*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualEthernetCardDVPortBackingOption'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualEthernetCardLegacyNetworkBackingOption:
      type: object
      description: |2
        This data object type contains the options
        for using a legacy virtual network card backing data object type.
      allOf:
        - $ref: '#/components/schemas/VirtualDeviceDeviceBackingOption'

    ArrayOfVirtualEthernetCardLegacyNetworkBackingOption:
      type: object
      description: |2
        A boxed array of *VirtualEthernetCardLegacyNetworkBackingOption*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualEthernetCardLegacyNetworkBackingOption'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualEthernetCardNetworkBackingOption:
      type: object
      description: |2
        This data object type contains the options for
        the virtual network card backing data object type.
      allOf:
        - $ref: '#/components/schemas/VirtualDeviceDeviceBackingOption'

    ArrayOfVirtualEthernetCardNetworkBackingOption:
      type: object
      description: |2
        A boxed array of *VirtualEthernetCardNetworkBackingOption*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualEthernetCardNetworkBackingOption'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualEthernetCardOpaqueNetworkBackingOption:
      type: object
      description: |2
        This data object type contains the options for
        the virtual network card backing data object type.
      allOf:
        - $ref: '#/components/schemas/VirtualDeviceBackingOption'

    ArrayOfVirtualEthernetCardOpaqueNetworkBackingOption:
      type: object
      description: |2
        A boxed array of *VirtualEthernetCardOpaqueNetworkBackingOption*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualEthernetCardOpaqueNetworkBackingOption'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualFloppy:
      type: object
      description: |2
        The VirtualFloppy data object type contains information about a floppy drive
        in a virtual machine.
      allOf:
        - $ref: '#/components/schemas/VirtualDevice'

    ArrayOfVirtualFloppy:
      type: object
      description: |2
        A boxed array of *VirtualFloppy*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualFloppy'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualFloppyDeviceBackingInfo:
      type: object
      description: |2
        The data object type for device backing of a virtual floppy drive.
      allOf:
        - $ref: '#/components/schemas/VirtualDeviceDeviceBackingInfo'

    ArrayOfVirtualFloppyDeviceBackingInfo:
      type: object
      description: |2
        A boxed array of *VirtualFloppyDeviceBackingInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualFloppyDeviceBackingInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualFloppyImageBackingInfo:
      type: object
      description: |2
        The data object type for file image backing of a virtual floppy drive.
      allOf:
        - $ref: '#/components/schemas/VirtualDeviceFileBackingInfo'

    ArrayOfVirtualFloppyImageBackingInfo:
      type: object
      description: |2
        A boxed array of *VirtualFloppyImageBackingInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualFloppyImageBackingInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualFloppyRemoteDeviceBackingInfo:
      type: object
      description: |2
        The data object type for remote device backing of a virtual floppy drive.
      allOf:
        - $ref: '#/components/schemas/VirtualDeviceRemoteDeviceBackingInfo'

    ArrayOfVirtualFloppyRemoteDeviceBackingInfo:
      type: object
      description: |2
        A boxed array of *VirtualFloppyRemoteDeviceBackingInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualFloppyRemoteDeviceBackingInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualFloppyOption:
      type: object
      description: |2
        The VirtualFloppyOption data class contains the options for the
        virtual floppy data object type.
      allOf:
        - $ref: '#/components/schemas/VirtualDeviceOption'

    ArrayOfVirtualFloppyOption:
      type: object
      description: |2
        A boxed array of *VirtualFloppyOption*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualFloppyOption'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualFloppyDeviceBackingOption:
      type: object
      description: |2
        The DeviceBackingOption data object type contains the options
        for the floppy device backing type.
      allOf:
        - $ref: '#/components/schemas/VirtualDeviceDeviceBackingOption'

    ArrayOfVirtualFloppyDeviceBackingOption:
      type: object
      description: |2
        A boxed array of *VirtualFloppyDeviceBackingOption*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualFloppyDeviceBackingOption'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualFloppyImageBackingOption:
      type: object
      description: |2
        The ImageBackingOption data object type contains the options
        for the floppy image backing type.
      allOf:
        - $ref: '#/components/schemas/VirtualDeviceFileBackingOption'

    ArrayOfVirtualFloppyImageBackingOption:
      type: object
      description: |2
        A boxed array of *VirtualFloppyImageBackingOption*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualFloppyImageBackingOption'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualFloppyRemoteDeviceBackingOption:
      type: object
      description: |2
        The RemoteDeviceBackingOption data object type contains the options
        for the floppy remote device backing type.
      allOf:
        - $ref: '#/components/schemas/VirtualDeviceRemoteDeviceBackingOption'

    ArrayOfVirtualFloppyRemoteDeviceBackingOption:
      type: object
      description: |2
        A boxed array of *VirtualFloppyRemoteDeviceBackingOption*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualFloppyRemoteDeviceBackingOption'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualHdAudioCard:
      type: object
      description: |2
        The VirtualHdAudioCard data object type represents a HD Audio
        sound card in a virtual machine.
      allOf:
        - $ref: '#/components/schemas/VirtualSoundCard'

    ArrayOfVirtualHdAudioCard:
      type: object
      description: |2
        A boxed array of *VirtualHdAudioCard*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualHdAudioCard'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualHdAudioCardOption:
      type: object
      description: |2
        The VirtualHdAudioCardOption data object type contains the options for a
        virtual HD Audio sound card.
      allOf:
        - $ref: '#/components/schemas/VirtualSoundCardOption'

    ArrayOfVirtualHdAudioCardOption:
      type: object
      description: |2
        A boxed array of *VirtualHdAudioCardOption*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualHdAudioCardOption'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualIDEController:
      type: object
      description: |2
        The VirtualIDEController data object type specifies a virtual IDE controller.
      allOf:
        - $ref: '#/components/schemas/VirtualController'

    ArrayOfVirtualIDEController:
      type: object
      description: |2
        A boxed array of *VirtualIDEController*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualIDEController'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualIDEControllerOption:
      type: object
      description: |2
        The VirtualIDEControllerOption data object type contains the options
        for a virtual IDE controller.
      properties:
        numIDEDisks:
          description: |2
            The minimum, maximum, and default number of IDE VirtualDisk instances you can
            have, at any given time, in the IDE controller.
            
            The number is further constrained
            by the number of available slots in the virtual IDE controller.
          $ref: '#/components/schemas/IntOption'
        numIDECdroms:
          description: |2
            The minimum, maximum, and default number of IDE VirtualCdrom instances you can
            have, at any given time, in the IDE controller.
            
            The number is further constrained
            by the number of available slots in the virtual IDE controller.
          $ref: '#/components/schemas/IntOption'
      required:
        - numIDEDisks
        - numIDECdroms
      allOf:
        - $ref: '#/components/schemas/VirtualControllerOption'

    ArrayOfVirtualIDEControllerOption:
      type: object
      description: |2
        A boxed array of *VirtualIDEControllerOption*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualIDEControllerOption'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualKeyboard:
      type: object
      description: |2
        This data object type contains information about
        the keyboard on a virtual machine.
      allOf:
        - $ref: '#/components/schemas/VirtualDevice'

    ArrayOfVirtualKeyboard:
      type: object
      description: |2
        A boxed array of *VirtualKeyboard*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualKeyboard'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualKeyboardOption:
      type: object
      description: |2
        The VirtualKeyboardOption data object type contains the options for the
        virtual keyboard class.
      allOf:
        - $ref: '#/components/schemas/VirtualDeviceOption'

    ArrayOfVirtualKeyboardOption:
      type: object
      description: |2
        A boxed array of *VirtualKeyboardOption*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualKeyboardOption'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualLsiLogicController:
      type: object
      description: |2
        VirtualLsiLogicController is the data object that represents
        a LSI Logic SCSI controller.
      allOf:
        - $ref: '#/components/schemas/VirtualSCSIController'

    ArrayOfVirtualLsiLogicController:
      type: object
      description: |2
        A boxed array of *VirtualLsiLogicController*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualLsiLogicController'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualLsiLogicControllerOption:
      type: object
      description: |2
        VirtualLsiLogicControllerOption is the data object that contains
        the options for a LSI Logic SCSI controller.
      allOf:
        - $ref: '#/components/schemas/VirtualSCSIControllerOption'

    ArrayOfVirtualLsiLogicControllerOption:
      type: object
      description: |2
        A boxed array of *VirtualLsiLogicControllerOption*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualLsiLogicControllerOption'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualLsiLogicSASController:
      type: object
      description: |2
        VirtualLsiLogicSASController is the data object that represents
        a LSI Logic SAS SCSI controller.
      allOf:
        - $ref: '#/components/schemas/VirtualSCSIController'

    ArrayOfVirtualLsiLogicSASController:
      type: object
      description: |2
        A boxed array of *VirtualLsiLogicSASController*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualLsiLogicSASController'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualLsiLogicSASControllerOption:
      type: object
      description: |2
        VirtualLsiLogicSASControllerOption is the data object that contains
        the options for a LSI Logic SAS SCSI controller.
      allOf:
        - $ref: '#/components/schemas/VirtualSCSIControllerOption'

    ArrayOfVirtualLsiLogicSASControllerOption:
      type: object
      description: |2
        A boxed array of *VirtualLsiLogicSASControllerOption*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualLsiLogicSASControllerOption'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualNVDIMM:
      type: object
      description: |2
        The Virtual NVDIMM device.
      properties:
        capacityInMB:
          description: |2
            NVDIMM backing size in MiB.
            
            If backing is inaccessible, then
            capacity is reported as 0.
          type: integer
          format: int64
        configuredCapacityInMB:
          description: |2
            NVDIMM device's configured size in MiB.
            
            ***Since:*** vSphere API Release 7.0.2.0
          type: integer
          format: int64
      required:
        - capacityInMB
      allOf:
        - $ref: '#/components/schemas/VirtualDevice'

    ArrayOfVirtualNVDIMM:
      type: object
      description: |2
        A boxed array of *VirtualNVDIMM*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualNVDIMM'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualNVDIMMBackingInfo:
      type: object
      description: |2
        The <code>*VirtualNVDIMMBackingInfo*</code> data object type
        defines information about a resource that backs a device
        in a virtual machine.
      properties:
        parent:
          description: |2
            Parent object in snapshot chain.
          $ref: '#/components/schemas/VirtualNVDIMMBackingInfo'
        changeId:
          description: |2
            The change ID of the virtual NVDIMM for the corresponding
            snapshot of virtual machine.
            
            This can be used to track
            incremental changes.
            See *VirtualMachine.QueryChangedDiskAreas*.
          type: string
      allOf:
        - $ref: '#/components/schemas/VirtualDeviceFileBackingInfo'

    ArrayOfVirtualNVDIMMBackingInfo:
      type: object
      description: |2
        A boxed array of *VirtualNVDIMMBackingInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualNVDIMMBackingInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualNVDIMMController:
      type: object
      description: |2
        The Virtual NVDIMM controller.
      allOf:
        - $ref: '#/components/schemas/VirtualController'

    ArrayOfVirtualNVDIMMController:
      type: object
      description: |2
        A boxed array of *VirtualNVDIMMController*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualNVDIMMController'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualNVDIMMControllerOption:
      type: object
      description: |2
        VirtualNVDIMMControllerOption is the data object that contains
        the options for a virtual NVDIMM controller.
      properties:
        numNVDIMMControllers:
          description: |2
            Minimum, maximum and default number of virtual NVDIMM controllers.
          $ref: '#/components/schemas/IntOption'
      required:
        - numNVDIMMControllers
      allOf:
        - $ref: '#/components/schemas/VirtualControllerOption'

    ArrayOfVirtualNVDIMMControllerOption:
      type: object
      description: |2
        A boxed array of *VirtualNVDIMMControllerOption*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualNVDIMMControllerOption'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualNVDIMMOption:
      type: object
      description: |2
        The VirtualNVDIMMOption contains information about
        a virtual NVDIMM capacity limits and rules for
        capacity growth operations.
      properties:
        capacityInMB:
          description: |2
            Minimum and maximum capacity in MB.
          $ref: '#/components/schemas/LongOption'
        growable:
          description: |2
            Option to show if device capacity growth is supported for
            powered off VMs.
          type: boolean
        hotGrowable:
          description: |2
            Option to show if device capacity growth is supported for
            powered on VMs.
          type: boolean
        granularityInMB:
          description: |2
            Option to show capacity growth granularity if growth operation
            is supported in MB.
          type: integer
          format: int64
      required:
        - capacityInMB
        - growable
        - hotGrowable
        - granularityInMB
      allOf:
        - $ref: '#/components/schemas/VirtualDeviceOption'

    ArrayOfVirtualNVDIMMOption:
      type: object
      description: |2
        A boxed array of *VirtualNVDIMMOption*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualNVDIMMOption'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualNVMEController:
      type: object
      description: |2
        The Virtual NVME controller.
      properties:
        sharedBus:
          description: |2
            Mode for sharing the SCSI bus.
            
            The modes are physicalSharing,
            and noSharing. See the
            *Sharing*
            data object type for an explanation of these modes.
            
            ***Since:*** vSphere API Release 8.0.2.0
          type: string
      allOf:
        - $ref: '#/components/schemas/VirtualController'

    ArrayOfVirtualNVMEController:
      type: object
      description: |2
        A boxed array of *VirtualNVMEController*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualNVMEController'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualNVMEControllerOption:
      type: object
      description: |2
        VirtualNVMEControllerOption is the data object that contains
        the options for a virtual NVME controller.
      properties:
        numNVMEDisks:
          description: |2
            Three properties (numNVMEDisks.min, numNVMEDisks.max, and
            numNVMEDisks.defaultValue) define the minimum, maximum, and default
            number of NVME VirtualDisk instances available at any given time in the
            NVME controller.
            
            The number of NVME VirtualDisk instances is
            also limited by the number of available namespaces in the NVME controller.
          $ref: '#/components/schemas/IntOption'
        sharing:
          description: |2
            Supported shared bus modes.
            
            See *VirtualNVMEControllerSharing_enum* for the list of available modes.
            
            ***Since:*** vSphere API Release 8.0.2.0
          type: array
          items:
            type: string
      required:
        - numNVMEDisks
      allOf:
        - $ref: '#/components/schemas/VirtualControllerOption'

    ArrayOfVirtualNVMEControllerOption:
      type: object
      description: |2
        A boxed array of *VirtualNVMEControllerOption*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualNVMEControllerOption'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualPCIController:
      type: object
      description: |2
        The VirtualPCIController data object type defines a virtual PCI
        controller.
      allOf:
        - $ref: '#/components/schemas/VirtualController'

    ArrayOfVirtualPCIController:
      type: object
      description: |2
        A boxed array of *VirtualPCIController*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualPCIController'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualPCIControllerOption:
      type: object
      description: |2
        This data object type contains the options
        for a virtual PCI Controller.
      properties:
        numSCSIControllers:
          description: |2
            Defines the minimum, maximum, and
            default number of VirtualSCSIController instances available
            at any given time in the PCI controller.
            
            The number of
            VirtualSCSIController instances is also limited by the number of
            available slots in the PCI controller.
          $ref: '#/components/schemas/IntOption'
        numEthernetCards:
          description: |2
            Defines the minimum, maximum, and
            default number of VirtualEthernetCard instances available,
            at any given time, in the PCI controller.
            
            The number of
            VirtualEthernetCard instances is also limited by the number of
            available slots in the PCI controller.
          $ref: '#/components/schemas/IntOption'
        numVideoCards:
          description: |2
            Defines the minimum, maximum, and default
            number of VirtualVideoCard instances available,
            at any given time, in the PCI controller.
            
            The number of
            VirtualVideoCard instances is also limited by the number of
            available slots in the PCI controller.
          $ref: '#/components/schemas/IntOption'
        numSoundCards:
          description: |2
            Defines the minimum, maximum, and default
            number of VirtualSoundCard instances available,
            at any given time, in the PCI controller.
            
            The number of
            VirtualSoundCard instances is also limited by the number of
            available slots in the PCI controller.
          $ref: '#/components/schemas/IntOption'
        numVmiRoms:
          description: |2
            Defines the minimum, maximum, and default
            number of VirtualVMIROM instances available,
            at any given time, in the PCI controller.
            
            This is also limited
            by the number of available slots in the PCI controller.
          $ref: '#/components/schemas/IntOption'
        numVmciDevices:
          description: |2
            Defines the minimum, maximum, and default
            number of VirtualVMCIDevice instances available,
            at any given time, in the PCI controller.
            
            This is also limited
            by the number of available slots in the PCI controller.
          $ref: '#/components/schemas/IntOption'
        numPCIPassthroughDevices:
          description: |2
            Defines the minimum, maximum, and default
            number of VirtualPCIPassthrough instances available,
            at any given time, in the PCI controller.
            
            This is also limited
            by the number of available PCI Express slots in the PCI controller.
          $ref: '#/components/schemas/IntOption'
        numSasSCSIControllers:
          description: |2
            Defines the minimum, maximum, and default
            number of VirtualLsiLogicSASController instances available,
            at any given time, in the PCI controller.
            
            This is also limited
            by the number of available PCI Express slots in the PCI controller
            as well as the total number of supported SCSI controllers.
          $ref: '#/components/schemas/IntOption'
        numVmxnet3EthernetCards:
          description: |2
            Defines the minimum, maximum, and default
            number of VirtualVmxnet3 ethernet card instances available,
            at any given time, in the PCI controller.
            
            This is also limited
            by the number of available PCI Express slots in the PCI controller
            as well as the total number of supported ethernet cards.
          $ref: '#/components/schemas/IntOption'
        numParaVirtualSCSIControllers:
          description: |2
            Defines the minimum, maximum, and default
            number of ParaVirtualScsiController instances available,
            at any given time, in the PCI controller.
            
            This is also limited
            by the number of available PCI Express slots in the PCI controller
            as well as the total number of supported SCSI controllers.
          $ref: '#/components/schemas/IntOption'
        numSATAControllers:
          description: |2
            Defines the minimum, maximum, and default
            number of VirtualSATAController instances available,
            at any given time, in the PCI controller.
            
            This is also limited
            by the number of available PCI Express slots in the PCI controller
            as well as the total number of supported SATA controllers.
          $ref: '#/components/schemas/IntOption'
        numNVMEControllers:
          description: |2
            Defines the minimum, maximum, and default
            number of VirtualNVMEController instances available,
            at any given time, in the PCI controller.
            
            This is also limited
            by the number of available PCI Express slots in the PCI controller
            as well as the total number of supported NVME controllers.
          $ref: '#/components/schemas/IntOption'
        numVmxnet3VrdmaEthernetCards:
          description: |2
            Defines the minimum, maximum, and default
            number of VirtualVmxnet3Vrdma ethernet card instances available,
            at any given time, in the PCI controller.
            
            This is also limited
            by the number of available PCI Express slots in the PCI controller
            as well as the total number of supported ethernet cards.
          $ref: '#/components/schemas/IntOption'
      required:
        - numSCSIControllers
        - numEthernetCards
        - numVideoCards
        - numSoundCards
        - numVmiRoms
        - numVmciDevices
        - numPCIPassthroughDevices
        - numSasSCSIControllers
        - numVmxnet3EthernetCards
        - numParaVirtualSCSIControllers
        - numSATAControllers
      allOf:
        - $ref: '#/components/schemas/VirtualControllerOption'

    ArrayOfVirtualPCIControllerOption:
      type: object
      description: |2
        A boxed array of *VirtualPCIControllerOption*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualPCIControllerOption'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualPCIPassthrough:
      type: object
      description: |2
        The VirtualPCIPassthrough data object type contains information about a
        PCI device on the virtual machine that is being backed by
        a generic PCI device on the host via passthrough.
      allOf:
        - $ref: '#/components/schemas/VirtualDevice'

    ArrayOfVirtualPCIPassthrough:
      type: object
      description: |2
        A boxed array of *VirtualPCIPassthrough*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualPCIPassthrough'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualPCIPassthroughAllowedDevice:
      type: object
      description: |2
        A tuple of vendorId and deviceId indicating an allowed device
        for a Dynamic DirectPath device.
      properties:
        vendorId:
          description: |2
            The vendor ID for this PCI device.
            
            You must use the vendor ID
            retrieved from the vSphere host or cluster.
          type: integer
          format: int32
        deviceId:
          description: |2
            The device ID of this PCI device.
            
            You must use the device ID
            retrieved from the vSphere host or cluster.
          type: integer
          format: int32
        subVendorId:
          description: |2
            The subVendor ID for this PCI device.
            
            If specified, you must use
            the subVendor ID retrieved from the vSphere host or cluster.
            Range of legal values is 0x0 to 0xFFFF.
          type: integer
          format: int32
        subDeviceId:
          description: |2
            The subDevice ID of this PCI device.
            
            If specified, you must use
            the subDevice ID retrieved from the vSphere host or cluster.
            Range of legal values is 0x0 to 0xFFFF.
          type: integer
          format: int32
        revisionId:
          description: |2
            The revision ID of this PCI device.
            
            If specified, you must use
            the revision ID retrieved from the vSphere host or cluster.
            Range of legal values is 0x0 to 0xFF.
          type: integer
          minimum: -32768
          maximum: 32767
      required:
        - vendorId
        - deviceId
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVirtualPCIPassthroughAllowedDevice:
      type: object
      description: |2
        A boxed array of *VirtualPCIPassthroughAllowedDevice*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualPCIPassthroughAllowedDevice'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualPCIPassthroughDeviceBackingInfo:
      type: object
      description: |2
        The VirtualPCIPassthrough.DeviceBackingInfo data object type
        contains information about the backing that maps the
        virtual device onto a physical device.
      properties:
        id:
          description: |2
            The name ID of this PCI, composed of "bus:slot.function".
          type: string
        deviceId:
          description: |2
            The device ID of this PCI.
            
            You must use the device ID retrieved
            from the vSphere host (*HostPciDevice*.deviceId), converted
            as is to a string.
          type: string
        systemId:
          description: |2
            The ID of the system the PCI device is attached to.
          type: string
        vendorId:
          description: |2
            The vendor ID for this PCI device.
            
            You must use the vendor ID retrieved
            from the vSphere host (*HostPciDevice*.vendorId).
          type: integer
          minimum: -32768
          maximum: 32767
      required:
        - id
        - deviceId
        - systemId
        - vendorId
      allOf:
        - $ref: '#/components/schemas/VirtualDeviceDeviceBackingInfo'

    ArrayOfVirtualPCIPassthroughDeviceBackingInfo:
      type: object
      description: |2
        A boxed array of *VirtualPCIPassthroughDeviceBackingInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualPCIPassthroughDeviceBackingInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualPCIPassthroughDvxBackingInfo:
      type: object
      description: |2
        DVX Device specific information.
        
        ***Since:*** vSphere API Release 8.0.0.1
      properties:
        deviceClass:
          description: |2
            The device class that backs this DVX device.
            
            During add operations, this value must be a non-empty string.
            During edit operations, if this value is not set or is an empty
            string, the current device class remains unchanged.
          type: string
        configParams:
          description: |2
            The configuration parameters for this device class.
            
            All required configuration parameters must be provided for both add
            and edit operations. The provided configuration parameters replace
            the previous ones. In particular, passing an empty array will unset
            all existing configuration parameters.
          type: array
          items:
            $ref: '#/components/schemas/OptionValue'
      allOf:
        - $ref: '#/components/schemas/VirtualDeviceBackingInfo'

    ArrayOfVirtualPCIPassthroughDvxBackingInfo:
      type: object
      description: |2
        A boxed array of *VirtualPCIPassthroughDvxBackingInfo*. To be used in *Any* placeholders.
        
        ***Since:*** vSphere API Release 8.0.0.1
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualPCIPassthroughDvxBackingInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualPCIPassthroughDynamicBackingInfo:
      type: object
      description: |2
        The VirtualPCIPassthrough.DynamicBackingInfo data object type
        contains information about the backing that maps the
        virtual device onto a physical device for a Dynamic DirectPath
        device.
      properties:
        allowedDevice:
          description: |2
            The list of allowed devices for use with a Dynamic DirectPath
            device.
          type: array
          items:
            $ref: '#/components/schemas/VirtualPCIPassthroughAllowedDevice'
        customLabel:
          description: |2
            An optional label.
            
            If set, the device must also have the same
            customLabel attribute set.
          type: string
        assignedId:
          description: |2
            The id of the device assigned when the VM is powered on.
            
            This value
            is unset when the VM is powered off.
          type: string
      allOf:
        - $ref: '#/components/schemas/VirtualDeviceDeviceBackingInfo'

    ArrayOfVirtualPCIPassthroughDynamicBackingInfo:
      type: object
      description: |2
        A boxed array of *VirtualPCIPassthroughDynamicBackingInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualPCIPassthroughDynamicBackingInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualPCIPassthroughPluginBackingInfo:
      type: object
      description: |2
        The VirtualPCIPassthrough.PluginBackingInfo is a base data object type
        for encoding plugin-specific information.
        
        This base type does not define
        any properties. Specific plugin types are represented by subtypes which
        define properties for subtype-specific backing information.
      allOf:
        - $ref: '#/components/schemas/VirtualDeviceBackingInfo'

    ArrayOfVirtualPCIPassthroughPluginBackingInfo:
      type: object
      description: |2
        A boxed array of *VirtualPCIPassthroughPluginBackingInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualPCIPassthroughPluginBackingInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualPCIPassthroughVmiopBackingInfo:
      type: object
      description: |2
        The VirtualPCIPassthrough.VmiopBackingInfo data object type
        contains information about the plugin that emulates the
        virtual device via the VMIOP plugin interface.
        
        At present, this interface is only used to implement vGPU.
      properties:
        vgpu:
          description: |2
            The vGPU configuration type exposed by a VMIOP plugin.
          type: string
        vgpuMigrateDataSizeMB:
          description: |2
            The expected size of the vGPU device state during migration.
            
            ***Since:*** vSphere API Release 8.0.0.1
          type: integer
          format: int32
        migrateSupported:
          description: |2
            Indicates whether the vGPU device is migration capable or not.
            
            ***Since:*** vSphere API Release 7.0.2.0
          type: boolean
        enhancedMigrateCapability:
          description: |2
            Indicates whether the vGPU has enhanced migration features for
            sub-second downtime.
            
            ***Since:*** vSphere API Release 8.0.0.1
          type: boolean
      allOf:
        - $ref: '#/components/schemas/VirtualPCIPassthroughPluginBackingInfo'

    ArrayOfVirtualPCIPassthroughVmiopBackingInfo:
      type: object
      description: |2
        A boxed array of *VirtualPCIPassthroughVmiopBackingInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualPCIPassthroughVmiopBackingInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualPCIPassthroughOption:
      type: object
      description: |2
        The VirtualPCIPassthroughOption data object type describes the options
        for the
        *VirtualPCIPassthrough*
        data object type.
      allOf:
        - $ref: '#/components/schemas/VirtualDeviceOption'

    ArrayOfVirtualPCIPassthroughOption:
      type: object
      description: |2
        A boxed array of *VirtualPCIPassthroughOption*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualPCIPassthroughOption'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualPCIPassthroughDeviceBackingOption:
      type: object
      description: |2
        This data object type describes the options for the
        *VirtualPCIPassthroughDeviceBackingInfo* data object type.
      allOf:
        - $ref: '#/components/schemas/VirtualDeviceDeviceBackingOption'

    ArrayOfVirtualPCIPassthroughDeviceBackingOption:
      type: object
      description: |2
        A boxed array of *VirtualPCIPassthroughDeviceBackingOption*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualPCIPassthroughDeviceBackingOption'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualPCIPassthroughDvxBackingOption:
      type: object
      description: |2
        Describes the options for
        *VirtualPCIPassthroughDvxBackingInfo*.
        
        ***Since:*** vSphere API Release 8.0.0.1
      allOf:
        - $ref: '#/components/schemas/VirtualDeviceBackingOption'

    ArrayOfVirtualPCIPassthroughDvxBackingOption:
      type: object
      description: |2
        A boxed array of *VirtualPCIPassthroughDvxBackingOption*. To be used in *Any* placeholders.
        
        ***Since:*** vSphere API Release 8.0.0.1
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualPCIPassthroughDvxBackingOption'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualPCIPassthroughDynamicBackingOption:
      type: object
      description: |2
        This data object type describes the options for the
        *VirtualPCIPassthroughDynamicBackingInfo* data object type.
      allOf:
        - $ref: '#/components/schemas/VirtualDeviceDeviceBackingOption'

    ArrayOfVirtualPCIPassthroughDynamicBackingOption:
      type: object
      description: |2
        A boxed array of *VirtualPCIPassthroughDynamicBackingOption*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualPCIPassthroughDynamicBackingOption'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualPCIPassthroughPluginBackingOption:
      type: object
      description: |2
        This data object type describes the options for the
        *VirtualPCIPassthroughPluginBackingInfo* data object type.
      allOf:
        - $ref: '#/components/schemas/VirtualDeviceBackingOption'

    ArrayOfVirtualPCIPassthroughPluginBackingOption:
      type: object
      description: |2
        A boxed array of *VirtualPCIPassthroughPluginBackingOption*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualPCIPassthroughPluginBackingOption'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualPCIPassthroughVmiopBackingOption:
      type: object
      description: |2
        This data object type describes the options for the
        *VirtualPCIPassthroughVmiopBackingInfo* data object type.
      properties:
        vgpu:
          description: |2
            Parameter indicating which GPU profile the plugin should emulate.
            
            See also *ConfigTarget.sharedGpuPassthroughTypes*.
          $ref: '#/components/schemas/StringOption'
        maxInstances:
          description: |2
            Maximum number of instances of this backing type allowed
            per virtual machine.
            
            This is a parameter of the plugin
            itself, which may support only a limited number of
            instances per virtual machine.
          type: integer
          format: int32
      required:
        - vgpu
        - maxInstances
      allOf:
        - $ref: '#/components/schemas/VirtualPCIPassthroughPluginBackingOption'

    ArrayOfVirtualPCIPassthroughVmiopBackingOption:
      type: object
      description: |2
        A boxed array of *VirtualPCIPassthroughVmiopBackingOption*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualPCIPassthroughVmiopBackingOption'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualPCNet32:
      type: object
      description: |2
        This data object type defines the properties
        of an AMD Lance PCNet32 Ethernet card attached to a virtual machine.
      allOf:
        - $ref: '#/components/schemas/VirtualEthernetCard'

    ArrayOfVirtualPCNet32:
      type: object
      description: |2
        A boxed array of *VirtualPCNet32*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualPCNet32'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualPCNet32Option:
      type: object
      description: |2
        The VirtualPCNet32Option data object type defines the options for the
        VirtualPCNet32 data object type.
        
        Except for the boolean
        supportsMorphing option, the options are inherited from the
        *VirtualEthernetCardOption* data
        object type.
      properties:
        supportsMorphing:
          description: |2
            Indicates that this Ethernet card supports morphing into vmxnet when
            appropriate.
            
            This means that, if supportsMorphing="true", the virtual
            AMD Lance PCNet32 Ethernet card becomes a vmxnet Ethernet card
            with its added performance capabilities when appropriate.
          type: boolean
      required:
        - supportsMorphing
      allOf:
        - $ref: '#/components/schemas/VirtualEthernetCardOption'

    ArrayOfVirtualPCNet32Option:
      type: object
      description: |2
        A boxed array of *VirtualPCNet32Option*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualPCNet32Option'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualPS2Controller:
      type: object
      description: |2
        The VirtualPS2Controller data object type represents a controller
        for keyboards and mice.
      allOf:
        - $ref: '#/components/schemas/VirtualController'

    ArrayOfVirtualPS2Controller:
      type: object
      description: |2
        A boxed array of *VirtualPS2Controller*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualPS2Controller'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualPS2ControllerOption:
      type: object
      description: |2
        The VirtualPS2ControllerOption data object type contains the options
        for a virtual PS/2 controller for keyboards and mice.
        
        In addition to
        the options defined in the *VirtualControllerOption* data object type, these options include the
        number of keyboards and mice.
      properties:
        numKeyboards:
          description: |2
            The minimum, maximum, and default number of keyboards you can
            have at any given time.
            
            This is further constrained by the number
            of available slots in the PS/2 controller. The minimum, maximum,
            and default are integers defined by three properties:
            - **numKeyBoards.min**: the minimum.
            - **numKeyBoards.max**: the maximum.
            - **numKeyBoards.defaultValue**: the default number.
          $ref: '#/components/schemas/IntOption'
        numPointingDevices:
          description: |2
            The minimum, maximum, and default number of mice you can
            have at any given time.
            
            The number of mice is also limited by the number
            of available slots in the PS/2 controller. The minimum, maximum, and
            default are integers defined by three properties:
            - **numPointingDevices.min**: the minimum.
            - **numPointingDevices.max**: the maximum.
            - **numPointingDevices.defaultValue**: the default number.
          $ref: '#/components/schemas/IntOption'
      required:
        - numKeyboards
        - numPointingDevices
      allOf:
        - $ref: '#/components/schemas/VirtualControllerOption'

    ArrayOfVirtualPS2ControllerOption:
      type: object
      description: |2
        A boxed array of *VirtualPS2ControllerOption*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualPS2ControllerOption'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualParallelPort:
      type: object
      description: |2
        This data object type represents a parallel port
        in a virtual machine.
      allOf:
        - $ref: '#/components/schemas/VirtualDevice'

    ArrayOfVirtualParallelPort:
      type: object
      description: |2
        A boxed array of *VirtualParallelPort*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualParallelPort'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualParallelPortDeviceBackingInfo:
      type: object
      description: |2
        The data object type for a device backing of a virtual parallel port.
      allOf:
        - $ref: '#/components/schemas/VirtualDeviceDeviceBackingInfo'

    ArrayOfVirtualParallelPortDeviceBackingInfo:
      type: object
      description: |2
        A boxed array of *VirtualParallelPortDeviceBackingInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualParallelPortDeviceBackingInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualParallelPortFileBackingInfo:
      type: object
      description: |2
        The data object type for a file backing of a virtual parallel port.
      allOf:
        - $ref: '#/components/schemas/VirtualDeviceFileBackingInfo'

    ArrayOfVirtualParallelPortFileBackingInfo:
      type: object
      description: |2
        A boxed array of *VirtualParallelPortFileBackingInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualParallelPortFileBackingInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualParallelPortOption:
      type: object
      description: |2
        This data object type contains the options for the
        virtual parallel port class.
      allOf:
        - $ref: '#/components/schemas/VirtualDeviceOption'

    ArrayOfVirtualParallelPortOption:
      type: object
      description: |2
        A boxed array of *VirtualParallelPortOption*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualParallelPortOption'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualParallelPortDeviceBackingOption:
      type: object
      description: |2
        Data object type that represents the options for a device backing
        of a virtual parallel port.
      allOf:
        - $ref: '#/components/schemas/VirtualDeviceDeviceBackingOption'

    ArrayOfVirtualParallelPortDeviceBackingOption:
      type: object
      description: |2
        A boxed array of *VirtualParallelPortDeviceBackingOption*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualParallelPortDeviceBackingOption'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualParallelPortFileBackingOption:
      type: object
      description: |2
        Data object type that represents the options for a file backing
        of a virtual parallel port.
      allOf:
        - $ref: '#/components/schemas/VirtualDeviceFileBackingOption'

    ArrayOfVirtualParallelPortFileBackingOption:
      type: object
      description: |2
        A boxed array of *VirtualParallelPortFileBackingOption*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualParallelPortFileBackingOption'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualPointingDevice:
      type: object
      description: |2
        The VirtualPointingDevice data object type contains information about
        the mouse type on a virtual machine.
      allOf:
        - $ref: '#/components/schemas/VirtualDevice'

    ArrayOfVirtualPointingDevice:
      type: object
      description: |2
        A boxed array of *VirtualPointingDevice*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualPointingDevice'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualPointingDeviceDeviceBackingInfo:
      type: object
      description: |2
        The VirtualPointingDevice.DeviceBackingInfo provides information about
        the physical mouse backing the VirtualPointingDevice data object
        type.
      properties:
        hostPointingDevice:
          description: |2
            This optional property defines the mouse type (two-button,
            three-button, and so on).
            
            The mouse type
            determines how the user interacts with the host mouse.
            The valid values are specified in the
            *VirtualPointingDeviceHostChoice_enum* list.
            
            **Note**: The value specified by this property must be
            one of the supported types listed in the hostPointingDevices.value
            array in the *VirtualPointingDeviceOption* data object type. If this property is
            not set, then the property defaults to the
            hostPointingDevices.defaultIndex property in the same data
            object type.
          type: string
      required:
        - hostPointingDevice
      allOf:
        - $ref: '#/components/schemas/VirtualDeviceDeviceBackingInfo'

    ArrayOfVirtualPointingDeviceDeviceBackingInfo:
      type: object
      description: |2
        A boxed array of *VirtualPointingDeviceDeviceBackingInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualPointingDeviceDeviceBackingInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualPointingDeviceOption:
      type: object
      description: |2
        The VirtualPointingDeviceOption data object type contains the options
        for the host mouse type defined in the
        *VirtualPointingDevice* data object type.
        
        These options include the valid selections for the mouse type, the supported
        mouse types, and the default mouse type.
      allOf:
        - $ref: '#/components/schemas/VirtualDeviceOption'

    ArrayOfVirtualPointingDeviceOption:
      type: object
      description: |2
        A boxed array of *VirtualPointingDeviceOption*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualPointingDeviceOption'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualPointingDeviceBackingOption:
      type: object
      description: |2
        The DeviceBackingOption data object type represents
        the options for a pointing device backing a
        VirtualPointingDevice data object type.
      properties:
        hostPointingDevice:
          description: |2
            This object defines the supported mouse types, including the default
            supported mouse type, with the following properties:
            - **hostPointingDevices.value**: This array defines the
              supported mouse types.
            - **hostPointingDevices.choiceDescription**: This array
              provides the descriptions for the supported mouse types defined by
              hostPointingDevices.value.
            - **hostPointingDevices.defaultIndex**: This integer points
              to an index in the hostPointingDevices.value array. This is the
              mouse type supported by default.
          $ref: '#/components/schemas/ChoiceOption'
      required:
        - hostPointingDevice
      allOf:
        - $ref: '#/components/schemas/VirtualDeviceDeviceBackingOption'

    ArrayOfVirtualPointingDeviceBackingOption:
      type: object
      description: |2
        A boxed array of *VirtualPointingDeviceBackingOption*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualPointingDeviceBackingOption'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualPrecisionClock:
      type: object
      description: |2
        This data object type represents a virtual clock device providing
        precision time in a virtual machine.
      allOf:
        - $ref: '#/components/schemas/VirtualDevice'

    ArrayOfVirtualPrecisionClock:
      type: object
      description: |2
        A boxed array of *VirtualPrecisionClock*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualPrecisionClock'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualPrecisionClockSystemClockBackingInfo:
      type: object
      description: |2
        The *VirtualPrecisionClockSystemClockBackingInfo*
        data object contains information about using host system clock as the
        backing reference clock for this virtual device.
      properties:
        protocol:
          description: |2
            The time synchronization protocol used to discipline system clock.
            
            See *HostDateTimeInfoProtocol_enum* for valid values.
          type: string
      allOf:
        - $ref: '#/components/schemas/VirtualDeviceBackingInfo'

    ArrayOfVirtualPrecisionClockSystemClockBackingInfo:
      type: object
      description: |2
        A boxed array of *VirtualPrecisionClockSystemClockBackingInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualPrecisionClockSystemClockBackingInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualPrecisionClockOption:
      type: object
      description: |2
        The VirtualPrecisionClockOption data object type describes the
        options for the *VirtualPrecisionClock* data
        object type.
      allOf:
        - $ref: '#/components/schemas/VirtualDeviceOption'

    ArrayOfVirtualPrecisionClockOption:
      type: object
      description: |2
        A boxed array of *VirtualPrecisionClockOption*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualPrecisionClockOption'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualPrecisionClockSystemClockBackingOption:
      type: object
      description: |2
        This data object type describes the options for the
        *VirtualPrecisionClockSystemClockBackingInfo*
        VirtualPrecisionClockSystemClockBackingInfo} data object type.
      properties:
        protocol:
          description: |2
            Parameter indicating the protocol used to discipline the
            host system clock.
          $ref: '#/components/schemas/ChoiceOption'
      required:
        - protocol
      allOf:
        - $ref: '#/components/schemas/VirtualDeviceBackingOption'

    ArrayOfVirtualPrecisionClockSystemClockBackingOption:
      type: object
      description: |2
        A boxed array of *VirtualPrecisionClockSystemClockBackingOption*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualPrecisionClockSystemClockBackingOption'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualSATAController:
      type: object
      description: |2
        The VirtualSATAController data object type represents
        a SATA controller in a virtual machine.
      allOf:
        - $ref: '#/components/schemas/VirtualController'

    ArrayOfVirtualSATAController:
      type: object
      description: |2
        A boxed array of *VirtualSATAController*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualSATAController'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualSATAControllerOption:
      type: object
      description: |2
        The VirtualSATAControllerOption data object type contains the options
        for a virtual SATA controller defined by the
        *VirtualSATAController*
        data object type.
      properties:
        numSATADisks:
          description: |2
            Three properties (numSATADisks.min, numSATADisks.max, and
            numSATADisks.defaultValue) define the minimum, maximum, and default
            number of SATA VirtualDisk instances available at any given time in the
            SATA controller.
            
            The number of SATA VirtualDisk instances is
            also limited by the number of available slots in the SATA controller.
          $ref: '#/components/schemas/IntOption'
        numSATACdroms:
          description: |2
            Three properties (numSATACdroms.min, numSATACdroms.max, and
            numSATACdroms.defaultValue) define the minimum, maximum, and default
            number of SATA VirtualCdrom instances available
            in the SATA controller.
            
            The number of SATA VirtualCdrom instances is
            also limited by the number of available slots in the SATA controller.
          $ref: '#/components/schemas/IntOption'
      required:
        - numSATADisks
        - numSATACdroms
      allOf:
        - $ref: '#/components/schemas/VirtualControllerOption'

    ArrayOfVirtualSATAControllerOption:
      type: object
      description: |2
        A boxed array of *VirtualSATAControllerOption*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualSATAControllerOption'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualSCSIController:
      type: object
      description: |2
        The VirtualSCSIController data object type represents
        a SCSI controller in a virtual machine.
      properties:
        hotAddRemove:
          description: |2
            All SCSI controllers support hot adding and removing of devices.
            
            This
            support can't be toggled in the current implementation. Therefore, this
            option is ignored when reconfiguring a SCSI controller and is always set
            to "true" when reading an existing configuration.
          type: boolean
        sharedBus:
          description: |2
            Mode for sharing the SCSI bus.
            
            The modes are physicalSharing,
            virtualSharing, and noSharing. See the
            *Sharing*
            data object type for an explanation of these modes.
          $ref: '#/components/schemas/VirtualSCSISharing_enum'
        scsiCtlrUnitNumber:
          description: |2
            The unit number of the SCSI controller.
            
            The SCSI controller sits on its
            own bus, so this field defines which slot the controller is using.
          type: integer
          format: int32
      required:
        - sharedBus
      allOf:
        - $ref: '#/components/schemas/VirtualController'

    ArrayOfVirtualSCSIController:
      type: object
      description: |2
        A boxed array of *VirtualSCSIController*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualSCSIController'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualSCSIControllerOption:
      type: object
      description: |2
        The VirtualSCSIControllerOption data object type contains the options
        for a virtual SCSI controller defined by the
        *VirtualSCSIController*
        data object type.
      properties:
        numSCSIDisks:
          description: |2
            Three properties (numSCSIDisks.min, numSCSIDisks.max, and
            numSCSIDisks.defaultValue) define the minimum, maximum, and default
            number of SCSI VirtualDisk instances available at any given time in the
            SCSI controller.
            
            The number of SCSI VirtualDisk instances is
            also limited by the number of available slots in the SCSI controller.
          $ref: '#/components/schemas/IntOption'
        numSCSICdroms:
          description: |2
            Three properties (numSCSICdroms.min, numSCSICdroms.max, and
            numSCSICdroms.defaultValue) define the minimum, maximum, and default
            number of SCSI VirtualCdrom instances available
            in the SCSI controller.
            
            The number of SCSI VirtualCdrom instances is
            also limited by the number of available slots in the SCSI controller.
          $ref: '#/components/schemas/IntOption'
        numSCSIPassthrough:
          description: |2
            Three properties (numSCSIPassthrough.min, numSCSIPassthrough.max, and
            numSCSIPassthrough.defaultValue) define the minimum, maximum, and
            default number of VirtualSCSIPassthrough instances available
            have at any given time in the SCSI controller.
            
            The number of
            VirtualSCSIPassthrough instances is also limited by the number of
            available slots in the SCSI controller.
          $ref: '#/components/schemas/IntOption'
        sharing:
          description: |2
            Supported shared bus modes.
          type: array
          items:
            $ref: '#/components/schemas/VirtualSCSISharing_enum'
        defaultSharedIndex:
          description: |2
            Index into sharing array specifying the default value.
          type: integer
          format: int32
        hotAddRemove:
          description: |2
            All SCSI controllers support hot adding and removing of devices.
            
            This
            support can't be toggled in the current implementation. Therefore, this
            option is ignored when reconfiguring a SCSI controller and is always set
            to "true" when reading an existing configuration.
          $ref: '#/components/schemas/BoolOption'
        scsiCtlrUnitNumber:
          description: |2
            The unit number of the SCSI controller.
            
            The SCSI controller sits on its
            own bus, so that this field defines which slot the controller will use.
          type: integer
          format: int32
      required:
        - numSCSIDisks
        - numSCSICdroms
        - numSCSIPassthrough
        - sharing
        - defaultSharedIndex
        - hotAddRemove
        - scsiCtlrUnitNumber
      allOf:
        - $ref: '#/components/schemas/VirtualControllerOption'

    ArrayOfVirtualSCSIControllerOption:
      type: object
      description: |2
        A boxed array of *VirtualSCSIControllerOption*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualSCSIControllerOption'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualSCSIPassthrough:
      type: object
      description: |2
        The VirtualSCSIPassthrough data object type contains information about a
        SCSI device on the virtual machine that is being backed by
        a generic SCSI device on the host via passthrough.
      allOf:
        - $ref: '#/components/schemas/VirtualDevice'

    ArrayOfVirtualSCSIPassthrough:
      type: object
      description: |2
        A boxed array of *VirtualSCSIPassthrough*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualSCSIPassthrough'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualSCSIPassthroughDeviceBackingInfo:
      type: object
      description: |2
        The VirtualSCSIPassthrough.DeviceBackingInfo data object type
        contains information about the backing that maps the
        virtual device onto a physical device.
      allOf:
        - $ref: '#/components/schemas/VirtualDeviceDeviceBackingInfo'

    ArrayOfVirtualSCSIPassthroughDeviceBackingInfo:
      type: object
      description: |2
        A boxed array of *VirtualSCSIPassthroughDeviceBackingInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualSCSIPassthroughDeviceBackingInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualSCSIPassthroughOption:
      type: object
      description: |2
        The VirtualSCSIPassthroughOption data object type describes the options
        for the
        *VirtualSCSIPassthrough*
        data object type.
      allOf:
        - $ref: '#/components/schemas/VirtualDeviceOption'

    ArrayOfVirtualSCSIPassthroughOption:
      type: object
      description: |2
        A boxed array of *VirtualSCSIPassthroughOption*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualSCSIPassthroughOption'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualSCSIPassthroughDeviceBackingOption:
      type: object
      description: |2
        This data object type describes
        the options for the
        *VirtualSCSIPassthroughDeviceBackingInfo* data object type.
      allOf:
        - $ref: '#/components/schemas/VirtualDeviceDeviceBackingOption'

    ArrayOfVirtualSCSIPassthroughDeviceBackingOption:
      type: object
      description: |2
        A boxed array of *VirtualSCSIPassthroughDeviceBackingOption*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualSCSIPassthroughDeviceBackingOption'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualSIOController:
      type: object
      description: |2
        This data object type defines a
        Super IO Controller for floppy drives, parallel ports,
        and serial ports.
      allOf:
        - $ref: '#/components/schemas/VirtualController'

    ArrayOfVirtualSIOController:
      type: object
      description: |2
        A boxed array of *VirtualSIOController*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualSIOController'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualSIOControllerOption:
      type: object
      description: |2
        The VirtualSIOControllerOption data object type contains the options
        for a virtual Super IO Controller.
      properties:
        numFloppyDrives:
          description: |2
            Three properties (numFloppyDrives.min, numFloppyDrives.max, and
            numFloppyDrives.defaultValue) define the minimum, maximum, and default
            number of floppy drives you can have at any given time in the Super IO
            Controller.
            
            This is further constrained by the number of available
            slots in the Super IO Controller.
          $ref: '#/components/schemas/IntOption'
        numSerialPorts:
          description: |2
            Three properties (numSerialPorts.min, numSerialPorts.max, and
            numSerialPorts.defaultValue) define the minimum, maximum, and default
            number of serial ports you can
            have at any given time in the Super IO Controller.
            
            This is further
            constrained by the number of available slots in the Super IO
            Controller.
          $ref: '#/components/schemas/IntOption'
        numParallelPorts:
          description: |2
            Three properties (numParallelPorts.min, numParallelPorts.max, and
            numParallelPorts.defaultValue) define the minimum, maximum, and default
            number of parallel ports you can
            have at any given time in the Super IO controller.
            
            This is further
            constrained by the number of available slots in the Super IO
            Controller.
          $ref: '#/components/schemas/IntOption'
      required:
        - numFloppyDrives
        - numSerialPorts
        - numParallelPorts
      allOf:
        - $ref: '#/components/schemas/VirtualControllerOption'

    ArrayOfVirtualSIOControllerOption:
      type: object
      description: |2
        A boxed array of *VirtualSIOControllerOption*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualSIOControllerOption'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualSerialPort:
      type: object
      description: |2
        The <code>*VirtualSerialPort*</code> data object represents a serial port
        on a virtual machine.
        
        A virtual serial port uses one of the following backing types to specify
        how the virtual machine performs serial port operations.
        - Network backing (<code>*VirtualSerialPortURIBackingInfo*</code>)
          supports a connection between the virtual machine and a resource
          on the network. The virtual machine can initiate a connection with
          the network resource, or it can listen for connections originating
          from the network.
        - Pipe backing (<code>*VirtualSerialPortPipeBackingInfo*</code>)
          supports I/O through a named pipe. The pipe connects the virtual machine
          to a host application or a virtual machine on the same host.
        - File backing (<code>*VirtualSerialPortFileBackingInfo*</code>)
          supports output through the virtual serial port to a file on the same host.
        - Physical serial port backing
          (<code>*VirtualSerialPortDeviceBackingInfo*</code>)
          supports a connection between the virtual machine and a
          device that is connected to a physical serial port on the host.
        - ThinPrint backing (<code>*VirtualSerialPortThinPrintBackingInfo*</code>)
          provides driver-free printing.
          
        When you use network backing, you can also configure a virtual serial port
        to use a virtual serial port concentrator. The virtual machine initiates
        a telnet connection with the concentrator, and the concentrator acts
        as a proxy between the virtual machine and a system on the network.
        By using a virtual serial port concentrator, you can maintain the connection
        between the virtual machine and the network resource
        when a vMotion event moves the virtual machine from one host to another.
        Without a virtual serial port concentrator, the connection would be lost.
        For information about using a serial port concentrator,
        see _Using a Proxy with vSphere Virtual Serial Ports_.
        
        You can configure a virtual serial port when you create or reconfigure
        a virtual machine. For example, to create a virtual serial port
        with network backing, use the following sequence of operations.
        In this procedure, the virtual serial port uses a proxy and will accept
        a network connection.
        1. Use the <code>*EnvironmentBrowser.QueryConfigOption*</code> method
           to determine the backing options that are available on a host.
           The method returns a <code>*VirtualMachineConfigOption*</code> data object.
           The virtual machine configuration data includes a list of backing options
           (<code>*VirtualDeviceOption.backingOption*</code>).
           The following pseudocode shows the path to the backing options.
           
           
           &nbsp;&nbsp;&nbsp;&nbsp;<code>*VirtualMachineConfigOption*.hardwareOptions.VirtualDeviceOption\[\].backingOption\[\]</code>
           
           
           The array of virtual device options can include a virtual serial port
           (<code>*VirtualSerialPortOption*</code>). The array of serial port
           backing options can include URI, file, pipe, or device backing options.
        2. Use the <code>*Folder.CreateVM_Task*</code> method
           (or the <code>*ResourcePool.CreateChildVM_Task*</code> method)
           to create the virtual machine and configure the virtual serial port backing.
           Create a <code>*VirtualMachineConfigSpec*</code> data object and nested
           data objects for the method's <code>config</code> parameter.
           The following pseudocode shows the resulting path to the backing
           information.
           
           
           &nbsp;&nbsp;&nbsp;&nbsp;<code>*VirtualMachineConfigSpec*.deviceChange\[\].device.backing</code>
           
           
           Set the direction property to "server" to direct the virtual machine to accept
           a connection. Set the serviceURI property to the URI for the host on which
           the virtual machine runs.
           
        If you use physical device backing
        (<code>*VirtualSerialPortDeviceBackingOption*</code>),
        you should also use the <code>*EnvironmentBrowser.QueryConfigTarget*</code>
        method to determine if a serial device is available before configuring device backing.
      properties:
        yieldOnPoll:
          description: |2
            Enables CPU yield behavior.
            
            If you set <code>yieldOnPoll</code> to <code>true</code>,
            the virtual machine will periodically relinquish the processor if its sole task
            is polling the virtual serial port. The amount of time it takes to regain
            the processor will depend on the degree of other virtual machine activity on the host.
            
            To use this property, the CPU yield option must be supported. (See the
            <code>*VirtualSerialPortOption.yieldOnPoll*</code> property for
            the virtual serial port option object.)
          type: boolean
      required:
        - yieldOnPoll
      allOf:
        - $ref: '#/components/schemas/VirtualDevice'

    ArrayOfVirtualSerialPort:
      type: object
      description: |2
        A boxed array of *VirtualSerialPort*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualSerialPort'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualSerialPortDeviceBackingInfo:
      type: object
      description: |2
        The <code>*VirtualSerialPortDeviceBackingInfo*</code> data object
        defines information for using a host serial port device as backing for a
        <code>*VirtualSerialPort*</code>.
        
        On a host, the first virtual machine
        to configure physical device backing for a virtual serial port will obtain
        the mapping. As long as that machine maintains the backing, any additional attempts
        to configure backing using that device will fail (a recoverable error, see
        the connection info <code>*VirtualDeviceConnectInfo.status*</code>).
      allOf:
        - $ref: '#/components/schemas/VirtualDeviceDeviceBackingInfo'

    ArrayOfVirtualSerialPortDeviceBackingInfo:
      type: object
      description: |2
        A boxed array of *VirtualSerialPortDeviceBackingInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualSerialPortDeviceBackingInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualSerialPortFileBackingInfo:
      type: object
      description: |2
        The <code>*VirtualSerialPortFileBackingInfo*</code> data object provides
        information for backing a virtual serial port with a host file.
      allOf:
        - $ref: '#/components/schemas/VirtualDeviceFileBackingInfo'

    ArrayOfVirtualSerialPortFileBackingInfo:
      type: object
      description: |2
        A boxed array of *VirtualSerialPortFileBackingInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualSerialPortFileBackingInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualSerialPortPipeBackingInfo:
      type: object
      description: |2
        The <code>*VirtualSerialPortPipeBackingInfo*</code> data object defines information
        for backing a <code>*VirtualSerialPort*</code> with a named pipe.
        
        You can use a pipe to connect a virtual serial port to a host
        application or to another virtual machine on the host computer.
        This is useful for capturing debugging information sent through
        the virtual serial port.
      properties:
        endpoint:
          description: |2
            Indicates the role the virtual machine assumes as an endpoint
            for the pipe.
            
            The valid values are "client" or "server".
          type: string
        noRxLoss:
          description: |2
            Enables optimized data transfer over the pipe.
            
            When you use this feature,
            the ESX server buffers data to prevent data overrun.
            This allows the virtual machine to read
            all of the data transferred over the pipe with no data loss.
            To use optimized data transfer, set <code>noRxLoss</code> to <code>true</code>.
            To disable this feature, set the property to <code>false.
            
            This property is optional. If this property is not set, the ESX server
            uses the default value specified in the pipe backing options
            (noRxLoss.defaultValue - see
            <code>*VirtualSerialPortPipeBackingOption.noRxLoss*</code>
            in the pipe backing option object).
            
            To use this property, optimized data transfer must be supported on the host.
            (See <code>*VirtualSerialPortPipeBackingOption.noRxLoss*</code>
            in the pipe backing option object.)
            If the ESX server does not support the option, it ignores the
            <code>noRxLoss</code> setting in the pipe backing information object.
            
            **Note**: You can use this feature even if the other end of the pipe
            is not an application, but this is more likely to fail.
          type: boolean
      required:
        - endpoint
      allOf:
        - $ref: '#/components/schemas/VirtualDevicePipeBackingInfo'

    ArrayOfVirtualSerialPortPipeBackingInfo:
      type: object
      description: |2
        A boxed array of *VirtualSerialPortPipeBackingInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualSerialPortPipeBackingInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualSerialPortThinPrintBackingInfo:
      type: object
      description: |2
        The <code>*VirtualSerialPortThinPrintBackingInfo*</code> data object defines
        information required for backing a <code>*VirtualSerialPort*</code> with a
        ThinPrint device.
      allOf:
        - $ref: '#/components/schemas/VirtualDeviceBackingInfo'

    ArrayOfVirtualSerialPortThinPrintBackingInfo:
      type: object
      description: |2
        A boxed array of *VirtualSerialPortThinPrintBackingInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualSerialPortThinPrintBackingInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualSerialPortURIBackingInfo:
      type: object
      description: |2
        The <code>*VirtualSerialPortURIBackingInfo*</code> data object
        specifies network backing for a <code>*VirtualSerialPort*</code>.
        
        You can use URI backing to create a network serial port on the virtual machine,
        supporting connections between the virtual machine and remote systems.
        
        When a virtual machine establishes a connection with a remote system on the network,
        the virtual machine can act as a server or a client. When the virtual machine
        acts as a server, it accepts a connection. When the virtual machine acts as a client,
        it initiates the connection.
        
        You can configure the virtual serial port for communication through a
        virtual serial port concentrator that acts as a proxy between the virtual
        machine and the network. When you specify a
        <code>*VirtualDeviceURIBackingInfo.proxyURI*</code>,
        the virtual machine initiates the connection with the concentrator
        and forwards the <code>*VirtualDeviceURIBackingInfo.direction*</code>
        and <code>*VirtualDeviceURIBackingInfo.serviceURI*</code>
        to the concentrator.
        For information about using a virtual serial port concentrator,
        see _Using a Proxy with vSphere Virtual Serial Ports_.
        
        ESX hosts support different protocols depending on your virtual serial port configuration.
        - If the virtual machine is handling the network connection
          directly (no <code>*VirtualDeviceURIBackingInfo.proxyURI*</code> specified),
          you can use telnet, TCP, and SSL protocols.
          The <code>*VirtualDeviceURIBackingInfo.serviceURI*</code>
          must use one of the following URI schemes:
          - <code>&lt;host&gt;:&lt;port&gt;</code> - this is the equivalent of
            <code>tcp://&lt;host&gt;:&lt;port&gt;</code>.
          - <code>tcp://&lt;host&gt;:&lt;port&gt;</code> - unencrypted TCP connection
            (IPv4 or IPv6).
          - <code>tcp4://&lt;host&gt;:&lt;port&gt;</code> - unencrypted TCP connection
            (IPv4 only).
          - <code>tcp6://&lt;host&gt;:&lt;port&gt;</code> - unencrypted TCP connection
            (IPv6 only).
          - <code>ssl://&lt;host&gt;:&lt;port&gt;</code> - this is the equivalent of
            <code>tcp+ssl://&lt;host&gt;:&lt;port&gt;</code>.
          - <code>tcp+ssl://&lt;host&gt;:&lt;port&gt;</code> - encrypted SSL over TCP.
          - <code>tcp4+ssl://&lt;host&gt;:&lt;port&gt;</code> - SSL over TCP over IPv4.
          - <code>tcp6+ssl://&lt;host&gt;:&lt;port&gt;</code> - SSL over TCP over IPv6.
          - <code>telnet://&lt;host&gt;:&lt;port&gt;</code> - telnet over TCP.
            The virtual machine and remote system can negotiate and use SSL if the remote
            system supports the telnet authentication option; if not, the connection
            uses unencrypted text (plaintext).
          - <code>telnets://&lt;host&gt;:&lt;port&gt;</code> - telnet over SSL over TCP.
            In this case, SSL negotiation begins immediately and you cannot use
            the telnet authentication option.
            
          As of vSphere 5.1 you can specify authentication parameters to support an encrypted
          connection with a remote system using SSL over telnet or telnets.
          The connection will fail if the peer does not support the protocols.
          You cannot use certificate verification when you specify
          <code>tcp</code>, <code>tcp4</code>, or <code>tcp6</code> schemas. For information
          about parameter specification, see <a href="#authparam">Authentication Parameters</a>
          below.
        - If you are using a <code>*VirtualDeviceURIBackingInfo.proxyURI*</code>
          to connect to a virtual serial port concentrator, the URI scheme for
          the communication between the remote system on the network and the concentrator
          depends on the concentrator implementation. The connection between
          the concentrator and the virtual serial port must use telnet or secure telnet
          (telnets). The proxy URI must use one of the following URI schemes. You cannot
          specify a username and password in the proxy URI.
          - <code>telnet://&lt;host&gt;:&lt;port&gt;</code>- telnet over TCP.
            The virtual machine and remote system can negotiate and use SSL if the remote
            system supports the telnet authentication option; if not, the connection
            uses unencrypted text (plaintext).
          - <code>telnets://&lt;host&gt;:&lt;port&gt;</code> - telnet over SSL over TCP.
            In this case, SSL negotiation starts immediately and you cannot use
            the telnet authentication option.
            
          As of vSphere 5.1 you can specify authentication parameters to support an encrypted
          connection with a concentrator using SSL over telnet or telnets.
          The connection will fail if the concentrator does not support the protocols.
          For information about parameter specification,
          see <a href="#authparam">Authentication Parameters</a> below.
          
        <a name="authparam"></a>
        **Authentication Parameters**  
          
        For an encrypted connection, the URI includes a set of authentication
        parameters. The parameters are specified as key words or key/value pairs.
        The following syntax description uses <code>telnet</code>; you can also
        specify authentication parameters for secure telnet (<code>telnets</code>).
        
        <code>telnet://&lt;host&gt;:&lt;port&gt;&num;key\[=value\]\[&amp;key\[=value\] ...\]</code>
        
        The first parameter must have a number sign (&num;) prefix. Additional parameters
        must have an ampersand (&amp;) prefix. The following list shows the valid parameters.
        - <code>certificate=value</code> - Specifies a certificate in PEM format
          against which the peer certificate is compared.
          When you specify a certificate, certificate verification is automatically enabled.
          See the description of the <code>verify</code> parameter below.
        - <code>thumbprint=value</code> - Specifies a certificate thumbprint against
          which the peer certificate thumbprint is compared. When you specify a thumbprint,
          certificate verification is automatically enabled. See the description of the
          <code>verify</code> parameter below.
        - <code>peerName=value</code> - Specifies the peer name that will be used
          to validate the peer certificate. When you specify a peer name,
          certificate verification is automatically enabled. See the description of the
          <code>verify</code> parameter below.
        - <code>verify</code> - Forces certificate verification. The virtual machine
          will verify that the peer certificate subject matches the specified
          <code>peerName</code> and that it was signed by a certificate authority
          known to the ESXi host. Verification is automatically enabled if you specify a
          <code>certificate</code>, <code>thumbprint</code>, or <code>peerName</code>.
        - <code>cipherList=value</code> - Specifies a list of SSL ciphers.
          See <a href="http://www.openssl.org/docs/apps/ciphers.html">OpenSSL ciphers</a>.
          The ciphers are specified as a list separated by colons, spaces, or commas.
          
        For information about URI format, see
        <a href="http://www.ietf.org/rfc/rfc2396.txt">RFC 2396</a>.
      allOf:
        - $ref: '#/components/schemas/VirtualDeviceURIBackingInfo'

    ArrayOfVirtualSerialPortURIBackingInfo:
      type: object
      description: |2
        A boxed array of *VirtualSerialPortURIBackingInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualSerialPortURIBackingInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualSerialPortOption:
      type: object
      description: |2
        The <code>*VirtualSerialPortOption*</code> data object contains the options
        for configuring the virtual serial port device defined by the
        <code>*VirtualSerialPort*</code> data object.
        
        These options include information about how the device is backed
        physically on the host: by a network socket, a host file, a host serial port device,
        or a pipe to another process.
      properties:
        yieldOnPoll:
          description: |2
            Indicates whether the virtual machine supports the CPU yield option during
            virtual serial port polling.
            
            When this feature is supported and enabled,
            the virtual machine will periodically relinquish the processor if its
            sole task is polling the virtual serial port.
            
            If <code>yieldOnPoll.supported</code> is <code>false</code>, the virtual
            machine ignores the virtual serial port object setting for
            <code>*VirtualSerialPort.yieldOnPoll*</code>.
          $ref: '#/components/schemas/BoolOption'
      required:
        - yieldOnPoll
      allOf:
        - $ref: '#/components/schemas/VirtualDeviceOption'

    ArrayOfVirtualSerialPortOption:
      type: object
      description: |2
        A boxed array of *VirtualSerialPortOption*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualSerialPortOption'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualSerialPortDeviceBackingOption:
      type: object
      description: |2
        The <code>*VirtualSerialPortDeviceBackingOption*</code> data object type
        contains the options for backing a serial port with a host serial port device.
      allOf:
        - $ref: '#/components/schemas/VirtualDeviceDeviceBackingOption'

    ArrayOfVirtualSerialPortDeviceBackingOption:
      type: object
      description: |2
        A boxed array of *VirtualSerialPortDeviceBackingOption*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualSerialPortDeviceBackingOption'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualSerialPortFileBackingOption:
      type: object
      description: |2
        The <code>*VirtualSerialPortFileBackingOption*</code> data object type
        contains the options for backing a serial port with a host file.
      allOf:
        - $ref: '#/components/schemas/VirtualDeviceFileBackingOption'

    ArrayOfVirtualSerialPortFileBackingOption:
      type: object
      description: |2
        A boxed array of *VirtualSerialPortFileBackingOption*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualSerialPortFileBackingOption'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualSerialPortPipeBackingOption:
      type: object
      description: |2
        The <code>*VirtualSerialPortPipeBackingOption*</code> data object contains
        the options for backing a serial port device with a pipe to another process.
      properties:
        endpoint:
          description: |2
            Indicates the choices available and the default setting
            for the pipe endpoint.
            
            As an endpoint, the virtual machine can act
            as a client or a server.
          $ref: '#/components/schemas/ChoiceOption'
        noRxLoss:
          description: |2
            Indicates whether the server supports optimized data transfer
            over the pipe and also specifies default behavior.
            
            When this feature is supported and enabled, the server buffers data
            to prevent data overrun. This allows the virtual machine to read all
            of the data transferred over the pipe with no data loss.
            
            If optimized data transfer is supported (<code>noRxLoss.supported</code>
            is <code>true</code>):
            - You can enable (or disable) the feature explicitly by setting the
              <code>*VirtualSerialPortPipeBackingInfo.noRxLoss*</code>
              property on the pipe backing information object.
            - If you do not set the
              <code>*VirtualSerialPortPipeBackingInfo.noRxLoss*</code>
              property on the
              the pipe backing information object, the server enables
              optimized data transfer if the <code>noRxLoss.defaultValue</code>
              property on the pipe backing options object is <code>true</code>.
              
            If <code>noRxLoss.supported</code> is <code>false</code>, the server
            ignores the optimization settings.
            
            **Note**: You can use this feature even if the other end of the pipe
            is not an application, but it is more likely to fail.
          $ref: '#/components/schemas/BoolOption'
      required:
        - endpoint
        - noRxLoss
      allOf:
        - $ref: '#/components/schemas/VirtualDevicePipeBackingOption'

    ArrayOfVirtualSerialPortPipeBackingOption:
      type: object
      description: |2
        A boxed array of *VirtualSerialPortPipeBackingOption*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualSerialPortPipeBackingOption'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualSerialPortThinPrintBackingOption:
      type: object
      description: |2
        The <code>*VirtualSerialPortThinPrintBackingOption*</code> data
        object type contains the options for backing a serial port with a ThinPrint device.
      allOf:
        - $ref: '#/components/schemas/VirtualDeviceBackingOption'

    ArrayOfVirtualSerialPortThinPrintBackingOption:
      type: object
      description: |2
        A boxed array of *VirtualSerialPortThinPrintBackingOption*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualSerialPortThinPrintBackingOption'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualSerialPortURIBackingOption:
      type: object
      description: |2
        The <code>*VirtualSerialPortURIBackingOption*</code> data object type
        contains the options for using a network socket as backing for a virtual serial port.
      allOf:
        - $ref: '#/components/schemas/VirtualDeviceURIBackingOption'

    ArrayOfVirtualSerialPortURIBackingOption:
      type: object
      description: |2
        A boxed array of *VirtualSerialPortURIBackingOption*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualSerialPortURIBackingOption'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualSoundBlaster16:
      type: object
      description: |2
        The VirtualSoundBlaster16 data object type represents a Sound
        Blaster 16 sound card in a virtual machine.
      allOf:
        - $ref: '#/components/schemas/VirtualSoundCard'

    ArrayOfVirtualSoundBlaster16:
      type: object
      description: |2
        A boxed array of *VirtualSoundBlaster16*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualSoundBlaster16'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualSoundBlaster16Option:
      type: object
      description: |2
        The VirtualSoundBlaster16Option data object type contains the options for a
        virtual SoundBlaster 16 sound card.
      allOf:
        - $ref: '#/components/schemas/VirtualSoundCardOption'

    ArrayOfVirtualSoundBlaster16Option:
      type: object
      description: |2
        A boxed array of *VirtualSoundBlaster16Option*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualSoundBlaster16Option'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualSoundCard:
      type: object
      description: |2
        This data object type represents a sound card in
        a virtual machine.
      allOf:
        - $ref: '#/components/schemas/VirtualDevice'

    ArrayOfVirtualSoundCard:
      type: object
      description: |2
        A boxed array of *VirtualSoundCard*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualSoundCard'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualSoundCardDeviceBackingInfo:
      type: object
      description: |2
        The sound card device backing data class.
      allOf:
        - $ref: '#/components/schemas/VirtualDeviceDeviceBackingInfo'

    ArrayOfVirtualSoundCardDeviceBackingInfo:
      type: object
      description: |2
        A boxed array of *VirtualSoundCardDeviceBackingInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualSoundCardDeviceBackingInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualSoundCardOption:
      type: object
      description: |2
        The VirtualSoundCardOption data class contains the options for the
        virtual sound card class.
      allOf:
        - $ref: '#/components/schemas/VirtualDeviceOption'

    ArrayOfVirtualSoundCardOption:
      type: object
      description: |2
        A boxed array of *VirtualSoundCardOption*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualSoundCardOption'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualSoundCardDeviceBackingOption:
      type: object
      description: |2
        The VirtualSoundCardBackingOption class contains the options
        for the virtual sound card backing class.
      allOf:
        - $ref: '#/components/schemas/VirtualDeviceDeviceBackingOption'

    ArrayOfVirtualSoundCardDeviceBackingOption:
      type: object
      description: |2
        A boxed array of *VirtualSoundCardDeviceBackingOption*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualSoundCardDeviceBackingOption'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualSriovEthernetCard:
      type: object
      description: |2
        The *VirtualSriovEthernetCard* data object defines the properties
        of a SR-IOV enabled Ethernet card attached to a virtual machine.
      properties:
        allowGuestOSMtuChange:
          description: |2
            Indicates whether MTU can be changed from guest OS.
          type: boolean
        sriovBacking:
          description: |2
            Information about SR-IOV passthrough backing of this VirtualSriovEthernetCard.
            
            During an edit operation, if this value is unset, no changes to the
            SR-IOV backing will be made. During an add operation, if this is unset,
            an automatic physical function assignment scheme as described above will be used.
            This field is ignored and must be unset if this VirtualSriovEthernetCard
            is a DVX device, in which case the dvxBackingInfo field is set. In other
            words, sriovBacking and dvxBackingInfo cannot both be set at any time.
          $ref: '#/components/schemas/VirtualSriovEthernetCardSriovBackingInfo'
        dvxBackingInfo:
          description: |2
            Information about DVX backing of this VirtualSriovEthernetCard.
            
            This field is set if and only if this VirtualSriovEthernetCard is a DVX
            device.
            
            ***Since:*** vSphere API Release 8.0.0.1
          $ref: '#/components/schemas/VirtualPCIPassthroughDvxBackingInfo'
      allOf:
        - $ref: '#/components/schemas/VirtualEthernetCard'

    ArrayOfVirtualSriovEthernetCard:
      type: object
      description: |2
        A boxed array of *VirtualSriovEthernetCard*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualSriovEthernetCard'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualSriovEthernetCardSriovBackingInfo:
      type: object
      description: |2
        The *VirtualSriovEthernetCardSriovBackingInfo*
        data object contains information about the SR-IOV physical function and
        virtual function backing for a passthrough NIC.
      properties:
        physicalFunctionBacking:
          description: |2
            Physical function backing for this device.
            
            A specific physical function can be assigned to the device by specifying
            its id but the VirtualSriovNetworkCard can also be configured for automatic physical
            function assignment by providing a special value "Automatic-0000:00:00.0"
            as *VirtualPCIPassthroughDeviceBackingInfo.id*. This is supported if there is
            an associated SR-IOV network device pool for the network specified in
            *VirtualDevice.backing* - in that case a physical function from
            the pool, if available, will be assigned to this device during power on.
            During reconfigure, if an SR-IOV backing is provided, the physical function backing
            may not be left unset.
            A value of "Automatic-" followed by a valid physical function id
            in *VirtualPCIPassthroughDeviceBackingInfo.id* indicates that assignment
            is automatic and the physical function in question is the one that has currently
            been assigned.
          $ref: '#/components/schemas/VirtualPCIPassthroughDeviceBackingInfo'
        virtualFunctionBacking:
          description: |2
            Virtual function backing for this device.
            
            During reconfigure, if this is unset, any currently assigned virtual function
            will be overwritten and a new one will be selected. If
            *VirtualPCIPassthroughDeviceBackingInfo.id* contains a valid id for
            a virtual function of the currently assigned physical function, this acts as
            a hint and, if possible, the specified virtual function will be the one
            allocated for the device.
            When a virtual function is yet to be assigned to the device (e.g. if the VM
            has not been powered on yet), the virtual function backing will be unset.
          $ref: '#/components/schemas/VirtualPCIPassthroughDeviceBackingInfo'
        virtualFunctionIndex:
          type: integer
          format: int32
      allOf:
        - $ref: '#/components/schemas/VirtualDeviceBackingInfo'

    ArrayOfVirtualSriovEthernetCardSriovBackingInfo:
      type: object
      description: |2
        A boxed array of *VirtualSriovEthernetCardSriovBackingInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualSriovEthernetCardSriovBackingInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualSriovEthernetCardOption:
      type: object
      description: |2
        The VirtualSriovEthernetCardOption data object contains the options for the
        VirtualSriovEthernetCard data object type.
      allOf:
        - $ref: '#/components/schemas/VirtualEthernetCardOption'

    ArrayOfVirtualSriovEthernetCardOption:
      type: object
      description: |2
        A boxed array of *VirtualSriovEthernetCardOption*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualSriovEthernetCardOption'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualSriovEthernetCardSriovBackingOption:
      type: object
      description: |2
        This data object contains the option for SriovBackingInfo data
        of the virtual network SR-IOV card object type.
      allOf:
        - $ref: '#/components/schemas/VirtualDeviceBackingOption'

    ArrayOfVirtualSriovEthernetCardSriovBackingOption:
      type: object
      description: |2
        A boxed array of *VirtualSriovEthernetCardSriovBackingOption*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualSriovEthernetCardSriovBackingOption'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualTPM:
      type: object
      description: |2
        This data object type represents a TPM 2.0 module
        in a virtual machine.
      properties:
        endorsementKeyCertificateSigningRequest:
          description: |2
            Endorsement Key Certificate Signing Request in DER format.
            
            There may be more than one - one for RSA 2048, one for ECC NIST P256,
            and any number of other signing requests for other algorithms.
          type: array
          items:
            type: string
            format: byte
        endorsementKeyCertificate:
          description: |2
            Endorsement Key Certificate in DER format.
            
            There may be more than one. Indices in this array do not match
            indices in *VirtualTPM.endorsementKeyCertificateSigningRequest* array,
            entries must be matched by comparing fields in DER data between
            certificate signing requests and certificates.
          type: array
          items:
            type: string
            format: byte
      allOf:
        - $ref: '#/components/schemas/VirtualDevice'

    ArrayOfVirtualTPM:
      type: object
      description: |2
        A boxed array of *VirtualTPM*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualTPM'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualTPMOption:
      type: object
      description: |2
        This data object type contains the options for the
        virtual TPM class.
      properties:
        supportedFirmware:
          description: |2
            List of supported firmware selections, using
            *GuestOsDescriptorFirmwareType_enum* enumeration.
            
            There is at least one value in this array.
          type: array
          items:
            type: string
      allOf:
        - $ref: '#/components/schemas/VirtualDeviceOption'

    ArrayOfVirtualTPMOption:
      type: object
      description: |2
        A boxed array of *VirtualTPMOption*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualTPMOption'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualUSB:
      type: object
      description: |2
        The *VirtualUSB* data object describes the USB device configuration
        for a virtual machine.
        
        You can attach a USB device to an ESX host.
        The device is available to only one virtual machine at a time. When you remove
        the device from the virtual machine, it becomes available to other virtual machines
        located on the host. You can add up to 20 USB devices to a virtual machine.
        Virtual USB support requires virtual machine hardware version 7 or later.
        
        The *VirtualUSB* object represents either a configuration to be applied to
        the virtual machine or the current device configuration on the virtual machine.
        - To configure a USB connection for the virtual machine, add a *VirtualUSB*
          object to the *VirtualDeviceConfigSpec*.
          Use USB backing (*VirtualUSBUSBBackingInfo*) to establish
          a connection with a virtual machine that will remain on the host to which
          the USB device is attached.
          The vSphere Server does not support vMotion for standard USB backing.
          To configure vMotion support for a virtual machine with a USB connection,
          use remote host backing for the USB connection
          (*VirtualUSBRemoteHostBackingInfo*).
          
          To configure a USB device for a virtual machine, the virtual machine
          must have a USB controller. To add a controller, include a
          *VirtualUSBController* object in the virtual device
          specification for your virtual machine configuration. You can add only one
          USB controller to a virtual machine.
        - To determine USB device configuration status for the virtual machine,
          check the virtual hardware device list
          (*VirtualHardware*.*VirtualHardware.device*).
          The presence of the *VirtualUSB* object in the hardware device list
          indicates that the virtual machine is configured to use a USB device.
          The *VirtualUSB.connected* property indicates
          whether the virtual machine is connected to the device.
          
        To determine the USB options available on the host, use the
        *EnvironmentBrowser.QueryConfigOption* method to retrieve the virtual
        machine configuration. The presence of the *VirtualUSBOption*
        object in the retrieved configuration
        (*VirtualMachineConfigOption*.*VirtualMachineConfigOption.hardwareOptions*.*VirtualHardwareOption.virtualDeviceOption*)
        indicates that the host supports USB connections.
        
        The following operations will disconnect a USB device, losing data if data transfer
        is in progress over the USB connection.
        - Hot add of memory, CPU, or PCI devices. A hot add operation disconnects only
          USB devices for virtual machines that use a local connection to the device
          (*VirtualUSBUSBBackingInfo*).
        - Suspend and resume on a virtual machine.
        - vMotion of a virtual machine with a USB connection,
          if you are not using remote host USB backing.
          
        The following services do not support USB connections.
        - Fault Tolerance virtual machines cannot use USB devices.
        - DPM (Distributed Power Management) will put a host into standby,
          regardless of any connections to USB devices on the host.
        - DRS (Distributed Resource Scheduling) may power-off hosts that have
          USB connections to virtual machines.
      properties:
        connected:
          description: |2
            Flag indicating whether the device is currently connected.
            
            The virtual machine is not connected to the device if the autoconnect pattern
            specified in the USB device backing
            (*VirtualDeviceDeviceBackingInfo*.*VirtualDeviceDeviceBackingInfo.deviceName*)
            can not be satisfied, either
            because there is no such device, or the matching device is not
            available. Valid only while the virtual machine is running.
          type: boolean
        vendor:
          description: |2
            Vendor ID of the USB device.
          type: integer
          format: int32
        product:
          description: |2
            Product ID of the USB device.
          type: integer
          format: int32
        family:
          description: |2
            Device class families.
            
            For possible values see
            *VirtualMachineUsbInfoFamily_enum*.
          type: array
          items:
            type: string
        speed:
          description: |2
            Device speeds detected by server.
            
            For possible values see
            *VirtualMachineUsbInfoSpeed_enum*.
          type: array
          items:
            type: string
      required:
        - connected
      allOf:
        - $ref: '#/components/schemas/VirtualDevice'

    ArrayOfVirtualUSB:
      type: object
      description: |2
        A boxed array of *VirtualUSB*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualUSB'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualUSBRemoteClientBackingInfo:
      type: object
      description: |2
        The virtual remote client USB device backing class.
      properties:
        hostname:
          description: |2
            Hostname of the remote client where the physical USB device resides.
          type: string
      required:
        - hostname
      allOf:
        - $ref: '#/components/schemas/VirtualDeviceRemoteDeviceBackingInfo'

    ArrayOfVirtualUSBRemoteClientBackingInfo:
      type: object
      description: |2
        A boxed array of *VirtualUSBRemoteClientBackingInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualUSBRemoteClientBackingInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualUSBRemoteHostBackingInfo:
      type: object
      description: |2
        The *VirtualUSBRemoteHostBackingInfo* data object
        identifies a host and a USB device that is attached to the host.
        
        Use this object to configure support for persistent access to the USB device
        when vMotion operations migrate a virtual machine to a different host.
        The vCenter Server will not migrate the virtual machine to a host
        that does not support the USB remote host backing capability.
        
        Specify remote host backing as part of the USB device configuration
        when you create or reconfigure a virtual machine
        (*VirtualMachineConfigSpec*.*VirtualMachineConfigSpec.deviceChange*.*VirtualDeviceConfigSpec.device*.*VirtualDevice.backing*).
        
        To identify the USB device, you specify an autoconnect pattern
        for the *VirtualDeviceDeviceBackingInfo.deviceName*.
        The virtual machine can connect to the USB device if the ESX server
        can find a USB device described by the autoconnect pattern.
        The autoconnect pattern consists of name:value pairs. You can
        use any combination of the following fields.
        - path - USB connection path on the host
        - pid - idProduct field in the USB device descriptor
        - vid - idVendor field in the USB device descriptor
        - hostId - unique ID for the host
        - speed - device speed (low, full, or high)
          
        For example, the following pattern identifies a USB device:
        
        &nbsp;&nbsp;&nbsp;&nbsp;<code>"path:1/3/0 hostId:44\\ 45\\ 4c\\ 43\\ 00\\ 10\\ 54-80\\ 35\\ ca\\ c0\\ 4f\\ 4d\\ 37\\ 31"</code>
        
        This pattern identifies the USB device connected to port 1/3/0 on the
        host with the unique id <code>0x44454c4c430010548035cac04f4d3731</code>.
        
        Special characters for autoconnect pattern values:
        - The name and value are separated by a colon (:).
        - Name:value pairs are separated by spaces.
        - The escape character is a backslash (\\). Use a single backslash to embed
          a space in a value. Use a double blackslash to embed a single backslash
          in the value.
      properties:
        hostname:
          description: |2
            Name of the ESX host to which the physical USB device is attached
            (*HostSystem*.*ManagedEntity.name*).
            
            When you configure remote host backing, hostname must identify
            the local host on which the virtual machine is running.
          type: string
      required:
        - hostname
      allOf:
        - $ref: '#/components/schemas/VirtualDeviceDeviceBackingInfo'

    ArrayOfVirtualUSBRemoteHostBackingInfo:
      type: object
      description: |2
        A boxed array of *VirtualUSBRemoteHostBackingInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualUSBRemoteHostBackingInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualUSBUSBBackingInfo:
      type: object
      description: |2
        The *VirtualUSBUSBBackingInfo* data object
        identifies a USB device on the host where the virtual machine
        is located.
        
        This type of backing supports only a local connection
        where the virtual machine will remain on the host to which the
        USB device is attached.
        
        To identify the USB device, you specify an autoconnect pattern
        for the *VirtualDeviceDeviceBackingInfo.deviceName*.
        The virtual machine can connect to the USB device if the ESX server
        can find a USB device described by the autoconnect pattern.
        The autoconnect pattern consists of name:value pairs. You can
        use any combination of the following fields.
        - path - USB connection path on the host
        - pid - idProduct field in the USB device descriptor
        - vid - idVendor field in the USB device descriptor
        - hostId - unique ID for the host
        - speed - device speed (low, full, or high)
          
        For example, the following pattern identifies a USB device:
        
        &nbsp;&nbsp;&nbsp;&nbsp;<code>"path:1/3/0 hostId:44\\ 45\\ 4c\\ 43\\ 00\\ 10\\ 54-80\\ 35\\ ca\\ c0\\ 4f\\ 4d\\ 37\\ 31"</code>
        
        This pattern identifies the USB device connected to port 1/3/0 on the
        host with the unique id <code>0x44454c4c430010548035cac04f4d3731</code>.
        
        Special characters for autoconnect pattern values:
        - The name and value are separated by a colon (:).
        - Name:value pairs are separated by spaces.
        - The escape character is a backslash (\\). Use a single backslash to embed
          a space in a value. Use a double blackslash to embed a single backslash
          in the value.
      allOf:
        - $ref: '#/components/schemas/VirtualDeviceDeviceBackingInfo'

    ArrayOfVirtualUSBUSBBackingInfo:
      type: object
      description: |2
        A boxed array of *VirtualUSBUSBBackingInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualUSBUSBBackingInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualUSBController:
      type: object
      description: |2
        The *VirtualUSBController* data object describes a virtual USB controller
        and contains a list of the devices connected to the controller.
        
        A virtual machine must have a virtual USB controller before you can add
        a USB device to the virtual machine configuration. To add a controller,
        include a *VirtualUSBController* object in the
        *VirtualDeviceConfigSpec* for your virtual machine configuration.
        You can add only one controller to a virtual machine.
        A virtual USB controller supports up to 20 USB device connections on the
        virtual machine.
        
        The ESX Server host must have the USB controller hardware and modules
        that support USB 2.0 and USB1.1.
        You can use a maximum of 15 USB controllers on a host. If your system
        includes an additional number of controllers with connected devices,
        the additional devices will not be available to virtual machines on the host.
        
        You must remove all USB devices from a virtual machine before you can
        remove the USB controller.
      properties:
        autoConnectDevices:
          description: |2
            Flag to indicate whether or not the ability to hot plug devices
            is enabled on this controller.
          type: boolean
        ehciEnabled:
          description: |2
            Flag to indicate whether or not enhanced host controller
            interface (USB 2.0) is enabled on this controller.
          type: boolean
      allOf:
        - $ref: '#/components/schemas/VirtualController'

    ArrayOfVirtualUSBController:
      type: object
      description: |2
        A boxed array of *VirtualUSBController*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualUSBController'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualUSBControllerPciBusSlotInfo:
      type: object
      description: |2
        The <code>*VirtualUSBControllerPciBusSlotInfo*</code> data object type
        defines information about the pci bus slots of usb controller device
        in a virtual machine.
      properties:
        ehciPciSlotNumber:
          description: |2
            The pci slot number of eHCI controller.
            
            This property should be used only when the ehciEnabled property
            is set to true.
          type: integer
          format: int32
      allOf:
        - $ref: '#/components/schemas/VirtualDevicePciBusSlotInfo'

    ArrayOfVirtualUSBControllerPciBusSlotInfo:
      type: object
      description: |2
        A boxed array of *VirtualUSBControllerPciBusSlotInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualUSBControllerPciBusSlotInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualUSBControllerOption:
      type: object
      description: |2
        The VirtualUSBControllerOption data object type contains the options
        for a virtual USB Host Controller Interface.
      properties:
        autoConnectDevices:
          description: |2
            Flag to indicate whether or not the ability to autoconnect devices
            is enabled for this virtual USB controller.
          $ref: '#/components/schemas/BoolOption'
        ehciSupported:
          description: |2
            Flag to indicate whether or not enhanced host controller
            interface (USB 2.0) is available on this virtual USB controller.
          $ref: '#/components/schemas/BoolOption'
        supportedSpeeds:
          description: |2
            Range of USB device speeds supported by this USB controller type.
            
            Acceptable values are specified at *VirtualMachineUsbInfoSpeed_enum*.
          type: array
          items:
            type: string
      required:
        - autoConnectDevices
        - ehciSupported
        - supportedSpeeds
      allOf:
        - $ref: '#/components/schemas/VirtualControllerOption'

    ArrayOfVirtualUSBControllerOption:
      type: object
      description: |2
        A boxed array of *VirtualUSBControllerOption*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualUSBControllerOption'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualUSBOption:
      type: object
      description: |2
        The *VirtualUSBOption* data object type contains options for
        USB device configuration on a virtual machine.
        
        The vSphere API supports
        the following options:
        - Local host USB connection
          (*VirtualUSBUSBBackingOption*)
        - Remote host USB connection
          (*VirtualUSBRemoteHostBackingOption*)
          
        For information about USB device configuration, see *VirtualUSB*.
      allOf:
        - $ref: '#/components/schemas/VirtualDeviceOption'

    ArrayOfVirtualUSBOption:
      type: object
      description: |2
        A boxed array of *VirtualUSBOption*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualUSBOption'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualUSBRemoteClientBackingOption:
      type: object
      description: |2
        This data object type contains the options for
        the virtual remote USB client backing data object type.
      allOf:
        - $ref: '#/components/schemas/VirtualDeviceRemoteDeviceBackingOption'

    ArrayOfVirtualUSBRemoteClientBackingOption:
      type: object
      description: |2
        A boxed array of *VirtualUSBRemoteClientBackingOption*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualUSBRemoteClientBackingOption'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualUSBRemoteHostBackingOption:
      type: object
      description: |2
        The *VirtualUSBRemoteHostBackingOption* data object
        contains options for remote host USB configuration.
        
        This backing option
        indicates support for persistent USB connections when vMotion operations
        migrate virtual machines to different hosts.
      allOf:
        - $ref: '#/components/schemas/VirtualDeviceDeviceBackingOption'

    ArrayOfVirtualUSBRemoteHostBackingOption:
      type: object
      description: |2
        A boxed array of *VirtualUSBRemoteHostBackingOption*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualUSBRemoteHostBackingOption'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualUSBUSBBackingOption:
      type: object
      description: |2
        The *VirtualUSBUSBBackingOption* data object
        contains the options for virtual backing for a USB device.
        
        This backing option indicates support for a local connection where
        the virtual machine will remain on the host to which the USB device
        is attached.
      allOf:
        - $ref: '#/components/schemas/VirtualDeviceDeviceBackingOption'

    ArrayOfVirtualUSBUSBBackingOption:
      type: object
      description: |2
        A boxed array of *VirtualUSBUSBBackingOption*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualUSBUSBBackingOption'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualUSBXHCIController:
      type: object
      description: |2
        The *VirtualUSBXHCIController* data object describes a virtual
        USB Extensible Host Controller Interface (USB 3.0).
        
        For more informatino see *VirtualUSBController*.
      properties:
        autoConnectDevices:
          description: |2
            Flag to indicate whether or not the ability to hot plug devices
            is enabled on this controller.
          type: boolean
      allOf:
        - $ref: '#/components/schemas/VirtualController'

    ArrayOfVirtualUSBXHCIController:
      type: object
      description: |2
        A boxed array of *VirtualUSBXHCIController*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualUSBXHCIController'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualUSBXHCIControllerOption:
      type: object
      description: |2
        The VirtualUSBXHCIControllerOption data object type contains the options
        for a virtual USB Extensible Host Controller Interface (USB 3.0).
      properties:
        autoConnectDevices:
          description: |2
            Flag to indicate whether or not the ability to autoconnect devices
            is enabled for this virtual USB controller.
          $ref: '#/components/schemas/BoolOption'
        supportedSpeeds:
          description: |2
            Range of USB device speeds supported by this USB controller type.
            
            Acceptable values are specified at *VirtualMachineUsbInfoSpeed_enum*.
          type: array
          items:
            type: string
      required:
        - autoConnectDevices
        - supportedSpeeds
      allOf:
        - $ref: '#/components/schemas/VirtualControllerOption'

    ArrayOfVirtualUSBXHCIControllerOption:
      type: object
      description: |2
        A boxed array of *VirtualUSBXHCIControllerOption*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualUSBXHCIControllerOption'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualMachineVMCIDevice:
      type: object
      description: |2
        The *VirtualMachineVMCIDevice* data object represents
        a virtual communication device that supports the VMCI
        (Virtual Machine Communication Interface).
        
        Each virtual machine has a VMCI device that handles
        interprocess socket-based communication.
        VMCI device information is available in the virtual machine
        hardware device list
        (*VirtualMachine*.*VirtualMachine.config*.*VirtualMachineConfigInfo.hardware*.*VirtualHardware.device*\[\]).
        
        An application running on a virtual machine uses the VMCI Sockets API
        for communication with other virtual machines on the same host
        (communication between virtual machines is not supported on vSphere
        5.1 and later platforms as described for
        VirtualVMCIDevice.*VirtualMachineVMCIDevice.allowUnrestrictedCommunication*),
        or for communication with the host.
        For information about using the vSphere VMCI Sockets API,
        see the _VMCI Sockets Programming Guide_.
      properties:
        id:
          description: |2
            Unique identifier for VMCI socket access to this virtual machine.
            
            Use this value to identify this virtual machine in calls to the
            VMCI Sockets API. Applications running on other virtual machines on this
            host will use this value to connect to this virtual machine.
            You can cast this value to a 32-bit unsigned integer.
            
            The vSphere Server sets this value when a virtual machine
            powers on. The Server may change this value after power
            operations such as vMotion or restoring a virtual machine
            from a snapshot. If you have saved a VMCI device identifier,
            check to see if the value is still valid after power
            operations.
          type: integer
          format: int64
        allowUnrestrictedCommunication:
          deprecated: true
          description: |2
            Deprecated as of vSphere API 5.1. On vSphere 5.1 and later
            platforms, the VMCI device does not support communication with
            other virtual machines. Therefore, this property has no effect
            on these platforms.
            
            Determines the extent of VMCI communication with this virtual
            machine.
            
            Set this property to true to allow VMCI communication
            with all virtual machines on the host and with trusted services.
            Set this property to false to allow VMCI communication only
            with trusted services such as the hypervisor on the host.
            
            If unset, communication is restricted to trusted services only.
          type: boolean
        filterEnable:
          description: |2
            Determines if filtering of VMCI communication is enabled for this virtual
            machine.
            
            Set this property to enable or disable filter rules as specified
            in *VirtualMachineVMCIDevice.filterInfo*.
          type: boolean
        filterInfo:
          description: |2
            Specify a *VirtualMachineVMCIDeviceFilterInfo* data object that controls the extent of
            VMCI communication with this virtual machine.
          $ref: '#/components/schemas/VirtualMachineVMCIDeviceFilterInfo'
      allOf:
        - $ref: '#/components/schemas/VirtualDevice'

    ArrayOfVirtualMachineVMCIDevice:
      type: object
      description: |2
        A boxed array of *VirtualMachineVMCIDevice*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineVMCIDevice'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualMachineVMCIDeviceFilterInfo:
      type: object
      description: |2
        The *VirtualMachineVMCIDeviceFilterInfo* data object contains an array of filters.
        
        To
        clear all existing filters, leave filters unset or specify an empty
        array.
      properties:
        filters:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineVMCIDeviceFilterSpec'
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVirtualMachineVMCIDeviceFilterInfo:
      type: object
      description: |2
        A boxed array of *VirtualMachineVMCIDeviceFilterInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineVMCIDeviceFilterInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualMachineVMCIDeviceFilterSpec:
      type: object
      description: |2
        The *VirtualMachineVMCIDeviceFilterSpec* data object describes a filter based on protocol,
        direction and port or port-range.
      properties:
        rank:
          description: |2
            Long value representing filter rank.
            
            This is the rank of this filter. Filters are guaranteed to be
            processed in ascending rank order, that is, if rank1 &lt; rank2, then
            rank1 is processed before rank2. The ranks within an array of
            filters should be unique.
          type: integer
          format: int64
        action:
          description: |2
            String value from *VirtualMachineVMCIDeviceAction_enum* enum object.
          type: string
        protocol:
          description: |2
            String value from *VirtualMachineVMCIDeviceProtocol_enum* enum object
          type: string
        direction:
          description: |2
            String value from *VirtualMachineVMCIDeviceDirection_enum* enum object.
          type: string
        lowerDstPortBoundary:
          description: |2
            Long value representing the lower destination port boundary.
            
            If unset, the lower destination port boundary is default to the
            lowest port number supported by the given protocol.
            
            To specify a single port, both lowerDstPortBoundary and
            upperDstPortBoundary shall be set to the same value.
          type: integer
          format: int64
        upperDstPortBoundary:
          description: |2
            Long value representing the upper destination port range.
            
            If unset, the upper destination port boundary is default to the
            highest port number supported by the given protocol.
            
            To specify a single port, both lowerDstPortBoundary and
            upperDstPortBoundary shall be set to the same value.
          type: integer
          format: int64
      required:
        - rank
        - action
        - protocol
        - direction
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVirtualMachineVMCIDeviceFilterSpec:
      type: object
      description: |2
        A boxed array of *VirtualMachineVMCIDeviceFilterSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineVMCIDeviceFilterSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualMachineVMCIDeviceOption:
      type: object
      description: |2
        The *VirtualMachineVMCIDeviceOption* data object contains the options
        for the virtual VMCI device (*VirtualMachineVMCIDevice*).
      properties:
        allowUnrestrictedCommunication:
          description: |2
            Indicates support for VMCI communication and specifies the default
            operation.
            
            If *BoolOption.defaultValue* is set to true,
            the virtual machine can participate in VMCI communication with all other
            virtual machines on the host. Otherwise, VMCI communication will be
            restricted to trusted services such as the hypervisor on the host.
            On vSphere 5.1 and later platforms, the VMCI device does not support
            communication with other virtual machines. Therefore, this property has
            no effect on these platforms.
          $ref: '#/components/schemas/BoolOption'
        filterSpecOption:
          description: |2
            Filter specification options.
          $ref: '#/components/schemas/VirtualMachineVMCIDeviceOptionFilterSpecOption'
        filterSupported:
          description: |2
            Indicates support for VMCI firewall filters and specifies the default
            operation.
            
            If *BoolOption.supported* is set to true,
            then firewall filtering can be used for this virtual machine to allow
            or deny traffic over VMCI.
          $ref: '#/components/schemas/BoolOption'
      required:
        - allowUnrestrictedCommunication
      allOf:
        - $ref: '#/components/schemas/VirtualDeviceOption'

    ArrayOfVirtualMachineVMCIDeviceOption:
      type: object
      description: |2
        A boxed array of *VirtualMachineVMCIDeviceOption*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineVMCIDeviceOption'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualMachineVMCIDeviceOptionFilterSpecOption:
      type: object
      description: |2
        Filter specification options.
        
        Indicates options for each filter
        specification, as defined by
        *VirtualMachineVMCIDeviceFilterSpec*.
      properties:
        action:
          description: |2
            Available actions.
          $ref: '#/components/schemas/ChoiceOption'
        protocol:
          description: |2
            Available protocols.
          $ref: '#/components/schemas/ChoiceOption'
        direction:
          description: |2
            Available directions.
          $ref: '#/components/schemas/ChoiceOption'
        lowerDstPortBoundary:
          description: |2
            Minimum, maximum and default values for lower destination port
            boundary.
          $ref: '#/components/schemas/LongOption'
        upperDstPortBoundary:
          description: |2
            Minimum, maximum and default values for upper destination port
            boundary.
          $ref: '#/components/schemas/LongOption'
      required:
        - action
        - protocol
        - direction
        - lowerDstPortBoundary
        - upperDstPortBoundary
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVirtualMachineVMCIDeviceOptionFilterSpecOption:
      type: object
      description: |2
        A boxed array of *VirtualMachineVMCIDeviceOptionFilterSpecOption*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineVMCIDeviceOptionFilterSpecOption'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualMachineVMIROM:
      type: object
      deprecated: true
      description: |2
        Deprecated as of vSphere API 6.0. On vSphere 6.0 and later
        platforms, the VMIROM device does not provide any functionality.
        
        The VirtualVMIROM data object type represents the ROM on the
        virtual machine's PCI bus that provides support for VMI.
      allOf:
        - $ref: '#/components/schemas/VirtualDevice'

    ArrayOfVirtualMachineVMIROM:
      type: object
      description: |2
        A boxed array of *VirtualMachineVMIROM*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineVMIROM'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualVMIROMOption:
      type: object
      description: |2
        This data object type contains the options for the
        *VirtualVMIROM* data object type.
      allOf:
        - $ref: '#/components/schemas/VirtualDeviceOption'

    ArrayOfVirtualVMIROMOption:
      type: object
      description: |2
        A boxed array of *VirtualVMIROMOption*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualVMIROMOption'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualMachineVideoCard:
      type: object
      description: |2
        The VirtualVideoCard data object type represents a video card in
        a virtual machine.
      properties:
        videoRamSizeInKB:
          description: |2
            The size of the framebuffer for a virtual machine.
          type: integer
          format: int64
        numDisplays:
          description: |2
            Indicates the number of supported monitors.
            
            The number of displays X the maximum resolution of each display is
            bounded by the video RAM size of the virtual video card.
            This property can only be updated when the virtual machine is
            powered off.
          type: integer
          format: int32
        useAutoDetect:
          description: |2
            Flag to indicate whether the display settings of the host on which the
            virtual machine is running should be used to automatically determine
            the display settings of the virtual machine's video card.
            
            This setting takes effect at virtual machine power-on time. If this
            value is set to TRUE, numDisplays will be ignored.
          type: boolean
        enable3DSupport:
          description: |2
            Flag to indicate whether the virtual video card supports 3D functions.
            
            This property can only be updated when the virtual machine is powered
            off.
          type: boolean
        use3dRenderer:
          description: |2
            Indicate how the virtual video device renders 3D graphics.
            
            The virtual video device can use hardware acceleration and software
            rendering. By default, VMware products determine whether or not to
            use hardware acceleration based on the availability of physical graphics
            devices. Certain workloads can benefit from explicitly specifying if
            hardware acceleration is required. For example, 3D intensive workloads
            may indicate to run on systems with graphics hardware.
            
            There are three settings.
            
            (automatic) - The virtual device chooses how to render 3D graphics (default).
            (software) - The virtual device will use software rendering and
            will not attempt to use hardware acceleration.
            (hardware) - The virtual device will use hardware acceleration and
            will not activate without it.
          type: string
        graphicsMemorySizeInKB:
          description: |2
            The size of graphics memory.
            
            If 3d support is enabled this setting gives the amount of guest memory
            used for graphics resources.
            This property can only be updated when the virtual machine is
            powered off.
          type: integer
          format: int64
      allOf:
        - $ref: '#/components/schemas/VirtualDevice'

    ArrayOfVirtualMachineVideoCard:
      type: object
      description: |2
        A boxed array of *VirtualMachineVideoCard*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineVideoCard'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualVideoCardOption:
      type: object
      description: |2
        This data object type contains the options for the
        *VirtualVideoCard* data object type.
      properties:
        videoRamSizeInKB:
          description: |2
            Minimum, maximum and default size of the video frame buffer.
          $ref: '#/components/schemas/LongOption'
        numDisplays:
          description: |2
            Minimum, maximum and default value for the number of displays.
          $ref: '#/components/schemas/IntOption'
        useAutoDetect:
          description: |2
            Flag to indicate whether the display settings of the host should
            be used to automatically determine the display settings of the
            virtual machine's video card.
          $ref: '#/components/schemas/BoolOption'
        support3D:
          description: |2
            Flag to indicate whether the virtual video card supports 3D functions.
          $ref: '#/components/schemas/BoolOption'
        use3dRendererSupported:
          description: |2
            Flag to indicate whether the virtual video card can specify how to render 3D graphics.
          $ref: '#/components/schemas/BoolOption'
        graphicsMemorySizeInKB:
          description: |2
            The minimum, maximum, and default values for graphics memory size.
          $ref: '#/components/schemas/LongOption'
        graphicsMemorySizeSupported:
          description: |2
            Flag to indicate whether the virtual video card can specify the size
            of graphics memory.
          $ref: '#/components/schemas/BoolOption'
      allOf:
        - $ref: '#/components/schemas/VirtualDeviceOption'

    ArrayOfVirtualVideoCardOption:
      type: object
      description: |2
        A boxed array of *VirtualVideoCardOption*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualVideoCardOption'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualVmxnet:
      type: object
      description: |2
        The VirtualVmxnet data object type represents an instance
        of the Vmxnet virtual Ethernet adapter attached to a virtual machine.
      allOf:
        - $ref: '#/components/schemas/VirtualEthernetCard'

    ArrayOfVirtualVmxnet:
      type: object
      description: |2
        A boxed array of *VirtualVmxnet*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualVmxnet'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualVmxnet2:
      type: object
      description: |2
        The VirtualVmxnet2 data object type represents an instance
        of the Vmxnet2 virtual Ethernet adapter attached to a virtual machine.
      allOf:
        - $ref: '#/components/schemas/VirtualVmxnet'

    ArrayOfVirtualVmxnet2:
      type: object
      description: |2
        A boxed array of *VirtualVmxnet2*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualVmxnet2'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualVmxnet2Option:
      type: object
      description: |2
        The VirtualVmxnet2Option data object type contains the options for the
        *VirtualVmxnet2* data object type.
      allOf:
        - $ref: '#/components/schemas/VirtualVmxnetOption'

    ArrayOfVirtualVmxnet2Option:
      type: object
      description: |2
        A boxed array of *VirtualVmxnet2Option*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualVmxnet2Option'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualVmxnet3:
      type: object
      description: |2
        The VirtualVmxnet3 data object type represents an instance
        of the Vmxnet3 virtual Ethernet adapter attached to a virtual machine.
      properties:
        uptv2Enabled:
          description: |2
            Indicates whether UPTv2(Uniform Pass-through version 2) compatibility is
            enabled on this network adapter.
            
            UPTv2 is only available on Vmxnet3
            adapter. Clients can set this property enabled or disabled if ethernet
            virtual device is Vmxnet3. It requires the VM hardware version is
            compatible with ESXi version which has enabled smartnic feature.
            
            ***Since:*** vSphere API Release 8.0.0.1
          type: boolean
      allOf:
        - $ref: '#/components/schemas/VirtualVmxnet'

    ArrayOfVirtualVmxnet3:
      type: object
      description: |2
        A boxed array of *VirtualVmxnet3*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualVmxnet3'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualVmxnet3Option:
      type: object
      description: |2
        The VirtualVmxnet3Option data object type contains the options for the
        *VirtualVmxnet3* data object type.
      properties:
        uptv2Enabled:
          description: |2
            Flag to indicate whether UPTv2(Uniform Pass-through version 2) is
            settable on this device.
            
            ***Since:*** vSphere API Release 8.0.0.1
          $ref: '#/components/schemas/BoolOption'
      allOf:
        - $ref: '#/components/schemas/VirtualVmxnetOption'

    ArrayOfVirtualVmxnet3Option:
      type: object
      description: |2
        A boxed array of *VirtualVmxnet3Option*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualVmxnet3Option'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualVmxnet3Vrdma:
      type: object
      description: |2
        The VirtualVmxnet3Vrdma data object type represents an instance of the
        VRDMA virtual Remote Direct Memory Access adapter attached to a virtual
        machine.
      properties:
        deviceProtocol:
          description: |2
            VRDMA Device protocol.
            
            See
            *VirtualVmxnet3VrdmaOptionDeviceProtocols_enum* for more information.
          type: string
      allOf:
        - $ref: '#/components/schemas/VirtualVmxnet3'

    ArrayOfVirtualVmxnet3Vrdma:
      type: object
      description: |2
        A boxed array of *VirtualVmxnet3Vrdma*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualVmxnet3Vrdma'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualVmxnet3VrdmaOption:
      type: object
      description: |2
        The VirtualVmxnet3VrdmaOption data object type contains the options for the
        *VirtualVmxnet3Vrdma* data object type.
      properties:
        deviceProtocol:
          description: |2
            The supported device protocols.
          $ref: '#/components/schemas/ChoiceOption'
      allOf:
        - $ref: '#/components/schemas/VirtualVmxnet3Option'

    ArrayOfVirtualVmxnet3VrdmaOption:
      type: object
      description: |2
        A boxed array of *VirtualVmxnet3VrdmaOption*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualVmxnet3VrdmaOption'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualVmxnetOption:
      type: object
      description: |2
        The VirtualVmxnetOption data object type contains the options for the
        *VirtualVmxnet* data object type.
      allOf:
        - $ref: '#/components/schemas/VirtualEthernetCardOption'

    ArrayOfVirtualVmxnetOption:
      type: object
      description: |2
        A boxed array of *VirtualVmxnetOption*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualVmxnetOption'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualWDT:
      type: object
      description: |2
        This data object type represents a watchdog timer in a virtual machine.
      properties:
        runOnBoot:
          description: |2
            Flag to indicate if the virtual watchdog timer device should be
            initialized as the Enabled/Stopped or Enabled/Running sub-state.
            
            If not set, the device will default to being initialized as the
            Enabled/Stopped sub-state.
          type: boolean
        running:
          description: |2
            Flag to indicate if the virtual watchdog timer device is currently
            in the Enabled/Running state.
            
            The guest can cause state changes,
            which will result in this flag being either set or cleared.
          type: boolean
      required:
        - runOnBoot
        - running
      allOf:
        - $ref: '#/components/schemas/VirtualDevice'

    ArrayOfVirtualWDT:
      type: object
      description: |2
        A boxed array of *VirtualWDT*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualWDT'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualWDTOption:
      type: object
      description: |2
        This data object type contains the options for the
        virtual watchdog timer class.
      properties:
        runOnBoot:
          description: |2
            Flag to indicate whether or not the "run on boot" option
            is settable on this device.
          $ref: '#/components/schemas/BoolOption'
      required:
        - runOnBoot
      allOf:
        - $ref: '#/components/schemas/VirtualDeviceOption'

    ArrayOfVirtualWDTOption:
      type: object
      description: |2
        A boxed array of *VirtualWDTOption*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualWDTOption'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    GuestAliases:
      type: object
      description: |2
        Describes the representation of an alias and the subjects
        that are trusted from that VMware SSO Server.
      properties:
        base64Cert:
          description: |2
            The associated VMware SSO Server X.509 certificate, in base64
            encoded DER format.
          type: string
        aliases:
          description: |2
            A white list of aliases that the in-guest user account trusts;
            it can be a subset of the subjects known to the identity
            provider.
          type: array
          items:
            $ref: '#/components/schemas/GuestAuthAliasInfo'
      required:
        - base64Cert
        - aliases
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfGuestAliases:
      type: object
      description: |2
        A boxed array of *GuestAliases*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/GuestAliases'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    GuestAuthAliasInfo:
      type: object
      description: |2
        Describes a subject associated with an X.509 certificate in the alias
        store.
      properties:
        subject:
          description: |2
            The subject.
          $ref: '#/components/schemas/GuestAuthSubject'
        comment:
          description: |2
            User-supplied data to describe the subject.
          type: string
      required:
        - subject
        - comment
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfGuestAuthAliasInfo:
      type: object
      description: |2
        A boxed array of *GuestAuthAliasInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/GuestAuthAliasInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    GuestAuthAnySubject:
      type: object
      description: |2
        The ANY subject.
        
        When an in-guest user account is configured
        to trust an alias using the ANY subject, any vSphere user
        authenticated by that alias will be allowed to impersonate the
        in-guest user.
      allOf:
        - $ref: '#/components/schemas/GuestAuthSubject'

    ArrayOfGuestAuthAnySubject:
      type: object
      description: |2
        A boxed array of *GuestAuthAnySubject*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/GuestAuthAnySubject'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    GuestAuthNamedSubject:
      type: object
      description: |2
        A named subject.
        
        Grants access to a specific vSphere user with
        the specified name.
      properties:
        name:
          description: |2
            The subject name.
          type: string
      required:
        - name
      allOf:
        - $ref: '#/components/schemas/GuestAuthSubject'

    ArrayOfGuestAuthNamedSubject:
      type: object
      description: |2
        A boxed array of *GuestAuthNamedSubject*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/GuestAuthNamedSubject'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    GuestAuthSubject:
      type: object
      description: |2
        A Subject.
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfGuestAuthSubject:
      type: object
      description: |2
        A boxed array of *GuestAuthSubject*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/GuestAuthSubject'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    GuestMappedAliases:
      type: object
      description: |2
        Represents a mapping between an external subject, as
        authenticated by a given VMware SSO Server, and an in-guest user.
      properties:
        base64Cert:
          description: |2
            The associated VMware SSO Server X.509 certificate, in base64
            encoded DER format.
          type: string
        username:
          description: |2
            The in-guest user associated with the mapping.
          type: string
        subjects:
          description: |2
            The list of subjects associated with the mapping.
          type: array
          items:
            $ref: '#/components/schemas/GuestAuthSubject'
      required:
        - base64Cert
        - username
        - subjects
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfGuestMappedAliases:
      type: object
      description: |2
        A boxed array of *GuestMappedAliases*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/GuestMappedAliases'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    GuestFileAttributes:
      type: object
      description: |2
        Different attributes for a guest file.
        - Check *GuestPosixFileAttributes*
          for Posix guest files.
        - Check *GuestWindowsFileAttributes*
          for Windows guest files.
      properties:
        modificationTime:
          description: |2
            The date and time the file was last modified.
            
            If this property is not specified when passing a
            *GuestFileAttributes* object to
            *GuestFileManager.InitiateFileTransferToGuest*,
            the default value will be the time when the file is created inside the
            guest.
          type: string
          format: date-time
        accessTime:
          description: |2
            The date and time the file was last accessed.
            
            If this property is not specified when passing a
            *GuestFileAttributes* object to
            *GuestFileManager.InitiateFileTransferToGuest*,
            the default value will be the time when the file is created inside the
            guest.
          type: string
          format: date-time
        symlinkTarget:
          description: |2
            The target for the file if it's a symbolic link.
            
            This is currently only set for Linux guest operating systems,
            but may be supported in the
            future on Windows guest operating systems that support symbolic links.
            This property gives information about files when returned from
            *GuestFileManager.ListFilesInGuest* or
            *GuestFileManager.InitiateFileTransferFromGuest*
            as part of a *GuestFileAttributes* object.
            This property will be ignored when passing a
            *GuestFileAttributes* object to
            *GuestFileManager.InitiateFileTransferToGuest* or
            *GuestFileManager.ChangeFileAttributesInGuest*.
            If the file is a symbolic link, then the attributes of the target
            are returned, not those of the symbolic link.
          type: string
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfGuestFileAttributes:
      type: object
      description: |2
        A boxed array of *GuestFileAttributes*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/GuestFileAttributes'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    GuestFileInfo:
      type: object
      properties:
        path:
          description: |2
            The complete path to the file
          type: string
        type:
          description: |2
            The file type, one of *GuestFileType_enum*
          type: string
        size:
          description: |2
            The file size in bytes
          type: integer
          format: int64
        attributes:
          description: |2
            Different attributes of a file.
          $ref: '#/components/schemas/GuestFileAttributes'
      required:
        - path
        - type
        - size
        - attributes
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfGuestFileInfo:
      type: object
      description: |2
        A boxed array of *GuestFileInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/GuestFileInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    FileTransferInformation:
      type: object
      description: |2
        Represents the information about a
        *GuestFileManager.InitiateFileTransferFromGuest* operation
        of *GuestFileManager* object.
        
        The user can use the URL provided in url property to transfer
        the file from the guest. The user should send a HTTP GET request to the
        URL. Entire file content will be returned in the body of the response
        message.
      properties:
        attributes:
          description: |2
            File attributes of the file that is being transferred from the guest.
          $ref: '#/components/schemas/GuestFileAttributes'
        size:
          description: |2
            Total size of the file in bytes.
          type: integer
          format: int64
        url:
          description: |2
            Specifies the URL to which the user has to send HTTP GET request.
            
            Multiple GET requests cannot be sent to the URL simultaneously. URL
            will become invalid once a successful GET request is sent.
              
              
            The host part of the URL is returned as '\*' if the hostname to be used
            is the name of the server to which the call was made. For example, if
            the call is made to esx-svr-1.domain1.com, and the file is available for
            download from
            `https://esx-svr-1.domain1.com/guestFile?id=1&token=1234`,
            the URL returned may be
            `https://&#42;/guestFile?id=1&token=1234`.
            The client replaces the asterisk with the server name on which it
            invoked the call.
              
              
            The URL is valid only for 10 minutes from the time it is generated.
            Also, the URL becomes invalid whenever the virtual machine is powered
            off, suspended or unregistered.
          type: string
      required:
        - attributes
        - size
        - url
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfFileTransferInformation:
      type: object
      description: |2
        A boxed array of *FileTransferInformation*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/FileTransferInformation'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    GuestListFileInfo:
      type: object
      properties:
        files:
          description: |2
            A list of *GuestFileInfo*
            data objects containing information for all the matching files.
          type: array
          items:
            $ref: '#/components/schemas/GuestFileInfo'
        remaining:
          description: |2
            The number of files left to be returned.
            
            If non-zero,
            then the next set of files can be returned by calling
            ListFiles again with the index set to the number of results
            already returned.
          type: integer
          format: int32
      required:
        - remaining
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfGuestListFileInfo:
      type: object
      description: |2
        A boxed array of *GuestListFileInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/GuestListFileInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    GuestPosixFileAttributes:
      type: object
      description: |2
        Different attributes for Posix guest file.
      properties:
        ownerId:
          description: |2
            The owner ID.
            
            If this property is not specified when passing a
            *GuestPosixFileAttributes* object to
            *GuestFileManager.InitiateFileTransferToGuest*,
            the default value will be the owner Id of the user who invoked
            the file transfer operation.
          type: integer
          format: int32
        groupId:
          description: |2
            The group ID.
            
            If this property is not specified when passing a
            *GuestPosixFileAttributes* object to
            *GuestFileManager.InitiateFileTransferToGuest*,
            the default value will be the group Id of the user who invoked
            the file transfer operation.
          type: integer
          format: int32
        permissions:
          description: |2
            The file permissions.
            
            When creating a file with
            *GuestFileManager.InitiateFileTransferToGuest*,
            these are in chmod(2) format. When reporting on
            existing files, these are in stat(2) format.
            If this property is not specified when passing a
            *GuestPosixFileAttributes* object to
            *GuestFileManager.InitiateFileTransferToGuest*,
            the file will be created with 0644 permissions.
          type: integer
          format: int64
      allOf:
        - $ref: '#/components/schemas/GuestFileAttributes'

    ArrayOfGuestPosixFileAttributes:
      type: object
      description: |2
        A boxed array of *GuestPosixFileAttributes*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/GuestPosixFileAttributes'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    GuestWindowsFileAttributes:
      type: object
      description: |2
        Different attributes for a Windows guest file.
      properties:
        hidden:
          description: |2
            The file is hidden.
            
            If this property is not specified when passing a
            *GuestWindowsFileAttributes* object to
            *GuestFileManager.InitiateFileTransferToGuest*,
            the file will not be set as a hidden file.
          type: boolean
        readOnly:
          description: |2
            The file is read-only.
            
            If this property is not specified when passing a
            *GuestWindowsFileAttributes* object to
            *GuestFileManager.InitiateFileTransferToGuest*,
            the file will not be set as a read-only file.
          type: boolean
        createTime:
          description: |2
            The date and time the file was created.
            
            This property gives information about files when returned from
            *GuestFileManager.ListFilesInGuest* or
            *GuestFileManager.InitiateFileTransferFromGuest*
            as part of a *GuestWindowsFileAttributes*
            object. This property will be ignored when passing a
            *GuestWindowsFileAttributes* object to
            *GuestFileManager.InitiateFileTransferToGuest* or
            *GuestFileManager.ChangeFileAttributesInGuest*.
          type: string
          format: date-time
      allOf:
        - $ref: '#/components/schemas/GuestFileAttributes'

    ArrayOfGuestWindowsFileAttributes:
      type: object
      description: |2
        A boxed array of *GuestWindowsFileAttributes*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/GuestWindowsFileAttributes'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    GuestAuthentication:
      type: object
      description: |2
        GuestAuthentication is an abstract base class for authentication
        in the guest.
      properties:
        interactiveSession:
          description: |2
            This is set to true if the client wants an interactive session
            in the guest.
            
            Setting this is supported only for *NamePasswordAuthentication*.
          type: boolean
      required:
        - interactiveSession
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfGuestAuthentication:
      type: object
      description: |2
        A boxed array of *GuestAuthentication*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/GuestAuthentication'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    NamePasswordAuthentication:
      type: object
      description: |2
        NamePasswordAuthentication contains the information necessary to authenticate
        within a guest using a name and password.
        
        This is the typical method for
        authentication within a guest and the one currently used by VIX.
        This method of authentication is stateless.
        
        To use NamePasswordAuthentication, populate username and password with the
        appropriate login information. You should not use *GuestAuthManager.AcquireCredentialsInGuest*
        or *GuestAuthManager.ReleaseCredentialsInGuest* for NamePasswordAuthentication.
        
        Once populated, you can use NamePasswordAuthentication in any guest operations function call.
      properties:
        username:
          description: |2
            The user name for Name-Password authentication.
          type: string
        password:
          description: |2
            The password for Name-Password authentication.
          type: string
          format: password
      required:
        - username
        - password
      allOf:
        - $ref: '#/components/schemas/GuestAuthentication'

    ArrayOfNamePasswordAuthentication:
      type: object
      description: |2
        A boxed array of *NamePasswordAuthentication*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/NamePasswordAuthentication'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    GuestProcessInfo:
      type: object
      properties:
        name:
          description: |2
            The process name
          type: string
        pid:
          description: |2
            The process ID
          type: integer
          format: int64
        owner:
          description: |2
            The process owner
          type: string
        cmdLine:
          description: |2
            The full command line
          type: string
        startTime:
          description: |2
            The start time of the process
          type: string
          format: date-time
        endTime:
          description: |2
            If the process was started using
            *GuestProcessManager.StartProgramInGuest*
            then the process completion time will be available if
            queried within 5 minutes after it completes.
          type: string
          format: date-time
        exitCode:
          description: |2
            If the process was started using
            *GuestProcessManager.StartProgramInGuest*
            then the process exit code will be available if
            queried within 5 minutes after it completes.
          type: integer
          format: int32
      required:
        - name
        - pid
        - owner
        - cmdLine
        - startTime
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfGuestProcessInfo:
      type: object
      description: |2
        A boxed array of *GuestProcessInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/GuestProcessInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    GuestProgramSpec:
      type: object
      description: |2
        This describes the arguments to *GuestProcessManager.StartProgramInGuest*.
      properties:
        programPath:
          description: |2
            The absolute path to the program to start.
            
            For Linux guest operating systems, /bin/bash is used to start the
            program.
            
            For Solaris guest operating systems, /bin/bash is used to start
            the program if it exists.
            Otherwise /bin/sh is used. If /bin/sh is used, then the process ID
            returned by *GuestProcessManager.StartProgramInGuest* will be that of the shell used
            to start the program, rather than the program itself, due to the
            differences in how /bin/sh and /bin/bash work. This PID will
            still be usable for watching the process with
            *GuestProcessManager.ListProcessesInGuest* to
            find its exit code and elapsed time.
          type: string
        arguments:
          description: |2
            The arguments to the program.
            
            In Linux and Solaris guest operating
            systems, the program will be executed by a guest shell.
            This allows stdio redirection, but may also
            require that characters which must be escaped to the shell also
            be escaped on the command line provided.
            
            For Windows guest operating systems, prefixing the command with
            "cmd /c" can provide stdio redirection.
          type: string
        workingDirectory:
          description: |2
            The absolute path of the working directory for the program to be
            run.
            
            VMware recommends explicitly setting the working directory
            for the program to be run. If this value is unset or is an empty
            string, the behavior depends on the guest operating system.
            For Linux guest operating systems, if this value is unset or is
            an empty string, the working directory will be the home directory
            of the user associated with the guest authentication.
            For other guest operating systems, if this value is unset, the
            behavior is unspecified.
          type: string
        envVariables:
          description: |2
            An array of environment variables, specified
            in the guest OS notation (eg PATH=c:\\bin;c:\\windows\\system32
            or LD\_LIBRARY\_PATH=/usr/lib:/lib), to be set for the program
            being run.
            
            Note that these are not additions to the default
            environment variables; they define the complete set available to
            the program. If none are specified the values are guest dependent.
          type: array
          items:
            type: string
      required:
        - programPath
        - arguments
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfGuestProgramSpec:
      type: object
      description: |2
        A boxed array of *GuestProgramSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/GuestProgramSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    GuestWindowsProgramSpec:
      type: object
      description: |2
        This describes the arguments to *GuestProcessManager.StartProgramInGuest* that apply
        only for Windows guests.
      properties:
        startMinimized:
          description: |2
            Makes any program window start minimized.
          type: boolean
      required:
        - startMinimized
      allOf:
        - $ref: '#/components/schemas/GuestProgramSpec'

    ArrayOfGuestWindowsProgramSpec:
      type: object
      description: |2
        A boxed array of *GuestWindowsProgramSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/GuestWindowsProgramSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    SAMLTokenAuthentication:
      type: object
      description: |2
        SAMLTokenAuthentication contains the information necessary to authenticate
        within a guest using a SAML bearer token.
        
        SAML token authentication relies on a guest alias that associates a guest
        account with the subject and certificate
        encoded in a SAML token obtained from the VMware SSO Server.
        - Use the *GuestAliasManager*.
          *GuestAliasManager.AddGuestAlias* method to create a guest
          alias.
        - Use a SAMLTokenAuthentication object for the
          auth parameter to guest operations methods.
          
        After you have created an alias, you can use SAML token authentication
        for guest operations methods.
        Do not use SAML token authentication for the
        *GuestAuthManager.AcquireCredentialsInGuest* and
        *GuestAuthManager.ReleaseCredentialsInGuest* methods.
      properties:
        token:
          description: |2
            The SAML bearer token.
          type: string
          format: password
        username:
          description: |2
            This is the guest user to be associated with the authentication.
            
            If none is specified, a guest dependent mapping will decide what
            user account is applied.
          type: string
      required:
        - token
      allOf:
        - $ref: '#/components/schemas/GuestAuthentication'

    ArrayOfSAMLTokenAuthentication:
      type: object
      description: |2
        A boxed array of *SAMLTokenAuthentication*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/SAMLTokenAuthentication'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    SSPIAuthentication:
      type: object
      description: |2
        SSPIAuthentication contains the information necessary to
        initiate a ticketed authentication session in the guest
        using SSPI credentials.
        
        The ticketed session is not stateless and stores state inside of the guest.
        
        To use SSPIAuthentication, populate sspiToken with a base64 encoded SSPI token.
        Then call *GuestAuthManager.AcquireCredentialsInGuest* with
        the SSPIAuthentication object and no sessionID.
        After issuing the *GuestAuthManager.AcquireCredentialsInGuest* call, a
        *GuestAuthenticationChallenge* will be thrown.
        Use the serverChallenge sspiToken in *GuestAuthenticationChallenge*
        to generate the proper SSPI response token.
        Populate an SSPIAuthentication object with the base64 encoded SSPI response token, and
        call *GuestAuthManager.AcquireCredentialsInGuest* with the SSPIAuthentication object and
        the sessionID found in *GuestAuthenticationChallenge*.
        
        Successful authentication will result in a *TicketedSessionAuthentication*
        object being returned. You can use the *TicketedSessionAuthentication* in any
        guest operations function call. You should NOT attempt to use SSPIAuthentication in any guest
        operations function call.
        
        When you no longer need the *TicketedSessionAuthentication* object, you should
        call *GuestAuthManager.ReleaseCredentialsInGuest* to free associated resources
        and session data.
        
        Usage notes: SSPI authentication has the same limitations as a duplicated primary token obtained
        from the Windows API function LogonUser with the LOGON32\_LOGON\_NETWORK logon type. This will affect
        programs started with *GuestProcessManager.StartProgramInGuest*. For example, launched
        programs will be unable to use WMI functions unless the "Remote Enable" privilege is enabled for
        the user. Similarly, access to network resources may fail due to the limitations of the token.
      properties:
        sspiToken:
          description: |2
            This contains a base64 encoded SSPI Token.
          type: string
      required:
        - sspiToken
      allOf:
        - $ref: '#/components/schemas/GuestAuthentication'

    ArrayOfSSPIAuthentication:
      type: object
      description: |2
        A boxed array of *SSPIAuthentication*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/SSPIAuthentication'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    TicketedSessionAuthentication:
      type: object
      description: |2
        TicketedSessionAuthentication contains the information necessary to
        use previously obtained credentials in the guest.
        
        The ticketed session is not stateless and stores state inside of the guest.
        
        A TicketedSessionAuthentication object will be returned as the result of a
        successful call to *GuestAuthManager.AcquireCredentialsInGuest*. You can
        use this object in any guest operations function call.
        
        When you no longer need the TicketedSessionAuthentication object, you should
        call *GuestAuthManager.ReleaseCredentialsInGuest* to free associated resources
        and session data.
      properties:
        ticket:
          description: |2
            This contains a base64 encoded Ticket.
          type: string
          format: password
      required:
        - ticket
      allOf:
        - $ref: '#/components/schemas/GuestAuthentication'

    ArrayOfTicketedSessionAuthentication:
      type: object
      description: |2
        A boxed array of *TicketedSessionAuthentication*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/TicketedSessionAuthentication'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    GuestRegKeySpec:
      type: object
      description: |2
        This describes the registry key.
      properties:
        keyName:
          description: |2
            The key name.
          $ref: '#/components/schemas/GuestRegKeyNameSpec'
        classType:
          description: |2
            The user-defined class type of this key.
          type: string
        lastWritten:
          description: |2
            Time stamp of last modification.
          type: string
          format: date-time
      required:
        - keyName
        - classType
        - lastWritten
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfGuestRegKeySpec:
      type: object
      description: |2
        A boxed array of *GuestRegKeySpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/GuestRegKeySpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    GuestRegKeyNameSpec:
      type: object
      description: |2
        This describes the registry key name.
      properties:
        registryPath:
          description: |2
            The full path to a registry key.
          type: string
        wowBitness:
          description: |2
            The wow bitness, one of *GuestRegKeyWowSpec_enum*.
          type: string
      required:
        - registryPath
        - wowBitness
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfGuestRegKeyNameSpec:
      type: object
      description: |2
        A boxed array of *GuestRegKeyNameSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/GuestRegKeyNameSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    GuestRegKeyRecordSpec:
      type: object
      description: |2
        This describes the registry key record.
      properties:
        key:
          description: |2
            The key.
          $ref: '#/components/schemas/GuestRegKeySpec'
        fault:
          description: |2
            Any error that occurred while trying to access this key.
            
            Presence of this fault indicates that a recursive listing failed to
            open this key to find keys below it in the tree. This could be a
            result of insufficient user permissions within the guest.
          $ref: '#/components/schemas/MethodFault'
      required:
        - key
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfGuestRegKeyRecordSpec:
      type: object
      description: |2
        A boxed array of *GuestRegKeyRecordSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/GuestRegKeyRecordSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    GuestRegValueSpec:
      type: object
      description: |2
        This describes the registry value.
      properties:
        name:
          description: |2
            The value name.
          $ref: '#/components/schemas/GuestRegValueNameSpec'
        data:
          description: |2
            The value data.
            
            Use one of the extended classes to specify data type:
            *GuestRegValueDwordSpec*,
            *GuestRegValueQwordSpec*,
            *GuestRegValueStringSpec*,
            *GuestRegValueExpandStringSpec*,
            *GuestRegValueMultiStringSpec*,
            *GuestRegValueBinarySpec*.
          $ref: '#/components/schemas/GuestRegValueDataSpec'
      required:
        - name
        - data
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfGuestRegValueSpec:
      type: object
      description: |2
        A boxed array of *GuestRegValueSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/GuestRegValueSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    GuestRegValueBinarySpec:
      type: object
      description: |2
        This describes the registry value binary.
      properties:
        value:
          description: |2
            The data of the registry value.
            
            The Windows registry allows this type of value to exist without
            having any data associated with it.
          type: string
          format: byte
      allOf:
        - $ref: '#/components/schemas/GuestRegValueDataSpec'

    ArrayOfGuestRegValueBinarySpec:
      type: object
      description: |2
        A boxed array of *GuestRegValueBinarySpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/GuestRegValueBinarySpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    GuestRegValueDataSpec:
      type: object
      description: |2
        This describes the registry value data.
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfGuestRegValueDataSpec:
      type: object
      description: |2
        A boxed array of *GuestRegValueDataSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/GuestRegValueDataSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    GuestRegValueDwordSpec:
      type: object
      description: |2
        This describes the registry value dword.
      properties:
        value:
          description: |2
            The data of the registry value.
          type: integer
          format: int32
      required:
        - value
      allOf:
        - $ref: '#/components/schemas/GuestRegValueDataSpec'

    ArrayOfGuestRegValueDwordSpec:
      type: object
      description: |2
        A boxed array of *GuestRegValueDwordSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/GuestRegValueDwordSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    GuestRegValueExpandStringSpec:
      type: object
      description: |2
        This describes the registry value expand string.
      properties:
        value:
          description: |2
            The expanded (if applicable) data of the registry value.
            
            The Windows registry allows this type of value to exist without
            having any data associated with it.
          type: string
      allOf:
        - $ref: '#/components/schemas/GuestRegValueDataSpec'

    ArrayOfGuestRegValueExpandStringSpec:
      type: object
      description: |2
        A boxed array of *GuestRegValueExpandStringSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/GuestRegValueExpandStringSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    GuestRegValueMultiStringSpec:
      type: object
      description: |2
        This describes the registry value multi string.
      properties:
        value:
          description: |2
            The data of the registry value.
            
            The Windows registry allows this type of value to exist without
            having any data associated with it.
          type: array
          items:
            type: string
      allOf:
        - $ref: '#/components/schemas/GuestRegValueDataSpec'

    ArrayOfGuestRegValueMultiStringSpec:
      type: object
      description: |2
        A boxed array of *GuestRegValueMultiStringSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/GuestRegValueMultiStringSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    GuestRegValueNameSpec:
      type: object
      description: |2
        This describes the registry value name.
      properties:
        keyName:
          description: |2
            The key name that contains this value.
          $ref: '#/components/schemas/GuestRegKeyNameSpec'
        name:
          description: |2
            The name of the value.
          type: string
      required:
        - keyName
        - name
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfGuestRegValueNameSpec:
      type: object
      description: |2
        A boxed array of *GuestRegValueNameSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/GuestRegValueNameSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    GuestRegValueQwordSpec:
      type: object
      description: |2
        This describes the registry value qword.
      properties:
        value:
          description: |2
            The data of the registry value.
          type: integer
          format: int64
      required:
        - value
      allOf:
        - $ref: '#/components/schemas/GuestRegValueDataSpec'

    ArrayOfGuestRegValueQwordSpec:
      type: object
      description: |2
        A boxed array of *GuestRegValueQwordSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/GuestRegValueQwordSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    GuestRegValueStringSpec:
      type: object
      description: |2
        This describes the registry value string.
      properties:
        value:
          description: |2
            The data of the registry value.
            
            The Windows registry allows this type of value to exist without
            having any data associated with it.
          type: string
      allOf:
        - $ref: '#/components/schemas/GuestRegValueDataSpec'

    ArrayOfGuestRegValueStringSpec:
      type: object
      description: |2
        A boxed array of *GuestRegValueStringSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/GuestRegValueStringSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DeviceGroupId:
      type: object
      description: |2
        Identifier of a replication device group.
      properties:
        id:
          description: |2
            ID of the device group.
          type: string
      required:
        - id
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfDeviceGroupId:
      type: object
      description: |2
        A boxed array of *DeviceGroupId*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DeviceGroupId'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    FaultDomainId:
      type: object
      description: |2
        Represents the identity of a replication fault domain.
        
        Fault domains IDs are globally
        unique.
      properties:
        id:
          description: |2
            ID of the fault domain.
          type: string
      required:
        - id
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfFaultDomainId:
      type: object
      description: |2
        A boxed array of *FaultDomainId*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/FaultDomainId'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ReplicationGroupId:
      type: object
      description: |2
        The identity of a replication group.
        
        A following well-known ReplicationGroupId
        
        {
        
        faultDomainId: <a validfaultdomainid>
        
        deviceGroupId: ffffffff-ffff-ffff-ffff-ffffffffffff
        
        }
        
        means that VASA provider can create a new ReplicationGroupId
        on demand (this feature may not be supported in the first
        vSphere release that supports VVol replication).
      properties:
        faultDomainId:
          description: |2
            ID of the fault domain to which the group belongs.
            
            Combined with the fault
            domain id, the group id is unique. A group may (or may not) have the same
            id in all the fault domains.
          $ref: '#/components/schemas/FaultDomainId'
        deviceGroupId:
          description: |2
            Id of the replication device group.
            
            A group may have the same (or different) id in each fault
            domain.
          $ref: '#/components/schemas/DeviceGroupId'
      required:
        - faultDomainId
        - deviceGroupId
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfReplicationGroupId:
      type: object
      description: |2
        A boxed array of *ReplicationGroupId*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ReplicationGroupId'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ReplicationSpec:
      type: object
      properties:
        replicationGroupId:
          description: |2
            Replication Group id
          $ref: '#/components/schemas/ReplicationGroupId'
      required:
        - replicationGroupId
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfReplicationSpec:
      type: object
      description: |2
        A boxed array of *ReplicationSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ReplicationSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VsanClusterConfigInfo:
      type: object
      description: |2
        The *VsanClusterConfigInfo* data object contains configuration
        data for the VSAN service in a cluster.
        
        This data object is used both for
        specifying cluster-wide settings when updating the VSAN service, and as an
        output datatype when retrieving current cluster-wide VSAN service settings.
        
        See also *ComputeResource.ReconfigureComputeResource_Task*.
      properties:
        enabled:
          description: |2
            Whether the VSAN service is enabled for the cluster.
          type: boolean
        defaultConfig:
          description: |2
            Default VSAN settings to use for hosts admitted to the cluster when the
            VSAN service is enabled.
            
            If omitted, values will default as though the
            fields in the *VsanClusterConfigInfoHostDefaultInfo* have been omitted.
            
            See also *VsanClusterConfigInfo.enabled*, *VsanClusterConfigInfoHostDefaultInfo*.
          $ref: '#/components/schemas/VsanClusterConfigInfoHostDefaultInfo'
        vsanEsaEnabled:
          description: |2
            Whether the vSAN ESA is enabled for vSAN cluster.
            
            This can only be
            enabled when vSAN is enabled on the cluster.
            
            ***Since:*** vSphere API Release 8.0.0.1
          type: boolean
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVsanClusterConfigInfo:
      type: object
      description: |2
        A boxed array of *VsanClusterConfigInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VsanClusterConfigInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VsanClusterConfigInfoHostDefaultInfo:
      type: object
      description: |2
        Default VSAN service configuration to be used for hosts admitted
        to the cluster.
        
        See also *VsanClusterConfigInfo.defaultConfig*.
      properties:
        uuid:
          description: |2
            VSAN service cluster UUID, in the string form
            "nnnnnnnn-nnnn-nnnn-nnnn-nnnnnnnnnnnn", where n are hexadecimal
            digits.
            
            When enabling the VSAN service on the cluster, this value shall
            not be specified by the user; a suitable UUID will be generated
            by the platform.
            While the VSAN service is enabled, this is a read-only value.
          type: string
        autoClaimStorage:
          deprecated: true
          description: |2
            Deprecated as this configuration will be deprecated, autoclaim
            will be no longer supported.
            
            Whether the VSAN service is configured to automatically claim local
            storage on VSAN-enabled hosts in the cluster.
            
            If omitted while enabling the VSAN service, this value will default
            to <code>true</code>.
            Changing this value to <code>false</code> shall not affect any
            existing disk mappings in use by hosts currently participating in
            the VSAN service.
            Changing this value to <code>true</code> will result in local disks
            being automatically claimed for use by the VSAN service, for hosts
            currently participating in the VSAN service.
            
            See also *VsanHostConfigInfoStorageInfo.diskMapping*, *VsanHostConfigInfoStorageInfo.autoClaimStorage*.
          type: boolean
        checksumEnabled:
          description: |2
            Whether the VSAN service is configured to enforce checksum protection.
            
            If omitted while enabling the VSAN service, this value will default
            to <code>false<code>.
            Change this value to <code>false</code> shall not affect any existing
            disk status.
            Changing this value to <code>true</code> shall do disk enforcement
            check that all VSAN disks are checksum enabled.
          type: boolean
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVsanClusterConfigInfoHostDefaultInfo:
      type: object
      description: |2
        A boxed array of *VsanClusterConfigInfoHostDefaultInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VsanClusterConfigInfoHostDefaultInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VsanHostClusterStatus:
      type: object
      description: |2
        The *VsanHostClusterStatus* data object contains a host's cluster status
        information for the VSAN service.
        
        This data object is used to represent
        read-only state whose values may change during operation.
        
        See also *HostVsanSystem.QueryHostStatus*.
      properties:
        uuid:
          description: |2
            VSAN service cluster UUID.
          type: string
        nodeUuid:
          description: |2
            VSAN node UUID for this host.
          type: string
        health:
          description: |2
            VSAN health state for this host.
            
            See also *VsanHostHealthState_enum*.
          type: string
        nodeState:
          description: |2
            VSAN node state for this host.
          $ref: '#/components/schemas/VsanHostClusterStatusState'
        memberUuid:
          description: |2
            List of UUIDs for VSAN nodes known to this host.
          type: array
          items:
            type: string
      required:
        - health
        - nodeState
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVsanHostClusterStatus:
      type: object
      description: |2
        A boxed array of *VsanHostClusterStatus*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VsanHostClusterStatus'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VsanHostClusterStatusState:
      type: object
      description: |2
        Data object representing the VSAN node state for a host.
      properties:
        state:
          description: |2
            VSAN node state for this host.
            
            See also *VsanHostNodeState_enum*.
          type: string
        completion:
          description: |2
            An estimation of the completion of a node state transition; this
            value may be populated for transitory node states.
            
            See also *VsanHostNodeState_enum*.
          $ref: '#/components/schemas/VsanHostClusterStatusStateCompletionEstimate'
      required:
        - state
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVsanHostClusterStatusState:
      type: object
      description: |2
        A boxed array of *VsanHostClusterStatusState*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VsanHostClusterStatusState'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VsanHostClusterStatusStateCompletionEstimate:
      type: object
      description: |2
        Estimated completion status for transitory node states.
        
        See also *VsanHostNodeState_enum*.
      properties:
        completeTime:
          description: |2
            Estimated time of completion.
          type: string
          format: date-time
        percentComplete:
          description: |2
            Estimated percent of completion as a value in the range \[0, 100\].
          type: integer
          format: int32
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVsanHostClusterStatusStateCompletionEstimate:
      type: object
      description: |2
        A boxed array of *VsanHostClusterStatusStateCompletionEstimate*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VsanHostClusterStatusStateCompletionEstimate'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VsanHostConfigInfo:
      type: object
      description: |2
        The *VsanHostConfigInfo* data object contains host-specific settings
        for the VSAN service.
        
        This data object is used both for specifying
        settings for updating the VSAN service, and as an output datatype
        when retrieving current VSAN service settings.
      properties:
        enabled:
          description: |2
            Whether the VSAN service is currently enabled on this host.
          type: boolean
        hostSystem:
          description: |2
            The *HostSystem* for this host.
            
            This argument is required when this configuration is specified as
            an input to VC-level APIs. When this configuration is specified
            to a host-level direct API, this argument may be omitted.
            
            See also *ComputeResource.ReconfigureComputeResource_Task*, *HostVsanSystem.UpdateVsan_Task*.
            
            Refers instance of *HostSystem*.
          $ref: '#/components/schemas/ManagedObjectReference'
        clusterInfo:
          description: |2
            The VSAN service cluster configuration for this host.
          $ref: '#/components/schemas/VsanHostConfigInfoClusterInfo'
        storageInfo:
          description: |2
            The VSAN storage configuration for this host.
            
            VSAN storage configuration settings are independent of the
            current value of *VsanHostConfigInfo.enabled*.
          $ref: '#/components/schemas/VsanHostConfigInfoStorageInfo'
        networkInfo:
          description: |2
            The VSAN network configuration for this host.
            
            VSAN network configuration settings are independent of the
            current value of *VsanHostConfigInfo.enabled*.
          $ref: '#/components/schemas/VsanHostConfigInfoNetworkInfo'
        faultDomainInfo:
          description: |2
            The VSAN fault domain configuration for this host.
            
            VSAN host fault domain settings are independent of the
            current value of *VsanHostConfigInfo.enabled*.
          $ref: '#/components/schemas/VsanHostFaultDomainInfo'
        vsanEsaEnabled:
          description: |2
            Whether the vSAN ESA is enabled on this host.
            
            This can only be
            enabled when vSAN is enabled on this host.
            
            ***Since:*** vSphere API Release 8.0.0.1
          type: boolean
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVsanHostConfigInfo:
      type: object
      description: |2
        A boxed array of *VsanHostConfigInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VsanHostConfigInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VsanHostConfigInfoClusterInfo:
      type: object
      description: |2
        Host-local VSAN cluster configuration.
        
        This data object is used
        both for specifying and retrieving cluster configuration for a
        host participating in the VSAN service.
      properties:
        uuid:
          description: |2
            VSAN service cluster UUID, in the string form
            "nnnnnnnn-nnnn-nnnn-nnnn-nnnnnnnnnnnn", where n are hexadecimal
            digits.
            
            If provided while enabling the VSAN service, this value will be
            used for the service cluster UUID. If omitted when enabling the
            VSAN service, a suitable UUID will be generated by the platform.
            This is a read-only value while the VSAN service is enabled.
          type: string
        nodeUuid:
          description: |2
            VSAN node UUID for this host.
            
            This is a read-only value which is populated upon enabling of the
            VSAN service.
          type: string
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVsanHostConfigInfoClusterInfo:
      type: object
      description: |2
        A boxed array of *VsanHostConfigInfoClusterInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VsanHostConfigInfoClusterInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VsanHostFaultDomainInfo:
      type: object
      description: |2
        Host-local VSAN fault domain configuration.
        
        This data object is used
        both for specifying and retrieving fault domain configuration for a
        host participating in the VSAN service.
      properties:
        name:
          description: |2
            The configured VSAN fault domain.
            
            The length of fault domain name should not exceed 256.
            Empty string indicates that the default fault domain is used.
          type: string
      required:
        - name
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVsanHostFaultDomainInfo:
      type: object
      description: |2
        A boxed array of *VsanHostFaultDomainInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VsanHostFaultDomainInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VsanHostConfigInfoNetworkInfo:
      type: object
      description: |2
        Host-local VSAN network configuration.
        
        This data object is used
        both for specifying and retrieving network configuration for a
        host participating in the VSAN service.
      properties:
        port:
          description: |2
            Set of PortConfig entries for use by the VSAN service, one per
            "virtual network" as used by VSAN.
          type: array
          items:
            $ref: '#/components/schemas/VsanHostConfigInfoNetworkInfoPortConfig'
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVsanHostConfigInfoNetworkInfo:
      type: object
      description: |2
        A boxed array of *VsanHostConfigInfoNetworkInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VsanHostConfigInfoNetworkInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VsanHostConfigInfoNetworkInfoPortConfig:
      type: object
      description: |2
        A PortConfig represents a virtual network adapter and its
        configuration for use by the VSAN service.
        
        See also *HostVirtualNic*.
      properties:
        ipConfig:
          description: |2
            *VsanHostIpConfig* for this PortConfig.
          $ref: '#/components/schemas/VsanHostIpConfig'
        device:
          description: |2
            Device name which identifies the network adapter for this
            PortConfig.
            
            See also *HostVirtualNic.device*.
          type: string
      required:
        - device
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVsanHostConfigInfoNetworkInfoPortConfig:
      type: object
      description: |2
        A boxed array of *VsanHostConfigInfoNetworkInfoPortConfig*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VsanHostConfigInfoNetworkInfoPortConfig'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VsanHostConfigInfoStorageInfo:
      type: object
      description: |2
        Host-local VSAN storage configuration.
        
        This data object is used
        both for specifying and retrieving storage configuration for a
        host participating in the VSAN service.
      properties:
        autoClaimStorage:
          deprecated: true
          description: |2
            Deprecated as this configuration will be deprecated, autoclaim
            will be no longer supported.
            
            Whether the VSAN service is configured to automatically claim local
            unused storage on this host.
            
            When set, the VSAN service will automatically format and use local
            disks. Side effects from any disk consumption will be reflected in
            *VsanHostConfigInfoStorageInfo.diskMapping*.
            If this argument is specified as a host-level configuration input
            at the VC-level (see *ClusterConfigInfoEx.vsanHostConfig*),
            it will override that of any cluster-level default value.
            
            See also *VsanHostConfigInfoStorageInfo.diskMapping*, *ClusterConfigInfoEx.vsanHostConfig*, *VsanClusterConfigInfo.defaultConfig*.
          type: boolean
        diskMapping:
          deprecated: true
          description: |2
            Deprecated use *VsanHostConfigInfoStorageInfo.diskMapInfo* instead.
            
            List of *VsanHostDiskMapping* entries in use by the VSAN service.
            
            DiskMappings to be used by the VSAN service may be manually
            specified using
            *HostVsanSystem.InitializeDisks_Task*.
            
            See also *HostVsanSystem.InitializeDisks_Task*.
          type: array
          items:
            $ref: '#/components/schemas/VsanHostDiskMapping'
        diskMapInfo:
          description: |2
            List of *VsanHostDiskMapping* entries with runtime information from
            the perspective of this host.
          type: array
          items:
            $ref: '#/components/schemas/VsanHostDiskMapInfo'
        checksumEnabled:
          deprecated: true
          description: |2
            Deprecated this attribute was originally used for indicating whether
            hardware checksums is supported on the disks. But in vSphere 2016
            hardware checksums are replaced with software implementation,
            supported by all disks. This makes current field redundant,
            and its value as an input/output is ignored.
            
            Whether checksum is enabled on all the disks in this host.
            
            If any disk is not checksum capable or 520 bps formatted,
            we will skip it.
          type: boolean
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVsanHostConfigInfoStorageInfo:
      type: object
      description: |2
        A boxed array of *VsanHostConfigInfoStorageInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VsanHostConfigInfoStorageInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VsanHostDecommissionMode:
      type: object
      description: |2
        A *VsanHostDecommissionMode* defines an action to take upon decommissioning
        a host from use with the VSAN service.
        
        If the VSAN service DecommissionMode is omitted in a call to
        *HostSystem.EnterMaintenanceMode_Task*, the default action chosen
        will be *ensureObjectAccessibility*.
        
        See also *HostSystem.EnterMaintenanceMode_Task*, *HostMaintenanceSpec.vsanMode*.
      properties:
        objectAction:
          description: |2
            Specifies an action to take with regard to the VSAN service upon
            putting a host into maintenance mode.
            
            See also *VsanHostDecommissionModeObjectAction_enum*.
          type: string
      required:
        - objectAction
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVsanHostDecommissionMode:
      type: object
      description: |2
        A boxed array of *VsanHostDecommissionMode*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VsanHostDecommissionMode'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VsanHostDiskMapInfo:
      type: object
      description: |2
        A DiskMapInfo represents a *VsanHostDiskMapping* and its
        corresponding runtime information.
        
        See also *VsanHostConfigInfoStorageInfo*, *HostVsanSystem.InitializeDisks_Task*.
      properties:
        mapping:
          description: |2
            DiskMapping.
          $ref: '#/components/schemas/VsanHostDiskMapping'
        mounted:
          description: |2
            Indicates whether the *VsanHostDiskMapping* is mounted.
          type: boolean
      required:
        - mapping
        - mounted
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVsanHostDiskMapInfo:
      type: object
      description: |2
        A boxed array of *VsanHostDiskMapInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VsanHostDiskMapInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VsanHostDiskMapResult:
      type: object
      description: |2
        A DiskMapResult represents the result of an operation performed
        on the set of disks in a *VsanHostDiskMapping*.
        
        See also *HostVsanSystem.InitializeDisks_Task*, *HostVsanSystem.UpdateVsan_Task*.
      properties:
        mapping:
          description: |2
            DiskMapping for this result.
          $ref: '#/components/schemas/VsanHostDiskMapping'
        diskResult:
          description: |2
            List of results for each disk in the mapping.
          type: array
          items:
            $ref: '#/components/schemas/VsanHostDiskResult'
        error:
          description: |2
            Error information for this result.
            
            See also *VsanDiskFault*.
          $ref: '#/components/schemas/MethodFault'
      required:
        - mapping
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVsanHostDiskMapResult:
      type: object
      description: |2
        A boxed array of *VsanHostDiskMapResult*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VsanHostDiskMapResult'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VsanHostDiskMapping:
      type: object
      description: |2
        A *VsanHostDiskMapping* is a set of one SSD *HostScsiDisk* backed
        by a set of one or more non-SSD *HostScsiDisk*.
        
        The maximum
        allowed *VsanHostDiskMapping* for a host is 5. A maximum set
        of 7 non-SSDs *HostScsiDisk* can be added to the one
        SSD *HostScsiDisk*.
        
        See also *VsanHostConfigInfoStorageInfo*, *HostVsanSystem.InitializeDisks_Task*.
      properties:
        ssd:
          description: |2
            SSD *HostScsiDisk*.
          $ref: '#/components/schemas/HostScsiDisk'
        nonSsd:
          description: |2
            Set of non-SSD backing *HostScsiDisk*.
          type: array
          items:
            $ref: '#/components/schemas/HostScsiDisk'
      required:
        - ssd
        - nonSsd
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVsanHostDiskMapping:
      type: object
      description: |2
        A boxed array of *VsanHostDiskMapping*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VsanHostDiskMapping'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VsanHostDiskResult:
      type: object
      description: |2
        A DiskResult represents the result of VSAN configuration operation
        on a *HostScsiDisk*, and its current eligibility state for use by
        the VSAN service.
        
        See also *HostVsanSystem.QueryDisksForVsan*, *HostVsanSystem.UpdateVsan_Task*, *VsanHostDiskResultState_enum*.
      properties:
        disk:
          description: |2
            Disk for this result.
          $ref: '#/components/schemas/HostScsiDisk'
        state:
          description: |2
            State of the disk for this result.
            
            See also *VsanHostDiskResultState_enum*.
          type: string
        vsanUuid:
          description: |2
            VSAN disk UUID in case this disk is a VSAN disk.
          type: string
        error:
          description: |2
            Error information for this result: may be populated with additional
            information about the disk at hand, regardless of the disk's state.
            
            See also *VsanDiskFault*, *VsanHostDiskResult.state*.
          $ref: '#/components/schemas/MethodFault'
        degraded:
          description: |2
            Indicates whether the disk is degraded in VSAN performance.
            
            If set, indicates the disk performance is degraded in VSAN
            If unset, it is unknown whether the disk performance is degraded in VSAN.
          type: boolean
      required:
        - disk
        - state
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVsanHostDiskResult:
      type: object
      description: |2
        A boxed array of *VsanHostDiskResult*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VsanHostDiskResult'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VsanHostIpConfig:
      type: object
      description: |2
        An *VsanHostIpConfig* is a pair of multicast IP addresses for use by the VSAN
        service.
        
        For VSAN there is one such IpConfig pair per "virtual network" as
        represented by *VsanHostConfigInfoNetworkInfoPortConfig*.
        
        See also *VsanHostConfigInfoNetworkInfo*, *VsanHostConfigInfoNetworkInfo.port*, *VsanHostConfigInfoNetworkInfoPortConfig*, *HostVsanSystem.UpdateVsan_Task*.
      properties:
        upstreamIpAddress:
          description: |2
            Agent-to-master multicast IP address.
          type: string
        downstreamIpAddress:
          description: |2
            Master-to-agent multicast IP address.
          type: string
      required:
        - upstreamIpAddress
        - downstreamIpAddress
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVsanHostIpConfig:
      type: object
      description: |2
        A boxed array of *VsanHostIpConfig*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VsanHostIpConfig'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VsanHostMembershipInfo:
      type: object
      description: |2
        The *VsanHostMembershipInfo* data object contains VSAN cluster
        membership information for a single host, as observed from a
        given host.
        
        This data object is used to represent read-only
        state whose values may change during operation.
        
        See also *HostRuntimeInfo.vsanRuntimeInfo*.
      properties:
        nodeUuid:
          description: |2
            VSAN node UUID for the host of this MembershipInfo.
            
            See also *VsanHostClusterStatus.nodeUuid*.
          type: string
        hostname:
          description: |2
            Hostname for the host of this MembershipInfo.
            
            May be the empty string "" if the hostname is unavailable.
          type: string
      required:
        - nodeUuid
        - hostname
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVsanHostMembershipInfo:
      type: object
      description: |2
        A boxed array of *VsanHostMembershipInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VsanHostMembershipInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VsanHostVsanDiskInfo:
      type: object
      description: |2
        A VsanDiskInfo represents the additional detailed
        information of a ScsiDisk used by VSAN,
        to map physical disk to VSAN disk.
        
        See also *HostScsiDisk*.
      properties:
        vsanUuid:
          description: |2
            Disk UUID in VSAN
          type: string
        formatVersion:
          description: |2
            VSAN file system version number
          type: integer
          format: int32
      required:
        - vsanUuid
        - formatVersion
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVsanHostVsanDiskInfo:
      type: object
      description: |2
        A boxed array of *VsanHostVsanDiskInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VsanHostVsanDiskInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VsanHostRuntimeInfo:
      type: object
      description: |2
        This data object contains VSAN cluster runtime information from
        the perspective of the host in question.
        
        This data object is used to represent read-only state whose values
        may change during operation.
      properties:
        membershipList:
          description: |2
            This property reports host membership information.
          type: array
          items:
            $ref: '#/components/schemas/VsanHostMembershipInfo'
        diskIssues:
          description: |2
            List of disk issues detected on this host.
            
            To retrieve more information on the issues, use
            *HostVsanSystem.QueryDisksForVsan*.
          type: array
          items:
            $ref: '#/components/schemas/VsanHostRuntimeInfoDiskIssue'
        accessGenNo:
          description: |2
            Generation number tracking object accessibility.
          type: integer
          format: int32
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVsanHostRuntimeInfo:
      type: object
      description: |2
        A boxed array of *VsanHostRuntimeInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VsanHostRuntimeInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VsanHostRuntimeInfoDiskIssue:
      type: object
      description: |2
        Data structure of reporting a disk issue.
      properties:
        diskId:
          description: |2
            Disk uuid, @see vim.host.ScsiLun#uuid
          type: string
        issue:
          description: |2
            Type of issue
            
            See also *VsanDiskIssueType_enum*.
          type: string
      required:
        - diskId
        - issue
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVsanHostRuntimeInfoDiskIssue:
      type: object
      description: |2
        A boxed array of *VsanHostRuntimeInfoDiskIssue*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VsanHostRuntimeInfoDiskIssue'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    BaseConfigInfo:
      type: object
      description: |2
        This data object type contains the basic configuration for
        a virtual storage object or a virtual storage object snapshot.
      properties:
        id:
          description: |2
            ID of this object.
          $ref: '#/components/schemas/ID'
        name:
          description: |2
            Descriptive name of this object.
          type: string
        createTime:
          description: |2
            The date and time this object was created.
          type: string
          format: date-time
        keepAfterDeleteVm:
          description: |2
            Choice of the deletion behavior of this virtual storage object.
            
            If not set, the default value is false.
          type: boolean
        relocationDisabled:
          description: |2
            Is virtual storage object relocation disabled.
            
            If not set, the default value is false.
          type: boolean
        nativeSnapshotSupported:
          description: |2
            Is virtual storage object supports native snapshot.
            
            If not set, the default value is false.
          type: boolean
        changedBlockTrackingEnabled:
          description: |2
            If Virtua storage object has changed block tracking enabled.
            
            If not set, the default value is false.
          type: boolean
        backing:
          description: |2
            Backing of this object.
          $ref: '#/components/schemas/BaseConfigInfoBackingInfo'
        metadata:
          description: |2
            Metadata associated with the FCD if available.
            
            ***Since:*** vSphere API Release 7.0.2.0
          type: array
          items:
            $ref: '#/components/schemas/KeyValue'
        vclock:
          description: |2
            VClock associated with the fcd when the operation completed.
            
            The files is unset if the operation is a retrieve.
            
            ***Since:*** vSphere API Release 7.0.2.0
          $ref: '#/components/schemas/vslmVClockInfo'
        iofilter:
          description: |2
            IDs of the IO Filters associated with the virtual disk.
            
            See *IoFilterInfo.id*.
            The client cannot modify this information on a virtual machine.
          type: array
          items:
            type: string
      required:
        - id
        - name
        - createTime
        - backing
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfBaseConfigInfo:
      type: object
      description: |2
        A boxed array of *BaseConfigInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/BaseConfigInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    BaseConfigInfoBackingInfo:
      type: object
      description: |2
        The data object type is a base type of backing of a virtual
        storage object.
      properties:
        datastore:
          description: |2
            The datastore managed object where this backing is located.
            
            Refers instance of *Datastore*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - datastore
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfBaseConfigInfoBackingInfo:
      type: object
      description: |2
        A boxed array of *BaseConfigInfoBackingInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/BaseConfigInfoBackingInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    BaseConfigInfoDiskFileBackingInfo:
      type: object
      description: |2
        The data object type for disk file backing of a virtual storage
        object.
        
        Disk file backing provides full virtualization of the backend
        storage.
      properties:
        provisioningType:
          description: |2
            Provisioning type.
            
            See *BaseConfigInfoDiskFileBackingInfoProvisioningType_enum* for the
            supported types.
          type: string
      required:
        - provisioningType
      allOf:
        - $ref: '#/components/schemas/BaseConfigInfoFileBackingInfo'

    ArrayOfBaseConfigInfoDiskFileBackingInfo:
      type: object
      description: |2
        A boxed array of *BaseConfigInfoDiskFileBackingInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/BaseConfigInfoDiskFileBackingInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    BaseConfigInfoFileBackingInfo:
      type: object
      description: |2
        Information for file backing of a virtual storage
        object.
        
        File backing is mainly used for virtual disks.
      properties:
        filePath:
          description: |2
            Full file path for the host file used in this backing.
          type: string
        backingObjectId:
          description: |2
            Id refers to the backed storage object where the virtual storage object
            is backed on.
          type: string
        parent:
          description: |2
            The parent of this virtual disk file, if this is a delta disk backing.
            
            This will be unset if this is the root disk backing.
            
            Note that the type of the backing is consistent throughout the chain;
            any new delta disk backing which is added is of the same type as the
            original disk. Also note that since the parent backing is not being
            written to, it is possible that the parent backing may be shared among
            multiple disks.
            
            Only raw disk mappings in
            *virtual compatibility mode* can have parents.
          $ref: '#/components/schemas/BaseConfigInfoFileBackingInfo'
        deltaSizeInMB:
          description: |2
            Size allocated by the FS for this file/chain/link/extent only.
            
            This property is used only for a delta disk whose
            *BaseConfigInfoFileBackingInfo.parent* is set.
          type: integer
          format: int64
        keyId:
          description: |2
            key id used to encrypt the backing disk.
          $ref: '#/components/schemas/CryptoKeyId'
      required:
        - filePath
      allOf:
        - $ref: '#/components/schemas/BaseConfigInfoBackingInfo'

    ArrayOfBaseConfigInfoFileBackingInfo:
      type: object
      description: |2
        A boxed array of *BaseConfigInfoFileBackingInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/BaseConfigInfoFileBackingInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    BaseConfigInfoRawDiskMappingBackingInfo:
      type: object
      description: |2
        This data object type contains information about raw device mapping.
      properties:
        lunUuid:
          description: |2
            Unique identifier of the LUN accessed by the raw disk mapping.
          type: string
        compatibilityMode:
          description: |2
            The compatibility mode of the raw disk mapping (RDM).
            
            This must be
            specified when a new virtual disk with an RDM backing is created.
            
            See also *VirtualDiskCompatibilityMode_enum*.
          type: string
      required:
        - lunUuid
        - compatibilityMode
      allOf:
        - $ref: '#/components/schemas/BaseConfigInfoFileBackingInfo'

    ArrayOfBaseConfigInfoRawDiskMappingBackingInfo:
      type: object
      description: |2
        A boxed array of *BaseConfigInfoRawDiskMappingBackingInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/BaseConfigInfoRawDiskMappingBackingInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VslmCloneSpec:
      type: object
      description: |2
        Specification of cloning a virtual storage object.
      properties:
        name:
          description: |2
            Descriptive name of the cloned virtual storage object.
          type: string
        keepAfterDeleteVm:
          description: |2
            Choice of the deletion behavior of this virtual storage object.
            
            If not set, the default value is false.
          type: boolean
        metadata:
          description: |2
            The metadata KV pairs that are supposed to be updated on the destination
            virtual storage object.
            
            The clone task is atomic by design. That being
            said, failing to update the specified metadata pairs leads to the failure
            of the clone task. If unset, no metadata will be updated. An empty string
            value is indicative of a vcenter tag.
          type: array
          items:
            $ref: '#/components/schemas/KeyValue'
      required:
        - name
      allOf:
        - $ref: '#/components/schemas/VslmMigrateSpec'

    ArrayOfVslmCloneSpec:
      type: object
      description: |2
        A boxed array of *VslmCloneSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VslmCloneSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VslmCreateSpec:
      type: object
      description: |2
        Specification to create a virtual storage object.
      properties:
        name:
          description: |2
            Descriptive name of this virtual storage object.
          type: string
        keepAfterDeleteVm:
          description: |2
            Choice of the deletion behavior of this virtual storage object.
            
            If not set, the default value is true.
          type: boolean
        backingSpec:
          description: |2
            Specification of the backings of the virtual storage object.
          $ref: '#/components/schemas/VslmCreateSpecBackingSpec'
        capacityInMB:
          description: |2
            Size in MB of the virtual storage object.
          type: integer
          format: int64
        profile:
          description: |2
            Virtual storage object Profile requirement.
            
            If unset,
            the default behavior will apply.
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineProfileSpec'
        crypto:
          description: |2
            Crypto operation of the disk.
            
            If unset and if *VslmCreateSpec.profile* contains an encryption iofilter,
            then crypto will be of type CryptoSpecEncrypt, and filled with
            keyId that is automatically generated and keyProviderId that is the
            default kms cluster.
          $ref: '#/components/schemas/CryptoSpec'
        metadata:
          description: |2
            The metadata KV pairs that are supposed to be created on the newly created
            virtual storage object.
            
            The create task is atomic by design. That being
            said, failing to add the specified metadata pairs leads to the failure
            of the create task. If unset, no metadata will be added. An empty string
            value is indicative of a vcenter tag.
          type: array
          items:
            $ref: '#/components/schemas/KeyValue'
      required:
        - name
        - backingSpec
        - capacityInMB
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVslmCreateSpec:
      type: object
      description: |2
        A boxed array of *VslmCreateSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VslmCreateSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VslmCreateSpecBackingSpec:
      type: object
      description: |2
        Specification of the backing of a virtual
        storage object.
      properties:
        datastore:
          description: |2
            The datastore managed object where this backing is located.
            
            Refers instance of *Datastore*.
          $ref: '#/components/schemas/ManagedObjectReference'
        path:
          description: |2
            Relative location in the specified datastore where disk needs to be
            created.
            
            If not specified disk gets created at the defualt
            VStorageObject location on the specified datastore.
          type: string
      required:
        - datastore
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVslmCreateSpecBackingSpec:
      type: object
      description: |2
        A boxed array of *VslmCreateSpecBackingSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VslmCreateSpecBackingSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VslmCreateSpecDiskFileBackingSpec:
      type: object
      description: |2
        Specification of the disk file backing of a virtual
        storage object.
      properties:
        provisioningType:
          description: |2
            Provisioning type.
            
            See also *BaseConfigInfoDiskFileBackingInfoProvisioningType_enum*
            
            If unset, system will first look up the provisioning type specified
            in the policy. If still not found, the default
            *thin*
            will be used..
          type: string
      allOf:
        - $ref: '#/components/schemas/VslmCreateSpecBackingSpec'

    ArrayOfVslmCreateSpecDiskFileBackingSpec:
      type: object
      description: |2
        A boxed array of *VslmCreateSpecDiskFileBackingSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VslmCreateSpecDiskFileBackingSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VslmCreateSpecRawDiskMappingBackingSpec:
      type: object
      description: |2
        Specification of the rdm backing of a virtual
        storage object.
      properties:
        lunUuid:
          description: |2
            Unique identifier of the LUN accessed by the raw disk mapping.
          type: string
        compatibilityMode:
          description: |2
            The compatibility mode of the raw disk mapping (RDM).
            
            This must be specified
            when a new virtual disk with an RDM backing is created.
            
            See also *VirtualDiskCompatibilityMode_enum*.
          type: string
      required:
        - lunUuid
        - compatibilityMode
      allOf:
        - $ref: '#/components/schemas/VslmCreateSpecBackingSpec'

    ArrayOfVslmCreateSpecRawDiskMappingBackingSpec:
      type: object
      description: |2
        A boxed array of *VslmCreateSpecRawDiskMappingBackingSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VslmCreateSpecRawDiskMappingBackingSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DiskCryptoSpec:
      type: object
      description: |2
        This data object type contains the crypto information of all disks along
        the chain
      properties:
        parent:
          description: |2
            The parent in the chain.
          $ref: '#/components/schemas/DiskCryptoSpec'
        crypto:
          description: |2
            Crypto information of the current disk.
          $ref: '#/components/schemas/CryptoSpec'
      required:
        - crypto
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfDiskCryptoSpec:
      type: object
      description: |2
        A boxed array of *DiskCryptoSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DiskCryptoSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ID:
      type: object
      description: |2
        This data object type describes an identifier class which
        is globally unique to identify the associated object.
      properties:
        id:
          description: |2
            Id string which is globally unique to identify
            an object.
          type: string
      required:
        - id
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfID:
      type: object
      description: |2
        A boxed array of *ID*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ID'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    vslmInfrastructureObjectPolicy:
      type: object
      description: |2
        The data object type describes improved virtual disk infrastructure namespace
        storage policy details.
      properties:
        name:
          type: string
        backingObjectId:
          type: string
        profileId:
          type: string
        error:
          $ref: '#/components/schemas/MethodFault'
      required:
        - name
        - backingObjectId
        - profileId
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfvslmInfrastructureObjectPolicy:
      type: object
      description: |2
        A boxed array of *vslmInfrastructureObjectPolicy*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/vslmInfrastructureObjectPolicy'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    vslmInfrastructureObjectPolicySpec:
      type: object
      description: |2
        Specification to assign a SPBM policy to FCD infrastructure object
        (namespace).
        
        This is used in object-based storage.
      properties:
        datastore:
          description: |2
            Datastore on which datastore policy needs to be assigned.
            
            Refers instance of *Datastore*.
          $ref: '#/components/schemas/ManagedObjectReference'
        profile:
          description: |2
            SPBM Profile to associate.
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineProfileSpec'
      required:
        - datastore
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfvslmInfrastructureObjectPolicySpec:
      type: object
      description: |2
        A boxed array of *vslmInfrastructureObjectPolicySpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/vslmInfrastructureObjectPolicySpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VslmMigrateSpec:
      type: object
      description: |2
        Base specification of moving or copying a virtual storage object.
      properties:
        backingSpec:
          description: |2
            Specification of the backings of the target virtual storage object.
          $ref: '#/components/schemas/VslmCreateSpecBackingSpec'
        profile:
          description: |2
            Virtual storage object Profile requirement.
            
            If unset,
            the default behavior will apply.
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineProfileSpec'
        consolidate:
          description: |2
            Flag indicates any delta disk backings will be consolidated
            during migration.
            
            If unset, delta disk backings will not be
            consolidated.
          type: boolean
        disksCrypto:
          description: |2
            Disk chain crypto information.
            
            If unset and if *VslmMigrateSpec.profile* contains an encryption iofilter and if
            source VStorageObject is unencrypted, then disksCyrpto will be of type
            CryptoSpecEncrypt, and filled with keyId that is automatically generated
            and keyProviderId that is the default kms cluster. During the migration,
            the object will be encrypted.
            If unset and if *VslmMigrateSpec.profile* is a default policy and if source
            VStorageObject is unenrypted, then disksCrypto is treated as
            CryptoSpecNoOp. During migration, no cryptographic change.
            If unset and if *VslmMigrateSpec.profile* contains an encryption iofilter and if
            source VStorageObject is encrypted, then disksCyrpto is treated as
            CryptoSpecNoOp. During migration, no cryptographic change.
            If unset and if *VslmMigrateSpec.profile* is a default policy and if
            source VStorageObject is encrypted, then disksCyrpto is treated as
            CryptoSpecDecrypt, during migration, the object will be decrypted.
            To recrypt the disk during migration, disksCrypto has to be present.
          $ref: '#/components/schemas/DiskCryptoSpec'
        service:
          description: |2
            The service endpoint of vCenter where the FCD should be located.
            
            If
            not specified the current vCenter service is used.
            
            ***Since:*** vSphere API Release 8.0.3.0
          $ref: '#/components/schemas/ServiceLocator'
      required:
        - backingSpec
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVslmMigrateSpec:
      type: object
      description: |2
        A boxed array of *VslmMigrateSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VslmMigrateSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VslmRelocateSpec:
      type: object
      description: |2
        Specification for relocating a virtual storage object.
      allOf:
        - $ref: '#/components/schemas/VslmMigrateSpec'

    ArrayOfVslmRelocateSpec:
      type: object
      description: |2
        A boxed array of *VslmRelocateSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VslmRelocateSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VStorageObjectStateInfo:
      type: object
      description: |2
        Contains information of a virtual storage object state.
        
        NOTE: The information obtained with this object is dynamic and it could
        change during the lifetime of the object. For performance purposes some
        of the data may not reflect the immediate state of the object, also there
        is not guarantee that it will be provided.
      properties:
        tentative:
          description: |2
            If set this flag indicates that the object currently is part of
            provisioning operation or the last operation has not finished gracefully.
            
            There are maintenance procedures that are working on resolving that
            tentative state. Note that this might result in the object to be removed.
          type: boolean
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVStorageObjectStateInfo:
      type: object
      description: |2
        A boxed array of *VStorageObjectStateInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VStorageObjectStateInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VslmTagEntry:
      type: object
      description: |2
        Specification of the Tag-Association tuple of Dataservice Tagging package.
        
        This class is a subset of the class dataservice.taggging.TaggingEntry.
      properties:
        tagName:
          description: |2
            Associated tag name of the Tag-Association tuple
          type: string
        parentCategoryName:
          description: |2
            Associated parent category name of the Tag-Association tuple
          type: string
      required:
        - tagName
        - parentCategoryName
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVslmTagEntry:
      type: object
      description: |2
        A boxed array of *VslmTagEntry*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VslmTagEntry'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    vslmVClockInfo:
      type: object
      description: |2
        Virtual clock info of VStorageObject catalog.
      properties:
        vClockTime:
          description: |2
            Virtual clock time of VStorageObject catalog.
            
            It is an epoch or
            generation ID assigned to each VStorageObject operation on a datastore.
          type: integer
          format: int64
      required:
        - vClockTime
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfvslmVClockInfo:
      type: object
      description: |2
        A boxed array of *vslmVClockInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/vslmVClockInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VStorageObject:
      type: object
      description: |2
        This data object type describes a virtual storage object.
      properties:
        config:
          description: |2
            Virtual storage object configuration
          $ref: '#/components/schemas/VStorageObjectConfigInfo'
      required:
        - config
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVStorageObject:
      type: object
      description: |2
        A boxed array of *VStorageObject*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VStorageObject'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VStorageObjectConfigInfo:
      type: object
      description: |2
        Data object specifies Virtual storage object configuration
      properties:
        descriptorVersion:
          description: |2
            The descriptor version of this object
            
            ***Since:*** vSphere API Release 8.0.1.0
          type: integer
          format: int32
        capacityInMB:
          description: |2
            The size in MB of this object.
          type: integer
          format: int64
        consumptionType:
          description: |2
            Consumption type of this object.
            
            See also *VStorageObjectConsumptionType_enum*.
          type: array
          items:
            type: string
        consumerId:
          description: |2
            IDs of the consumer objects which consume this vstorage object.
            
            For a virtual disk, this can be VM ID(s).
          type: array
          items:
            $ref: '#/components/schemas/ID'
      required:
        - capacityInMB
      allOf:
        - $ref: '#/components/schemas/BaseConfigInfo'

    ArrayOfVStorageObjectConfigInfo:
      type: object
      description: |2
        A boxed array of *VStorageObjectConfigInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VStorageObjectConfigInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VStorageObjectSnapshot:
      type: object
      description: |2
        This data object type contains ID and VClock details of a virtual disk snapshot.
        
        ***Since:*** vSphere API Release 8.0.2.0
      properties:
        id:
          description: |2
            ID of this snapshot object.
          $ref: '#/components/schemas/ID'
        vclock:
          description: |2
            VClock associated with the FCD when the operation completes.
          $ref: '#/components/schemas/vslmVClockInfo'
      required:
        - id
        - vclock
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVStorageObjectSnapshot:
      type: object
      description: |2
        A boxed array of *VStorageObjectSnapshot*. To be used in *Any* placeholders.
        
        ***Since:*** vSphere API Release 8.0.2.0
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VStorageObjectSnapshot'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VStorageObjectSnapshotDetails:
      type: object
      description: |2
        This data object type provides details of a vstorage object snapshot
      properties:
        path:
          description: |2
            Path of the snaphost object
          type: string
        changedBlockTrackingId:
          description: |2
            Changed block tracking ID of the snapshot
          type: string
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVStorageObjectSnapshotDetails:
      type: object
      description: |2
        A boxed array of *VStorageObjectSnapshotDetails*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VStorageObjectSnapshotDetails'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VStorageObjectSnapshotInfo:
      type: object
      description: |2
        This data object type contains the brief information of a
        virtual storage snapshot.
      properties:
        snapshots:
          description: |2
            An array of snapshots
          type: array
          items:
            $ref: '#/components/schemas/VStorageObjectSnapshotInfoVStorageObjectSnapshot'
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVStorageObjectSnapshotInfo:
      type: object
      description: |2
        A boxed array of *VStorageObjectSnapshotInfo*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VStorageObjectSnapshotInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VStorageObjectSnapshotInfoVStorageObjectSnapshot:
      type: object
      properties:
        id:
          description: |2
            ID of the snapshot object.
          $ref: '#/components/schemas/ID'
        backingObjectId:
          description: |2
            Backing object ID
          type: string
        createTime:
          description: |2
            The date and time this object was created.
          type: string
          format: date-time
        description:
          description: |2
            Short description of the snapshot
          type: string
      required:
        - createTime
        - description
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVStorageObjectSnapshotInfoVStorageObjectSnapshot:
      type: object
      description: |2
        A boxed array of *VStorageObjectSnapshotInfoVStorageObjectSnapshot*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VStorageObjectSnapshotInfoVStorageObjectSnapshot'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    RetrieveVStorageObjSpec:
      type: object
      description: |2
        This data object is a pair of the virtural storage object id and
        its datastore.
      properties:
        id:
          description: |2
            ID of this virtual storage object.
          $ref: '#/components/schemas/ID'
        datastore:
          description: |2
            Datastore where the object is located.
            
            Refers instance of *Datastore*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - id
        - datastore
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfRetrieveVStorageObjSpec:
      type: object
      description: |2
        A boxed array of *RetrieveVStorageObjSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/RetrieveVStorageObjSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VStorageObjectAssociations:
      type: object
      description: |2
        This data object is a key-value pair whose key is the virtual storage
        object id, and value is the vm association information.
      properties:
        id:
          description: |2
            ID of this virtual storage object.
          $ref: '#/components/schemas/ID'
        vmDiskAssociations:
          description: |2
            Array of vm associations related to the virtual storage object.
          type: array
          items:
            $ref: '#/components/schemas/VStorageObjectAssociationsVmDiskAssociations'
        fault:
          description: |2
            Received error while generating associations.
          $ref: '#/components/schemas/MethodFault'
      required:
        - id
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVStorageObjectAssociations:
      type: object
      description: |2
        A boxed array of *VStorageObjectAssociations*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VStorageObjectAssociations'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VStorageObjectAssociationsVmDiskAssociations:
      type: object
      description: |2
        This data object contains infomation of a VM Disk associations.
      properties:
        vmId:
          description: |2
            ID of the virtual machine.
          type: string
        diskKey:
          description: |2
            Device key of the disk attached to the VM.
          type: integer
          format: int32
      required:
        - vmId
        - diskKey
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVStorageObjectAssociationsVmDiskAssociations:
      type: object
      description: |2
        A boxed array of *VStorageObjectAssociationsVmDiskAssociations*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VStorageObjectAssociationsVmDiskAssociations'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DataObject:
      type: object
      description: |2
        This is the built-in base interface implemented by all
        data objects.
      allOf:
        - $ref: '#/components/schemas/Any'

    ArrayOfDataObject:
      type: object
      description: |2
        A boxed array of *DataObject*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DataObject'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DynamicArray:
      type: object
      description: |2
        DynamicArray is a data object type that represents an array of dynamically-typed
        objects.
        
        A client should only see a DynamicArray object when the element type
        is unknown (meaning the type is newer than the client). Otherwise, a client would
        see the type as T\[\] where T is known.
      properties:
        val:
          description: |2
            Array of dynamic values.
          type: array
          items:
            $ref: '#/components/schemas/Any'
      required:
        - val
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfDynamicArray:
      type: object
      description: |2
        A boxed array of *DynamicArray*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DynamicArray'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DynamicProperty:
      type: object
      description: |2
        The DynamicProperty data object type represents a name-value pair.
      properties:
        name:
          description: |2
            Path to the property.
          type: string
        val:
          description: |2
            Value of the property.
          $ref: '#/components/schemas/Any'
      required:
        - name
        - val
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfDynamicProperty:
      type: object
      description: |2
        A boxed array of *DynamicProperty*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DynamicProperty'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    KeyAnyValue:
      type: object
      description: |2
        Non-localized key/value pair in which the
        the value can be of any type.
      properties:
        key:
          description: |2
            the key
          type: string
        value:
          description: |2
            the value
          $ref: '#/components/schemas/Any'
      required:
        - key
        - value
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfKeyAnyValue:
      type: object
      description: |2
        A boxed array of *KeyAnyValue*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/KeyAnyValue'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    LocalizableMessage:
      type: object
      description: |2
        Message data which is intended to be displayed according
        to the locale of a client.
        
        A *LocalizableMessage* contains both a formatted, localized
        version of the text and the data needed to perform localization in
        conjunction with localization catalogs.
        
        Clients of the VIM API may use vim.SessionManager.setLocale()
        to cause the server to emit a localized *LocalizableMessage.message*, or may perform
        client-side localization based on message catalogs provided by the
        server.
        - If the substition variable is a string, no further lookup is required.
          - *LocalizableMessage.arg* = \[("address" = "127.0.0.1")\]
          - CATALOG(locmsg, *LocalizableMessage.key*) = "IP address is {address}"
          - \==&gt; *LocalizableMessage.message* = "IP address is 127.0.0.1"
        - If the substitution variable is an integer, value is a lookup key.
          - *LocalizableMessage.arg* = \[("1" = "button.cancel"), ("2" = "msg.revert")\]
          - CATALOG(locmsg, *LocalizableMessage.key*) = "Select '{1}' to {2}"
          - CATALOG(locmsg, button.cancel) = "Cancel"
          - CATALOG(locmsg, msg.revert) = "revert"
          - \==&gt; *LocalizableMessage.message* = "Select 'Cancel' to revert"
        - If the variable contains '@', value is a label lookup in another
          catalog, where {name.@CATALOG.prefix} looks up prefix.*LocalizableMessage.arg*\[name\].label
          in CATALOG.
          - *LocalizableMessage.arg* = \[("field" = "queued")\]
          - CATALOG(locmsg, *LocalizableMessage.key*) = "State is {field.@enum.TaskInfo.State}"
          - CATALOG(enum, TaskInfo.State.queued.label) is "Queued"
          - \==&gt; *LocalizableMessage.message* = "State is Queued"
      properties:
        key:
          description: |2
            Unique key identifying the message in the localized message catalog.
          type: string
        arg:
          description: |2
            Substitution arguments for variables in the localized message.
          type: array
          items:
            $ref: '#/components/schemas/KeyAnyValue'
        message:
          description: |2
            Message in session locale.
            
            Use vim.SessionManager.setLocale() to change the session locale.
          type: string
      required:
        - key
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfLocalizableMessage:
      type: object
      description: |2
        A boxed array of *LocalizableMessage*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/LocalizableMessage'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    LocalizedMethodFault:
      type: object
      description: |2
        A wrapper class used to pass MethodFault data objects over the wire
        along with a localized display message for the fault.
      properties:
        fault:
          $ref: '#/components/schemas/MethodFault'
        localizedMessage:
          description: |2
            The localized message that would be sent in the faultstring element
            of the SOAP Fault.
            
            It is optional so that clients are not required
            to send a localized message to the server, but servers are required
            to send the localized message to clients.
          type: string
      required:
        - fault
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfLocalizedMethodFault:
      type: object
      description: |2
        A boxed array of *LocalizedMethodFault*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/LocalizedMethodFault'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    MethodFault:
      type: object
      description: |2
        The base data object type for all the object model faults
        that an application might handle.
      properties:
        faultCause:
          description: |2
            Fault which is the cause of this fault.
          $ref: '#/components/schemas/MethodFault'
        faultMessage:
          description: |2
            Message which has details about the error
            Message can also contain a key to message catalog which
            can be used to generate better localized messages.
          type: array
          items:
            $ref: '#/components/schemas/LocalizableMessage'
      allOf:
        - $ref: '#/components/schemas/Any'

    ArrayOfMethodFault:
      type: object
      description: |2
        A boxed array of *MethodFault*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/MethodFault'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    RuntimeFault:
      type: object
      description: |2
        The base data object type for all runtime faults that can be
        thrown by a method.
      allOf:
        - $ref: '#/components/schemas/MethodFault'

    ArrayOfRuntimeFault:
      type: object
      description: |2
        A boxed array of *RuntimeFault*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/RuntimeFault'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostCommunication:
      type: object
      description: |2
        A HostCommunication fault is thrown if an error happened
        while communicating to a host.
        
        This would typically be
        due to network connections or server failures.
      allOf:
        - $ref: '#/components/schemas/RuntimeFault'

    ArrayOfHostCommunication:
      type: object
      description: |2
        A boxed array of *HostCommunication*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostCommunication'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostNotConnected:
      type: object
      description: |2
        A HostNotConnected fault is thrown if a method needs
        to communicate with a host that has been disconnected in
        VirtualCenter.
      allOf:
        - $ref: '#/components/schemas/HostCommunication'

    ArrayOfHostNotConnected:
      type: object
      description: |2
        A boxed array of *HostNotConnected*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostNotConnected'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostNotReachable:
      type: object
      description: |2
        A HostNotReachable fault is thrown if the server was unable
        to communicate with the host
      allOf:
        - $ref: '#/components/schemas/HostCommunication'

    ArrayOfHostNotReachable:
      type: object
      description: |2
        A boxed array of *HostNotReachable*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostNotReachable'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    InvalidArgument:
      type: object
      description: |2
        An InvalidArgument exception is thrown if the
        set of arguments passed to the function is not
        specified correctly.
      properties:
        invalidProperty:
          description: |2
            Optional name of the invalid property.
          type: string
      allOf:
        - $ref: '#/components/schemas/RuntimeFault'

    ArrayOfInvalidArgument:
      type: object
      description: |2
        A boxed array of *InvalidArgument*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/InvalidArgument'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    InvalidRequest:
      type: object
      description: |2
        An InvalidRequest fault is thrown in response to a malformed
        request to the server that fails in the transport layer, e.g.,
        the SOAP XML request was invalid.
        
        Sub-types of this fault,
        provides more specific transport errors, such as a using a
        reference to an unknown managed object type or method.
      allOf:
        - $ref: '#/components/schemas/RuntimeFault'

    ArrayOfInvalidRequest:
      type: object
      description: |2
        A boxed array of *InvalidRequest*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/InvalidRequest'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    InvalidType:
      type: object
      description: |2
        InvalidType is thrown when a managed object request refers to
        an unexpected or unknown type.
      properties:
        argument:
          description: |2
            Name of the argument that was malformed.
          type: string
      allOf:
        - $ref: '#/components/schemas/InvalidRequest'

    ArrayOfInvalidType:
      type: object
      description: |2
        A boxed array of *InvalidType*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/InvalidType'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ManagedObjectNotFound:
      type: object
      description: |2
        A ManagedObjectNotFound exception is thrown when a request refers to
        a managed object that no longer exists or has never existed.
      properties:
        obj:
          description: |2
            The managed object reference that generated the error.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - obj
      allOf:
        - $ref: '#/components/schemas/RuntimeFault'

    ArrayOfManagedObjectNotFound:
      type: object
      description: |2
        A boxed array of *ManagedObjectNotFound*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ManagedObjectNotFound'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    MethodNotFound:
      type: object
      description: |2
        MethodNotFound is thrown to indicate that a method called on a managed
        object does not exist.
      properties:
        receiver:
          description: |2
            The receiver of the call
          $ref: '#/components/schemas/ManagedObjectReference'
        method:
          description: |2
            The method called.
          type: string
      required:
        - receiver
        - method
      allOf:
        - $ref: '#/components/schemas/InvalidRequest'

    ArrayOfMethodNotFound:
      type: object
      description: |2
        A boxed array of *MethodNotFound*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/MethodNotFound'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    NotEnoughLicenses:
      type: object
      description: |2
        A NotEnoughLicensesFault occurs when an operation
        fails because there are not enough licenses installed.
      allOf:
        - $ref: '#/components/schemas/RuntimeFault'

    ArrayOfNotEnoughLicenses:
      type: object
      description: |2
        A boxed array of *NotEnoughLicenses*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/NotEnoughLicenses'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    NotImplemented:
      type: object
      description: |2
        NotImplemented exception is thrown if the method is not
        yet implemented.
      allOf:
        - $ref: '#/components/schemas/RuntimeFault'

    ArrayOfNotImplemented:
      type: object
      description: |2
        A boxed array of *NotImplemented*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/NotImplemented'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    NotSupported:
      type: object
      description: |2
        Thrown if the method is not supported on the
        server.
        
        Not all methods are supported on all servers
        (for example, an ESX Server host supports less functionality than
        a VirtualCenter server). A feature might also be disabled
        due to missing liceneses.
      allOf:
        - $ref: '#/components/schemas/RuntimeFault'

    ArrayOfNotSupported:
      type: object
      description: |2
        A boxed array of *NotSupported*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/NotSupported'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    RequestCanceled:
      type: object
      description: |2
        A RequestCanceled fault is thrown if the user canceled the task.
      allOf:
        - $ref: '#/components/schemas/RuntimeFault'

    ArrayOfRequestCanceled:
      type: object
      description: |2
        A boxed array of *RequestCanceled*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/RequestCanceled'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    SecurityError:
      type: object
      description: |2
        Thrown when the client is not allowed access to the property or method.
      allOf:
        - $ref: '#/components/schemas/RuntimeFault'

    ArrayOfSecurityError:
      type: object
      description: |2
        A boxed array of *SecurityError*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/SecurityError'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    SystemError:
      type: object
      description: |2
        Exception type for reporting a low-level operating system
        error.
      properties:
        reason:
          description: |2
            A message to indicate detailed information about the error.
            
            This property is not internationalization friendly and
            normally reported by the underlying operating system.
          type: string
      required:
        - reason
      allOf:
        - $ref: '#/components/schemas/RuntimeFault'

    ArrayOfSystemError:
      type: object
      description: |2
        A boxed array of *SystemError*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/SystemError'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    UnexpectedFault:
      type: object
      description: |2
        An UnexpectedFault may be thrown when a newer version of the server
        reports a error that a cannot be converted to a fault that a client
        that is using an older version of the API would expect.
      properties:
        faultName:
          description: |2
            Name of the unexpected fault.
          type: string
        fault:
          description: |2
            The unexpected fault if the server can send it in a form that the client
            will be able to de-serialize.
          $ref: '#/components/schemas/MethodFault'
      required:
        - faultName
      allOf:
        - $ref: '#/components/schemas/RuntimeFault'

    ArrayOfUnexpectedFault:
      type: object
      description: |2
        A boxed array of *UnexpectedFault*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/UnexpectedFault'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    InvalidCollectorVersion:
      type: object
      description: |2
        InvalidCollectorVersion is thrown when a collector version is out
        of date or invalid.
      allOf:
        - $ref: '#/components/schemas/MethodFault'

    ArrayOfInvalidCollectorVersion:
      type: object
      description: |2
        A boxed array of *InvalidCollectorVersion*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/InvalidCollectorVersion'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    InvalidProperty:
      type: object
      description: |2
        Thrown when an invalid property path has been referenced.
      properties:
        name:
          description: |2
            The property name that generated the error.
          type: string
      required:
        - name
      allOf:
        - $ref: '#/components/schemas/MethodFault'

    ArrayOfInvalidProperty:
      type: object
      description: |2
        A boxed array of *InvalidProperty*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/InvalidProperty'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PropertyChange:
      type: object
      description: |2
        Describes a change to a property.
      properties:
        name:
          description: |2
            Property or nested property to which the change applies.
            
            Nested
            properties are specified by paths; for example,
            - foo.bar
            - foo.arProp\["key val"\]
            - foo.arProp\["key val"\].baz
          type: string
        op:
          description: |2
            Change operation for the property.
            
            Valid values are:
            <dl>
            <dt>add</dt>
            <dd>The property is a collection and the change inserts an element
            into the collection.</dd>
            <dt>remove</dt>
            <dd>The property is a collection and the change deletes an element
            from the collection.</dd>
            <dt>assign</dt>
            <dd>The change is a new value for the property.</dd>
            <dt>indirectRemove</dt>
            <dd>The property was removed because a containing property was removed
            or unset</dd>
            </dl>
          $ref: '#/components/schemas/PropertyChangeOp_enum'
        val:
          description: |2
            New value for the property when "op" is either "add" or "assign".
          $ref: '#/components/schemas/Any'
      required:
        - name
        - op
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfPropertyChange:
      type: object
      description: |2
        A boxed array of *PropertyChange*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PropertyChange'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PropertyFilterSpec:
      type: object
      description: |2
        Specify the property data that is included in a filter.
        
        A filter can
        specify part of a single managed object, or parts of multiple related
        managed objects in an inventory hierarchy - for example, to collect
        updates from all virtual machines in a given folder.
      properties:
        propSet:
          description: |2
            Set of properties to include in the filter, specified for each object
            type.
          type: array
          items:
            $ref: '#/components/schemas/PropertySpec'
        objectSet:
          description: |2
            Set of specifications that determine the objects to filter.
          type: array
          items:
            $ref: '#/components/schemas/ObjectSpec'
        reportMissingObjectsInResults:
          description: |2
            Control how to report missing objects during filter creation.
            
            If false or unset and *PropertyFilterSpec.objectSet* refers to missing objects,
            filter creation will fail with a *ManagedObjectNotFound* fault.
            
            If true and *PropertyFilterSpec.objectSet* refers
            to missing objects, filter creation will not fail and missing objects
            will be reported via filter results. This is the recommended setting
            when *PropertyFilterSpec.objectSet* refers to
            transient objects.
            
            In an *UpdateSet* missing objects will
            appear in the *PropertyFilterUpdate.missingSet* field.
            
            In a *RetrieveResult* missing objects will
            simply be omitted from the objects field.
            
            For a call to *PropertyCollector.RetrieveProperties* missing objects will simply
            be omitted from the results.
          type: boolean
      required:
        - propSet
        - objectSet
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfPropertyFilterSpec:
      type: object
      description: |2
        A boxed array of *PropertyFilterSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PropertyFilterSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PropertyFilterUpdate:
      type: object
      description: |2
        The *PropertyFilterUpdate* data object type contains a
        list of updates to data visible through a specific filter.
        
        Note that if a
        property changes through multiple filters, then a client receives an
        update for each filter.
      properties:
        filter:
          description: |2
            Filter that was updated.
            
            Refers instance of *PropertyFilter*.
          $ref: '#/components/schemas/ManagedObjectReference'
        objectSet:
          description: |2
            Set of changes to object properties in the filter.
          type: array
          items:
            $ref: '#/components/schemas/ObjectUpdate'
        missingSet:
          description: |2
            Objects that could not be found on the server, but were specified in a
            *PropertyFilterSpec.objectSet*.
            
            This field will only be populated for objects that were determined
            to be missing since the data version passed to *PropertyCollector.CheckForUpdates*, *PropertyCollector.WaitForUpdates*, or *PropertyCollector.WaitForUpdatesEx* and will not contain objects that were missing
            prior to that data version.
          type: array
          items:
            $ref: '#/components/schemas/MissingObject'
      required:
        - filter
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfPropertyFilterUpdate:
      type: object
      description: |2
        A boxed array of *PropertyFilterUpdate*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PropertyFilterUpdate'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    MissingObject:
      type: object
      description: |2
        Used for reporting missing objects that were explicitly referenced by a
        filter spec.
        
        In other words, any of the objects referenced in *PropertyFilterSpec.objectSet*
      properties:
        obj:
          description: |2
            The object that is being reported missing
          $ref: '#/components/schemas/ManagedObjectReference'
        fault:
          description: |2
            Fault describing the failure to lookup this object
            
            The possible faults for missing objects are:
            - *SystemError* if there was some unknown problem
              looking up the object
            - *ManagedObjectNotFound* if the object is no
              longer available
          $ref: '#/components/schemas/MethodFault'
      required:
        - obj
        - fault
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfMissingObject:
      type: object
      description: |2
        A boxed array of *MissingObject*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/MissingObject'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    MissingProperty:
      type: object
      description: |2
        Used for reporting properties for which values could not be retrieved.
      properties:
        path:
          description: |2
            Property for which a value could not be retrieved
          type: string
        fault:
          description: |2
            Fault describing the failure to retrieve the property value.
            
            The possible faults for missing properties are:
            - *SystemError* if there was some unknown problem
              reading the value
            - *SecurityError* if the logged in session did
              not have permission to read the value
          $ref: '#/components/schemas/MethodFault'
      required:
        - path
        - fault
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfMissingProperty:
      type: object
      description: |2
        A boxed array of *MissingProperty*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/MissingProperty'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ObjectContent:
      type: object
      description: |2
        The *ObjectContent* data object type contains the
        contents retrieved for a single managed object.
      properties:
        obj:
          description: |2
            Reference to the managed object that contains properties of interest.
          $ref: '#/components/schemas/ManagedObjectReference'
        propSet:
          description: |2
            Set of name-value pairs for the properties of the managed object.
          type: array
          items:
            $ref: '#/components/schemas/DynamicProperty'
        missingSet:
          description: |2
            Properties for which values could not be retrieved and the associated
            fault.
          type: array
          items:
            $ref: '#/components/schemas/MissingProperty'
      required:
        - obj
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfObjectContent:
      type: object
      description: |2
        A boxed array of *ObjectContent*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ObjectContent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ObjectSpec:
      type: object
      description: |2
        Within a *PropertyFilterSpec*, the *ObjectSpec* data object type specifies the managed
        object at which the filter begins to collect the managed object
        references and properties specified by the associated *PropertySpec* set.
        
        If the "skip" property is present
        and set to true, then the filter does not check to see if the starting
        object's type matches any of the types listed in the associated sets of
        *PropertySpec* data objects.
        
        If the *ObjectSpec.selectSet* property is
        present, then this specifies additional objects to filter. These objects
        are defined by one or more *SelectionSpec*
        objects.
      properties:
        obj:
          description: |2
            Starting object.
          $ref: '#/components/schemas/ManagedObjectReference'
        skip:
          description: |2
            Flag to specify whether or not to report this managed object's
            properties.
            
            If the flag is true, the filter will not report this
            managed object's properties.
          type: boolean
        selectSet:
          description: |2
            Set of selections to specify additional objects to filter.
          type: array
          items:
            $ref: '#/components/schemas/SelectionSpec'
      required:
        - obj
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfObjectSpec:
      type: object
      description: |2
        A boxed array of *ObjectSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ObjectSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ObjectUpdate:
      type: object
      description: |2
        The *ObjectUpdate* data object type contains
        information about changes to a particular managed object.
        
        We distinguish
        updates when an object is created, destroyed, or modified, as well as
        when the object enters or leaves the set of objects dynamically
        associated with a filter.
      properties:
        kind:
          description: |2
            Kind of update that caused the filter to report a change.
          $ref: '#/components/schemas/ObjectUpdateKind_enum'
        obj:
          description: |2
            Reference to the managed object to which this update applies.
          $ref: '#/components/schemas/ManagedObjectReference'
        changeSet:
          description: |2
            Optional set of changes to the object.
            
            Present only if the "kind" is
            either "modify" or "enter".
          type: array
          items:
            $ref: '#/components/schemas/PropertyChange'
        missingSet:
          description: |2
            Properties whose value could not be retrieved and their associated
            faults.
            
            Present only if the "kind" is either "modify" or "enter".
          type: array
          items:
            $ref: '#/components/schemas/MissingProperty'
      required:
        - kind
        - obj
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfObjectUpdate:
      type: object
      description: |2
        A boxed array of *ObjectUpdate*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ObjectUpdate'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PropertySpec:
      type: object
      description: |2
        Within a *PropertyFilterSpec*, A *PropertySpec* specifies which properties should be
        reported to the client for objects of the given managed object type that
        are visited and not skipped.
        
        One more subtle side effect is that if a
        managed object is visited and not skipped, but there is no *PropertySpec* associated with the managed object's
        type, the managed object will not be reported to the client.
        
        Also, the set of properties applicable to a given managed object type
        is the union of the properties implied by the *PropertySpec* objects even, in the case of a *RetrieveResult*, where there may be an applicable
        *PropertySpec* in more than one filter.
      properties:
        type:
          description: |2
            Name of the managed object type being collected.
          type: string
        all:
          description: |2
            Specifies whether or not all properties of the object are read.
            
            If
            this property is set to true, the *PropertySpec.pathSet* property is ignored.
          type: boolean
        pathSet:
          description: |2
            Specifies which managed object properties are retrieved.
            
            If the *PropertySpec.pathSet* is empty, then the
            *PropertyCollector* retrieves references to the managed objects
            and no managed object properties are collected.
          type: array
          items:
            type: string
      required:
        - type
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfPropertySpec:
      type: object
      description: |2
        A boxed array of *PropertySpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PropertySpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    RetrieveOptions:
      type: object
      description: |2
        Options for *PropertyCollector.RetrievePropertiesEx*.
      properties:
        maxObjects:
          description: |2
            The maximum number of *ObjectContent* data
            objects that should be returned in a single result from *PropertyCollector.RetrievePropertiesEx*.
            
            An unset value indicates that there is no maximum. In this
            case *PropertyCollector* policy may still limit the number
            of objects. Any remaining objects may be retrieved with *PropertyCollector.ContinueRetrievePropertiesEx*.
            
            A positive value causes *PropertyCollector.RetrievePropertiesEx* to
            suspend the retrieval when the count of objects reaches the
            specified maximum. *PropertyCollector* policy may still
            limit the count to something less than *RetrieveOptions.maxObjects*. Any remaining
            objects may be retrieved with *PropertyCollector.ContinueRetrievePropertiesEx*.
            
            A value less than or equal to 0 is illegal.
          type: integer
          format: int32
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfRetrieveOptions:
      type: object
      description: |2
        A boxed array of *RetrieveOptions*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/RetrieveOptions'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    RetrieveResult:
      type: object
      description: |2
        Result of *PropertyCollector.RetrievePropertiesEx* and *PropertyCollector.ContinueRetrievePropertiesEx*
      properties:
        token:
          description: |2
            A token used to retrieve further retrieve results.
            
            If set, the token should be passed to *PropertyCollector.ContinueRetrievePropertiesEx* to retrieve more results. Each token
            may be passed to continueRetrievePropertiesEx only once, and only in
            the same session in which it was returned and to the same
            *PropertyCollector* object that returned it.
            
            If unset, there are no further results to retrieve after this
            *RetrieveResult*.
          type: string
        objects:
          description: |2
            retrieved objects.
          type: array
          items:
            $ref: '#/components/schemas/ObjectContent'
      required:
        - objects
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfRetrieveResult:
      type: object
      description: |2
        A boxed array of *RetrieveResult*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/RetrieveResult'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    SelectionSpec:
      type: object
      description: |2
        The *SelectionSpec* is the base type for data
        object types that specify what additional objects to filter.
        
        The base
        type contains only an optional "name" field, which allows a selection to
        be named for future reference. More information is available in the
        subtype.
        
        Named selections support recursive specifications on an object
        hierarchy. When used by a derived object, the "name" field allows other
        *SelectionSpec* objects to refer to the object by
        name. When used as the base type only, the "name" field indicates
        recursion to the derived object by name.
        
        Names are meaningful only within the same FilterSpec.
      properties:
        name:
          description: |2
            Name of the selection specification.
          type: string
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfSelectionSpec:
      type: object
      description: |2
        A boxed array of *SelectionSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/SelectionSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    TraversalSpec:
      type: object
      description: |2
        The *TraversalSpec* data object type specifies
        how to derive a new set of objects to add to the filter.
        
        It specifies a property path whose value is either another managed
        object or an array of managed objects included in the set of objects for
        consideration. This data object can also be named, using the "name"
        field in the base type.
      properties:
        type:
          description: |2
            Name of the object type containing the property.
          type: string
        path:
          description: |2
            Name of the property to use in order to select additional objects.
          type: string
        skip:
          description: |2
            Flag to indicate whether or not to filter the object in the "path"
            field.
          type: boolean
        selectSet:
          description: |2
            Optional set of selections to specify additional objects to filter.
          type: array
          items:
            $ref: '#/components/schemas/SelectionSpec'
      required:
        - type
        - path
      allOf:
        - $ref: '#/components/schemas/SelectionSpec'

    ArrayOfTraversalSpec:
      type: object
      description: |2
        A boxed array of *TraversalSpec*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/TraversalSpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    UpdateSet:
      type: object
      description: |2
        A set of updates that represent the changes since a prior call to *PropertyCollector.CheckForUpdates*, *PropertyCollector.WaitForUpdates*, or *PropertyCollector.WaitForUpdatesEx*.
      properties:
        version:
          description: |2
            New data version to pass in the next call to *PropertyCollector.CheckForUpdates*,
            *PropertyCollector.WaitForUpdates*, or *PropertyCollector.WaitForUpdatesEx*.
            
            These versions,
            although they are opaque, are strongly ordered in the sense that passing
            a version to *PropertyCollector.WaitForUpdates*, *PropertyCollector.CheckForUpdates* or
            *PropertyCollector.WaitForUpdatesEx* requests updates that reflect changes in the
            objects selected by the Filter that happened after the specified version.
          type: string
        filterSet:
          description: |2
            Set of managed object updates detected by specific filters.
            
            Updates
            are reported in sets. Each set is associated with a reference to a
            filter that detected the updates in the set.
          type: array
          items:
            $ref: '#/components/schemas/PropertyFilterUpdate'
        truncated:
          description: |2
            If true, this *UpdateSet* contains results
            from a suspended change calculation, which places restrictions on the
            use of version.
            
            The *PropertyCollector* may suspend a calculation due to server
            policy or if the total number of *ObjectUpdate* entries summed across every *PropertyFilterUpdate* reached the maximum specified in
            *WaitOptions.maxObjectUpdates*. The client
            can pass the "truncated data version" to *PropertyCollector.WaitForUpdatesEx* to
            resume the update calculation, which will start on the filter where it
            left off. A truncated data version cannot be used more than once and
            may not be passed to *PropertyCollector.CheckForUpdates* or *PropertyCollector.WaitForUpdates*. *UpdateSet.truncated* will
            never be true in an *UpdateSet* returned from
            *PropertyCollector.CheckForUpdates* or *PropertyCollector.WaitForUpdates*.
            
            If false, this *UpdateSet* contains a
            complete change calculation or the last part of a series of suspended
            change calculations. The version may be passed to *PropertyCollector.CheckForUpdates*, *PropertyCollector.WaitForUpdates*, or *PropertyCollector.WaitForUpdatesEx* more than once. Re-using a version allows a client
            to recover a change sequence after a transient failure on a previous
            call.
          type: boolean
      required:
        - version
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfUpdateSet:
      type: object
      description: |2
        A boxed array of *UpdateSet*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/UpdateSet'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    WaitOptions:
      type: object
      description: |2
        Options for *PropertyCollector.WaitForUpdatesEx*.
      properties:
        maxWaitSeconds:
          description: |2
            The number of seconds the *PropertyCollector* should wait
            before returning null.
            
            Returning updates may take longer if the
            actual calculation time exceeds *WaitOptions.maxWaitSeconds*. Additionally *PropertyCollector* policy may
            cause it to return null sooner than *WaitOptions.maxWaitSeconds*.
            
            An unset value causes *PropertyCollector.WaitForUpdatesEx* to wait as
            long as possible for updates. Policy may still cause the
            *PropertyCollector* to return null at some point.
            
            A value of 0 causes *PropertyCollector.WaitForUpdatesEx* to do one update
            calculation and return any results. This behavior is similar to *PropertyCollector.CheckForUpdates*.
            
            A positive value causes *PropertyCollector.WaitForUpdatesEx* to return
            null if no updates are available within the specified number of
            seconds. The choice of a positive value often depends on the
            client communication stack. For example it may be helpful to
            choose a duration shorter than a local HTTP request timeout.
            Typically it should be no shorter than a few minutes.
            
            A negative value is illegal.
          type: integer
          format: int32
        maxObjectUpdates:
          description: |2
            The maximum number of *ObjectUpdate*
            entries that should be returned in a single result from *PropertyCollector.WaitForUpdatesEx*.
            
            See *UpdateSet.truncated*
            
            An unset value indicates that there is no maximum. In this case
            *PropertyCollector* policy may still limit the number of objects
            that appear in an *UpdateSet*.
            
            A positive value causes *PropertyCollector.WaitForUpdatesEx* to suspend
            the update calculation when the total count of *ObjectUpdate* entries ready to return reaches
            the specified maximum. *PropertyCollector* policy may still
            limit the total count to something less than *WaitOptions.maxObjectUpdates*.
            
            A value less than or equal to 0 is illegal.
          type: integer
          format: int32
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfWaitOptions:
      type: object
      description: |2
        A boxed array of *WaitOptions*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/WaitOptions'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VslmAboutInfo:
      type: object
      description: |2
        This data object type describes system information.
        
        This structure may be used only with operations rendered under `/vslm`.
      properties:
        name:
          type: string
        fullName:
          type: string
        vendor:
          type: string
        apiVersion:
          type: string
        instanceUuid:
          type: string
      required:
        - name
        - fullName
        - vendor
        - apiVersion
        - instanceUuid
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVslmAboutInfo:
      type: object
      description: |2
        A boxed array of *VslmAboutInfo*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/vslm`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VslmAboutInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VslmQueryDatastoreInfoResult:
      type: object
      description: |2
        The *VslmQueryDatastoreInfoResult* provides mapping information
        between *Datacenter* and *Datastore*.
        
        This API is returned as a result of
        *VslmStorageLifecycleManager.VslmQueryDatastoreInfo* invocation.
        
        This structure may be used only with operations rendered under `/vslm`.
      properties:
        datacenter:
          description: |2
            Indicates the datacenter containing the
            *VslmQueryDatastoreInfoResult.datastore*.
            
            Refers instance of *Datacenter*.
          $ref: '#/components/schemas/ManagedObjectReference'
        datastore:
          description: |2
            Indicates the datastore which is contained within the
            *VslmQueryDatastoreInfoResult.datacenter*.
            
            Refers instance of *Datastore*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - datacenter
        - datastore
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVslmQueryDatastoreInfoResult:
      type: object
      description: |2
        A boxed array of *VslmQueryDatastoreInfoResult*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/vslm`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VslmQueryDatastoreInfoResult'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VslmServiceInstanceContent:
      type: object
      description: |2
        The *VslmServiceInstanceContent* data object defines properties for the
        *VslmServiceInstance* managed object.
        
        This structure may be used only with operations rendered under `/vslm`.
      properties:
        aboutInfo:
          description: |2
            Contains information that identifies the Storage Lifecycle Management
            service.
          $ref: '#/components/schemas/VslmAboutInfo'
        sessionManager:
          description: |2
            *VslmSessionManager* contains login APIs to connect to VSLM
            service.
            
            Refers instance of *VslmSessionManager*.
          $ref: '#/components/schemas/ManagedObjectReference'
        vStorageObjectManager:
          description: |2
            *VslmVStorageObjectManager* contains virtual storage object
            APIs.
            
            Refers instance of *VslmVStorageObjectManager*.
          $ref: '#/components/schemas/ManagedObjectReference'
        storageLifecycleManager:
          description: |2
            *VslmStorageLifecycleManager* contains callback APIs to VSLM
            service.
            
            Refers instance of *VslmStorageLifecycleManager*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - aboutInfo
        - sessionManager
        - vStorageObjectManager
        - storageLifecycleManager
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVslmServiceInstanceContent:
      type: object
      description: |2
        A boxed array of *VslmServiceInstanceContent*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/vslm`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VslmServiceInstanceContent'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VslmTaskInfo:
      type: object
      description: |2
        This data object type contains all information about a VSLM task.
        
        A task represents an operation performed by VirtualCenter or ESX.
        
        This structure may be used only with operations rendered under `/vslm`.
      properties:
        key:
          description: |2
            The unique key for the task.
          type: string
        task:
          description: |2
            The managed object that represents this task.
            
            Refers instance of *VslmTask*.
          $ref: '#/components/schemas/ManagedObjectReference'
        description:
          description: |2
            The description field of the task describes the current phase of
            operation of the task.
            
            For a task that does a single monolithic
            activity, this will be fixed and unchanging.
            For tasks that have various substeps, this field will change
            as the task progresses from one phase to another.
          $ref: '#/components/schemas/LocalizableMessage'
        name:
          description: |2
            The name of the operation that created the task.
            
            This is not set
            for internal tasks.
          type: string
        descriptionId:
          description: |2
            An identifier for this operation.
            
            This includes publicly visible
            internal tasks and is a lookup in the TaskDescription methodInfo
            data object.
          type: string
        entity:
          description: |2
            Managed entity to which the operation applies.
            
            Refers instance of *ManagedEntity*.
          $ref: '#/components/schemas/ManagedObjectReference'
        entityName:
          description: |2
            The name of the managed entity, locale-specific, retained for the
            history collector database.
          type: string
        locked:
          description: |2
            If the state of the task is "running", then this property is a list of
            managed entities that the operation has locked, with a shared lock.
            
            Refers instances of *ManagedEntity*.
          type: array
          items:
            $ref: '#/components/schemas/ManagedObjectReference'
        state:
          description: |2
            Runtime status of the task.
          $ref: '#/components/schemas/VslmTaskInfoState_enum'
        cancelled:
          description: |2
            Flag to indicate whether or not the client requested
            cancellation of the task.
          type: boolean
        cancelable:
          description: |2
            Flag to indicate whether or not the cancel task operation is supported.
          type: boolean
        error:
          description: |2
            If the task state is "error", then this property contains the fault code.
          $ref: '#/components/schemas/MethodFault'
        result:
          description: |2
            If the task state is "success", then this property may be used
            to hold a return value.
          $ref: '#/components/schemas/Any'
        progress:
          description: |2
            If the task state is "running", then this property contains a
            progress measurement, expressed as percentage completed, from 0 to 100.
            
            If this property is not set, then the command does not report progress.
          type: integer
          format: int32
        reason:
          description: |2
            Kind of entity responsible for creating this task.
          $ref: '#/components/schemas/VslmTaskReason'
        queueTime:
          description: |2
            Time stamp when the task was created.
          type: string
          format: date-time
        startTime:
          description: |2
            Time stamp when the task started running.
          type: string
          format: date-time
        completeTime:
          description: |2
            Time stamp when the task was completed (whether success or failure).
          type: string
          format: date-time
        eventChainId:
          description: |2
            Event chain ID that leads to the corresponding events.
          type: integer
          format: int32
        changeTag:
          description: |2
            The user entered tag to identify the operations and their side effects
          type: string
        parentTaskKey:
          description: |2
            Tasks can be created by another task.
            
            This shows *VslmTaskInfo.key* of the task spun off this task. This is to
            track causality between tasks.
          type: string
        rootTaskKey:
          description: |2
            Tasks can be created by another task and such creation can go on for
            multiple levels.
            
            This is the *VslmTaskInfo.key* of the task
            that started the chain of tasks.
          type: string
        activationId:
          description: |2
            The activation Id is a client-provided token to link an API call with a task.
          type: string
      required:
        - key
        - task
        - descriptionId
        - state
        - cancelled
        - cancelable
        - reason
        - queueTime
        - eventChainId
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVslmTaskInfo:
      type: object
      description: |2
        A boxed array of *VslmTaskInfo*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/vslm`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VslmTaskInfo'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VslmTaskReason:
      type: object
      description: |2
        Base type for all task reasons.
        
        Task reasons represent the kind of entity responsible for a task's creation.
        
        This structure may be used only with operations rendered under `/vslm`.
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVslmTaskReason:
      type: object
      description: |2
        A boxed array of *VslmTaskReason*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/vslm`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VslmTaskReason'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VslmTaskReasonAlarm:
      type: object
      description: |2
        Indicates that the task was queued by an alarm.
        
        This structure may be used only with operations rendered under `/vslm`.
      properties:
        alarmName:
          description: |2
            The name of the alarm that queued the task, retained in the history
            collector database.
          type: string
        alarm:
          description: |2
            The alarm object that queued the task.
            
            Refers instance of *Alarm*.
          $ref: '#/components/schemas/ManagedObjectReference'
        entityName:
          description: |2
            The name of the managed entity on which the alarm is triggered,
            retained in the history collector database.
          type: string
        entity:
          description: |2
            The managed entity object on which the alarm is triggered.
            
            Refers instance of *ManagedEntity*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - alarmName
        - alarm
        - entityName
        - entity
      allOf:
        - $ref: '#/components/schemas/VslmTaskReason'

    ArrayOfVslmTaskReasonAlarm:
      type: object
      description: |2
        A boxed array of *VslmTaskReasonAlarm*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/vslm`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VslmTaskReasonAlarm'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VslmTaskReasonSchedule:
      type: object
      description: |2
        Indicates that the task was queued by a scheduled task.
        
        This structure may be used only with operations rendered under `/vslm`.
      properties:
        name:
          description: |2
            The name of the scheduled task that queued this task.
          type: string
        scheduledTask:
          description: |2
            The scheduledTask object that queued this task.
            
            Refers instance of *ScheduledTask*.
          $ref: '#/components/schemas/ManagedObjectReference'
      required:
        - name
        - scheduledTask
      allOf:
        - $ref: '#/components/schemas/VslmTaskReason'

    ArrayOfVslmTaskReasonSchedule:
      type: object
      description: |2
        A boxed array of *VslmTaskReasonSchedule*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/vslm`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VslmTaskReasonSchedule'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VslmTaskReasonSystem:
      type: object
      description: |2
        Indicates that the task was started by the system (a default task).
        
        This structure may be used only with operations rendered under `/vslm`.
      allOf:
        - $ref: '#/components/schemas/VslmTaskReason'

    ArrayOfVslmTaskReasonSystem:
      type: object
      description: |2
        A boxed array of *VslmTaskReasonSystem*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/vslm`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VslmTaskReasonSystem'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VslmTaskReasonUser:
      type: object
      description: |2
        Indicates that the task was queued by a specific user.
        
        This structure may be used only with operations rendered under `/vslm`.
      properties:
        userName:
          description: |2
            Name of the user that queued the task.
          type: string
      required:
        - userName
      allOf:
        - $ref: '#/components/schemas/VslmTaskReason'

    ArrayOfVslmTaskReasonUser:
      type: object
      description: |2
        A boxed array of *VslmTaskReasonUser*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/vslm`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VslmTaskReasonUser'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VslmSyncFault:
      type: object
      description: |2
        An SyncFault fault is thrown when there is a failure to synchronize
        the FCD global catalog information with the local catalog information.
        
        Pandora synchronizes the datastore periodically in the background, it
        recovers from any transient failures affecting the datastore or
        individual FCDs. In cases where the sync fault needs to be resolved
        immediately, explicitly triggering a
        *VslmStorageLifecycleManager.VslmSyncDatastore* should resolve the
        issue, unless there are underlying infrastructure issues affecting the
        datastore or FCD. If the fault is ignored there is
        a possibility that the FCD is unrecognized by Pandora or Pandora
        DB having stale information, consequently, affecting the return of
        *VslmVStorageObjectManager.VslmListVStorageObjectForSpec* and
        *VslmVStorageObjectManager.VslmRetrieveVStorageObjects* APIs.
        In cases where the *VslmSyncFault.id* is specified,
        the client can explicitly trigger
        *VslmStorageLifecycleManager.VslmSyncDatastore* to resolve
        the issue, else, could ignore the fault in anticipation of Pandora
        automatically resolving the error.
        
        This structure may be used only with operations rendered under `/vslm`.
      properties:
        id:
          $ref: '#/components/schemas/ID'
      allOf:
        - $ref: '#/components/schemas/VslmFault'

    ArrayOfVslmSyncFault:
      type: object
      description: |2
        A boxed array of *VslmSyncFault*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/vslm`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VslmSyncFault'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VslmFault:
      type: object
      description: |2
        The super class for all VSLM Faults.
        
        This structure may be used only with operations rendered under `/vslm`.
      properties:
        msg:
          description: |2
            The fault message if available.
          type: string
      allOf:
        - $ref: '#/components/schemas/MethodFault'

    ArrayOfVslmFault:
      type: object
      description: |2
        A boxed array of *VslmFault*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/vslm`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VslmFault'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VslmDatastoreSyncStatus:
      type: object
      description: |2
        DatastoreSyncStatus shows the catalog sync status of a datastore
        and is returned as a result of the VStorageObjectManager
        getGlobalCatalogSyncStatus API.
        
        When syncVClock == objectVClock the global catalog is in sync with the
        local catalog
        
        This structure may be used only with operations rendered under `/vslm`.
      properties:
        datastoreURL:
          description: |2
            The datastore URL as specified in *DatastoreInfo.url*
          type: string
        objectVClock:
          type: integer
          format: int64
        syncVClock:
          type: integer
          format: int64
        syncTime:
          description: |2
            The time representing the last successfull sync of the datastore.
          type: string
          format: date-time
        numberOfRetries:
          description: |2
            The number of retries for the Datastore synchronization in failure
            cases.
          type: integer
          format: int32
        error:
          description: |2
            The fault is set in case of error conditions.
            
            If the fault is set,
            the objectVClock and syncVClock will be set to -1L.
            Possible Faults:
            SyncFault If specified datastoreURL failed to sync.
          $ref: '#/components/schemas/MethodFault'
      required:
        - datastoreURL
        - objectVClock
        - syncVClock
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVslmDatastoreSyncStatus:
      type: object
      description: |2
        A boxed array of *VslmDatastoreSyncStatus*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/vslm`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VslmDatastoreSyncStatus'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VslmVsoVStorageObjectAssociations:
      type: object
      description: |2
        This data object is a key-value pair whose key is the virtual storage
        object id, and value is the vm association information.
        
        This structure may be used only with operations rendered under `/vslm`.
      properties:
        id:
          description: |2
            ID of this virtual storage object.
          $ref: '#/components/schemas/ID'
        vmDiskAssociation:
          description: |2
            Array of vm associations related to the virtual storage object.
          type: array
          items:
            $ref: '#/components/schemas/VslmVsoVStorageObjectAssociationsVmDiskAssociation'
        fault:
          description: |2
            Received error while generating associations.
          $ref: '#/components/schemas/MethodFault'
      required:
        - id
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVslmVsoVStorageObjectAssociations:
      type: object
      description: |2
        A boxed array of *VslmVsoVStorageObjectAssociations*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/vslm`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VslmVsoVStorageObjectAssociations'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VslmVsoVStorageObjectAssociationsVmDiskAssociation:
      type: object
      description: |2
        This data object contains infomation of a VM Disk association.
        
        This structure may be used only with operations rendered under `/vslm`.
      properties:
        vmId:
          description: |2
            ID of the virtual machine.
          type: string
        diskKey:
          description: |2
            Device key of the disk attached to the VM.
          type: integer
          format: int32
      required:
        - vmId
        - diskKey
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVslmVsoVStorageObjectAssociationsVmDiskAssociation:
      type: object
      description: |2
        A boxed array of *VslmVsoVStorageObjectAssociationsVmDiskAssociation*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/vslm`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VslmVsoVStorageObjectAssociationsVmDiskAssociation'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VslmVsoVStorageObjectQueryResult:
      type: object
      description: |2
        The *VslmVsoVStorageObjectQueryResult* contains the result of
        *VslmVStorageObjectManager.VslmListVStorageObjectForSpec* API.
        
        This structure may be used only with operations rendered under `/vslm`.
      properties:
        allRecordsReturned:
          description: |2
            If set to false, more results were found than could be returned (either
            limited by maxResult input argument in the
            *VslmVStorageObjectManager.VslmListVStorageObjectForSpec* API or
            truncated because the number of results exceeded the internal limit).
          type: boolean
        id:
          description: |2
            IDs of the VStorageObjects matching the query criteria
            NOTE: This field will be removed once the dev/qe code is refactored.
            
            IDs will be returned in ascending order. If
            *VslmVsoVStorageObjectQueryResult.allRecordsReturned* is set to false,
            to get the additional results, repeat the query with ID &gt; last ID as
            part of the query spec *VslmVsoVStorageObjectQuerySpec*.
          type: array
          items:
            $ref: '#/components/schemas/ID'
        queryResults:
          description: |2
            Results of the query criteria.
            
            *IDs* will be returned in
            ascending order. If *VslmVsoVStorageObjectQueryResult.allRecordsReturned*
            is set to false,then, to get the additional results, repeat the query
            with ID &gt; last ID as part of the query spec
            *VslmVsoVStorageObjectQuerySpec*.
          type: array
          items:
            $ref: '#/components/schemas/VslmVsoVStorageObjectResult'
      required:
        - allRecordsReturned
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVslmVsoVStorageObjectQueryResult:
      type: object
      description: |2
        A boxed array of *VslmVsoVStorageObjectQueryResult*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/vslm`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VslmVsoVStorageObjectQueryResult'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VslmVsoVStorageObjectQuerySpec:
      type: object
      description: |2
        The *VslmVsoVStorageObjectQuerySpec* describes the criteria to query
        VStorageObject from global catalog.
        
        *VslmVsoVStorageObjectQuerySpec* is sent as input to
        *VslmVStorageObjectManager.VslmListVStorageObjectForSpec* API.
        
        This structure may be used only with operations rendered under `/vslm`.
      properties:
        queryField:
          description: |2
            This field specifies the searchable field.
            
            This can be one of the values from
            *VslmVsoVStorageObjectQuerySpecQueryFieldEnum_enum*.
          type: string
        queryOperator:
          description: |2
            This field specifies the operator to compare the searchable field
            *VslmVsoVStorageObjectQuerySpec.queryField* with the specified
            value *VslmVsoVStorageObjectQuerySpec.queryValue*.
            
            This can be one of the values from *VslmVsoVStorageObjectQuerySpecQueryOperatorEnum_enum*.
          type: string
        queryValue:
          description: |2
            This field specifies the value to be compared with the searchable field.
          type: array
          items:
            type: string
      required:
        - queryField
        - queryOperator
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVslmVsoVStorageObjectQuerySpec:
      type: object
      description: |2
        A boxed array of *VslmVsoVStorageObjectQuerySpec*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/vslm`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VslmVsoVStorageObjectQuerySpec'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VslmVsoVStorageObjectResult:
      type: object
      description: |2
        The *VslmVsoVStorageObjectResult* contains the result objects of
        *VslmVsoVStorageObjectQueryResult* which is returned as a result of
        *VslmVStorageObjectManager.VslmListVStorageObjectForSpec* and
        *VslmVStorageObjectManager.VslmRetrieveVStorageObjects* APIs.
        
        This structure may be used only with operations rendered under `/vslm`.
      properties:
        id:
          description: |2
            The ID of the virtual storage object.
          $ref: '#/components/schemas/ID'
        name:
          description: |2
            Name of FCD.
          type: string
        capacityInMB:
          description: |2
            The size in MB of this object.
            
            If the faults are set,
            then the capacityInMB will be -1
          type: integer
          format: int64
        createTime:
          description: |2
            The create time information of the FCD.
          type: string
          format: date-time
        datastoreUrl:
          description: |2
            The Datastore URL containing the FCD.
          type: string
        diskPath:
          description: |2
            The disk path of the FCD.
          type: string
        usedCapacityInMB:
          description: |2
            The rolled up used capacity of the FCD and it's snapshots.
            
            Returns -1L if the space information is currently unavailable.
          type: integer
          format: int64
        backingObjectId:
          description: |2
            The ID of the backing object of the virtual storage object.
          $ref: '#/components/schemas/ID'
        snapshotInfo:
          description: |2
            VStorageObjectSnapshotResult array containing information about all the
            snapshots of the virtual storage object.
          type: array
          items:
            $ref: '#/components/schemas/VslmVsoVStorageObjectSnapshotResult'
        metadata:
          description: |2
            Metadata array of key/value strings.
          type: array
          items:
            $ref: '#/components/schemas/KeyValue'
        error:
          description: |2
            The fault is set in case of error conditions and this property will
            have the reason.
            
            Possible Faults:
            NotFound If specified virtual storage object cannot be found.
          $ref: '#/components/schemas/MethodFault'
      required:
        - id
        - capacityInMB
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVslmVsoVStorageObjectResult:
      type: object
      description: |2
        A boxed array of *VslmVsoVStorageObjectResult*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/vslm`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VslmVsoVStorageObjectResult'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VslmVsoVStorageObjectSnapshotResult:
      type: object
      description: |2
        The *VslmVsoVStorageObjectSnapshotResult* contains brief information about a
        snapshot of the object *VslmVsoVStorageObjectResult* which is returned as a
        result of *VslmVStorageObjectManager.VslmRetrieveVStorageObjects* API.
        
        This structure may be used only with operations rendered under `/vslm`.
      properties:
        backingObjectId:
          description: |2
            The ID of the vsan object backing a snapshot of the virtual storage
            object.
          $ref: '#/components/schemas/ID'
        description:
          description: |2
            The description user passed in when creating this snapshot.
          type: string
        snapshotId:
          description: |2
            The ID of this snapshot, created and used in fcd layer.
          $ref: '#/components/schemas/ID'
        diskPath:
          description: |2
            The file path of this snapshot.
          type: string
      required:
        - backingObjectId
      allOf:
        - $ref: '#/components/schemas/DataObject'

    ArrayOfVslmVsoVStorageObjectSnapshotResult:
      type: object
      description: |2
        A boxed array of *VslmVsoVStorageObjectSnapshotResult*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/vslm`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VslmVsoVStorageObjectSnapshotResult'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    AgencyVMPlacementPolicyVMAntiAffinity_enum:
      type: string
      description: |2
        Defines if the deployed VMs needs to run on different hosts.
        
        Possible values:
        - `none`: Denotes no specific VM anti-affinity policy.
        - `soft`: Best effort is made the VMs to run on different hosts as long as
          this does not impact the ability of the host to satisfy current CPU
          or memory requirements for virtual machines on the system.
          
          NOTE: Currently not supported - i.e. the agency configuration is
          considered as invalid.
      enum:
        - none
        - soft

    AgencyVMPlacementPolicyVMDataAffinity_enum:
      type: string
      description: |2
        Defines if the deployed VM is affinied to run on the same host it is
        deployed on.
        
        Possible values:
        - `none`: Denotes no specific VM data affinity policy.
        - `soft`: Best effort is made the VM to run on the same host it is deployed on
          as long as this does not impact the ability of the host to satisfy
          current CPU or memory requirements for virtual machines on the
          system.
          
          NOTE: Currently not supported - i.e. the agency configuration is
          considered as invalid.
      enum:
        - none
        - soft

    AgentConfigInfoOvfDiskProvisioning_enum:
      type: string
      description: |2
        Defines the type of disk provisioning for the target Agent VMs.
        
        Possible values:
        - `none`: Denotes no specific type for disk provisioning.
          
          Disks will be
          provisioned as defaulted by vSphere.
        - `thin`: Disks will be provisioned with only used space allocated.
        - `thick`: Disks will be provisioned with full size allocated.
      enum:
        - none
        - thin
        - thick

    AgentVmHookVmState_enum:
      type: string
      description: |2
        Represents the state of the VM lifecycle.
        
        Possible values:
        - `provisioned`: The VM is provisioned and not powered-on.
        - `poweredOn`: The VM is powered on.
        - `prePowerOn`: The VM is about to be powered on as part of a VM upgrade workflow.
      enum:
        - provisioned
        - poweredOn
        - prePowerOn

    EamObjectRuntimeInfoGoalState_enum:
      type: string
      description: |2
        The <code>GoalState</code> enumeration defines the goal of the entity.
        
        Possible values:
        - `enabled`: The entity should be fully deployed and active.
          
          If the entity is an
          *Agency*, it should install VIBs and deploy and power on all agent
          virtual machines. If the entity is an *Agent*, its VIB should be installed and its
          agent virtual machine should be deployed and powered on.
        - `disabled`: The entity should be fully deployed but inactive.
          
          f the entity is an
          *Agency*, the behavior is similar to the <code>enabled</code> goal state, but
          agents are not powered on (if they have been powered on they are powered
          off).
        - `uninstalled`: The entity should be completely removed from the vCenter Server.
          
          If the entity is an
          *Agency*, no more VIBs or agent virtual machines are deployed. All installed VIBs
          installed by the *Agency* are uninstalled and any deployed agent virtual machines
          are powered off (if they have been powered on) and deleted.
          If the entity is an *Agent*, its VIB is uninstalled and the virtual machine is
          powered off and deleted.
      enum:
        - enabled
        - disabled
        - uninstalled

    EamObjectRuntimeInfoStatus_enum:
      type: string
      description: |2
        <code>Status</code> defines a health value that denotes how well the entity
        conforms to the goal state.
        
        Possible values:
        - `green`: The entity is in perfect compliance with the goal state.
        - `yellow`: The entity is actively working to reach the desired goal state.
        - `red`: The entity has reached an issue which prevents it from reaching the desired goal
          state.
          
          To remediate any offending issues, look at *EamObjectRuntimeInfo.issue*
          and use either *EamObject.Resolve* or
          *EamObject.ResolveAll*.
      enum:
        - green
        - yellow
        - red

    EsxAgentManagerMaintenanceModePolicy_enum:
      type: string
      description: |2
        <code>MaintenanceModePolicy</code> defines how ESX Agent Manager is going
        to put into maintenance mode hosts which are part of a cluster not managed
        by vSphere Lifecycle Manager.
        
        Possible values:
        - `singleHost`: Only a single host at a time will be put into maintenance mode.
        - `multipleHosts`: Hosts will be put into maintenance mode simultaneously.
          
          If vSphere DRS
          is enabled, its recommendations will be used. Otherwise, it will be
          attempted to put in maintenance mode simultaneously as many host as
          possible.
        
        ***Since:*** vEAM API 7.4
      enum:
        - singleHost
        - multipleHosts

    HooksHookType_enum:
      type: string
      description: |2
        Supported types of hooks for agents.
        
        Possible values:
        - `POST_PROVISIONING`: Hook raised for an agent immediately after a Virtual Machine was
          created.
        - `POST_POWER_ON`: Hook raised for an agent immediately after a Virtual Machine was
          powered on.
      enum:
        - POST_PROVISIONING
        - POST_POWER_ON

    SolutionsInvalidReason_enum:
      type: string
      description: |2
        Reasons solution is not valid for application.
        
        Possible values:
        - `INVALID_OVF_DESCRIPTOR`: The OVF descriptor provided in the VM source is invalid.
        - `INACCESSBLE_VM_SOURCE`: The provided VM source is inaccessible from ESX Agent Manager.
        - `INVALID_NETWORKS`: The provided networks are not suitable for application purposes.
        - `INVALID_DATASTORES`: The provided datastores are not suitable for application purposes.
        - `INVALID_RESOURCE_POOL`: The provided resource pool is not accessible or part of the cluster.
        - `INVALID_FOLDER`: The provided folder is inaccessible or not part of the same datacenter
          with the cluster.
        - `INVALID_PROPERTIES`: The provided OVF properties are insufficient to satisfy the required
          user configurable properties in the VM described in the vmSource.
        - `INVALID_TRANSITION`: The legacy agency requested for transition is not valid/cannot be
          mapped to systm Virtual Machines solution.
      enum:
        - INVALID_OVF_DESCRIPTOR
        - INACCESSBLE_VM_SOURCE
        - INVALID_NETWORKS
        - INVALID_DATASTORES
        - INVALID_RESOURCE_POOL
        - INVALID_FOLDER
        - INVALID_PROPERTIES
        - INVALID_TRANSITION

    SolutionsNonComplianceReason_enum:
      type: string
      description: |2
        Describes possible reasons a solution is non compliant.
        
        Possible values:
        - `WORKING`: There is ongoing work to acheive the desired state.
        - `ISSUE`: ESX Agent Manager has ecnountered am issue attempting to acheive the
          desired state.
        - `IN_HOOK`: ESX Agent Manager is awaiting user input to continue attempting to
          acheive the desired state.
        - `OBSOLETE_SPEC`: An obsoleted spec is currently in application for this solution.
          
          This state should take precedence over:
          - *WORKING*
          - *ISSUE*
          - *IN_HOOK*
        - `NO_SPEC`: Application for this solutiona has never been requested with
          *Solutions.Apply*.
      enum:
        - WORKING
        - ISSUE
        - IN_HOOK
        - OBSOLETE_SPEC
        - NO_SPEC

    SolutionsVMDeploymentOptimization_enum:
      type: string
      description: |2
        Virtual Machine deployment optimization strategies.
        
        Possible values:
        - `ALL_CLONES`: Utilizes all cloning methods available, will create initial snapshots
          on the Virtual Machines.
        - `FULL_CLONES_ONLY`: Utilize only full copy cloning menthods, will create initial snapshots
          on the Virtual Machines.
        - `NO_CLONES`: Virtual Machiness will not be cloned from pre-existing deployment.
      enum:
        - ALL_CLONES
        - FULL_CLONES_ONLY
        - NO_CLONES

    SolutionsVMDiskProvisioning_enum:
      type: string
      description: |2
        Provisioning types for system Virtual Machines.
        
        Possible values:
        - `THIN`: Disks will be provisioned with only used space allocated.
        - `THICK`: Disks will be provisioned with full size allocated.
      enum:
        - THIN
        - THICK

    SolutionsVmPlacementPolicy_enum:
      type: string
      description: |2
        Defines the DRS placement policies applied on the VMs.
        
        Possible values:
        - `VM_VM_ANTI_AFFINITY`: VMs are anti-affined to each other.
      enum:
        - VM_VM_ANTI_AFFINITY

    PbmLoggingConfigurationComponent_enum:
      type: string
      description: |2
        This enum corresponds to the different packages whose logging
        is configured independently by sps service.
        
        Possible values:
        - `pbm`: Modifies logging level of com.vmware.pbm package.
        - `vslm`: Modifies logging level of com.vmware.vslm package.
        - `sms`: Modifies logging level of com.vmware.vim.sms package.
        - `spbm`: Modifies logging level of com.vmware.spbm package.
        - `sps`: Modifies logging level of com.vmware.sps package.
        - `httpclient_header`: Modifies logging level of httpclient wire header.
        - `httpclient_content`: Modifies logging level of httpclient wire content.
        - `vmomi`: Modifies logging level of com.vmware.vim.vmomi package.
      enum:
        - pbm
        - vslm
        - sms
        - spbm
        - sps
        - httpclient_header
        - httpclient_content
        - vmomi

    PbmLoggingConfigurationLogLevel_enum:
      type: string
      description: |2
        This enum corresponds to the different log levels supported
        by sps service.
        
        Possible values:
        - `INFO`: Refers to INFO level logging
        - `DEBUG`: Refers to DEBUG level logging.
        - `TRACE`: Refers to TRACE level logging.
      enum:
        - INFO
        - DEBUG
        - TRACE

    PbmDebugManagerKeystoreName_enum:
      type: string
      description: |2
        This enum corresponds to the keystores used by
        sps.
        
        Possible values:
        - `SMS`: Refers to SMS keystore
        - `TRUSTED_ROOTS`: Refers to TRUSTED\_ROOTS keystore.
      enum:
        - SMS
        - TRUSTED_ROOTS

    PbmObjectType_enum:
      type: string
      description: |2
        The *PbmObjectType_enum* enumerated type
        defines vSphere Server object types that are known
        to the Storage Policy Server.
        
        See *PbmServerObjectRef*.*PbmServerObjectRef.objectType*.
        
        Possible values:
        - `virtualMachine`: Indicates a virtual machine, not including the disks, identified by the virtual machine
          identifier _virtual-machine-mor_.
        - `virtualMachineAndDisks`: Indicates the virtual machine and all its disks, identified by the virtual machine
          identifier _virtual-machine-mor_.
        - `virtualDiskId`: Indicates a virtual disk, identified by disk key
          (_virtual-machine-mor_:_disk-key_).
        - `virtualDiskUUID`: Indicates a virtual disk, identified by UUID - for First Class Storage Object support.
        - `datastore`: Indicates a datastore.
        - `vsanObjectId`: Indicates a VSAN object
        - `fileShareId`: Indicates a file service
        - `unknown`: Unknown object type.
      enum:
        - virtualMachine
        - virtualMachineAndDisks
        - virtualDiskId
        - virtualDiskUUID
        - datastore
        - vsanObjectId
        - fileShareId
        - unknown

    PbmVvolType_enum:
      type: string
      description: |2
        The *PbmVvolType_enum* enumeration type
        defines VVOL types.
        
        VvolType's are referenced to specify which objectType
        to fetch for default capability.
        
        Possible values:
        - `Config`: meta-data volume
        - `Data`: vmdk volume
        - `Swap`: swap volume
      enum:
        - Config
        - Data
        - Swap

    PbmCapabilityOperator_enum:
      type: string
      description: |2
        List of operators that are supported for constructing policy.
        
        Currently only tag based properties can use this operator.
        Other operators can be added as required.
        
        Possible values:
        - `NOT`
      enum:
        - NOT

    PbmLineOfServiceInfoLineOfServiceEnum_enum:
      type: string
      description: |2
        Denotes the line of service of a schema.
        
        Possible values:
        - `INSPECTION`
        - `COMPRESSION`
        - `ENCRYPTION`
        - `REPLICATION`
        - `CACHING`
        - `PERSISTENCE`
        - `DATA_PROVIDER`
        - `DATASTORE_IO_CONTROL`
        - `DATA_PROTECTION`
        - `STRETCHED_CLUSTER`
      enum:
        - INSPECTION
        - COMPRESSION
        - ENCRYPTION
        - REPLICATION
        - CACHING
        - PERSISTENCE
        - DATA_PROVIDER
        - DATASTORE_IO_CONTROL
        - DATA_PROTECTION
        - STRETCHED_CLUSTER

    PbmBuiltinGenericType_enum:
      type: string
      description: |2
        The *PbmBuiltinGenericType_enum* enumerated type defines the list
        of builtin generic datatypes.
        
        See
        *PbmCapabilityGenericTypeInfo*.*PbmCapabilityGenericTypeInfo.genericTypeName*.
        
        A generic datatype indicates how to interpret a collection of values
        of a specific datatype (*PbmCapabilityTypeInfo.typeName*).
        
        Possible values:
        - `VMW_RANGE`: Indicates a full or partial range of values (*PbmCapabilityRange*).
          
          A full range specifies both <code>min</code> and <code>max</code> values.
          A partial range specifies one or the other, <code>min</code> or <code>max</code>.
        - `VMW_SET`: Indicates a single value or a discrete set of values
          (*PbmCapabilityDiscreteSet*).
      enum:
        - VMW_RANGE
        - VMW_SET

    PbmBuiltinType_enum:
      type: string
      description: |2
        The *PbmBuiltinType_enum* enumerated type defines datatypes
        for storage profiles.
        
        Property metadata
        (*PbmCapabilityPropertyMetadata*) uses the builtin types
        to define data types for storage capabilities and requirements.
        It may also specify the semantics that are applied to a collection
        of builtin type values. See *PbmCapabilityTypeInfo*.
        These semantics are specified as a generic builtin type.
        See *PbmCapabilityGenericTypeInfo*.
        The type information determines how capability constraints are interpreted
        *PbmCapabilityPropertyInstance.value*).
        
        Possible values:
        - `XSD_LONG`: Unsigned long value.
          
          This datatype supports the following constraint values.
          - Single value
          - Full or partial range of values (*PbmCapabilityRange*)
          - Discrete set of values (*PbmCapabilityDiscreteSet*)
        - `XSD_SHORT`: Datatype not supported.
        - `XSD_INTEGER`: Datatype not supported.
          
          Use XSD\_INT instead.
        - `XSD_INT`: Integer value.
          
          This datatype supports the following constraint values.
          - Single value
          - Full or partial range of values (*PbmCapabilityRange*)
          - Discrete set of values (*PbmCapabilityDiscreteSet*)
        - `XSD_STRING`: String value.
          
          This datatype supports a single value
          or a discrete set of values (*PbmCapabilityDiscreteSet*).
        - `XSD_BOOLEAN`: Boolean value.
        - `XSD_DOUBLE`: Double precision floating point value.
          
          This datatype supports the following
          constraint values.
          - Single value
          - Full or partial range of values (*PbmCapabilityRange*)
          - Discrete set of values (*PbmCapabilityDiscreteSet*)
        - `XSD_DATETIME`: Date and time value.
        - `VMW_TIMESPAN`: Timespan value (*PbmCapabilityTimeSpan*).
          
          This datatype supports
          the following constraint values.
          - Single value
          - Full or partial range of values (*PbmCapabilityRange*)
          - Discrete set of values (*PbmCapabilityDiscreteSet*)
        - `VMW_POLICY`
      enum:
        - XSD_LONG
        - XSD_SHORT
        - XSD_INTEGER
        - XSD_INT
        - XSD_STRING
        - XSD_BOOLEAN
        - XSD_DOUBLE
        - XSD_DATETIME
        - VMW_TIMESPAN
        - VMW_POLICY

    PbmCapabilityTimeUnitType_enum:
      type: string
      description: |2
        The *PbmCapabilityTimeUnitType_enum* enumeration type
        defines the supported list of time units for profiles that specify
        time span capabilities and constraints.
        
        See *PbmCapabilityTimeSpan*.
        
        Possible values:
        - `SECONDS`: Constraints and capabilities expressed in units of seconds.
        - `MINUTES`: Constraints and capabilities expressed in units of minutes.
        - `HOURS`: Constraints and capabilities expressed in units of hours.
        - `DAYS`: Constraints and capabilities expressed in units of days.
        - `WEEKS`: Constraints and capabilities expressed in units of weeks.
        - `MONTHS`: Constraints and capabilities expressed in units of months.
        - `YEARS`: Constraints and capabilities expressed in units of years.
      enum:
        - SECONDS
        - MINUTES
        - HOURS
        - DAYS
        - WEEKS
        - MONTHS
        - YEARS

    PbmComplianceStatus_enum:
      type: string
      description: |2
        The *PbmComplianceStatus_enum*
        enumeration type defines the set of status values
        for compliance operations.
        
        See *PbmComplianceResult* and
        *PbmRollupComplianceResult*.
        
        Possible values:
        - `compliant`: Entity is in compliance.
        - `nonCompliant`: Entity is out of compliance.
        - `unknown`: Compliance status of the entity is not known.
        - `notApplicable`: Compliance computation is not applicable for this entity,
          because it does not have any storage requirements that
          apply to the object-based datastore on which this entity is placed.
        - `outOfDate`: This is the same as *PbmComplianceResult.mismatch*
          variable.
          
          Compliance status becomes out-of-date when the profile
          associated with the entity is edited and not applied. The compliance
          status will remain in out-of-date compliance status until the latest
          policy is applied to the entity.
      enum:
        - compliant
        - nonCompliant
        - unknown
        - notApplicable
        - outOfDate

    PbmComplianceResultComplianceTaskStatus_enum:
      type: string
      description: |2
        The *PbmComplianceResultComplianceTaskStatus_enum*
        enumeration type defines the set of task status for compliance
        operations.
        
        See *PbmComplianceResult* and
        *PbmRollupComplianceResult*.
        
        Possible values:
        - `inProgress`: Compliance calculation is in progress.
        - `success`: Compliance calculation has succeeded.
        - `failed`: Compliance calculation failed due to some exception.
      enum:
        - inProgress
        - success
        - failed

    PbmHealthStatusForEntity_enum:
      type: string
      description: |2
        The enumeration type defines the set of health status values for an entity
        that is part of entity health operation.
        
        Possible values:
        - `red`: For file share: 'red' if the file server for this file share is in error
          state or any of its backing vSAN objects are degraded.
          
          For FCD: 'red' if the datastore on which the FCD resides is not
          accessible from any of the hosts it is mounted.
        - `yellow`: For file share: 'yellow' if some backing objects are repairing, i.e.
          
          warning state.
          For FCD: 'yellow' if the datastore on which the entity resides is
          accessible only from some of the hosts it is mounted but not all.
        - `green`: For file share: 'green' if the file server for this file share is
          running properly and all its backing vSAN objects are healthy.
          
          For FCD: 'green' if the datastore on which the entity resides
          is accessible from all the hosts it is mounted.
        - `unknown`: If the health status of a file share is unknown, not valid for FCD.
      enum:
        - red
        - yellow
        - green
        - unknown

    PbmAssociateAndApplyPolicyStatusPolicyStatus_enum:
      type: string
      description: |2
        Possible values:
        - `success`: Policy applied successfully.
        - `failed`: Policy cannot be applied
        - `invalid`: Policy cannot be applied
      enum:
        - success
        - failed
        - invalid

    PbmProfileCategoryEnum_enum:
      type: string
      description: |2
        The *PbmProfileCategoryEnum_enum*
        enumerated type defines the profile categories for a capability-based
        storage profile.
        
        See
        *PbmCapabilityProfile*.
        
        Possible values:
        - `REQUIREMENT`: Indicates a storage requirement.
          
          Requirements are based on
          storage capabilities.
        - `RESOURCE`: Indicates a storage capability.
          
          Storage capabilities
          are defined by storage providers.
        - `DATA_SERVICE_POLICY`: Indicates a data service policy that can be embedded into
          another storage policy.
          
          Policies of this type can't be assigned to
          Virtual Machines or Virtual Disks.
      enum:
        - REQUIREMENT
        - RESOURCE
        - DATA_SERVICE_POLICY

    PbmSystemCreatedProfileType_enum:
      type: string
      description: |2
        System pre-created profile types.
        
        Possible values:
        - `VsanDefaultProfile`: Indicates the system pre-created editable VSAN default profile.
        - `VVolDefaultProfile`: Indicates the system pre-created non-editable default profile
          for VVOL datastores.
        - `PmemDefaultProfile`: Indicates the system pre-created non-editable default profile
          for PMem datastores
        - `VmcManagementProfile`: Indicates the system pre-created non-editable VMC default profile.
        - `VsanMaxDefaultProfile`: Indicates the system pre-created non-editable VSANMAX default profile.
      enum:
        - VsanDefaultProfile
        - VVolDefaultProfile
        - PmemDefaultProfile
        - VmcManagementProfile
        - VsanMaxDefaultProfile

    PbmOperation_enum:
      type: string
      description: |2
        The *PbmOperation_enum* enumerated type
        defines the provisioning operation being performed on the entity like FCD, virtual machine.
        
        Possible values:
        - `CREATE`: Indicates create operation of an entity.
        - `REGISTER`: Indicates register operation of an entity.
        - `RECONFIGURE`: Indicates reconfigure operation of an entity.
        - `MIGRATE`: Indicates migrate operation of an entity.
        - `CLONE`: Indicates clone operation of an entity.
      enum:
        - CREATE
        - REGISTER
        - RECONFIGURE
        - MIGRATE
        - CLONE

    PbmIofilterInfoFilterType_enum:
      type: string
      description: |2
        Recognized types of an IO Filter.
        
        String constant used in `IofilterInfo#filterType`.
        These should match(upper case) the IO Filter classes as defined by IO Filter framework.
        See https://opengrok.eng.vmware.com/source/xref/vmcore-main.perforce.1666/bora/scons/apps/esx/iofilterApps.sc#33
        
        Possible values:
        - `INSPECTION`
        - `COMPRESSION`
        - `ENCRYPTION`
        - `REPLICATION`
        - `CACHE`
        - `DATAPROVIDER`
        - `DATASTOREIOCONTROL`
      enum:
        - INSPECTION
        - COMPRESSION
        - ENCRYPTION
        - REPLICATION
        - CACHE
        - DATAPROVIDER
        - DATASTOREIOCONTROL

    PbmPolicyAssociationVolumeAllocationType_enum:
      type: string
      description: |2
        Volume allocation type constants.
        
        Possible values:
        - `FullyInitialized`: Space required is fully allocated and initialized.
          
          It is wiped clean of any previous content on the
          physical media. Gives faster runtime IO performance.
        - `ReserveSpace`: Space required is fully allocated.
          
          It may contain
          stale data on the physical media.
        - `ConserveSpaceWhenPossible`: Space required is allocated and zeroed on demand
          as the space is used.
      enum:
        - FullyInitialized
        - ReserveSpace
        - ConserveSpaceWhenPossible

    PbmProfileResourceTypeEnum_enum:
      type: string
      description: |2
        The *PbmProfileResourceTypeEnum_enum* enumerated type defines the set of resource
        types that are supported for profile management.
        
        See *PbmProfileResourceType*.
        
        Possible values:
        - `STORAGE`: Indicates resources that support storage profiles.
      enum:
        - STORAGE

    PbmVmOperation_enum:
      type: string
      description: |2
        The *PbmVmOperation_enum* enumerated type
        defines the provisioning operation being performed on the virtual machine.
        
        Possible values:
        - `CREATE`: Indicates create operation of a virtual machine.
        - `RECONFIGURE`: Indicates reconfigure operation of a virtual machine.
        - `MIGRATE`: Indicates migrate operation of a virtual machine.
        - `CLONE`: Indicates clone operation of a virtual machine.
      enum:
        - CREATE
        - RECONFIGURE
        - MIGRATE
        - CLONE

    EntityReferenceEntityType_enum:
      type: string
      description: |2
        Types of entities supported by the service.
        
        Possible values:
        - `datacenter`
        - `resourcePool`
        - `storagePod`
        - `cluster`
        - `vm`
        - `datastore`
        - `host`
        - `vmFile`
        - `scsiPath`
        - `scsiTarget`
        - `scsiVolume`
        - `scsiAdapter`
        - `nasMount`
      enum:
        - datacenter
        - resourcePool
        - storagePod
        - cluster
        - vm
        - datastore
        - host
        - vmFile
        - scsiPath
        - scsiTarget
        - scsiVolume
        - scsiAdapter
        - nasMount

    EntityReferenceEntityType:
      type: object
      description: |2
        A boxed *EntityReferenceEntityType_enum*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        _value:
          $ref: '#/components/schemas/EntityReferenceEntityType_enum'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ArrayOfEntityReferenceEntityType:
      type: object
      description: |2
        A boxed array of *EntityReferenceEntityType_enum*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/sms`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/EntityReferenceEntityType_enum'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    SmsTaskState_enum:
      type: string
      description: |2
        List of possible states of a task.
        
        Possible values:
        - `queued`: Task is put in the queue.
        - `running`: Task is currently running.
        - `success`: Task has completed.
        - `error`: Task has encountered an error or has been canceled.
      enum:
        - queued
        - running
        - success
        - error

    VpCategory_enum:
      type: string
      description: |2
        A Category to indicate whether provider is of internal or external category.
        
        This classification can help selectively enable few administrative functions
        such as say unregistration of a provider.
        
        Possible values:
        - `internal`: An internal provider category indicates the set of providers such as IOFILTERS and VSAN.
        - `external`: An external provider category indicates the set of providers are external and not belong
          to say either of IOFILTERS or VSAN category.
      enum:
        - internal
        - external

    VasaProviderCertificateStatus_enum:
      type: string
      description: |2
        The status of the provider certificate
        
        Possible values:
        - `valid`: Provider certificate is valid.
        - `expirySoftLimitReached`: Provider certificate is within the soft limit threshold.
        - `expiryHardLimitReached`: Provider certificate is within the hard limit threshold.
        - `expired`: Provider certificate has expired.
        - `invalid`: Provider certificate is revoked, malformed or missing.
      enum:
        - valid
        - expirySoftLimitReached
        - expiryHardLimitReached
        - expired
        - invalid

    ProviderProfile_enum:
      type: string
      description: |2
        Profiles supported by VASA Provider.
        
        Possible values:
        - `ProfileBasedManagement`: PBM profile
        - `Replication`: Replication profile
      enum:
        - ProfileBasedManagement
        - Replication

    VpType_enum:
      type: string
      description: |2
        VASA Provider type.
        
        Possible values:
        - `PERSISTENCE`: Persistence provider.
        - `DATASERVICE`: DataService provider.
          
          No storage supported for this type of provider.
        - `UNKNOWN`: Type is unknown.
          
          VASA provider type can be UNKNOWN when it is undergoing sync operation.
      enum:
        - PERSISTENCE
        - DATASERVICE
        - UNKNOWN

    VasaProviderProfile_enum:
      type: string
      description: |2
        Deprecated as of SMS API 3.0, use *VasaProfile_enum*.
        
        Profiles supported by VASA Provider.
        
        Possible values:
        - `blockDevice`: Block device profile
        - `fileSystem`: File system profile
        - `capability`: Storage capability profile
      enum:
        - blockDevice
        - fileSystem
        - capability

    VasaProviderStatus_enum:
      type: string
      description: |2
        The operational state of VASA Provider.
        
        Possible values:
        - `online`: VASA Provider is operating correctly.
        - `offline`: VASA Provider is not responding, e.g.
          
          communication error due to temporary
          network outage. SMS keeps polling the provider in this state.
        - `syncError`: VASA Provider is connected, but sync operation failed.
        - `unknown`: 
          
          Deprecated as of SMS API 4.0, this status is deprecated.
          
          VASA Provider is unreachable.
        - `connected`: VASA Provider is connected, but has not triggered sync operation.
        - `disconnected`: VASA Provider is disconnected, e.g.
          
          failed to establish a valid
          SSL connection to the provider. SMS stops communication with the
          provider in this state. The user can reconnect to the provider by invoking
          *VasaProvider.VasaProviderReconnect_Task*.
      enum:
        - online
        - offline
        - syncError
        - unknown
        - connected
        - disconnected

    VasaAuthenticationType_enum:
      type: string
      description: |2
        VASA provider authentication type.
        
        Possible values:
        - `LoginByToken`: Login using SAML token.
        - `UseSessionId`: Use id of an existing session that has logged-in from somewhere else.
      enum:
        - LoginByToken
        - UseSessionId

    SmsAlarmStatus_enum:
      type: string
      description: |2
        Enumeration of the supported Alarm Status values
        
        Possible values:
        - `Red`
        - `Green`
        - `Yellow`
      enum:
        - Red
        - Green
        - Yellow

    AlarmType_enum:
      type: string
      description: |2
        Possible values:
        - `SpaceCapacityAlarm`
        - `CapabilityAlarm`
        - `StorageObjectAlarm`
        - `ObjectAlarm`
        - `ComplianceAlarm`
        - `ManageabilityAlarm`
        - `ReplicationAlarm`
        - `CertificateAlarm`
      enum:
        - SpaceCapacityAlarm
        - CapabilityAlarm
        - StorageObjectAlarm
        - ObjectAlarm
        - ComplianceAlarm
        - ManageabilityAlarm
        - ReplicationAlarm
        - CertificateAlarm

    BackingStoragePoolType_enum:
      type: string
      description: |2
        List of possible BackingStoragePool types
        
        Possible values:
        - `thinProvisioningPool`
        - `deduplicationPool`
        - `thinAndDeduplicationCombinedPool`
      enum:
        - thinProvisioningPool
        - deduplicationPool
        - thinAndDeduplicationCombinedPool

    SmsEntityType_enum:
      type: string
      description: |2
        Enumeration of the supported Entity Type values.
        
        Possible values:
        - `StorageArrayEntity`
        - `StorageProcessorEntity`
        - `StoragePortEntity`
        - `StorageLunEntity`
        - `StorageFileSystemEntity`
        - `StorageCapabilityEntity`
        - `CapabilitySchemaEntity`
        - `CapabilityProfileEntity`
        - `DefaultProfileEntity`
        - `ResourceAssociationEntity`
        - `StorageContainerEntity`
        - `StorageObjectEntity`
        - `MessageCatalogEntity`
        - `ProtocolEndpointEntity`
        - `VirtualVolumeInfoEntity`
        - `BackingStoragePoolEntity`
        - `FaultDomainEntity`
        - `ReplicationGroupEntity`
      enum:
        - StorageArrayEntity
        - StorageProcessorEntity
        - StoragePortEntity
        - StorageLunEntity
        - StorageFileSystemEntity
        - StorageCapabilityEntity
        - CapabilitySchemaEntity
        - CapabilityProfileEntity
        - DefaultProfileEntity
        - ResourceAssociationEntity
        - StorageContainerEntity
        - StorageObjectEntity
        - MessageCatalogEntity
        - ProtocolEndpointEntity
        - VirtualVolumeInfoEntity
        - BackingStoragePoolEntity
        - FaultDomainEntity
        - ReplicationGroupEntity

    BlockDeviceInterface_enum:
      type: string
      description: |2
        List of possible block device interfaces
        
        Possible values:
        - `fc`
        - `iscsi`
        - `fcoe`
        - `otherBlock`
      enum:
        - fc
        - iscsi
        - fcoe
        - otherBlock

    FileSystemInterface_enum:
      type: string
      description: |2
        List of possible file system interfaces
        
        Possible values:
        - `nfs`
        - `otherFileSystem`
      enum:
        - nfs
        - otherFileSystem

    VasaProfile_enum:
      type: string
      description: |2
        List of possible VASA profiles supported by Storage Array
        
        Possible values:
        - `blockDevice`: Block device profile
        - `fileSystem`: File system profile
        - `capability`: Storage capability profile
        - `policy`: Policy profile
        - `object`: Object based storage profile
        - `statistics`: IO Statistics profile
        - `storageDrsBlockDevice`: Storage DRS specific block device profile
        - `storageDrsFileSystem`: Storage DRS specific file system profile
      enum:
        - blockDevice
        - fileSystem
        - capability
        - policy
        - object
        - statistics
        - storageDrsBlockDevice
        - storageDrsFileSystem

    StorageContainerVvolContainerTypeEnum_enum:
      type: string
      description: |2
        List of supported VVOL Container types
        
        Possible values:
        - `NFS`
        - `NFS4x`
        - `SCSI`
        - `NVMe`
      enum:
        - NFS
        - NFS4x
        - SCSI
        - NVMe

    FileSystemInterfaceVersion_enum:
      type: string
      description: |2
        Possible values:
        - `NFSV3_0`
      enum:
        - NFSV3_0

    ThinProvisioningStatus_enum:
      type: string
      description: |2
        List of possible values for thin provisioning status alarm.
        
        Possible values:
        - `RED`
        - `YELLOW`
        - `GREEN`
      enum:
        - RED
        - YELLOW
        - GREEN

    ReplicationReplicationState_enum:
      type: string
      description: |2
        State of the replication group at the site of the query.
        
        A replication group
        may be in different states at the source site and each of the target sites.
        Note that this state does not capture the health of the replication link. If
        necessary, that can be an additional attribute.
        
        Possible values:
        - `SOURCE`: Replication Source
        - `TARGET`: Replication target
        - `FAILEDOVER`: The group failed over at this site of the query.
          
          It has not yet been made
          as a source of replication.
        - `INTEST`: The group is InTest.
          
          The testFailover devices list will be available from
          the *TargetGroupMemberInfo*
        - `REMOTE_FAILEDOVER`: Remote group was failed over, and this site is neither the source nor the
          target.
      enum:
        - SOURCE
        - TARGET
        - FAILEDOVER
        - INTEST
        - REMOTE_FAILEDOVER

    BatchResultResult_enum:
      type: string
      description: |2
        Enum representing result of batch-APis.
        
        Possible values:
        - `success`
        - `fail`
      enum:
        - success
        - fail

    ClusterComputeResourceHCIWorkflowState_enum:
      type: string
      description: |2
        HCIWorkflowState identifies the state of the cluser from the perspective of HCI
        workflow.
        
        The workflow begins with in\_progress mode and can transition
        to 'done' or 'invalid', both of which are terminal states.
        
        Possible values:
        - `in_progress`: Indicates cluster is getting configured or will be configured.
        - `done`: Indicates cluster configuration is complete.
        - `invalid`: Indicates the workflow was abandoned on the cluster before the
          configuration could complete.
      enum:
        - in_progress
        - done
        - invalid

    ClusterComputeResourceVcsHealthStatus_enum:
      type: string
      description: |2
        Possible values:
        - `healthy`: Indicates vCS health status is normal.
        - `degraded`: Indicates only vCS is unhealthy.
        - `nonhealthy`: Indicates vCS is unhealthy and other cluster services are impacted.
          
        ***Since:*** vSphere API Release 7.0.1.1
      enum:
        - healthy
        - degraded
        - nonhealthy

    ComputeResourceHostSPBMLicenseInfoHostSPBMLicenseState_enum:
      type: string
      description: |2
        The SPBM(Storage Policy Based Management) license state for a host
        
        Possible values:
        - `licensed`: The host is licensed
        - `unlicensed`: The host is not licensed
        - `unknown`: The host license information is unknown, this could happen if the
          host is not in a available state
      enum:
        - licensed
        - unlicensed
        - unknown

    ComputeResourceHostSPBMLicenseInfoHostSPBMLicenseState:
      type: object
      description: |2
        A boxed *ComputeResourceHostSPBMLicenseInfoHostSPBMLicenseState_enum*. To be used in *Any* placeholders.
      properties:
        _value:
          $ref: '#/components/schemas/ComputeResourceHostSPBMLicenseInfoHostSPBMLicenseState_enum'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ArrayOfComputeResourceHostSPBMLicenseInfoHostSPBMLicenseState:
      type: object
      description: |2
        A boxed array of *ComputeResourceHostSPBMLicenseInfoHostSPBMLicenseState_enum*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ComputeResourceHostSPBMLicenseInfoHostSPBMLicenseState_enum'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ConfigSpecOperation_enum:
      type: string
      description: |2
        Config spec operation type.
        
        Possible values:
        - `add`: Indicates the addition of an element to the configuration.
        - `edit`: Indicates the change of an element in the configuration.
        - `remove`: Indicates the removal of an element in the configuration.
      enum:
        - add
        - edit
        - remove

    DatastoreAccessible_enum:
      type: string
      description: |2
        Possible values:
        - `True`: Is accessible
        - `False`: Is not accessible
      enum:
        - True
        - False

    DatastoreAccessible:
      type: object
      description: |2
        A boxed *DatastoreAccessible_enum*. To be used in *Any* placeholders.
      properties:
        _value:
          $ref: '#/components/schemas/DatastoreAccessible_enum'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ArrayOfDatastoreAccessible:
      type: object
      description: |2
        A boxed array of *DatastoreAccessible_enum*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DatastoreAccessible_enum'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DatastoreSummaryMaintenanceModeState_enum:
      type: string
      description: |2
        Defines the current maintenance mode state of the datastore.
        
        Possible values:
        - `normal`: Default state.
        - `enteringMaintenance`: Started entering maintenance mode, but not finished.
          
          This could happen when waiting for user input or for
          long-running vmotions to complete.
        - `inMaintenance`: Successfully entered maintenance mode.
      enum:
        - normal
        - enteringMaintenance
        - inMaintenance

    DiagnosticManagerLogCreator_enum:
      type: string
      description: |2
        Pre-defined constants for possible creators of log files.
        
        Possible values:
        - `vpxd`: VirtualCenter service
        - `vpxa`: VirtualCenter agent
        - `hostd`: Host agent
        - `serverd`: Host server agent
        - `install`: Installation
        - `vpxClient`: Virtual infrastructure client
        - `recordLog`: System Record Log
      enum:
        - vpxd
        - vpxa
        - hostd
        - serverd
        - install
        - vpxClient
        - recordLog

    DiagnosticManagerLogFormat_enum:
      type: string
      description: |2
        Constants for defined formats.
        
        For more information, see the comment for the format property.
        
        Possible values:
        - `plain`: A standard ASCII-based line-based log file.
      enum:
        - plain

    DistributedVirtualSwitchHostInfrastructureTrafficClass_enum:
      type: string
      description: |2
        List of possible host infrastructure traffic classes
        
        Possible values:
        - `management`: Management Traffic
        - `faultTolerance`: Fault Tolerance (FT) Traffic
        - `vmotion`: vMotion Traffic
        - `virtualMachine`: Virtual Machine Traffic
        - `iSCSI`: iSCSI Traffic
        - `nfs`: NFS Traffic
        - `hbr`: vSphere Replication (VR) Traffic
        - `vsan`: vSphere Storage Area Network Traffic
        - `vdp`: vSphere Data Protection - Backup Traffic
        - `backupNfc`: vSphere Backup NFC Traffic
          
          ***Since:*** vSphere API Release 7.0.1.0
        - `nvmetcp`: vSphere NVMETCP Traffic
          
          ***Since:*** vSphere API Release 7.0.3.0
      enum:
        - management
        - faultTolerance
        - vmotion
        - virtualMachine
        - iSCSI
        - nfs
        - hbr
        - vsan
        - vdp
        - backupNfc
        - nvmetcp

    DistributedVirtualSwitchNetworkResourceControlVersion_enum:
      type: string
      description: |2
        Network resource control version types.
        
        Possible values:
        - `version2`: Network Resource Control API version 2
        - `version3`: Network Resource Control API version 3
      enum:
        - version2
        - version3

    DistributedVirtualSwitchNicTeamingPolicyMode_enum:
      type: string
      description: |2
        List of possible teaming modes supported by the vNetwork Distributed
        Switch.
        
        The different policy modes define the way traffic is routed
        through the different uplink ports in a team.
        
        Possible values:
        - `loadbalance_ip`: Routing based on IP hash
        - `loadbalance_srcmac`: Route based on source MAC hash
        - `loadbalance_srcid`: Route based on the source of the port ID
        - `failover_explicit`: Use explicit failover order
        - `loadbalance_loadbased`: Routing based by dynamically balancing traffic through the NICs
          in a team.
          
          This is the recommended teaming policy when the
          network I/O control feature is enabled for the vNetwork
          Distributed Switch.
      enum:
        - loadbalance_ip
        - loadbalance_srcmac
        - loadbalance_srcid
        - failover_explicit
        - loadbalance_loadbased

    DistributedVirtualSwitchProductSpecOperationType_enum:
      type: string
      description: |2
        The product spec operation types.
        
        Possible values:
        - `preInstall`: Push the switch's host component of the specified product info to the
          host members of the switch at a fixed location known by the host.
        - `upgrade`: Change the switch implementation to use the specified one.
          
          If the
          property values in the specified product info are different from
          those of the corresponding properties in the switch's product info,
          a host component preinstall and switch upgrade will be performed.
        - `notifyAvailableUpgrade`: Set the product information for an available switch upgrade that
          would be done by the switch implementation.
          
          This operation will post
          a config issue on the switch to signal the availability of an upgrade.
          This operation is applicable only in the case when switch policy
          *DVSPolicy.autoUpgradeAllowed*
          is set to false.
        - `proceedWithUpgrade`: If productSpec is set to be same as that in the
          *DvsUpgradeAvailableEvent* configIssue, the switch
          implementation will proceed with the upgrade.
          
          To reject or stop the
          upgrade, leave the productSpec unset. If productSpec is set but does not
          match that in *DvsUpgradeAvailableEvent* configIssue,
          a fault will be raised.
          This operation is applicable only in the case when switch policy
          *DVSPolicy.autoUpgradeAllowed*
          is set to false.
        - `updateBundleInfo`: Update the bundle URL and ID information.
          
          If other properties in
          the specified product info differ from the
          corresponding properties of the switch's product info, a fault will
          be thrown. Updating the bundle ID will result in installing the new host
          component identified by the bundle ID.
      enum:
        - preInstall
        - upgrade
        - notifyAvailableUpgrade
        - proceedWithUpgrade
        - updateBundleInfo

    DrsInjectorWorkloadCorrelationState_enum:
      type: string
      description: |2
        Correlation state as computed by storageRM
        module on host.
        
        Possible values:
        - `Correlated`
        - `Uncorrelated`
      enum:
        - Correlated
        - Uncorrelated

    DrsInjectorWorkloadCorrelationState:
      type: object
      description: |2
        A boxed *DrsInjectorWorkloadCorrelationState_enum*. To be used in *Any* placeholders.
      properties:
        _value:
          $ref: '#/components/schemas/DrsInjectorWorkloadCorrelationState_enum'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ArrayOfDrsInjectorWorkloadCorrelationState:
      type: object
      description: |2
        A boxed array of *DrsInjectorWorkloadCorrelationState_enum*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DrsInjectorWorkloadCorrelationState_enum'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    FolderDesiredHostState_enum:
      type: string
      description: |2
        Possible values:
        - `maintenance`: Add host in maintenance mode.
        - `non_maintenance`: Add host in non-maintenance mode.
      enum:
        - maintenance
        - non_maintenance

    ReplicationVmState_enum:
      type: string
      description: |2
        Describes the current state of a replicated *VirtualMachine*
        
        Possible values:
        - `none`: The *VirtualMachine* has no current replication state.
          
          This is a virtual machine that is configured for replication, but is
          powered off and not undergoing offline replication.
        - `paused`: The *VirtualMachine* replication is paused.
        - `syncing`: One or more of the *VirtualMachine* disks is in the
          process of an initial synchronization with the remote site.
        - `idle`: The *VirtualMachine* is being replicated but is not
          currently in the process of having a consistent instance created.
        - `active`: The *VirtualMachine* is in the process of having
          a consistent instance created.
        - `error`: The *VirtualMachine* is unable to replicate due to
          errors.
          
          XXX Currently unused.
      enum:
        - none
        - paused
        - syncing
        - idle
        - active
        - error

    QuiesceMode_enum:
      type: string
      description: |2
        Quiescing is a boolean flag in *ReplicationConfigSpec*
        and QuiesceModeType describes the supported quiesce mode
        for *VirtualMachine*.
        
        If application quiescing fails, HBR would attempt
        filesystem quiescing and if even filesystem quiescing
        fails, then we would just create a crash consistent
        instance.
        
        Possible values:
        - `application`: HBR supports application quescing for this
          *VirtualMachine*.
        - `filesystem`: HBR supports filesystem quescing for this
          *VirtualMachine*.
        - `none`: HBR does not support quescing for this
          *VirtualMachine*.
      enum:
        - application
        - filesystem
        - none

    HealthUpdateInfoComponentType_enum:
      type: string
      description: |2
        Possible values:
        - `Memory`
        - `Power`
        - `Fan`
        - `Network`
        - `Storage`
      enum:
        - Memory
        - Power
        - Fan
        - Network
        - Storage

    HostSystemConnectionState_enum:
      type: string
      description: |2
        Defines a host's connection state.
        
        Possible values:
        - `connected`: Connected to the server.
          
          For ESX Server, this is always the setting.
        - `notResponding`: VirtualCenter is not receiving heartbeats from the server.
          
          The state
          automatically changes to connected once heartbeats are received
          again. This state is typically used to trigger an alarm on the host.
        - `disconnected`: The user has explicitly taken the host down.
          
          VirtualCenter does not expect to
          receive heartbeats from the host. The next time a heartbeat is received, the
          host is moved to the connected state again and an event is logged.
      enum:
        - connected
        - notResponding
        - disconnected

    HostSystemConnectionState:
      type: object
      description: |2
        A boxed *HostSystemConnectionState_enum*. To be used in *Any* placeholders.
      properties:
        _value:
          $ref: '#/components/schemas/HostSystemConnectionState_enum'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ArrayOfHostSystemConnectionState:
      type: object
      description: |2
        A boxed array of *HostSystemConnectionState_enum*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostSystemConnectionState_enum'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostCryptoState_enum:
      type: string
      description: |2
        Defines a host's encryption state
        
        Possible values:
        - `incapable`: The host is not safe for receiving sensitive material.
        - `prepared`: The host is prepared for receiving sensitive material
          but does not have a host key set yet.
        - `safe`: The host is crypto safe and has a host key set.
        - `pendingIncapable`: The host is explicitly crypto disabled and pending reboot to be
          applied.
          
          When host is in this state, creating encrypted virtual
          machines is not allowed, but still need a reboot to totally clean
          up and enter incapable state.
      enum:
        - incapable
        - prepared
        - safe
        - pendingIncapable

    HostSystemPowerState_enum:
      type: string
      description: |2
        Defines a host's power state.
        
        Possible values:
        - `poweredOn`: The host is powered on.
          
          A host that is entering standby mode
          *entering* is also in this state.
        - `poweredOff`: The host was specifically powered off by the user through
          VirtualCenter.
          
          This state is not a cetain state, because
          after VirtualCenter issues the command to power off the host,
          the host might crash, or kill all the processes but fail to
          power off.
        - `standBy`: The host was specifically put in standby mode, either
          explicitly by the user, or automatically by DPM.
          
          This state
          is not a cetain state, because after VirtualCenter issues the
          command to put the host in standby state, the host might
          crash, or kill all the processes but fail to power off. A host
          that is exiting standby mode *exiting*
          is also in this state.
        - `unknown`: If the host is disconnected, or notResponding, we cannot
          possibly have knowledge of its power state.
          
          Hence, the host
          is marked as unknown.
      enum:
        - poweredOn
        - poweredOff
        - standBy
        - unknown

    HostSystemPowerState:
      type: object
      description: |2
        A boxed *HostSystemPowerState_enum*. To be used in *Any* placeholders.
      properties:
        _value:
          $ref: '#/components/schemas/HostSystemPowerState_enum'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ArrayOfHostSystemPowerState:
      type: object
      description: |2
        A boxed array of *HostSystemPowerState_enum*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostSystemPowerState_enum'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostSystemRemediationStateState_enum:
      type: string
      description: |2
        Valid state for host profile remediation.
        
        Possible values:
        - `remediationReady`: Before precheck remediation and remediation.
        - `precheckRemediationRunning`: Preecheck remediation is running.
        - `precheckRemediationComplete`: Preecheck remediation succeeded.
        - `precheckRemediationFailed`: Preecheck remediation failed.
        - `remediationRunning`: Remediation is running.
        - `remediationFailed`: Remediation failed.
      enum:
        - remediationReady
        - precheckRemediationRunning
        - precheckRemediationComplete
        - precheckRemediationFailed
        - remediationRunning
        - remediationFailed

    HostStandbyMode_enum:
      type: string
      description: |2
        Defines a host's standby mode.
        
        Possible values:
        - `entering`: The host is entering standby mode.
        - `exiting`: The host is exiting standby mode.
        - `in`: The host is in standby mode.
        - `none`: The host is not in standy mode, and it is not
          in the process of entering/exiting standby mode.
      enum:
        - entering
        - exiting
        - in
        - none

    HttpNfcLeaseManifestEntryChecksumType_enum:
      type: string
      description: |2
        List of supported algorithms for checksum calculation.
        
        Possible values:
        - `sha1`
        - `sha256`
      enum:
        - sha1
        - sha256

    HttpNfcLeaseMode_enum:
      type: string
      description: |2
        List of supported modes by HttpNfcLease
        
        Possible values:
        - `pushOrGet`: Client pushes or downloads individual files from/to
          each host/url provided by this lease in *HttpNfcLease.info*
        - `pull`: Mode where hosts itself pull files from source URLs.
          
          See *HttpNfcLease.HttpNfcLeasePullFromUrls_Task*
      enum:
        - pushOrGet
        - pull

    HttpNfcLeaseState_enum:
      type: string
      description: |2
        List of possible states of a lease.
        
        Possible values:
        - `initializing`: When the lease is being initialized.
        - `ready`: When the lease is ready and disks may be transferred.
        - `done`: When the import/export session is completed, and the lease
          is no longer held.
        - `error`: When an error has occurred.
      enum:
        - initializing
        - ready
        - done
        - error

    HttpNfcLeaseState:
      type: object
      description: |2
        A boxed *HttpNfcLeaseState_enum*. To be used in *Any* placeholders.
      properties:
        _value:
          $ref: '#/components/schemas/HttpNfcLeaseState_enum'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ArrayOfHttpNfcLeaseState:
      type: object
      description: |2
        A boxed array of *HttpNfcLeaseState_enum*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HttpNfcLeaseState_enum'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    IoFilterType_enum:
      type: string
      description: |2
        Defines the type of an IO Filter.
        
        Possible values:
        - `cache`: Cache.
        - `replication`: Replication.
        - `encryption`: Encryption.
        - `compression`: Compression.
        - `inspection`: Inspection.
        - `datastoreIoControl`: Datastore I/O Control.
        - `dataProvider`: Data Provider.
        - `dataCapture`: Lightweight Data Capture.
          
          ***Since:*** vSphere API Release 7.0.2.1
      enum:
        - cache
        - replication
        - encryption
        - compression
        - inspection
        - datastoreIoControl
        - dataProvider
        - dataCapture

    IoFilterOperation_enum:
      type: string
      description: |2
        Defines the type of operation for an IO Filter.
        
        Possible values:
        - `install`: Install an IO Filter.
        - `uninstall`: Uninstall an IO Filter.
        - `upgrade`: Upgrade an IO Filter.
      enum:
        - install
        - uninstall
        - upgrade

    LatencySensitivitySensitivityLevel_enum:
      type: string
      description: |2
        Enumeration of the nominal latency-sensitive values which can be
        used to specify the latency-sensitivity level of the application.
        
        In terms of latency-sensitivity the values relate:
        high&gt;medium&gt;normal&gt;low.
        
        Possible values:
        - `low`: The relative latency-sensitivity low value.
        - `normal`: The relative latency-sensitivity normal value.
          
          This is the default latency-sensitivity value.
        - `medium`: The relative latency-sensitivity medium value.
        - `high`: The relative latency-sensitivity high value.
        - `custom`: 
          
          Deprecated as of vSphere API Ver 6.0. Value will be ignored and
          treated as "normal" latency sensitivity.
          
          The custom absolute latency-sensitivity specified in
          *LatencySensitivity.sensitivity* property is used to
          define the latency-sensitivity.
          
          When this value is set to *LatencySensitivity.level* the
          *LatencySensitivity.sensitivity* property should be
          set also.
      enum:
        - low
        - normal
        - medium
        - high
        - custom

    LatencySensitivitySensitivityLevel:
      type: object
      description: |2
        A boxed *LatencySensitivitySensitivityLevel_enum*. To be used in *Any* placeholders.
      properties:
        _value:
          $ref: '#/components/schemas/LatencySensitivitySensitivityLevel_enum'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ArrayOfLatencySensitivitySensitivityLevel:
      type: object
      description: |2
        A boxed array of *LatencySensitivitySensitivityLevel_enum*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/LatencySensitivitySensitivityLevel_enum'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    LicenseFeatureInfoUnit_enum:
      type: string
      description: |2
        Cost units apply to licenses for the purpose of determining
        how many licenses are needed.
        
        Possible values:
        - `host`: One license is acquired per host.
        - `cpuCore`: One license is acquired per CPU core.
        - `cpuPackage`: One license is acquired per CPU package.
        - `server`: One license is acquired per server.
        - `vm`: One license is acquired per virtual machine.
      enum:
        - host
        - cpuCore
        - cpuPackage
        - server
        - vm

    LicenseFeatureInfoSourceRestriction_enum:
      type: string
      description: |2
        Some licenses may only be allowed to load from a specified source.
        
        This enum indicates what restrictions exist for this license if any.
        
        Possible values:
        - `unrestricted`: The feature does not have a source restriction.
        - `served`: The feature's license can only be served.
        - `file`: The feature's license can only come from a file.
      enum:
        - unrestricted
        - served
        - file

    LicenseFeatureInfoState_enum:
      type: string
      description: |2
        Describes the state of the feature.
        
        Possible values:
        - `enabled`: The current edition license has implicitly enabled this additional feature.
        - `disabled`: The current edition license does not allow this additional feature.
        - `optional`: The current edition license allows this additional feature.
          
          The
          *LicenseManager.EnableFeature* and *LicenseManager.DisableFeature* methods can be used to enable or disable
          this feature.
      enum:
        - enabled
        - disabled
        - optional

    LicenseFeatureInfoState:
      type: object
      description: |2
        A boxed *LicenseFeatureInfoState_enum*. To be used in *Any* placeholders.
      properties:
        _value:
          $ref: '#/components/schemas/LicenseFeatureInfoState_enum'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ArrayOfLicenseFeatureInfoState:
      type: object
      description: |2
        A boxed array of *LicenseFeatureInfoState_enum*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/LicenseFeatureInfoState_enum'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostLicensableResourceKey_enum:
      type: string
      description: |2
        Identifiers of currently supported resources.
        
        Possible values:
        - `numCpuPackages`: Number of CPU packages on this host.
        - `numCpuCores`: Number of licensable CPU cores/compute-units on this host.
        - `memorySize`: Total size of memory installed on this host, measured in kilobytes.
        - `memoryForVms`: Total size of memory configured for VMs on this host, measured in kilobytes.
        - `numVmsStarted`: Number of VMs already running on this host.
        - `numVmsStarting`: Number of VMs that are currently powering-on, immigrating, etc.
        - `vsanCapacity`: vSAN capacity in TiB on this host.
          
          ***Since:*** vSphere API Release 8.0.3.0
      enum:
        - numCpuPackages
        - numCpuCores
        - memorySize
        - memoryForVms
        - numVmsStarted
        - numVmsStarting
        - vsanCapacity

    HostLicensableResourceKey:
      type: object
      description: |2
        A boxed *HostLicensableResourceKey_enum*. To be used in *Any* placeholders.
      properties:
        _value:
          $ref: '#/components/schemas/HostLicensableResourceKey_enum'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ArrayOfHostLicensableResourceKey:
      type: object
      description: |2
        A boxed array of *HostLicensableResourceKey_enum*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostLicensableResourceKey_enum'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    LicenseManagerLicenseKey_enum:
      type: string
      description: |2
        Deprecated as of VI API 2.5, use *LicenseManager.QueryLicenseSourceAvailability*
        to obtain an array of *LicenseAvailabilityInfo* data
        objects.
        
        Licensed features have unique keys to identify them.
        
        Possible values:
        - `esxFull`: The edition license for the ESX Server, Standard edition.
          
          This is a per
          CPU package license.
        - `esxVmtn`: The edition license for the ESX server, VMTN edition.
          
          This is a per CPU package
          license.
        - `esxExpress`: The edition license for the ESX server, Starter edition.
          
          This is a per CPU
          package license.
        - `san`: Enable use of SAN.
          
          This is a per CPU package license.
        - `iscsi`: Enable use of iSCSI.
          
          This is a per CPU package license.
        - `nas`: Enable use of NAS.
          
          This is a per CPU package license.
        - `vsmp`: Enable up to 4-way VSMP feature.
          
          This is a per CPU package license.
        - `backup`: Enable ESX Server consolidated backup feature.
          
          This is a per CPU package
          license.
        - `vc`: The edition license for a VirtualCenter server, full edition.
          
          This license
          is independent of the number of CPU packages for the VirtualCenter host.
        - `vcExpress`: The edition license for a VirtualCenter server, starter edition.
          
          This license
          limits the number of hosts (esxHost or serverHost) that can be managed by the
          VirtualCenter product.
        - `esxHost`: Enable VirtualCenter ESX Server host management functionality.
          
          This is a per
          ESX server CPU package license.
        - `gsxHost`: Enable VirtualCenter GSX Server host management functionality.
          
          This is a per
          GSX server CPU package license.
        - `serverHost`: Enable VirtualCenter VMware server host management functionality.
          
          This is a per
          VMware server CPU package license.
        - `drsPower`: Enable VirtualCenter DRS Power Management Functionality.
          
          This is a per CPU package
        - `vmotion`: Enable VMotion.
          
          This is a per ESX server CPU package license.
        - `drs`: Enable VirtualCenter Distributed Resource Scheduler.
          
          This is a per ESX server
          CPU package license.
        - `das`: Enable VirtualCenter HA.
          
          This is a per ESX server CPU package license.
      enum:
        - esxFull
        - esxVmtn
        - esxExpress
        - san
        - iscsi
        - nas
        - vsmp
        - backup
        - vc
        - vcExpress
        - esxHost
        - gsxHost
        - serverHost
        - drsPower
        - vmotion
        - drs
        - das

    LicenseManagerState_enum:
      type: string
      description: |2
        Deprecated as of vSphere API 4.0, this is not used by the system.
        
        State of licensing subsystem.
        
        Possible values:
        - `initializing`: Setting or resetting configuration in progress.
        - `normal`: Running within operating parameters.
        - `marginal`: License source unavailable, using license cache.
        - `fault`: Initialization has failed or grace period expired.
      enum:
        - initializing
        - normal
        - marginal
        - fault

    LicenseManagerState:
      type: object
      description: |2
        A boxed *LicenseManagerState_enum*. To be used in *Any* placeholders.
      properties:
        _value:
          $ref: '#/components/schemas/LicenseManagerState_enum'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ArrayOfLicenseManagerState:
      type: object
      description: |2
        A boxed array of *LicenseManagerState_enum*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/LicenseManagerState_enum'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    LicenseReservationInfoState_enum:
      type: string
      description: |2
        Describes the reservation state of a license.
        
        Possible values:
        - `notUsed`: This license is currently unused by the system, or the feature does not
          apply.
          
          For example, a DRS license appears as NotUsed if the host is not
          part of a DRS-enabled cluster.
        - `noLicense`: This indicates that the license has expired or the system attempted to acquire
          the license but was not successful in reserving it.
        - `unlicensedUse`: The LicenseManager failed to acquire a license but the implementation
          policy allows us to use the licensed feature anyway.
          
          This is possible, for
          example, when a license server becomes unavailable after a license had been
          successfully reserved from it.
        - `licensed`: The required number of licenses have been acquired from the license source.
      enum:
        - notUsed
        - noLicense
        - unlicensedUse
        - licensed

    LicenseReservationInfoState:
      type: object
      description: |2
        A boxed *LicenseReservationInfoState_enum*. To be used in *Any* placeholders.
      properties:
        _value:
          $ref: '#/components/schemas/LicenseReservationInfoState_enum'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ArrayOfLicenseReservationInfoState:
      type: object
      description: |2
        A boxed array of *LicenseReservationInfoState_enum*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/LicenseReservationInfoState_enum'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ManagedEntityStatus_enum:
      type: string
      description: |2
        The Status enumeration defines a general "health" value for a managed entity.
        
        Possible values:
        - `gray`: The status is unknown.
        - `green`: The entity is OK.
        - `yellow`: The entity might have a problem.
        - `red`: The entity definitely has a problem.
      enum:
        - gray
        - green
        - yellow
        - red

    ManagedEntityStatus:
      type: object
      description: |2
        A boxed *ManagedEntityStatus_enum*. To be used in *Any* placeholders.
      properties:
        _value:
          $ref: '#/components/schemas/ManagedEntityStatus_enum'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ArrayOfManagedEntityStatus:
      type: object
      description: |2
        A boxed array of *ManagedEntityStatus_enum*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ManagedEntityStatus_enum'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    OvfConsumerOstNodeType_enum:
      type: string
      description: |2
        The type of an OST node.
        
        Each OST node corresponds to an element in the OVF descriptor. See *OvfConsumerOstNode*
        for a description of the different node types.
        
        Possible values:
        - `envelope`
        - `virtualSystem`
        - `virtualSystemCollection`
      enum:
        - envelope
        - virtualSystem
        - virtualSystemCollection

    OvfCreateImportSpecParamsDiskProvisioningType_enum:
      type: string
      description: |2
        Types of disk provisioning that can be set for the disk in the deployed OVF
        package.
        
        Possible values:
        - `monolithicSparse`: A sparse (allocate on demand) monolithic disk.
          
          Disks in this format can
          be used with other VMware products.
        - `monolithicFlat`: A preallocated monolithic disk.
          
          Disks in this format can be used with
          other VMware products.
        - `twoGbMaxExtentSparse`: A sparse (allocate on demand) disk with 2GB maximum extent size.
          
          Disks in this format can be used with other VMware products. The 2GB
          extent size makes these disks easier to burn to dvd or use on
          filesystems that don't support large files.
        - `twoGbMaxExtentFlat`: A preallocated disk with 2GB maximum extent size.
          
          Disks in this format
          can be used with other VMware products. The 2GB extent size
          makes these disks easier to burn to dvd or use on filesystems that
          don't support large files.
        - `thin`: Space required for thin-provisioned virtual disk is allocated and
          zeroed on demand as the space is used.
        - `thick`: A thick disk has all space allocated at creation time
          and the space is zeroed on demand as the space is used.
        - `seSparse`: A sparse (allocate on demand) format with additional space
          optimizations.
        - `eagerZeroedThick`: An eager zeroed thick disk has all space allocated and wiped clean
          of any previous contents on the physical media at creation time.
          
          Such disks may take longer time during creation compared to other
          disk formats.
        - `sparse`: Depending on the host type, Sparse is mapped to either
          MonolithicSparse or Thin.
        - `flat`: Depending on the host type, Flat is mapped to either
          MonolithicFlat or Thick.
      enum:
        - monolithicSparse
        - monolithicFlat
        - twoGbMaxExtentSparse
        - twoGbMaxExtentFlat
        - thin
        - thick
        - seSparse
        - eagerZeroedThick
        - sparse
        - flat

    PerfSummaryType_enum:
      type: string
      description: |2
        Indicates how multiple samples of a specific counter type are
        transformed into a single statistical value.
        
        Possible values:
        - `average`: The actual value collected or the average of all values collected
          during the summary period.
        - `maximum`: The maximum value of the performance counter value over the
          summarization period.
        - `minimum`: The minimum value of the performance counter value over the
          summarization period.
        - `latest`: The most recent value of the performance counter over the
          summarization period.
        - `summation`: The sum of all the values of the performance counter over the
          summarization period.
        - `none`: The counter is never rolled up.
      enum:
        - average
        - maximum
        - minimum
        - latest
        - summation
        - none

    PerfSummaryType:
      type: object
      description: |2
        A boxed *PerfSummaryType_enum*. To be used in *Any* placeholders.
      properties:
        _value:
          $ref: '#/components/schemas/PerfSummaryType_enum'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ArrayOfPerfSummaryType:
      type: object
      description: |2
        A boxed array of *PerfSummaryType_enum*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PerfSummaryType_enum'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PerfStatsType_enum:
      type: string
      description: |2
        Indicates the type of statistical measurement that a counter&#146;s
        value represents.
        
        Valid types are &#147;absolute&#148;,
        &#147;delta&#148;, or &#147;rate&#148;.
        
        Possible values:
        - `absolute`: Represents an actual value, level, or state of the counter.
          
          For
          example, the &#147;uptime&#148; counter (**system** group)
          represents the actual number of seconds since startup. The
          &#147;capacity&#148; counter represents the actual configured size
          of the specified datastore. In other words, number of samples,
          samplingPeriod, and intervals have no bearing on an
          &#147;absolute&#148; counter&#147;s value.
        - `delta`: Represents an amount of change for the counter during the *PerfInterval.samplingPeriod* as compared to the previous
          *interval*.
          
          The first sampling interval
        - `rate`: Represents a value that has been normalized over the *PerfInterval.samplingPeriod*, enabling values for the same
          counter type to be compared, regardless of interval.
          
          For example,
          the number of reads per second.
      enum:
        - absolute
        - delta
        - rate

    PerfStatsType:
      type: object
      description: |2
        A boxed *PerfStatsType_enum*. To be used in *Any* placeholders.
      properties:
        _value:
          $ref: '#/components/schemas/PerfStatsType_enum'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ArrayOfPerfStatsType:
      type: object
      description: |2
        A boxed array of *PerfStatsType_enum*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PerfStatsType_enum'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PerformanceManagerUnit_enum:
      type: string
      description: |2
        Indicates the unit of measure represented by a counter or statistical
        value.
        
        Possible values:
        - `percent`: Percentage values in units of 1/100th of a percent.
          
          For example 100
          represents 1%.
        - `kiloBytes`: Kilobytes.
        - `megaBytes`: Megabytes.
        - `megaHertz`: Megahertz.
        - `number`: A quantity of items, for example, the number of CPUs.
        - `microsecond`: The time in microseconds.
        - `millisecond`: The time in milliseconds.
        - `second`: The time in seconds.
        - `kiloBytesPerSecond`: Kilobytes per second.
        - `megaBytesPerSecond`: Megabytes per second.
        - `watt`: Watts
        - `joule`: Joules
        - `teraBytes`: Terabytes.
        - `celsius`: Temperature in celsius.
        - `nanosecond`: The time in nanoseconds.
          
          ***Since:*** vSphere API Release 8.0.0.1
      enum:
        - percent
        - kiloBytes
        - megaBytes
        - megaHertz
        - number
        - microsecond
        - millisecond
        - second
        - kiloBytesPerSecond
        - megaBytesPerSecond
        - watt
        - joule
        - teraBytes
        - celsius
        - nanosecond

    PerfFormat_enum:
      type: string
      description: |2
        The format in which performance counter data is returned.
        
        Possible values:
        - `normal`: Counters returned in an array of data objects.
        - `csv`: Counters returned in comma-separate value (CSV) format.
      enum:
        - normal
        - csv

    ResourceConfigSpecScaleSharesBehavior_enum:
      type: string
      description: |2
        Possible values:
        - `disabled`: Do not scale shares
        - `scaleCpuAndMemoryShares`: Scale both CPU and memory shares
      enum:
        - disabled
        - scaleCpuAndMemoryShares

    VMotionCompatibilityType_enum:
      type: string
      description: |2
        Types of a host's compatibility with a designated virtual machine
        that is a candidate for VMotion.
        
        Used with queryVMotionCompatibility
        both as inputs (to designate which compatibility types to test for)
        and as outputs (to specify which compatibility types apply for
        each host).
        
        Possible values:
        - `cpu`: The host's CPU features are compatible with the
          the virtual machine's requirements.
        - `software`: The software platform on the host supports VMotion
          and is compatible with the virtual machine.
      enum:
        - cpu
        - software

    ValidateMigrationTestType_enum:
      type: string
      description: |2
        Deprecated as of vSphere API 4.0, use *CheckTestType_enum* instead.
        
        Types of tests available for validateMigration.
        
        Possible values:
        - `sourceTests`: Tests that examine only the configuration
          of the virtual machine and its current host; the destination
          resource pool and host or cluster are irrelevant.
        - `compatibilityTests`: Tests that examine both the virtual
          machine and the destination host or cluster; the destination
          resource pool is irrelevant.
          
          This set excludes tests that fall
          into the diskAccessibilityTests group.
        - `diskAccessibilityTests`: Tests that check that the
          destination host or cluster can see the datastores where the virtual
          machine's virtual disks are currently located.
          
          The destination
          resource pool is irrelevant. If you are planning to relocate the
          virtual disks, do not use these tests; instead examine the relevant
          datastore objects for your planned disk locations to see if they
          are accessible to the destination host.
        - `resourceTests`: Tests that check that the destination resource
          pool can support the virtual machine if it is powered on.
          
          The
          destination host or cluster is relevant because it will affect the
          amount of overhead memory required to run the virtual machine.
      enum:
        - sourceTests
        - compatibilityTests
        - diskAccessibilityTests
        - resourceTests

    SessionManagerGenericServiceTicketTicketType_enum:
      type: string
      description: |2
        Possible values:
        - `HttpNfcServiceTicket`: Ticket used for HttpNfc access to a file or disk on a datastore
        - `HostServiceTicket`: Ticket used for service request on a host
        - `VcServiceTicket`: Ticket used for service request on a VC
          
        ***Since:*** vSphere API Release 7.0.2.0
      enum:
        - HttpNfcServiceTicket
        - HostServiceTicket
        - VcServiceTicket

    SessionManagerHttpServiceRequestSpecMethod_enum:
      type: string
      description: |2
        HTTP request methods.
        
        Possible values:
        - `httpOptions`
        - `httpGet`
        - `httpHead`
        - `httpPost`
        - `httpPut`
        - `httpDelete`
        - `httpTrace`
        - `httpConnect`
      enum:
        - httpOptions
        - httpGet
        - httpHead
        - httpPost
        - httpPut
        - httpDelete
        - httpTrace
        - httpConnect

    SharesLevel_enum:
      type: string
      description: |2
        Simplified shares notation.
        
        These designations have different meanings for different resources.
        
        Possible values:
        - `low`: For CPU: Shares = 500 \* number of virtual CPUs  
          For Memory: Shares = 5 \* virtual machine memory size in megabytes  
          For Disk: Shares = 500  
          For Network: Shares = 0.25 \* *DVSFeatureCapability.networkResourcePoolHighShareValue*
        - `normal`: For CPU: Shares = 1000 \* number of virtual CPUs  
          For Memory: Shares = 10 \* virtual machine memory size in megabytes  
          For Disk: Shares = 1000  
          For Network: Shares = 0.5 \* *DVSFeatureCapability.networkResourcePoolHighShareValue*
        - `high`: For CPU: Shares = 2000 \* number of virtual CPUs  
          For Memory: Shares = 20 \* virtual machine memory size in megabytes  
          For Disk: Shares = 2000  
          For Network: Shares = *DVSFeatureCapability.networkResourcePoolHighShareValue*
        - `custom`: If you specify <code>custom</code> for the *SharesInfo.level* property, when there is resource contention the Server uses the *SharesInfo.shares* value to determine resource allocation.
      enum:
        - low
        - normal
        - high
        - custom

    SharesLevel:
      type: object
      description: |2
        A boxed *SharesLevel_enum*. To be used in *Any* placeholders.
      properties:
        _value:
          $ref: '#/components/schemas/SharesLevel_enum'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ArrayOfSharesLevel:
      type: object
      description: |2
        A boxed array of *SharesLevel_enum*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/SharesLevel_enum'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    SimpleCommandEncoding_enum:
      type: string
      description: |2
        The encoding of the resultant return data.
        
        This is a hint to the client side
        to indicate the format of the information being returned.
        
        Possible values:
        - `CSV`: Comma separated values
        - `HEX`: Hex encoded binary data
        - `STRING`
      enum:
        - CSV
        - HEX
        - STRING

    SimpleCommandEncoding:
      type: object
      description: |2
        A boxed *SimpleCommandEncoding_enum*. To be used in *Any* placeholders.
      properties:
        _value:
          $ref: '#/components/schemas/SimpleCommandEncoding_enum'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ArrayOfSimpleCommandEncoding:
      type: object
      description: |2
        A boxed array of *SimpleCommandEncoding_enum*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/SimpleCommandEncoding_enum'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    StorageIORMThresholdMode_enum:
      type: string
      description: |2
        Deprecated as of vSphere8.0 U3, and there is no replacement for it.
        
        User specification of congestion threshold mode on a given datastore
        
        For more information, see
        *StorageIORMInfo.congestionThreshold*
        
        Possible values:
        - `automatic`: Storagage IO Control will choose appropriate congestion threshold value
          for that datastore to operate at given percentage of peak throughput.
          
          This is the default setting
        - `manual`: Use user specified Storage IO Control congestion threshold value
      enum:
        - automatic
        - manual

    TaskFilterSpecRecursionOption_enum:
      type: string
      description: |2
        This option specifies how to select tasks based on child relationships
        in the inventory hierarchy.
        
        If a managed entity has children, their tasks
        can be retrieved with this filter option.
        
        Possible values:
        - `self`: Returns tasks that pertain only to the specified managed entity,
          and not its children.
        - `children`: Returns tasks pertaining to child entities only.
          
          Excludes
          tasks pertaining to the specified managed entity itself.
        - `all`: Returns tasks pertaining either to the specified managed entity
          or to its child entities.
      enum:
        - self
        - children
        - all

    TaskFilterSpecRecursionOption:
      type: object
      description: |2
        A boxed *TaskFilterSpecRecursionOption_enum*. To be used in *Any* placeholders.
      properties:
        _value:
          $ref: '#/components/schemas/TaskFilterSpecRecursionOption_enum'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ArrayOfTaskFilterSpecRecursionOption:
      type: object
      description: |2
        A boxed array of *TaskFilterSpecRecursionOption_enum*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/TaskFilterSpecRecursionOption_enum'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    TaskFilterSpecTimeOption_enum:
      type: string
      description: |2
        This option specifies a time stamp governing the selection of tasks.
        
        Possible values:
        - `queuedTime`: The time stamp when the task was created and queued.
        - `startedTime`: The time stamp when the task started.
        - `completedTime`: The time stamp when the task finished.
      enum:
        - queuedTime
        - startedTime
        - completedTime

    TaskFilterSpecTimeOption:
      type: object
      description: |2
        A boxed *TaskFilterSpecTimeOption_enum*. To be used in *Any* placeholders.
      properties:
        _value:
          $ref: '#/components/schemas/TaskFilterSpecTimeOption_enum'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ArrayOfTaskFilterSpecTimeOption:
      type: object
      description: |2
        A boxed array of *TaskFilterSpecTimeOption_enum*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/TaskFilterSpecTimeOption_enum'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    TaskInfoState_enum:
      type: string
      description: |2
        List of possible states of a task.
        
        Possible values:
        - `queued`: When there are too many tasks for threads to handle.
        - `running`: When the busy thread is freed from its current task by
          finishing the task, it picks a queued task to run.
          
          Then the queued tasks are marked as running.
        - `success`: When a running task has completed.
        - `error`: When a running task has encountered an error.
      enum:
        - queued
        - running
        - success
        - error

    TaskInfoState:
      type: object
      description: |2
        A boxed *TaskInfoState_enum*. To be used in *Any* placeholders.
      properties:
        _value:
          $ref: '#/components/schemas/TaskInfoState_enum'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ArrayOfTaskInfoState:
      type: object
      description: |2
        A boxed array of *TaskInfoState_enum*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/TaskInfoState_enum'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualAppVAppState_enum:
      type: string
      description: |2
        The VAppState type defines the set of states a vApp can be
        in.
        
        The transitory states between started and stopped is modeled explicitly,
        since the starting or stopping of a vApp is typically a time-consuming
        process that might take minutes to complete.
        
        Possible values:
        - `started`: The vApp is currently powered on .
        - `stopped`: The vApp is currently powered off or suspended.
        - `starting`: The vApp is in the process of starting.
        - `stopping`: The vApp is in the process of stopping.
      enum:
        - started
        - stopped
        - starting
        - stopping

    VirtualAppVAppState:
      type: object
      description: |2
        A boxed *VirtualAppVAppState_enum*. To be used in *Any* placeholders.
      properties:
        _value:
          $ref: '#/components/schemas/VirtualAppVAppState_enum'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ArrayOfVirtualAppVAppState:
      type: object
      description: |2
        A boxed array of *VirtualAppVAppState_enum*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualAppVAppState_enum'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualDiskAdapterType_enum:
      type: string
      description: |2
        The types of virtual disk adapters used by virtual disks
        
        Possible values:
        - `ide`: Use IDE emulation for the virtual disk
        - `busLogic`: Use BusLogic emulation for the virtual disk
        - `lsiLogic`: Use LSILogic emulation for the virtual disk
      enum:
        - ide
        - busLogic
        - lsiLogic

    VirtualDiskType_enum:
      type: string
      description: |2
        The types of virtual disks that can be created or cloned.
        
        Possible values:
        - `preallocated`: A preallocated disk has all space allocated at creation time
          and the space is zeroed on demand as the space is used.
        - `thin`: Space required for thin-provisioned virtual disk is allocated and
          zeroed on demand as the space is used.
        - `seSparse`: A sparse (allocate on demand) format with additional space
          optimizations.
        - `rdm`: Virtual compatibility mode raw disk mapping.
          
          An rdm virtual disk
          grants access to the entire raw disk and the virtual disk can
          participate in snapshots.
        - `rdmp`: Physical compatibility mode (pass-through) raw disk mapping.
          
          An rdmp
          virtual disk passes SCSI commands directly to the hardware, but the
          virtual disk cannot participate in snapshots.
        - `raw`: Raw device.
        - `delta`: A redo log disk.
          
          This format is only applicable as a destination format
          in a clone operation, and not usable for disk creation.
        - `sparse2Gb`: A sparse disk with 2GB maximum extent size.
          
          Disks in this format
          can be used with other VMware products. The 2GB extent size
          makes these disks easier to burn to dvd or use on filesystems that
          don't support large files. This format is only applicable as a
          destination format in a clone operation, and not usable for disk
          creation.
        - `thick2Gb`: A thick disk with 2GB maximum extent size.
          
          Disks in this format
          can be used with other VMware products. The 2GB extent size
          makes these disks easier to burn to dvd or use on filesystems that
          don't support large files. This format is only applicable as a
          destination format in a clone operation, and not usable for disk
          creation.
        - `eagerZeroedThick`: An eager zeroed thick disk has all space allocated and wiped clean
          of any previous contents on the physical media at creation time.
          
          Such disks may take longer time during creation compared to other
          disk formats.
        - `sparseMonolithic`: A sparse monolithic disk.
          
          Disks in this format can be used with other
          VMware products. This format is only applicable as a destination
          format in a clone operation, and not usable for disk creation.
        - `flatMonolithic`: A preallocated monolithic disk.
          
          Disks in this format can be used with
          other VMware products. This format is only applicable as a destination
          format in a clone operation, and not usable for disk creation.
        - `thick`: 
          
          Deprecated as of vSphere API 4.x, use *eagerZeroedThick* instead
          for clustering application, and *preallocated* for other applications.
          
          A thick disk has all space allocated at creation time.
          
          This
          space may contain stale data on the physical media. Thick disks
          are primarily used for virtual machine clustering, but they are
          generally insecure and should not be used. Due to better performance
          and security properties, the use of the 'preallocated' format is
          preferred over this format.
      enum:
        - preallocated
        - thin
        - seSparse
        - rdm
        - rdmp
        - raw
        - delta
        - sparse2Gb
        - thick2Gb
        - eagerZeroedThick
        - sparseMonolithic
        - flatMonolithic
        - thick

    VirtualMachineAppHeartbeatStatusType_enum:
      type: string
      description: |2
        Application heartbeat status type.
        
        Possible values:
        - `appStatusGray`: Heartbeat status is disabled
        - `appStatusGreen`: Heartbeat status is OK
        - `appStatusRed`: Heartbeating has stopped
      enum:
        - appStatusGray
        - appStatusGreen
        - appStatusRed

    VirtualMachineConnectionState_enum:
      type: string
      description: |2
        The connectivity state of a virtual machine.
        
        When the API is provided directly by
        a server product, such as ESX Server, then the disconnected state is not
        possible. However, when accessed through VirtualCenter, the state of a virtual
        machine is set to disconnected if the hosts that manage the virtual
        machine becomes unavailable.
        
        Possible values:
        - `connected`: The server has access to the virtual machine.
        - `disconnected`: The server is currently disconnected from the virtual machine, since its
          host is disconnected.
          
          See general comment for this enumerated type for more
          details.
        - `orphaned`: The virtual machine is no longer registered on the host it is associated
          with.
          
          For example, a virtual machine that is unregistered or deleted
          directly on a host managed by VirtualCenter shows up in this state.
        - `inaccessible`: One or more of the virtual machine configuration files are inaccessible.
          
          For
          example, this can be due to transient disk failures. In this case, no
          configuration can be returned for a virtual machine.
        - `invalid`: The virtual machine configuration format is invalid.
          
          Thus, it is accessible
          on disk, but corrupted in a way that does not allow the server to read the
          content. In this case, no configuration can be returned for a virtual
          machine.
      enum:
        - connected
        - disconnected
        - orphaned
        - inaccessible
        - invalid

    VirtualMachineConnectionState:
      type: object
      description: |2
        A boxed *VirtualMachineConnectionState_enum*. To be used in *Any* placeholders.
      properties:
        _value:
          $ref: '#/components/schemas/VirtualMachineConnectionState_enum'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ArrayOfVirtualMachineConnectionState:
      type: object
      description: |2
        A boxed array of *VirtualMachineConnectionState_enum*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineConnectionState_enum'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualMachineCryptoState_enum:
      type: string
      description: |2
        The crypto state of a encrypted virtual machine.
        
        Possible values:
        - `unlocked`: The virtual machine is in unlocked state.
        - `locked`: The virtual machine is in locked state for the configuration key missing
          on the ESX host where the VM is registered.
      enum:
        - unlocked
        - locked

    VirtualMachineFaultToleranceState_enum:
      type: string
      description: |2
        The FaultToleranceState type defines a simple set of states for a
        fault tolerant virtual machine:
        disabled, starting, and enabled.
        
        Possible values:
        - `notConfigured`: This state indicates that the virtual machine has not been
          configured for fault tolerance.
        - `disabled`: For a virtual machine that is the primary in a fault tolerant group,
          this state indicates that the virtual machine has at least one
          registered secondary, but no secondary is enabled.
          
          For a virtual machine that is the secondary in a fault tolerant
          group, this state indicates that the secondary is disabled.
        - `enabled`: For a virtual machine that is the primary in a fault tolerant group,
          this state indicates that the virtual machine is not currently
          powered on, but has at least one enabled secondary
          For a virtual machine that is the secondary in a fault tolerant
          group, this state indicates that the secondary is enabled, but is
          not currently powered on.
        - `needSecondary`: For a virtual machine that is the primary in a fault tolerant group,
          this state indicates that the virtual machine is powered on and
          has at least one enabled secondary, but no secondary is currently
          active.
          
          This state is not valid for a virtual machine that is a secondary
          in a fault tolerant group.
        - `starting`: For a virtual machine that is the primary in a fault tolerant group,
          this state indicates that the virtual machine is powered on and has
          at least one secondary that is synchronizing its state with the
          primary.
          
          For a virtual machine that is the secondary in a fault tolerant
          group, this state indicates that the secondary is powered on and is
          synchronizing its state with the primary virtual machine.
        - `running`: This state indicates that the virtual machine is running with fault
          tolerance protection.
      enum:
        - notConfigured
        - disabled
        - enabled
        - needSecondary
        - starting
        - running

    VirtualMachineFaultToleranceState:
      type: object
      description: |2
        A boxed *VirtualMachineFaultToleranceState_enum*. To be used in *Any* placeholders.
      properties:
        _value:
          $ref: '#/components/schemas/VirtualMachineFaultToleranceState_enum'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ArrayOfVirtualMachineFaultToleranceState:
      type: object
      description: |2
        A boxed array of *VirtualMachineFaultToleranceState_enum*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineFaultToleranceState_enum'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualMachineFaultToleranceType_enum:
      type: string
      description: |2
        The FaultToleranceType defines the type of fault tolerance, if any,
        the virtual machine is configured for.
        
        Possible values:
        - `unset`: FT not set
        - `recordReplay`: Record/replay
        - `checkpointing`: Checkpointing
      enum:
        - unset
        - recordReplay
        - checkpointing

    VirtualMachineMovePriority_enum:
      type: string
      description: |2
        MovePriority is an enumeration of values that indicate the priority of the task
        that moves a virtual machine from one host to another or one storage location
        to another.
        
        Note this priority can affect both the source and target hosts.
        
        Possible values:
        - `lowPriority`: The task of moving this virtual machine is low priority.
        - `highPriority`: The task of moving this virtual machine is high priority.
        - `defaultPriority`: The task of moving this virtual machine is the default priority.
      enum:
        - lowPriority
        - highPriority
        - defaultPriority

    VirtualMachineMovePriority:
      type: object
      description: |2
        A boxed *VirtualMachineMovePriority_enum*. To be used in *Any* placeholders.
      properties:
        _value:
          $ref: '#/components/schemas/VirtualMachineMovePriority_enum'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ArrayOfVirtualMachineMovePriority:
      type: object
      description: |2
        A boxed array of *VirtualMachineMovePriority_enum*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineMovePriority_enum'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualMachineNeedSecondaryReason_enum:
      type: string
      description: |2
        The NeedSecondaryReason type defines all reasons a virtual machine is
        in the needSecondary Fault Tolerance state following a failure.
        
        Possible values:
        - `initializing`: Initializing FT
        - `divergence`: Divergence
        - `lostConnection`: Lose connection to secondary
        - `partialHardwareFailure`: Partial hardware failure
        - `userAction`: Terminated by user
        - `checkpointError`: Checkpoint error
        - `other`: All other reasons
      enum:
        - initializing
        - divergence
        - lostConnection
        - partialHardwareFailure
        - userAction
        - checkpointError
        - other

    VirtualMachinePowerState_enum:
      type: string
      description: |2
        The PowerState type defines a simple set of states for a virtual machine:
        poweredOn, poweredOff, and suspended.
        
        This type does not model substates,
        such as when a task is running to change the virtual machine state.
        If the virtual machine is in a state with a task in progress, it
        transitions to a new state when the task completes. For example, a virtual
        machine continues to be in the poweredOn state while a suspend task
        is running, and changes to the suspended state once the task finishes.
        
        As a consequence of this approach, clients interested in monitoring
        the status of a virtual machine should typically track the
        *activeTask* data object in addition to the
        *powerState* object.
        
        Possible values:
        - `poweredOff`: The virtual machine is currently powered off.
        - `poweredOn`: The virtual machine is currently powered on.
        - `suspended`: The virtual machine is currently suspended.
      enum:
        - poweredOff
        - poweredOn
        - suspended

    VirtualMachinePowerState:
      type: object
      description: |2
        A boxed *VirtualMachinePowerState_enum*. To be used in *Any* placeholders.
      properties:
        _value:
          $ref: '#/components/schemas/VirtualMachinePowerState_enum'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ArrayOfVirtualMachinePowerState:
      type: object
      description: |2
        A boxed array of *VirtualMachinePowerState_enum*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachinePowerState_enum'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualMachineRecordReplayState_enum:
      type: string
      description: |2
        Deprecated as of vSphere API 6.0.
        
        The RecordReplayState type defines a simple set of record and replay
        states for a virtual machine.
        
        Possible values:
        - `recording`: The virtual machine is recording.
        - `replaying`: The virtual machine is replaying.
        - `inactive`: The virtual machine is currently not participating
          in record or replay.
      enum:
        - recording
        - replaying
        - inactive

    VirtualMachineRecordReplayState:
      type: object
      description: |2
        A boxed *VirtualMachineRecordReplayState_enum*. To be used in *Any* placeholders.
      properties:
        _value:
          $ref: '#/components/schemas/VirtualMachineRecordReplayState_enum'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ArrayOfVirtualMachineRecordReplayState:
      type: object
      description: |2
        A boxed array of *VirtualMachineRecordReplayState_enum*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineRecordReplayState_enum'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualMachineTicketType_enum:
      type: string
      description: |2
        The virtual machine ticket type.
        
        Possible values:
        - `mks`: 
          
          Deprecated as of vSphere API 8.0. Use *webmks* instead.
          
          Remote mouse-keyboard-screen ticket.
        - `device`: 
          
          Deprecated as of vSphere 8.0 API. Use *webRemoteDevice*
          instead.
          
          Remote device ticket.
        - `guestControl`: 
          
          Deprecated as of vSphere 6.6.3 API. Use
          *GuestOperationsManager* instead.
          
          Guest operation ticket.
        - `webmks`: Mouse-keyboard-screen over WebSocket ticket.
          
          MKS protocol is VNC (a.k.a. RFB) protocol with
          VMware extensions; the protocol gracefully degrades
          to standard VNC if extensions are not available.
          wss://{Ticket.host}/ticket/{Ticket.ticket}
        - `guestIntegrity`: Guest Integrity over WebSocket ticket.
          
          This ticket grants the client read-only access to guest integrity
          messages and alerts.
        - `webRemoteDevice`: Remote device over WebSocket ticket.
      enum:
        - mks
        - device
        - guestControl
        - webmks
        - guestIntegrity
        - webRemoteDevice

    VsanUpgradeSystemUpgradeHistoryDiskGroupOpType_enum:
      type: string
      description: |2
        Type of disk group operation performed.
        
        Possible values:
        - `add`: Disk group is being (re-)added.
        - `remove`: Disk group is being removed.
      enum:
        - add
        - remove

    VsanUpgradeSystemUpgradeHistoryDiskGroupOpType:
      type: object
      description: |2
        A boxed *VsanUpgradeSystemUpgradeHistoryDiskGroupOpType_enum*. To be used in *Any* placeholders.
      properties:
        _value:
          $ref: '#/components/schemas/VsanUpgradeSystemUpgradeHistoryDiskGroupOpType_enum'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ArrayOfVsanUpgradeSystemUpgradeHistoryDiskGroupOpType:
      type: object
      description: |2
        A boxed array of *VsanUpgradeSystemUpgradeHistoryDiskGroupOpType_enum*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VsanUpgradeSystemUpgradeHistoryDiskGroupOpType_enum'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ActionParameter_enum:
      type: string
      description: |2
        These constant strings can be used as parameters in user-specified
        email subject and body templates as well as in scripts.
        
        The action processor
        in VirtualCenter substitutes the run-time values for the parameters.
        For example, an email subject provided by the client could be the string:
        `Alarm - {alarmName} Description:\n{eventDescription}`.
        Or a script action provided could be: `myScript {alarmName}`.
        
        Possible values:
        - `targetName`: The name of the entity where the alarm is triggered.
        - `alarmName`: The name of the triggering alarm.
        - `oldStatus`: The status prior to the alarm being triggered.
        - `newStatus`: The status after the alarm is triggered.
        - `triggeringSummary`: A summary of information involved in triggering the alarm.
        - `declaringSummary`: A summary of declarations made during the triggering of the alarm.
        - `eventDescription`: The event description.
        - `target`: The object of the entity where the alarm is associated.
        - `alarm`: The object of the triggering alarm.
      enum:
        - targetName
        - alarmName
        - oldStatus
        - newStatus
        - triggeringSummary
        - declaringSummary
        - eventDescription
        - target
        - alarm

    AlarmFilterSpecAlarmTypeByEntity_enum:
      type: string
      description: |2
        Alarm entity type
        
        Possible values:
        - `entityTypeAll`: Alarms on all entity types.
        - `entityTypeHost`: Host alarms
        - `entityTypeVm`: VM alarms
      enum:
        - entityTypeAll
        - entityTypeHost
        - entityTypeVm

    AlarmFilterSpecAlarmTypeByTrigger_enum:
      type: string
      description: |2
        Alarm triggering type.
        
        The main divisions are event triggered and
        metric- or state-based alarms.
        
        Possible values:
        - `triggerTypeAll`: All alarm types.
        - `triggerTypeEvent`: Event based alarms
        - `triggerTypeMetric`: Metric or state alarms
      enum:
        - triggerTypeAll
        - triggerTypeEvent
        - triggerTypeMetric

    EventAlarmExpressionComparisonOperator_enum:
      type: string
      description: |2
        Basic Comparison operators
        
        Possible values:
        - `equals`: attribute equals specified value
        - `notEqualTo`: attribute does not equal specified value
        - `startsWith`: attribute starts with specified value
        - `doesNotStartWith`: attribute does not start with specified value
        - `endsWith`: attribute ends with specified value
        - `doesNotEndWith`: attribute does not end with specified value
      enum:
        - equals
        - notEqualTo
        - startsWith
        - doesNotStartWith
        - endsWith
        - doesNotEndWith

    MetricAlarmOperator_enum:
      type: string
      description: |2
        The operation on the target metric item.
        
        Possible values:
        - `isAbove`: Test if the target metric item is above the given red or yellow values.
        - `isBelow`: Test if the target metric item is below the given red or yellow values.
      enum:
        - isAbove
        - isBelow

    MetricAlarmOperator:
      type: object
      description: |2
        A boxed *MetricAlarmOperator_enum*. To be used in *Any* placeholders.
      properties:
        _value:
          $ref: '#/components/schemas/MetricAlarmOperator_enum'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ArrayOfMetricAlarmOperator:
      type: object
      description: |2
        A boxed array of *MetricAlarmOperator_enum*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/MetricAlarmOperator_enum'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    StateAlarmOperator_enum:
      type: string
      description: |2
        The operation on the target state.
        
        Possible values:
        - `isEqual`: Test if the target state matches the given red or yellow states.
        - `isUnequal`: Test if the target state does not match the given red or yellow states.
      enum:
        - isEqual
        - isUnequal

    StateAlarmOperator:
      type: object
      description: |2
        A boxed *StateAlarmOperator_enum*. To be used in *Any* placeholders.
      properties:
        _value:
          $ref: '#/components/schemas/StateAlarmOperator_enum'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ArrayOfStateAlarmOperator:
      type: object
      description: |2
        A boxed array of *StateAlarmOperator_enum*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/StateAlarmOperator_enum'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ActionType_enum:
      type: string
      description: |2
        Pre-defined constants for possible action types.
        
        Virtual Center
        uses this information to coordinate with the clients.
        
        Possible values:
        - `MigrationV1`: Migration action type
        - `VmPowerV1`: Virtual machine power action type
        - `HostPowerV1`: Host power action type
        - `HostMaintenanceV1`: Host entering maintenance mode action type
        - `StorageMigrationV1`: Storage migration action type
        - `StoragePlacementV1`: Initial placement action for a virtual machine or a virtual disk
        - `PlacementV1`: Initial placement action for a virtual machine and its virtual disks
        - `HostInfraUpdateHaV1`: Host changing infrastructure update ha mode action type.
      enum:
        - MigrationV1
        - VmPowerV1
        - HostPowerV1
        - HostMaintenanceV1
        - StorageMigrationV1
        - StoragePlacementV1
        - PlacementV1
        - HostInfraUpdateHaV1

    ClusterCryptoConfigInfoCryptoMode_enum:
      type: string
      description: |2
        Possible values:
        - `onDemand`: Put each host into the crypto safe state automatically when needed.
        - `forceEnable`: Put each host into the crypto safe state immediately.
      enum:
        - onDemand
        - forceEnable

    ClusterDasAamNodeStateDasState_enum:
      type: string
      description: |2
        The *ClusterDasAamNodeStateDasState_enum* enumerated type defines
        values for host HA configuration and runtime state properties
        (*ClusterDasAamNodeState.configState* and
        *ClusterDasAamNodeState.runtimeState*).
        
        Possible values:
        - `uninitialized`: HA has never been enabled on the the host.
        - `initialized`: HA agents have been installed but are not running on the the host.
        - `configuring`: HA configuration is in progress.
        - `unconfiguring`: HA configuration is being removed.
        - `running`: HA agent is running on this host.
        - `error`: There is an error condition.
          
          This can represent a configuration
          error or a host agent runtime error.
        - `agentShutdown`: The HA agent has been shut down.
        - `nodeFailed`: The host is not reachable.
          
          This can represent a host failure
          or an isolated host.
      enum:
        - uninitialized
        - initialized
        - configuring
        - unconfiguring
        - running
        - error
        - agentShutdown
        - nodeFailed

    ClusterDasConfigInfoHBDatastoreCandidate_enum:
      type: string
      description: |2
        The policy to determine the candidates from which vCenter Server can
        choose heartbeat datastores.
        
        Possible values:
        - `userSelectedDs`: vCenter Server chooses heartbeat datastores from the set specified
          by the user (see *ClusterDasConfigInfo.heartbeatDatastore*).
          
          More specifically,
          datastores not included in the set will not be chosen. Note that if
          *ClusterDasConfigInfo.heartbeatDatastore* is empty, datastore heartbeating will
          be disabled for HA.
        - `allFeasibleDs`: vCenter Server chooses heartbeat datastores from all the feasible ones,
          i.e., the datastores that are accessible to more than one host in
          the cluster.
          
          The choice will be made without giving preference to those
          specified by the user (see *ClusterDasConfigInfo.heartbeatDatastore*).
        - `allFeasibleDsWithUserPreference`: vCenter Server chooses heartbeat datastores from all the feasible ones
          while giving preference to those specified by the user (see *ClusterDasConfigInfo.heartbeatDatastore*).
          
          More specifically, the datastores not included in *ClusterDasConfigInfo.heartbeatDatastore* will be
          chosen if and only if the specified ones are not sufficient.
      enum:
        - userSelectedDs
        - allFeasibleDs
        - allFeasibleDsWithUserPreference

    ClusterDasConfigInfoServiceState_enum:
      type: string
      description: |2
        Possible states of an HA service.
        
        All services support the
        disabled and enabled states.
        
        Possible values:
        - `disabled`: HA service is disabled.
        - `enabled`: HA service is enabled.
      enum:
        - disabled
        - enabled

    ClusterDasConfigInfoVmMonitoringState_enum:
      type: string
      description: |2
        The *ClusterDasConfigInfoVmMonitoringState_enum* enum defines values that indicate
        the state of Virtual Machine Health Monitoring.
        
        Health Monitoring
        uses the vmTools (guest) and application agent heartbeat modules.
        You can configure HA to respond to heartbeat failures of either one
        or both modules. You can also disable the HA response to heartbeat failures.
        - To set the cluster default for health monitoring, use the
          ClusterConfigSpecEx.dasConfig.*ClusterDasConfigInfo.vmMonitoring* property.
        - To set health monitoring for a virtual machine, use the
          ClusterConfigSpecEx.dasVmConfigSpec.info.dasSettings.*ClusterDasVmSettings.vmToolsMonitoringSettings* property.
        - To retrieve the current state of health monitoring (cluster setting), use the
          ClusterConfigInfoEx.dasConfig.*ClusterDasConfigInfo.vmMonitoring*
          property.
        - To retrieve the current state of health monitoring for a virtual machine, use the
          ClusterConfigInfoEx.dasVmConfig\[\].dasSettings.vmToolsMonitoringSettings.*ClusterVmToolsMonitoringSettings.vmMonitoring*
          property.
          
        Possible values:
        - `vmMonitoringDisabled`: Virtual machine health monitoring is disabled.
          
          In this state,
          HA response to guest and application heartbeat failures are disabled.
        - `vmMonitoringOnly`: HA response to guest heartbeat failure is enabled.
          
          To retrieve the guest heartbeat status, use the
          *VirtualMachine*.*VirtualMachine.guestHeartbeatStatus*
          property.
        - `vmAndAppMonitoring`: HA response to both guest and application heartbeat failure is enabled.
          - To retrieve the guest heartbeat status, use the
            *VirtualMachine*.*VirtualMachine.guestHeartbeatStatus*
            property.
          - To retrieve the application heartbeat status, use the
            *GuestInfo*.*GuestInfo.appHeartbeatStatus*
            property.
      enum:
        - vmMonitoringDisabled
        - vmMonitoringOnly
        - vmAndAppMonitoring

    ClusterDasFdmAvailabilityState_enum:
      type: string
      description: |2
        The *ClusterDasFdmAvailabilityState_enum* enumeration describes the
        availability states of hosts in a vSphere HA cluster.
        
        In the HA
        architecture, a agent called the Fault Domain Manager runs on
        each active host. These agents elect a master and the others become
        its slaves. The availability state assigned to a given host is
        determined from information reported by the Fault Domain Manager
        running on the host, by a Fault Domain Manager that has been elected
        master, and by vCenter Server. See *ClusterDasFdmHostState*
        for more information about the vSphere HA architecture.
        
        Possible values:
        - `uninitialized`: The Fault Domain Manager for the host has not yet been
          initialized.
          
          Hence the host is not part of a vSphere HA
          fault domain. This state is reported by vCenter Server or
          by the host itself.
        - `election`: The Fault Domain Manager on the host has been initialized and
          the host is either waiting to join the existing master or
          is participating in an election for a new master.
          
          This state
          is reported by vCenter Server or by the host itself.
        - `master`: The Fault Domain Manager on the host has been elected a
          master.
          
          This state is reported by the the host itself.
        - `connectedToMaster`: The normal operating state for a slave host.
          
          In this state,
          the host is exchanging heartbeats with a master over
          the management network, and is thus connected to it. If
          there is a management network partition, the slave will be
          in this state only if it is in the same partition as the master.
          This state is reported by the master of a slave host.
        - `networkPartitionedFromMaster`: A slave host is alive and has management network connectivity, but
          the management network has been partitioned.
          
          This state is reported
          by masters that are in a partition other than the one containing the
          slave host; the master in the slave's partition will report the slave state
          as *connectedToMaster*.
        - `networkIsolated`: A host is alive but is isolated from the management network.
          
          See *ClusterDasVmSettingsIsolationResponse_enum* for the criteria
          used to determine whether a host is isolated.
        - `hostDown`: The slave host appears to be down.
          
          This state is reported by the
          master of a slave host.
        - `initializationError`: An error occurred when initilizating the Fault Domain Manager
          on a host due to a problem with installing the
          agent or configuring it.
          
          This condition can often be cleared by
          reconfiguring HA for the host. This state is reported by vCenter
          Server.
        - `uninitializationError`: An error occurred when unconfiguring the Fault Domain Manager
          running on a host.
          
          In order to clear this condition the host might
          need to be reconnected to the cluster and reconfigured first.
          This state is reported by vCenter
          Server.
        - `fdmUnreachable`: The Fault Domain Manager (FDM) on the host cannot be reached.
          
          This
          state is reported in two unlikely situations.
          - First, it is reported by
            a master if the host responds to ICMP pings sent by the master over the
            management network but the FDM on the host cannot be reached by the master.
            This situation will occur if the FDM is unable to run or exit the
            uninitialized state.
          - Second, it is reported by vCenter Server if it cannot connect to a
            master nor the FDM for the host. This situation would occur if all hosts
            in the cluster failed but vCenter Server is still running. It may also
            occur if all FDMs are unable to run or exit the uninitialized state.
        - `retry`: Config/Reconfig/upgrade operation has failed in first attempt and
          a retry of these operations is scheduled.
          
          If any of the retry attempts succeed, the state is set to initialized.
          If all retry attempts fail, the state is set to initializationError.
          This state is reported by vCenter.
          
          ***Since:*** vSphere API Release 8.0.0.0
      enum:
        - uninitialized
        - election
        - master
        - connectedToMaster
        - networkPartitionedFromMaster
        - networkIsolated
        - hostDown
        - initializationError
        - uninitializationError
        - fdmUnreachable
        - retry

    DasVmPriority_enum:
      type: string
      description: |2
        Deprecated as of VI API 2.5, use *ClusterDasVmSettingsRestartPriority_enum*.
        
        The priority of the virtual machine determines the preference
        given to it if sufficient capacity is not available to power
        on all failed virtual machines.
        
        For example, high priority
        virtual machines on a host get preference over low priority
        virtual machines.
        
        Possible values:
        - `disabled`: vSphere HA is disabled for this virtual machine.
        - `low`: Virtual machines with this priority have a lower chance of powering on after a
          failure if there is insufficient capacity on hosts to meet all virtual machine
          needs.
        - `medium`: Virtual machines with this priority have an intermediate chance of powering
          on after a failure if there is insufficient capacity on hosts to meet all
          virtual machine needs.
        - `high`: Virtual machines with this priority have a higher chance of powering on after a
          failure if there is insufficient capacity on hosts to meet all virtual machine
          needs.
      enum:
        - disabled
        - low
        - medium
        - high

    DasVmPriority:
      type: object
      description: |2
        A boxed *DasVmPriority_enum*. To be used in *Any* placeholders.
      properties:
        _value:
          $ref: '#/components/schemas/DasVmPriority_enum'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ArrayOfDasVmPriority:
      type: object
      description: |2
        A boxed array of *DasVmPriority_enum*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DasVmPriority_enum'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ClusterDasVmSettingsIsolationResponse_enum:
      type: string
      description: |2
        The *ClusterDasVmSettingsIsolationResponse_enum* enum defines
        values that indicate whether or not the virtual machine should be
        powered off if a host determines that it is isolated from the rest of
        the cluster.
        
        Host network isolation occurs when a host is still running but it can no
        longer communicate with other hosts in the cluster and it cannot ping
        the configured isolation address(es). When the HA agent on a host loses
        contact with the other hosts, it will ping the isolation addresses. If
        the pings fail, the host will declare itself isolated.
        
        Once the HA agent declares the host isolated, it will initiate the
        isolation response workflow after a 30 second delay. You can use the FDM
        advanced option fdm.isolationPolicyDelaySec to increase the delay. For
        each virtual machine, the HA agent attempts to determine if a master is
        responsible for restarting the virtual machine. If it cannot make the
        determination, or there is a master that is responsible, the agent will
        apply the configured isolation response. This workflow will continue
        until the configuration policy, has been applied to all virtual
        machines, the agent reconnects to another HA agent in the cluster, or
        the isolation address pings start succeeding. If there is a master agent
        in the cluster, it will attempt to restart the virtual machines that
        were powered off during isolation.
        
        By default, the isolated host leaves its virtual machines powered on.
        You can override the isolation response default with a cluster-wide
        setting (*ClusterDasConfigInfo.defaultVmSettings*)
        or a virtual machine setting
        (*ClusterDasVmSettings.isolationResponse*).
        - All isolation response values are valid for the
          *ClusterDasVmSettings.isolationResponse*
          property specified in a single virtual machine HA configuration.
        - All values except for <code>clusterIsolationResponse</code> are valid
          for the cluster-wide default HA configuration for virtual machines
          (*ClusterDasConfigInfo.defaultVmSettings*).
          
        If you ensure that your network infrastructure is sufficiently redundant
        and that at least one network path is available at all times, host network
        isolation should be a rare occurrence.
        
        Possible values:
        - `none`: Do not power off the virtual machine in the event of a host network
          isolation.
        - `powerOff`: Power off the virtual machine in the event of a host network
          isolation.
        - `shutdown`: Shut down the virtual machine guest operating system in the event of
          a host network isolation.
          
          If the guest operating system fails to
          shutdown within five minutes, HA will initiate a forced power off.
          
          When you use the shutdown isolation response, failover can take
          longer (compared to the
          *powerOff*
          response) because the virtual machine cannot fail over until it is
          shutdown.
        - `clusterIsolationResponse`: Use the default isolation response defined for the cluster
          that contains this virtual machine.
      enum:
        - none
        - powerOff
        - shutdown
        - clusterIsolationResponse

    ClusterDasVmSettingsRestartPriority_enum:
      type: string
      description: |2
        The *ClusterDasVmSettingsRestartPriority_enum* enum defines
        virtual machine restart priority values to resolve resource contention.
        
        The priority determines the preference that HA gives to a virtual
        machine if sufficient capacity is not available to power on all failed
        virtual machines. For example, high priority virtual machines on a host
        get preference over low priority virtual machines.
        
        All priority values are valid for the restart priority specified in a
        single virtual machine HA configuration (*ClusterDasVmConfigInfo.dasSettings*).
        All values except for <code>clusterRestartPriority</code> are valid for
        the cluster-wide default HA configuration for virtual machines
        (*ClusterDasConfigInfo.defaultVmSettings*).
        
        Possible values:
        - `disabled`: vSphere HA is disabled for this virtual machine.
        - `lowest`: Virtual machines with this priority have the lowest chance of
          powering on after a failure if there is insufficient capacity on
          hosts to meet all virtual machine needs.
        - `low`: Virtual machines with this priority have a lower chance of powering
          on after a failure if there is insufficient capacity on hosts to meet
          all virtual machine needs.
        - `medium`: Virtual machines with this priority have an intermediate chance of
          powering on after a failure if there is insufficient capacity on
          hosts to meet all virtual machine needs.
        - `high`: Virtual machines with this priority have a higher chance of powering
          on after a failure if there is insufficient capacity on hosts to meet
          all virtual machine needs.
        - `highest`: Virtual machines with this priority have the highest chance of
          powering on after a failure if there is insufficient capacity on
          hosts to meet all virtual machine needs.
        - `clusterRestartPriority`: Virtual machines with this priority use the default restart
          priority defined for the cluster that contains this virtual machine.
      enum:
        - disabled
        - lowest
        - low
        - medium
        - high
        - highest
        - clusterRestartPriority

    DpmBehavior_enum:
      type: string
      description: |2
        Possible values:
        - `manual`: Specifies that VirtualCenter should generate recommendations
          for host power operations, but should not execute the
          recommendations automatically.
        - `automated`: Specifies that VirtualCenter should generate recommendations
          for host power operations, and should execute the
          recommendations automatically.
      enum:
        - manual
        - automated

    DpmBehavior:
      type: object
      description: |2
        A boxed *DpmBehavior_enum*. To be used in *Any* placeholders.
      properties:
        _value:
          $ref: '#/components/schemas/DpmBehavior_enum'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ArrayOfDpmBehavior:
      type: object
      description: |2
        A boxed array of *DpmBehavior_enum*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DpmBehavior_enum'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DrsBehavior_enum:
      type: string
      description: |2
        Possible values:
        - `manual`: Specifies that VirtualCenter should generate recommendations for
          virtual machine migration and for placement with a host,
          but should not implement the recommendations automatically.
        - `partiallyAutomated`: Specifies that VirtualCenter should generate recommendations for
          virtual machine migration and for placement with a host,
          but should automatically implement only the placement at power on.
        - `fullyAutomated`: Specifies that VirtualCenter should automate both the migration
          of virtual machines and their placement with a host at power on.
      enum:
        - manual
        - partiallyAutomated
        - fullyAutomated

    DrsBehavior:
      type: object
      description: |2
        A boxed *DrsBehavior_enum*. To be used in *Any* placeholders.
      properties:
        _value:
          $ref: '#/components/schemas/DrsBehavior_enum'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ArrayOfDrsBehavior:
      type: object
      description: |2
        A boxed array of *DrsBehavior_enum*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DrsBehavior_enum'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    DrsRecommendationReasonCode_enum:
      type: string
      description: |2
        Deprecated as of VI API 2.5 use *RecommendationReasonCode_enum*.
        
        List of defined migration reason codes:
        
        Possible values:
        - `fairnessCpuAvg`: Balance average CPU utilization.
        - `fairnessMemAvg`: Balance average memory utilization.
        - `jointAffin`: Fulfill affinity rule.
        - `antiAffin`: Fulfill anti-affinity rule.
        - `hostMaint`: Host entering maintenance mode.
      enum:
        - fairnessCpuAvg
        - fairnessMemAvg
        - jointAffin
        - antiAffin
        - hostMaint

    ClusterHostInfraUpdateHaModeActionOperationType_enum:
      type: string
      description: |2
        Describes the operation type of the action.
        
        enterexitQuarantine suggests
        that the host is only exiting the quarantine state (i.e. not the
        maintenance mode).
        
        Possible values:
        - `enterQuarantine`
        - `exitQuarantine`
        - `enterMaintenance`
      enum:
        - enterQuarantine
        - exitQuarantine
        - enterMaintenance

    HostPowerOperationType_enum:
      type: string
      description: |2
        Possible values:
        - `powerOn`: Power On Operation
        - `powerOff`: Power Off Operation.
          
          Power off operation puts the host in
          a state that can be woken up remotely.
      enum:
        - powerOn
        - powerOff

    HostPowerOperationType:
      type: object
      description: |2
        A boxed *HostPowerOperationType_enum*. To be used in *Any* placeholders.
      properties:
        _value:
          $ref: '#/components/schemas/HostPowerOperationType_enum'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ArrayOfHostPowerOperationType:
      type: object
      description: |2
        A boxed array of *HostPowerOperationType_enum*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostPowerOperationType_enum'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ClusterInfraUpdateHaConfigInfoBehaviorType_enum:
      type: string
      description: |2
        Possible values:
        - `Manual`: With this behavior configured, the proposed DRS recommendations
          require manual approval before they are executed.
        - `Automated`: With this behavior configured, the proposed DRS recommendations are
          executed immediately.
      enum:
        - Manual
        - Automated

    ClusterInfraUpdateHaConfigInfoRemediationType_enum:
      type: string
      description: |2
        Possible values:
        - `QuarantineMode`: With this behavior configured, a degraded host will be recommended
          to be placed in Quarantine Mode.
        - `MaintenanceMode`: With this behavior configured, a degraded host will be recommended
          to be placed in Maintenance Mode.
      enum:
        - QuarantineMode
        - MaintenanceMode

    PlacementSpecPlacementType_enum:
      type: string
      description: |2
        Defines the type of placement
        
        Possible values:
        - `create`: Create a new VM
        - `reconfigure`: Reconfigure a VM
        - `relocate`: Relocate a VM
        - `clone`: Clone a VM
      enum:
        - create
        - reconfigure
        - relocate
        - clone

    ClusterPowerOnVmOption_enum:
      type: string
      description: |2
        Defines the options for a Datacenter::powerOnVm() invocation.
        
        Possible values:
        - `OverrideAutomationLevel`: Override the DRS automation level.
          
          Value type: *DrsBehavior_enum*
          Default value: current behavior
        - `ReserveResources`: Reserve resources for the powering-on VMs throughout the
          power-on session.
          
          When this option is set to true, the server
          will return at most one recommended host per manual VM, and
          the VM's reservations are held on the recommended host until
          the VM is actually powered on (either by applying the
          recommendation or by a power-on request on the VM), or until
          the recommendation is cancelled, or until the recommendation
          expires. The expiration time is currently set to 10
          minutes. This option does not have an effect on automatic VMs
          since their recommendations are executed immediately. This
          option is effective on DRS clusters only.
          Value type: boolean
          Default value: false
      enum:
        - OverrideAutomationLevel
        - ReserveResources

    RecommendationReasonCode_enum:
      type: string
      description: |2
        List of defined migration reason codes:
        
        Possible values:
        - `fairnessCpuAvg`: Balance average CPU utilization.
        - `fairnessMemAvg`: Balance average memory utilization.
        - `jointAffin`: Fulfill affinity rule.
        - `antiAffin`: Fulfill anti-affinity rule.
        - `hostMaint`: Host entering maintenance mode.
        - `enterStandby`: Host entering standby mode.
        - `reservationCpu`: balance CPU reservations
        - `reservationMem`: balance memory reservations
        - `powerOnVm`: Power on virtual machine
        - `powerSaving`: Power off host for power savings
        - `increaseCapacity`: Power on host to increase cluster capacity
        - `checkResource`: Sanity-check resource pool hierarchy
        - `unreservedCapacity`: Maintain unreserved capacity
        - `vmHostHardAffinity`: Fix hard VM/host affinity rule violation
        - `vmHostSoftAffinity`: Fix soft VM/host affinity rule violation
        - `balanceDatastoreSpaceUsage`: Balance datastore space usage.
        - `balanceDatastoreIOLoad`: 
          
          Deprecated as of vSphere8.0 U3, and there is no replacement for it.
          
          Balance datastore I/O workload.
        - `balanceDatastoreIOPSReservation`: 
          
          Deprecated as of vSphere8.0 U3, and there is no replacement for it.
          
          Balance datastore IOPS reservation
        - `datastoreMaint`: Datastore entering maintenance mode.
        - `virtualDiskJointAffin`: Fix virtual disk affinity rule violation.
        - `virtualDiskAntiAffin`: Fix virtual disk anti-affinity rule violation.
        - `datastoreSpaceOutage`: Fix the issue that a datastore run out of space.
        - `storagePlacement`: Satisfy storage initial placement requests.
        - `iolbDisabledInternal`: 
          
          Deprecated as of vSphere8.0 U3, and there is no replacement for it.
          
          IO load balancing was disabled internally.
        - `xvmotionPlacement`: Satisfy unified vmotion placement requests.
        - `networkBandwidthReservation`: Fix network bandwidth reservation violation
        - `hostInDegradation`: Host is partially degraded.
        - `hostExitDegradation`: Host is not degraded.
        - `maxVmsConstraint`: Fix maxVms constraint violation
        - `ftConstraints`: Fix ft maxVMs and maxVcpus constraint violations
        - `vmHostAffinityPolicy`: Fix VM/host affinity policy violation
        - `vmHostAntiAffinityPolicy`: Fix VM/host anti-affinity policy violation
        - `vmAntiAffinityPolicy`: Fix VM-VM anti-affinity policy violations
        - `balanceVsanUsage`: ***Since:*** vSphere API Release 7.0.2.0
        - `ahPlacementOptimization`: Optimize assignable hardware resource orchestration
          
          ***Since:*** vSphere API Release 8.0.2.0
        - `vmxUpgrade`: Upgrade virtual machine to new vmx binary
          
          ***Since:*** vSphere API Release 8.0.3.0
      enum:
        - fairnessCpuAvg
        - fairnessMemAvg
        - jointAffin
        - antiAffin
        - hostMaint
        - enterStandby
        - reservationCpu
        - reservationMem
        - powerOnVm
        - powerSaving
        - increaseCapacity
        - checkResource
        - unreservedCapacity
        - vmHostHardAffinity
        - vmHostSoftAffinity
        - balanceDatastoreSpaceUsage
        - balanceDatastoreIOLoad
        - balanceDatastoreIOPSReservation
        - datastoreMaint
        - virtualDiskJointAffin
        - virtualDiskAntiAffin
        - datastoreSpaceOutage
        - storagePlacement
        - iolbDisabledInternal
        - xvmotionPlacement
        - networkBandwidthReservation
        - hostInDegradation
        - hostExitDegradation
        - maxVmsConstraint
        - ftConstraints
        - vmHostAffinityPolicy
        - vmHostAntiAffinityPolicy
        - vmAntiAffinityPolicy
        - balanceVsanUsage
        - ahPlacementOptimization
        - vmxUpgrade

    RecommendationType_enum:
      type: string
      description: |2
        Pre-defined constants for possible recommendation types.
        
        Virtual Center
        uses this information to coordinate with the clients.
        
        Possible values:
        - `V1`
      enum:
        - V1

    ClusterSystemVMsConfigInfoDeploymentMode_enum:
      type: string
      description: |2
        Possible values:
        - `SYSTEM_MANAGED`: System VMs are fully managed by the system.
        - `ABSENT`: System VMs are absent on the managed entity.
          
        ***Since:*** vSphere API Release 8.0.2.0
      enum:
        - SYSTEM_MANAGED
        - ABSENT

    ClusterVmComponentProtectionSettingsStorageVmReaction_enum:
      type: string
      description: |2
        The VM policy settings that determine the response to
        storage failures.
        
        Possible values:
        - `disabled`: VM Component Protection service will not monitor or react to
          the component failure.
          
          This setting does not affect other vSphere
          HA services such as Host Monitoring or VM Health Monitoring.
        - `warning`: VM Component Protection service will monitor component failures but
          will not restart an affected VM.
          
          Rather it will notify users about
          the component failures. This setting does not affect other vSphere HA
          services such as Host Monitoring or VM Health Monitoring.
        - `restartConservative`: VM Component Protection service protects VMs conservatively.
          
          With this
          setting, when the service can't determine that capacity is available to
          restart a VM, it will favor keeping the VM running.
        - `restartAggressive`: VM Component Protection service protects VMs aggressively.
          
          With this setting,
          the service will terminate an affected VM even if it can't determine that
          capacity exists to restart the VM.
        - `clusterDefault`: VM will use the cluster default setting.
          
          This option is only meaningful for
          per-VM settings.
      enum:
        - disabled
        - warning
        - restartConservative
        - restartAggressive
        - clusterDefault

    ClusterVmComponentProtectionSettingsVmReactionOnAPDCleared_enum:
      type: string
      description: |2
        If an APD condition clears after an APD timeout condition has been declared and before
        VM Component Protection service terminated the VM, the guestOS and application may
        no longer be operational.
        
        VM Component Protection may be configured to reset the
        VM (*VirtualMachine.ResetVM_Task*) to restore the service of guest applications.
        
        Possible values:
        - `none`: VM Component Protection service will not react after APD condition is cleared.
        - `reset`: VM Component Protection service will reset the VM after APD condition is cleared.
          
          Note this only applies if the subject VM is still powered on.
        - `useClusterDefault`: VM will use the cluster default setting.
          
          This option is only meaningful for
          per-VM settings.
      enum:
        - none
        - reset
        - useClusterDefault

    ClusterVmReadinessReadyCondition_enum:
      type: string
      description: |2
        Condition for VM's readiness
        
        Possible values:
        - `none`: No ready condition specified.
          
          In case of vSphere HA, higher restart priority VMs are still
          placed before lower priority VMs.
        - `poweredOn`: VM is powered on.
        - `guestHbStatusGreen`: VM guest operating system is up and responding normally (VM tools
          heartbeat status is green).
        - `appHbStatusGreen`: An application running inside the VM is responding normally.
          
          To enable Application Monitoring, you must first obtain the
          appropriate SDK (or be using an application that supports VMware
          Application Monitoring) and use it to set up customized heartbeats
          for the applications you want to monitor.
          See *ClusterDasConfigInfo.vmMonitoring*.
        - `useClusterDefault`: VM will use the cluster default setting.
          
          This option is only
          meaningful for per-VM settings.
      enum:
        - none
        - poweredOn
        - guestHbStatusGreen
        - appHbStatusGreen
        - useClusterDefault

    DvsFilterOnFailure_enum:
      type: string
      description: |2
        Network Filter on Failure Type.
        
        It specifies whether all the
        packets will be allowed or all the packets will be denied when
        Filter fails to configure.
        
        Possible values:
        - `failOpen`: Allows all the packets when the Filter fails to configure.
        - `failClosed`: Denies all the packets when the Filter fails to configure.
      enum:
        - failOpen
        - failClosed

    DVPortStatusVmDirectPathGen2InactiveReasonNetwork_enum:
      type: string
      description: |2
        Set of possible values for
        *DVPortStatus*.*DVPortStatus.vmDirectPathGen2InactiveReasonNetwork*.
        
        Possible values:
        - `portNptIncompatibleDvs`: The switch for which this port is defined does not support VMDirectPath Gen 2.
          
          See
          *DVSFeatureCapability*.*DVSFeatureCapability.vmDirectPathGen2Supported*.
        - `portNptNoCompatibleNics`: None of the physical NICs used as uplinks for this port support
          VMDirectPath Gen 2.
          
          See also *PhysicalNic.vmDirectPathGen2Supported*.
        - `portNptNoVirtualFunctionsAvailable`: At least some of the physical NICs used as uplinks for this port
          support VMDirectPath Gen 2, but all available network-passthrough
          resources are in use by other ports.
        - `portNptDisabledForPort`: VMDirectPath Gen 2 has been explicitly disabled for this port.
      enum:
        - portNptIncompatibleDvs
        - portNptNoCompatibleNics
        - portNptNoVirtualFunctionsAvailable
        - portNptDisabledForPort

    DVPortStatusVmDirectPathGen2InactiveReasonOther_enum:
      type: string
      description: |2
        Set of possible values for
        *DVPortStatus*.*DVPortStatus.vmDirectPathGen2InactiveReasonOther*.
        
        Possible values:
        - `portNptIncompatibleHost`: The host for which this port is defined does not support VMDirectPath Gen 2.
          
          See *HostCapability*.*HostCapability.vmDirectPathGen2Supported*
        - `portNptIncompatibleConnectee`: Configuration or state of the port's connectee prevents
          VMDirectPath Gen 2.
          
          See
          *VirtualMachineDeviceRuntimeInfoVirtualEthernetCardRuntimeState.vmDirectPathGen2InactiveReasonVm*
          and/or
          *VirtualMachineDeviceRuntimeInfoVirtualEthernetCardRuntimeState.vmDirectPathGen2InactiveReasonExtended*
          in the appropriate element of the RuntimeInfo.device array of the
          virtual machine connected to this port.
      enum:
        - portNptIncompatibleHost
        - portNptIncompatibleConnectee

    DistributedVirtualPortgroupBackingType_enum:
      type: string
      description: |2
        The *DistributedVirtualPortgroupBackingType_enum* enum defines
        the distributed virtual portgroup backing type.
        
        Possible values:
        - `standard`: The portgroup is created by vCenter.
        - `nsx`: The portgroup is created by NSX manager.
          
          For NSX backing type, We only support ephemeral portgroup type.
          If *DistributedVirtualPortgroupPortgroupType_enum* is
          ephemeral, A *DistributedVirtualPort* will be
          dynamicly created by NSX when the virtual machine is reconfigured
          to connect to the portgroup.
      enum:
        - standard
        - nsx

    DistributedVirtualPortgroupMetaTagName_enum:
      type: string
      description: |2
        The meta tag names recognizable in the
        *DVPortgroupConfigInfo.portNameFormat* string.
        
        Possible values:
        - `dvsName`: This tag will be expanded to the name of the switch.
        - `portgroupName`: This tag will be expanded to the name of the portgroup.
        - `portIndex`: This tag will be expanded to the current index of the port.
      enum:
        - dvsName
        - portgroupName
        - portIndex

    DistributedVirtualPortgroupPortgroupType_enum:
      type: string
      description: |2
        The *DistributedVirtualPortgroupPortgroupType_enum* enum defines
        the distributed virtual portgroup types
        (*DistributedVirtualPortgroup*.*DistributedVirtualPortgroup.config*.*DVPortgroupConfigInfo.type*).
        
        Early binding specifies a static set of ports that are created
        when you create the distributed virtual portgroup. An ephemeral portgroup uses dynamic
        ports that are created when you power on a virtual machine.
        
        Possible values:
        - `earlyBinding`: A free *DistributedVirtualPort* will be selected and assigned to
          a *VirtualMachine* when the virtual machine is reconfigured to
          connect to the portgroup.
        - `lateBinding`: 
          
          Deprecated as of vSphere API 5.0.
          
          A free *DistributedVirtualPort* will be selected and
          assigned to a *VirtualMachine* when the virtual machine is
          powered on.
        - `ephemeral`: A *DistributedVirtualPort* will be created and assigned to a
          *VirtualMachine* when the virtual machine is powered on, and will
          be deleted when the virtual machine is powered off.
          
          An ephemeral portgroup has
          no limit on the number of ports that can be a part of this portgroup.
          In cases where the vCenter Server is unavailable the host can
          create conflict ports in this portgroup to be used by a virtual machine
          at power on.
      enum:
        - earlyBinding
        - lateBinding
        - ephemeral

    EntityType_enum:
      type: string
      description: |2
        The *EntityType_enum* enum identifies
        the type of entity that was exported
        (*DistributedVirtualSwitchManager.DVSManagerExportEntity_Task*).
        
        Possible values:
        - `distributedVirtualSwitch`: Indicates the exported entity is a *DistributedVirtualSwitch*.
        - `distributedVirtualPortgroup`: Indicates the exported entity is a *DistributedVirtualPortgroup*.
      enum:
        - distributedVirtualSwitch
        - distributedVirtualPortgroup

    EntityImportType_enum:
      type: string
      description: |2
        The *EntityImportType_enum* enum defines the import type for a
        *DistributedVirtualSwitchManager*.*DistributedVirtualSwitchManager.DVSManagerImportEntity_Task*
        operation.
        
        Possible values:
        - `createEntityWithNewIdentifier`: Create the entity with new identifiers.
          
          Specify the
          *EntityBackupConfig*.*EntityBackupConfig.name* and
          *EntityBackupConfig*.*EntityBackupConfig.container*
          properties.
          
          The Server ignores any value for the
          *EntityBackupConfig*.*EntityBackupConfig.key*
          property.
        - `createEntityWithOriginalIdentifier`: Recreate the entities with the original identifiers of the entity from which backup was created.
          
          The Server throws an exception if an entity with the same identifier already exists.
          This option will also add the host members to the *DistributedVirtualSwitch* and will
          try to get the virtual machine networking back with the same *DistributedVirtualPortgroup*.
          Specify a *Folder* as the
          *EntityBackupConfig*.*EntityBackupConfig.container*
          for *EntityBackupConfig*.*EntityBackupConfig.entityType*
          "distributedVirtualSwitch".
          
          The Server ignores any values for the
          *EntityBackupConfig*.*EntityBackupConfig.key* and
          *EntityBackupConfig*.*EntityBackupConfig.name*
          properties.
        - `applyToEntitySpecified`: Apply the configuration specified in the
          *EntityBackupConfig*.*EntityBackupConfig.configBlob*
          property to the entity specified in the
          *EntityBackupConfig*.*EntityBackupConfig.entityType* and
          *EntityBackupConfig*.*EntityBackupConfig.key*
          properties.
          
          If you specify
          *EntityBackupConfig*.*EntityBackupConfig.name*,
          the Server uses the specified name to rename the entity.
          
          The Server ignores any value for the
          *EntityBackupConfig*.*EntityBackupConfig.container*
          property.
      enum:
        - createEntityWithNewIdentifier
        - createEntityWithOriginalIdentifier
        - applyToEntitySpecified

    DVSFilterSpecLinkConfig_enum:
      type: string
      description: |2
        Possible values:
        - `blocked`: The port link state: blocked.
        - `unblocked`: The port link state: unblocked.
      enum:
        - blocked
        - unblocked

    DVSFilterSpecLinkState_enum:
      type: string
      description: |2
        Possible values:
        - `down`: The port link state: down.
        - `up`: The port link state: up.
      enum:
        - down
        - up

    HostDVSConfigSpecSwitchMode_enum:
      type: string
      description: |2
        The enum defines the distributed virtual switch mode.
        
        Possible values:
        - `normal`: traditional package processing mode.
        - `mux`: ENS mode which skips packet parsing and flow table lookup.
          
        ***Since:*** vSphere API Release 8.0.0.1
      enum:
        - normal
        - mux

    HostDistributedVirtualSwitchManagerFailoverReason_enum:
      type: string
      description: |2
        The reason for DPU failover.
        
        Possible values:
        - `crash`: The failover is caused by DPU crash.
        - `linkDown`: The failover is caused by DPU's vmnic(s) link down.
        - `userInitiated`: The failover is triggered by the user.
          
        ***Since:*** vSphere API Release 8.0.3.0
      enum:
        - crash
        - linkDown
        - userInitiated

    HostDistributedVirtualSwitchManagerFailoverStage_enum:
      type: string
      description: |2
        The stage of DPU failover.
        
        Possible values:
        - `STAGE_1`
        
        ***Since:*** vSphere API Release 8.0.3.0
      enum:
        - STAGE_1

    DistributedVirtualSwitchHostMemberHostComponentState_enum:
      type: string
      description: |2
        Describes the state of the host proxy switch.
        
        Possible values:
        - `up`: The host proxy switch is up and running.
        - `pending`: The host proxy switch is waiting to be initialized.
        - `outOfSync`: The proxy switch configuration is not the same as the
          distributed virtual switch configuration in the vCenter Server.
        - `warning`: The host requires attention.
        - `disconnected`: The host is disconnected or it is not responding.
        - `down`: The host proxy is down.
      enum:
        - up
        - pending
        - outOfSync
        - warning
        - disconnected
        - down

    DistributedVirtualSwitchHostMemberHostUplinkStateState_enum:
      type: string
      description: |2
        Describe the runtime state of the uplink.
        
        Possible values:
        - `active`
        - `standby`
      enum:
        - active
        - standby

    DistributedVirtualSwitchHostMemberTransportZoneType_enum:
      type: string
      description: |2
        Transport zone type.
        
        Possible values:
        - `vlan`: VLAN based networking
        - `overlay`: VXLAN based networking
      enum:
        - vlan
        - overlay

    DistributedVirtualSwitchPortConnecteeConnecteeType_enum:
      type: string
      description: |2
        The connectee types.
        
        Possible values:
        - `pnic`: The port connects to a Physical NIC.
        - `vmVnic`: The port connects to a Virtual NIC in a Virtual Machine.
        - `hostConsoleVnic`: The port connects to a console Virtual NIC on a host.
        - `hostVmkVnic`: The port connects to a VMkernel Virtual NIC on a host.
        - `systemCrxVnic`: The port connects to a Virtual NIC in a System CRX VM.
          
          ***Since:*** vSphere API Release 8.0.1.0
      enum:
        - pnic
        - vmVnic
        - hostConsoleVnic
        - hostVmkVnic
        - systemCrxVnic

    DvsNetworkRuleDirectionType_enum:
      type: string
      description: |2
        Network Traffic Rule direction types.
        
        It specifies whether rule
        needs to be applied for packets which are incoming/outgoing or both.
        
        Possible values:
        - `incomingPackets`: This specifies that the network rule has to be applied only for
          incoming packets.
        - `outgoingPackets`: This specifies that the network rule has to be applied only for
          outgoing packets.
        - `both`: This specifies that the network rule has to be applied only for
          both incoming and outgoing packets.
      enum:
        - incomingPackets
        - outgoingPackets
        - both

    VMwareDvsLacpApiVersion_enum:
      type: string
      description: |2
        Link Aggregation Control Protocol API versions.
        
        Possible values:
        - `singleLag`: 
          
          Deprecated as of vSphere API 7.0u1.
          
          One Link Aggregation Control Protocol group in the switch
        - `multipleLag`: Multiple Link Aggregation Control Protocol in the switch.
      enum:
        - singleLag
        - multipleLag

    VMwareDvsLacpLoadBalanceAlgorithm_enum:
      type: string
      description: |2
        Load balance algorithm in a Link Aggregation Control Protocol group.
        
        Possible values:
        - `srcMac`: Source MAC address
        - `destMac`: Destination MAC address
        - `srcDestMac`: Source and destination MAC address
        - `destIpVlan`: Destination IP and VLAN
        - `srcIpVlan`: Source IP and VLAN
        - `srcDestIpVlan`: Source and destination IP and VLAN
        - `destTcpUdpPort`: Destination TCP/UDP port number
        - `srcTcpUdpPort`: Source TCP/UDP port number
        - `srcDestTcpUdpPort`: Source and destination TCP/UDP port number
        - `destIpTcpUdpPort`: Destination IP and TCP/UDP port number
        - `srcIpTcpUdpPort`: Source IP and TCP/UDP port number
        - `srcDestIpTcpUdpPort`: Source and destination IP and TCP/UDP port number
        - `destIpTcpUdpPortVlan`: Destination IP, TCP/UDP port number and VLAN
        - `srcIpTcpUdpPortVlan`: Source IP, TCP/UDP port number and VLAN
        - `srcDestIpTcpUdpPortVlan`: Source and destination IP,
          source and destination TCP/UDP port number and VLAN.
        - `destIp`: Destination IP
        - `srcIp`: Source IP
        - `srcDestIp`: Source and Destination IP
        - `vlan`: VLAN only
        - `srcPortId`: Source Virtual Port Id
      enum:
        - srcMac
        - destMac
        - srcDestMac
        - destIpVlan
        - srcIpVlan
        - srcDestIpVlan
        - destTcpUdpPort
        - srcTcpUdpPort
        - srcDestTcpUdpPort
        - destIpTcpUdpPort
        - srcIpTcpUdpPort
        - srcDestIpTcpUdpPort
        - destIpTcpUdpPortVlan
        - srcIpTcpUdpPortVlan
        - srcDestIpTcpUdpPortVlan
        - destIp
        - srcIp
        - srcDestIp
        - vlan
        - srcPortId

    DVSMacLimitPolicyType_enum:
      type: string
      description: |2
        Possible values:
        - `allow`
        - `drop`
      enum:
        - allow
        - drop

    VMwareDvsMulticastFilteringMode_enum:
      type: string
      description: |2
        Multicast Filtering mode.
        
        Possible values:
        - `legacyFiltering`: Legacy filtering mode
        - `snooping`: IGMP/MLD snooping mode
      enum:
        - legacyFiltering
        - snooping

    VmwareDistributedVirtualSwitchPvlanPortType_enum:
      type: string
      description: |2
        The PVLAN port types.
        
        Possible values:
        - `promiscuous`: The port can communicate with all other ports within the same PVLAN,
          including the isolated and community ports .
        - `isolated`: The port can only communicate with the promiscuous ports within the
          same PVLAN, any other traffics are blocked.
        - `community`: The ports communicates with other community ports and with
          promiscuous ports within the same PVLAN.
          
          any other traffics are
          blocked.
      enum:
        - promiscuous
        - isolated
        - community

    VMwareDVSTeamingMatchStatus_enum:
      type: string
      description: |2
        The teaming health check match status.
        
        Possible values:
        - `iphashMatch`: The value of 'loadbalance\_ip' is used in a uplink teaming policy
          *VmwareUplinkPortTeamingPolicy.policy*
          in the vSphere Distributed Switch, and the external physical switch
          has the matching EtherChannel configuration.
        - `nonIphashMatch`: The value of 'loadbalance\_ip' is not used in a uplink teaming policy
          *VmwareUplinkPortTeamingPolicy.policy*
          in the vSphere Distributed Switch, and the external physical switch
          does not have EtherChannel configuration.
        - `iphashMismatch`: The value of 'loadbalance\_ip' is used in a uplink teaming policy
          *VmwareUplinkPortTeamingPolicy.policy*
          in the vSphere Distributed Switch, but the external physical switch
          does not have the matching EtherChannel configuration.
        - `nonIphashMismatch`: The value of 'loadbalance\_ip' is not used in a uplink teaming policy
          *VmwareUplinkPortTeamingPolicy.policy*
          in the vSphere Distributed Switch, but the external physical switch
          has EtherChannel configuration.
      enum:
        - iphashMatch
        - nonIphashMatch
        - iphashMismatch
        - nonIphashMismatch

    VMwareUplinkLacpMode_enum:
      type: string
      description: |2
        Link Aggregation Control Protocol policy modes.
        
        Possible values:
        - `active`: Link Aggregation Control Protocol always sends frames along the configured uplinks
        - `passive`: Link Aggregation Control Protocol acts as "speak when spoken to".
      enum:
        - active
        - passive

    VMwareUplinkLacpTimeoutMode_enum:
      type: string
      description: |2
        Link Aggregation Control Protocol timeout policy modes.
        
        Possible values:
        - `fast`: Set long timeout for vmnics in one LACP LAG.
          
          Device send fast LACPDUs
        - `slow`: Set short timeout for vmnics in one LACP LAG.
          
          Device send slow LACPDUs
        
        ***Since:*** vSphere API Release 7.0.2.0
      enum:
        - fast
        - slow

    VMwareDVSVspanSessionEncapType_enum:
      type: string
      description: |2
        Distributed Port Mirroring session Encapsulation types.
        
        Possible values:
        - `gre`: Encapsulate original packets with GRE protocol
        - `erspan2`: Encapsulate original packets with ERSPAN Type2 protocol
        - `erspan3`: Encapsulate original packets with ERSPAN Type3 protocol
      enum:
        - gre
        - erspan2
        - erspan3

    VMwareDVSVspanSessionType_enum:
      type: string
      description: |2
        Distributed Port Mirroring session types.
        
        Possible values:
        - `mixedDestMirror`: 
          
          Deprecated as of vSphere API 5.1.
          
          In mixedDestMirror session, Distributed Ports can be used as source entities,
          and both Distributed Ports and Uplink Ports Name can be used as destination entities.
        - `dvPortMirror`: In dvPortMirror session, Distributed Ports can be used as both source
          and destination entities.
        - `remoteMirrorSource`: In remoteMirrorSource session, Distributed Ports can be used as source entities,
          and uplink ports name can be used as destination entities.
        - `remoteMirrorDest`: In remoteMirrorDest session, vlan Ids can be used as source entities,
          and Distributed Ports can be used as destination entities.
        - `encapsulatedRemoteMirrorSource`: In encapsulatedRemoteMirrorSource session, Distributed Ports can be used as source entities,
          and Ip address can be used as destination entities.
      enum:
        - mixedDestMirror
        - dvPortMirror
        - remoteMirrorSource
        - remoteMirrorDest
        - encapsulatedRemoteMirrorSource

    CryptoManagerHostKeyManagementType_enum:
      type: string
      description: |2
        Key management type.
        
        Possible values:
        - `unknown`
        - `internal`
        - `external`
        
        ***Since:*** vSphere API Release 8.0.1.0
      enum:
        - unknown
        - internal
        - external

    CryptoManagerKmipCryptoKeyStatusKeyUnavailableReason_enum:
      type: string
      description: |2
        Possible values:
        - `KeyStateMissingInCache`: Key not found in VC cache and does not specify a provider
        - `KeyStateClusterInvalid`: Key provider is invalid
        - `KeyStateClusterUnreachable`: Can not reach the key provider
        - `KeyStateMissingInKMS`: Key not found in KMS
        - `KeyStateNotActiveOrEnabled`: Key not active or enabled
        - `KeyStateManagedByTrustAuthority`: Key is managed by Trust Authority
        - `KeyStateManagedByNKP`: Key is managed by Native Key Provider
          
          ***Since:*** vSphere API Release 8.0.3.0
        - `NoPermissionToAccessKeyProvider`: No permission to access key provider
          
          ***Since:*** vSphere API Release 8.0.3.0
      enum:
        - KeyStateMissingInCache
        - KeyStateClusterInvalid
        - KeyStateClusterUnreachable
        - KeyStateMissingInKMS
        - KeyStateNotActiveOrEnabled
        - KeyStateManagedByTrustAuthority
        - KeyStateManagedByNKP
        - NoPermissionToAccessKeyProvider

    KmipClusterInfoKmsManagementType_enum:
      type: string
      description: |2
        Key provider management type.
        
        Possible values:
        - `unknown`
        - `vCenter`
        - `trustAuthority`
        - `nativeProvider`: ***Since:*** vSphere API Release 7.0.2.0
      enum:
        - unknown
        - vCenter
        - trustAuthority
        - nativeProvider

    CustomizationFailedReasonCode_enum:
      type: string
      description: |2
        Possible values:
        - `userDefinedScriptDisabled`: The user defined script is disabled during customization
        - `customizationDisabled`: The guest customization is disabled by VMware Tools
          
          ***Since:*** vSphere API Release 7.0.1.0
        - `rawDataIsNotSupported`: The cloud-init version is too old to support cloud-init raw data
          
          ***Since:*** vSphere API Release 7.0.3.0
        - `wrongMetadataFormat`: The cloud-init meta data is not valid format
          
          ***Since:*** vSphere API Release 7.0.3.0
      enum:
        - userDefinedScriptDisabled
        - customizationDisabled
        - rawDataIsNotSupported
        - wrongMetadataFormat

    DvsEventPortBlockState_enum:
      type: string
      description: |2
        The port blocked/unblocked state.
        
        Possible values:
        - `unset`: The dvs port is in unset state
        - `blocked`: The dvs port is in blocked state
        - `unblocked`: The dvs port is in unblocked state
        - `unknown`: The dvs port is in unknown state
      enum:
        - unset
        - blocked
        - unblocked
        - unknown

    EventEventSeverity_enum:
      type: string
      description: |2
        Severity level constants.
        
        Possible values:
        - `error`: Something that must be corrected
        - `warning`: Should be corrected, but the system can continue operating normally
        - `info`: An informational message
        - `user`: A user-related message
      enum:
        - error
        - warning
        - info
        - user

    EventCategory_enum:
      type: string
      description: |2
        Possible values:
        - `info`: Returns informational events.
        - `warning`: Returns warning events.
        - `error`: Returns error events.
        - `user`: Returns events pertaining to users.
      enum:
        - info
        - warning
        - error
        - user

    EventFilterSpecRecursionOption_enum:
      type: string
      description: |2
        This option specifies how to select events based on child relationships
        in the inventory hierarchy.
        
        If a managed entity has children, their events
        can be retrieved with this filter option.
        
        Possible values:
        - `self`: Returns events that pertain only to the specified managed entity,
          and not its children.
        - `children`: Returns events pertaining to child entities only.
          
          Excludes
          events pertaining to the specified managed entity itself.
        - `all`: Returns events pertaining either to the specified managed entity
          or to its child entities.
      enum:
        - self
        - children
        - all

    EventFilterSpecRecursionOption:
      type: object
      description: |2
        A boxed *EventFilterSpecRecursionOption_enum*. To be used in *Any* placeholders.
      properties:
        _value:
          $ref: '#/components/schemas/EventFilterSpecRecursionOption_enum'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ArrayOfEventFilterSpecRecursionOption:
      type: object
      description: |2
        A boxed array of *EventFilterSpecRecursionOption_enum*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/EventFilterSpecRecursionOption_enum'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostDasErrorEventHostDasErrorReason_enum:
      type: string
      description: |2
        Possible values:
        - `configFailed`: Error while configuring/unconfiguring HA
        - `timeout`: Timeout while communicating with HA agent
        - `communicationInitFailed`: HA communication initialization failed
        - `healthCheckScriptFailed`: Health check script failed
        - `agentFailed`: HA agent has an error
        - `agentShutdown`: HA agent was shutdown
        - `isolationAddressUnpingable`: HA isolation address unpingable
        - `other`: Other reason
      enum:
        - configFailed
        - timeout
        - communicationInitFailed
        - healthCheckScriptFailed
        - agentFailed
        - agentShutdown
        - isolationAddressUnpingable
        - other

    HostDisconnectedEventReasonCode_enum:
      type: string
      description: |2
        Possible values:
        - `sslThumbprintVerifyFailed`: Failed to verify SSL thumbprint
        - `licenseExpired`: License expired for the host
        - `agentUpgrade`: Agent is being upgraded
        - `userRequest`: User requested disconnect
        - `insufficientLicenses`: License not available after host upgrade
        - `agentOutOfDate`: Agent is out of date
        - `passwordDecryptFailure`: Failed to decrypt password
        - `unknown`: Unknown reason
        - `vcVRAMCapacityExceeded`: The vRAM capacity of vCenter will be exceeded
      enum:
        - sslThumbprintVerifyFailed
        - licenseExpired
        - agentUpgrade
        - userRequest
        - insufficientLicenses
        - agentOutOfDate
        - passwordDecryptFailure
        - unknown
        - vcVRAMCapacityExceeded

    VmDasBeingResetEventReasonCode_enum:
      type: string
      description: |2
        Possible values:
        - `vmtoolsHeartbeatFailure`: vmtools heartbeat failure
        - `appHeartbeatFailure`: application heartbeat failure
        - `appImmediateResetRequest`: immediate reset request
        - `vmcpResetApdCleared`: reset issued by VMCP when APD cleared
      enum:
        - vmtoolsHeartbeatFailure
        - appHeartbeatFailure
        - appImmediateResetRequest
        - vmcpResetApdCleared

    VmFailedStartingSecondaryEventFailureReason_enum:
      type: string
      description: |2
        The reason for the failure.
        
        Possible values:
        - `incompatibleHost`: Remote host is incompatible for secondary virtual machine.
          
          For instance, the host doesn't have access to the virtual machine's
          network or datastore.
        - `loginFailed`: Login to remote host failed.
        - `registerVmFailed`: Registration of the secondary virtual machine
          on the remote host failed.
        - `migrateFailed`: Migration failed.
      enum:
        - incompatibleHost
        - loginFailed
        - registerVmFailed
        - migrateFailed

    VmShutdownOnIsolationEventOperation_enum:
      type: string
      description: |2
        Possible values:
        - `shutdown`: The virtual machine was shut down
        - `poweredOff`: The virtual machine was powered off because shut down failed
      enum:
        - shutdown
        - poweredOff

    AffinityType_enum:
      type: string
      description: |2
        Types of affinities.
        
        Possible values:
        - `memory`
        - `cpu`
      enum:
        - memory
        - cpu

    AgentInstallFailedReason_enum:
      type: string
      description: |2
        Possible values:
        - `NotEnoughSpaceOnDevice`: There is not enough storage space on the host to install the agent.
        - `PrepareToUpgradeFailed`: Failed to initialize the upgrade directory on the host.
        - `AgentNotRunning`: The agent was installed but is not running.
        - `AgentNotReachable`: The agent was installed but did not respond to requests.
        - `InstallTimedout`: The agent install took too long.
        - `SignatureVerificationFailed`: The signature verification for the installer failed.
        - `AgentUploadFailed`: Failed to upload the agent installer.
        - `AgentUploadTimedout`: The agent upload took too long.
        - `UnknownInstallerError`: The agent installer failed for an unknown reason.
      enum:
        - NotEnoughSpaceOnDevice
        - PrepareToUpgradeFailed
        - AgentNotRunning
        - AgentNotReachable
        - InstallTimedout
        - SignatureVerificationFailed
        - AgentUploadFailed
        - AgentUploadTimedout
        - UnknownInstallerError

    CannotEnableVmcpForClusterReason_enum:
      type: string
      description: |2
        Possible values:
        - `APDTimeoutDisabled`: APD timeout has been disabled on one of the host
      enum:
        - APDTimeoutDisabled

    CannotMoveFaultToleranceVmMoveType_enum:
      type: string
      description: |2
        Possible values:
        - `resourcePool`: Move out of the resouce pool
        - `cluster`: Move out of the cluster
      enum:
        - resourcePool
        - cluster

    CannotPowerOffVmInClusterOperation_enum:
      type: string
      description: |2
        Possible values:
        - `suspend`: suspend
        - `powerOff`: power off
        - `guestShutdown`: guest shutdown
        - `guestSuspend`: guest suspend
      enum:
        - suspend
        - powerOff
        - guestShutdown
        - guestSuspend

    CannotUseNetworkReason_enum:
      type: string
      description: |2
        Possible values:
        - `NetworkReservationNotSupported`: Network does not support reservation
        - `MismatchedNetworkPolicies`: Source and destination networks do not have same security policies
        - `MismatchedDvsVersionOrVendor`: Source and destination DVS do not have same version or vendor
        - `VMotionToUnsupportedNetworkType`: VMotion to unsupported destination network type
        - `NetworkUnderMaintenance`: The network is under maintenance
        - `MismatchedEnsMode`: Source and destination networks do not have same ENS(Enhanced Network Stack) mode
      enum:
        - NetworkReservationNotSupported
        - MismatchedNetworkPolicies
        - MismatchedDvsVersionOrVendor
        - VMotionToUnsupportedNetworkType
        - NetworkUnderMaintenance
        - MismatchedEnsMode

    DasConfigFaultDasConfigFaultReason_enum:
      type: string
      description: |2
        Possible values:
        - `HostNetworkMisconfiguration`: There is a problem with the host network configuration.
        - `HostMisconfiguration`: There is a problem with the host configuration.
        - `InsufficientPrivileges`: The privileges were insuffient for the operation.
        - `NoPrimaryAgentAvailable`: There was no running primary agent available to contact.
          
          Check that your other hosts don't have HA errors
        - `Other`: The HA configuration failed for other reasons.
        - `NoDatastoresConfigured`: No datastores defined for this host
        - `CreateConfigVvolFailed`: Failure to create config vvol
        - `VSanNotSupportedOnHost`: Host in vSAN cluster does not support vSAN.
        - `DasNetworkMisconfiguration`: There is a problem with the cluster network configuration.
        - `SetDesiredImageSpecFailed`: Setting desired imageSpec in Personality Manager failed
        - `ApplyHAVibsOnClusterFailed`: The ApplyHA call to Personality Manager failed
      enum:
        - HostNetworkMisconfiguration
        - HostMisconfiguration
        - InsufficientPrivileges
        - NoPrimaryAgentAvailable
        - Other
        - NoDatastoresConfigured
        - CreateConfigVvolFailed
        - VSanNotSupportedOnHost
        - DasNetworkMisconfiguration
        - SetDesiredImageSpecFailed
        - ApplyHAVibsOnClusterFailed

    DeviceNotSupportedReason_enum:
      type: string
      description: |2
        Reasons why a virtual device would not be supported on a host.
        
        Possible values:
        - `host`: The host does not support this virtual device at all.
        - `guest`: The device is supported by the host in general, but not for
          the specific guest OS the virtual machine is using.
        - `ft`: The device is supported by the host and guest OS, but not for
          the vSphere Fault Tolerance.
          
          ***Since:*** vSphere API Release 8.0.3.0
      enum:
        - host
        - guest
        - ft

    DisallowedChangeByServiceDisallowedChange_enum:
      type: string
      description: |2
        The disallowed change type.
        
        Possible values:
        - `hotExtendDisk`: Online extend disk operation.
      enum:
        - hotExtendDisk

    FtIssuesOnHostHostSelectionType_enum:
      type: string
      description: |2
        HostSelectionType defines how the host was selected
        
        Possible values:
        - `user`: The host was specified by the user
        - `vc`: The host was selected by Virtual Center
        - `drs`: The host was selected by DRS
      enum:
        - user
        - vc
        - drs

    FtIssuesOnHostHostSelectionType:
      type: object
      description: |2
        A boxed *FtIssuesOnHostHostSelectionType_enum*. To be used in *Any* placeholders.
      properties:
        _value:
          $ref: '#/components/schemas/FtIssuesOnHostHostSelectionType_enum'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ArrayOfFtIssuesOnHostHostSelectionType:
      type: object
      description: |2
        A boxed array of *FtIssuesOnHostHostSelectionType_enum*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/FtIssuesOnHostHostSelectionType_enum'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostHasComponentFailureHostComponentType_enum:
      type: string
      description: |2
        Possible values:
        - `Datastore`
      enum:
        - Datastore

    HostIncompatibleForFaultToleranceReason_enum:
      type: string
      description: |2
        Reasons why fault tolerance is not supported on the host.
        
        Possible values:
        - `product`: The product does not support fault tolerance.
        - `processor`: The product supports fault tolerance but the host CPU does not.
      enum:
        - product
        - processor

    HostIncompatibleForRecordReplayReason_enum:
      type: string
      description: |2
        Reasons why record/replay is not supported on a host.
        
        Possible values:
        - `product`: The product does not support record/replay.
        - `processor`: The product supports record/replay but the host CPU does not.
      enum:
        - product
        - processor

    IncompatibleHostForVmReplicationIncompatibleReason_enum:
      type: string
      description: |2
        Possible values:
        - `rpo`: Host does not support the RPO configured for VM replication.
        - `netCompression`: Host does not support network compression configured for VM
          replication.
      enum:
        - rpo
        - netCompression

    InvalidDasConfigArgumentEntryForInvalidArgument_enum:
      type: string
      description: |2
        Possible values:
        - `admissionControl`: Policies for admission control
        - `userHeartbeatDs`: User-specified heartbeat datastores
        - `vmConfig`: VM override
      enum:
        - admissionControl
        - userHeartbeatDs
        - vmConfig

    InvalidProfileReferenceHostReason_enum:
      type: string
      description: |2
        Possible values:
        - `incompatibleVersion`: The associated host and profile version are incompatible.
        - `missingReferenceHost`: There is no reference host associated with the profile.
      enum:
        - incompatibleVersion
        - missingReferenceHost

    LicenseAssignmentFailedReason_enum:
      type: string
      description: |2
        Possible values:
        - `keyEntityMismatch`: The license and the entity to which it is to be assigned are not compatible.
        - `downgradeDisallowed`: The license downgrade is disallowed because some features are in use.
        - `inventoryNotManageableByVirtualCenter`: The inventory has hosts which are not manageable by vCenter unless in evaluation.
        - `hostsUnmanageableByVirtualCenterWithoutLicenseServer`: The inventory has hosts that need the license server to be configured unless vCenter is in evaluation
      enum:
        - keyEntityMismatch
        - downgradeDisallowed
        - inventoryNotManageableByVirtualCenter
        - hostsUnmanageableByVirtualCenterWithoutLicenseServer

    NotSupportedDeviceForFTDeviceType_enum:
      type: string
      description: |2
        Possible values:
        - `virtualVmxnet3`: vmxnet3 virtual Ethernet adapter
        - `paraVirtualSCSIController`: paravirtualized SCSI controller
      enum:
        - virtualVmxnet3
        - paraVirtualSCSIController

    NumVirtualCpusIncompatibleReason_enum:
      type: string
      description: |2
        Reasons why the number of virtual CPUs is incompatible.
        
        Possible values:
        - `recordReplay`: 
          
          Deprecated as of vSphere API 6.0.
          
          The virtual machine needs to support record/replay functionality.
        - `faultTolerance`: The virtual machine is enabled for fault tolerance.
      enum:
        - recordReplay
        - faultTolerance

    QuarantineModeFaultFaultType_enum:
      type: string
      description: |2
        Possible values:
        - `NoCompatibleNonQuarantinedHost`: The cluster does not contain any non-quarantined host satisfying the
          VM/host affinity rules for the VM.
        - `CorrectionDisallowed`: The current DRS migration priority setting disallows generating a
          recommendation to prevent VMs on quarantined hosts.
          
          Thus, the
          violation will not be corrected.
        - `CorrectionImpact`: DRS has determined that evacuation of VMs from quarantined hosts
          impacts respecting cluster constraints or performance goals so they
          are not evacuated.
      enum:
        - NoCompatibleNonQuarantinedHost
        - CorrectionDisallowed
        - CorrectionImpact

    ReplicationDiskConfigFaultReasonForFault_enum:
      type: string
      description: |2
        Possible values:
        - `diskNotFound`: Could not look up device by key
        - `diskTypeNotSupported`: Replication not supported for disk type or backend
        - `invalidDiskKey`: Invalid key value
        - `invalidDiskReplicationId`: Invalid disk replication ID string
        - `duplicateDiskReplicationId`: Another disk in the VM has the same replication ID
        - `invalidPersistentFilePath`: Invalid path (string) for the persistent file
        - `reconfigureDiskReplicationIdNotAllowed`: Attempting to re-configure the disk's replication ID
      enum:
        - diskNotFound
        - diskTypeNotSupported
        - invalidDiskKey
        - invalidDiskReplicationId
        - duplicateDiskReplicationId
        - invalidPersistentFilePath
        - reconfigureDiskReplicationIdNotAllowed

    ReplicationVmConfigFaultReasonForFault_enum:
      type: string
      description: |2
        Possible values:
        - `incompatibleHwVersion`: Incompatible VM hardware version
        - `invalidVmReplicationId`: Invalid VM Replication ID string
        - `invalidGenerationNumber`: Invalid generation number in VM's configuration
        - `outOfBoundsRpoValue`: Invalid RPO value (out of bounds)
        - `invalidDestinationIpAddress`: Invalid destination IP address
        - `invalidDestinationPort`: Invalid destination port
        - `invalidExtraVmOptions`: Malformed extra options list
        - `staleGenerationNumber`: Mis-matching generation number (stale)
        - `reconfigureVmReplicationIdNotAllowed`: Attempting to re-configure the VM replication ID
        - `cannotRetrieveVmReplicationConfiguration`: Could not retrieve the VM configuration
        - `replicationAlreadyEnabled`: Attempting to re-enable replication for the VM
        - `invalidPriorConfiguration`: The existing replication configuration of the VM is broken
          (applicable to re-configuration only).
        - `replicationNotEnabled`: Attempting to re-configure or disable replication for a VM
          for which replication has not been enabled.
        - `replicationConfigurationFailed`: Failed to commit the new replication properties for the VM.
        - `encryptedVm`: VM is encrypted
        - `invalidThumbprint`: Remote certificate thumbprint is invalid
        - `incompatibleDevice`: VM hardware contains devices incompatible with replication
      enum:
        - incompatibleHwVersion
        - invalidVmReplicationId
        - invalidGenerationNumber
        - outOfBoundsRpoValue
        - invalidDestinationIpAddress
        - invalidDestinationPort
        - invalidExtraVmOptions
        - staleGenerationNumber
        - reconfigureVmReplicationIdNotAllowed
        - cannotRetrieveVmReplicationConfiguration
        - replicationAlreadyEnabled
        - invalidPriorConfiguration
        - replicationNotEnabled
        - replicationConfigurationFailed
        - encryptedVm
        - invalidThumbprint
        - incompatibleDevice

    ReplicationVmFaultReasonForFault_enum:
      type: string
      description: |2
        Possible values:
        - `notConfigured`: *VirtualMachine* is not configured for replication
        - `poweredOff`: *VirtualMachine* is powered off (and is not undergoing
          offline replication)
        - `suspended`: *VirtualMachine* is suspended (and is not undergoing
          offline replication)
        - `poweredOn`: *VirtualMachine* is powered on
        - `offlineReplicating`: *VirtualMachine* is in the process of creating an
          an offline instance.
        - `invalidState`: *VirtualMachine* is in an invalid state
        - `invalidInstanceId`: The specified instanceId does not match the *VirtualMachine*
          instanceId
        - `closeDiskError`: *VirtualMachine* is in the process of creating an
          offline instance and we are trying to disable it.
          
          The first step is to close the offline disk. If closing disks
          is not successful, throw this fault.
        - `groupExist`: *VirtualMachine* is trying to create a group already
          owned by another VM.
      enum:
        - notConfigured
        - poweredOff
        - suspended
        - poweredOn
        - offlineReplicating
        - invalidState
        - invalidInstanceId
        - closeDiskError
        - groupExist

    ReplicationVmInProgressFaultActivity_enum:
      type: string
      description: |2
        Possible values:
        - `fullSync`: Initial synchronization with the remote site
        - `delta`: Delta updates to generate a consistent instance
      enum:
        - fullSync
        - delta

    ThirdPartyLicenseAssignmentFailedReason_enum:
      type: string
      description: |2
        Possible values:
        - `licenseAssignmentFailed`: A general failure has occurred during assigning license to the 3rd party module
        - `moduleNotInstalled`: The 3rd party module we are trying to license is not installed.
      enum:
        - licenseAssignmentFailed
        - moduleNotInstalled

    VFlashModuleNotSupportedReason_enum:
      type: string
      description: |2
        Possible values:
        - `CacheModeNotSupported`
        - `CacheConsistencyTypeNotSupported`
        - `CacheBlockSizeNotSupported`
        - `CacheReservationNotSupported`
        - `DiskSizeNotSupported`
      enum:
        - CacheModeNotSupported
        - CacheConsistencyTypeNotSupported
        - CacheBlockSizeNotSupported
        - CacheReservationNotSupported
        - DiskSizeNotSupported

    VmFaultToleranceConfigIssueReasonForIssue_enum:
      type: string
      description: |2
        Possible values:
        - `haNotEnabled`: HA is not enabled on the cluster
        - `moreThanOneSecondary`: There is already a secondary virtual machine for the primary
          virtual machine
        - `recordReplayNotSupported`: 
          
          Deprecated as of vSphere API 6.0.
          
          The virtual machine does not support record/replay.
          
          Vm::Capability.RecordReplaySupported is false.
        - `replayNotSupported`: 
          
          Deprecated as of vSphere API 6.0.
          
          It is not possible to turn on Fault Tolerance on this powered-on VM.
          
          The support for record/replay should be enabled or Fault Tolerance
          turned on, when this VM is powered off.
        - `templateVm`: The virtual machine is a template
        - `multipleVCPU`: The virtual machine has more than one virtual CPU
        - `hostInactive`: The host is not active
        - `ftUnsupportedHardware`: The host ftSupported flag is not set because of hardware issues
        - `ftUnsupportedProduct`: The host ftSupported flag is not set because of it is a
          VMware Server 2.0
        - `missingVMotionNic`: No VMotion license or VMotion nic is not configured on the host
        - `missingFTLoggingNic`: FT logging nic is not configured on the host
        - `thinDisk`: The virtual machine has thin provisioned disks
        - `verifySSLCertificateFlagNotSet`: The "check host certificate" flag is not set
        - `hasSnapshots`: The virtual machine has one or more snapshots
        - `noConfig`: No configuration information is available for the virtual machine
        - `ftSecondaryVm`: The virtual machine is a fault tolerance secondary virtual machine
        - `hasLocalDisk`: The virtual machine has one or more disks on local datastore
        - `esxAgentVm`: The virtual machine is an ESX agent VM
        - `video3dEnabled`: The virtual machine video device has 3D enabled
        - `hasUnsupportedDisk`
        - `insufficientBandwidth`: FT logging nic does not have desired bandwidth
        - `hasNestedHVConfiguration`: The host does not support fault tolerant VM with nested HV or VBS
          enabled.
        - `hasVFlashConfiguration`: The virtual machine has a vFlash memory device or/and disks with
          vFlash cache configured.
        - `unsupportedProduct`: VMware product installed on the host does not support
          fault tolerance
        - `cpuHvUnsupported`: Host CPU does not support hardware virtualization
        - `cpuHwmmuUnsupported`: Host CPU does not support hardware MMU virtualization
        - `cpuHvDisabled`: Host CPU is compatible for replay-based FT, but hardware
          virtualization has been disabled in the BIOS.
        - `hasEFIFirmware`: The virtual machine firmware is of type EFI
        - `tooManyVCPUs`: The host does not support fault tolerance virtual machines
          with the specified number of virtual CPUs.
        - `tooMuchMemory`: The host does not support fault tolerance virtual machines
          with the specified amount of memory.
        - `vMotionNotLicensed`: No VMotion license
          
          ***Since:*** vSphere API Release 8.0.3.0
        - `ftNotLicensed`: Host does not have proper FT license
          
          ***Since:*** vSphere API Release 8.0.3.0
        - `haAgentIssue`: Host does not have HA agent running properly
          
          ***Since:*** vSphere API Release 8.0.3.0
        - `unsupportedSPBM`: The VM has unsupported storage policy
          
          ***Since:*** vSphere API Release 8.0.3.0
        - `hasLinkedCloneDisk`: The virtual machine has virtual disk in linked-clone mode
          
          ***Since:*** vSphere API Release 8.0.3.0
        - `unsupportedPMemHAFailOver`: Virtual Machine with Pmem HA Failover is not supported
          
          ***Since:*** vSphere API Release 7.0.2.0
        - `unsupportedEncryptedDisk`: Virtual Machine with encrypted virtual disk is not supported.
          
          ***Since:*** vSphere API Release 8.0.3.0
        - `ftMetroClusterNotEditable`: The virtual machine does not allow to enable or disable FT Metro
          Cluster while FT is turned on.
          
          ***Since:*** vSphere API Release 8.0.3.0
        - `noHostGroupConfigured`: Cannot turn on vSphere Fault Tolerance on a FT Metro Cluster enabled VM
          with no Host Group configured.
          
          ***Since:*** vSphere API Release 8.0.3.0
      enum:
        - haNotEnabled
        - moreThanOneSecondary
        - recordReplayNotSupported
        - replayNotSupported
        - templateVm
        - multipleVCPU
        - hostInactive
        - ftUnsupportedHardware
        - ftUnsupportedProduct
        - missingVMotionNic
        - missingFTLoggingNic
        - thinDisk
        - verifySSLCertificateFlagNotSet
        - hasSnapshots
        - noConfig
        - ftSecondaryVm
        - hasLocalDisk
        - esxAgentVm
        - video3dEnabled
        - hasUnsupportedDisk
        - insufficientBandwidth
        - hasNestedHVConfiguration
        - hasVFlashConfiguration
        - unsupportedProduct
        - cpuHvUnsupported
        - cpuHwmmuUnsupported
        - cpuHvDisabled
        - hasEFIFirmware
        - tooManyVCPUs
        - tooMuchMemory
        - vMotionNotLicensed
        - ftNotLicensed
        - haAgentIssue
        - unsupportedSPBM
        - hasLinkedCloneDisk
        - unsupportedPMemHAFailOver
        - unsupportedEncryptedDisk
        - ftMetroClusterNotEditable
        - noHostGroupConfigured

    VmFaultToleranceInvalidFileBackingDeviceType_enum:
      type: string
      description: |2
        Possible values:
        - `virtualFloppy`: virtual floppy
        - `virtualCdrom`: virtual Cdrom
        - `virtualSerialPort`: virtual serial port
        - `virtualParallelPort`: virtual parallel port
        - `virtualDisk`: virtual disk
      enum:
        - virtualFloppy
        - virtualCdrom
        - virtualSerialPort
        - virtualParallelPort
        - virtualDisk

    WillLoseHAProtectionResolution_enum:
      type: string
      description: |2
        Possible values:
        - `svmotion`: storage vmotion resolution
        - `relocate`: relocate resolution
      enum:
        - svmotion
        - relocate

    HostActiveDirectoryAuthenticationCertificateDigest_enum:
      type: string
      description: |2
        Possible values:
        - `SHA1`
      enum:
        - SHA1

    HostActiveDirectoryInfoDomainMembershipStatus_enum:
      type: string
      description: |2
        Possible values:
        - `unknown`: The Active Directory integration provider does not support
          domain trust checks.
        - `ok`: No problems with the domain membership.
        - `noServers`: The host thinks it's part of a domain,
          but no domain controllers could be reached to confirm.
        - `clientTrustBroken`: The client side of the trust relationship is broken.
        - `serverTrustBroken`: The server side of the trust relationship is broken
          (or bad machine password).
        - `inconsistentTrust`: Unexpected domain controller responded.
        - `otherProblem`: There's some problem with the domain membership.
      enum:
        - unknown
        - ok
        - noServers
        - clientTrustBroken
        - serverTrustBroken
        - inconsistentTrust
        - otherProblem

    AutoStartAction_enum:
      type: string
      description: |2
        Possible values:
        - `none`: No action is taken for this virtual machine.
          
          This virtual machine is
          not a part of the auto-start sequence. This can be used for both auto-start
          and auto-start settings.
        - `systemDefault`: The default system action is taken for this virtual machine when it is next in
          the auto-start order.
          
          This can be used for both auto-start and auto-start
          settings.
        - `powerOn`: This virtual machine is powered on when it is next in the auto-start order.
        - `powerOff`: This virtual machine is powered off when it is next in the auto-stop order.
          
          This is the default stopAction.
        - `guestShutdown`: The guest operating system for a virtual machine is shut down when that
          virtual machine in next in the auto-stop order.
        - `suspend`: This virtual machine is suspended when it is next in the auto-stop order.
      enum:
        - none
        - systemDefault
        - powerOn
        - powerOff
        - guestShutdown
        - suspend

    AutoStartWaitHeartbeatSetting_enum:
      type: string
      description: |2
        Determines if the virtual machine should start after receiving a heartbeat,
        ignore heartbeats and start after the startDelay has elapsed, or follow the
        system default before powering on.
        
        When a virtual machine is next in the start
        order, the system either waits a specified period of time for a virtual
        machine to power on or it waits until it receives a successful heartbeat from a
        powered on virtual machine. By default, this is set to no.
        
        Possible values:
        - `yes`: The system waits until receiving a heartbeat before powering on the next
          machine in the order.
        - `no`: The system does not wait to receive a heartbeat before powering on the next
          machine in the order.
          
          This is the default setting.
        - `systemDefault`: The system uses the default value to determine whether or not to wait to
          receive a heartbeat before powering on the next machine in the order.
      enum:
        - yes
        - no
        - systemDefault

    AutoStartWaitHeartbeatSetting:
      type: object
      description: |2
        A boxed *AutoStartWaitHeartbeatSetting_enum*. To be used in *Any* placeholders.
      properties:
        _value:
          $ref: '#/components/schemas/AutoStartWaitHeartbeatSetting_enum'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ArrayOfAutoStartWaitHeartbeatSetting:
      type: object
      description: |2
        A boxed array of *AutoStartWaitHeartbeatSetting_enum*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/AutoStartWaitHeartbeatSetting_enum'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostBIOSInfoFirmwareType_enum:
      type: string
      description: |2
        Enumeration of the supported firmware types.
        
        Possible values:
        - `BIOS`
        - `UEFI`
        
        ***Since:*** vSphere API Release 8.0.2.0
      enum:
        - BIOS
        - UEFI

    HostCapabilityFtUnsupportedReason_enum:
      type: string
      description: |2
        Deprecated as of vSphere API 7.0, use
        *VmFaultToleranceConfigIssueReasonForIssue_enum*.
        
        Set of possible values for
        *HostCapability.ftCompatibilityIssues*
        
        Possible values:
        - `vMotionNotLicensed`: No VMotion license
        - `missingVMotionNic`: VMotion nic is not configured on the host
        - `missingFTLoggingNic`: FT logging nic is not configured on the host
        - `ftNotLicensed`: Host does not have proper FT license
        - `haAgentIssue`: Host does not have HA agent running properly
        - `unsupportedProduct`: VMware product installed on the host does not support
          fault tolerance
        - `cpuHvUnsupported`: Host CPU does not support hardware virtualization
        - `cpuHwmmuUnsupported`: Host CPU does not support hardware MMU virtualization
        - `cpuHvDisabled`: Host CPU is compatible for replay-based FT, but hardware
          virtualization has been disabled in the BIOS.
      enum:
        - vMotionNotLicensed
        - missingVMotionNic
        - missingFTLoggingNic
        - ftNotLicensed
        - haAgentIssue
        - unsupportedProduct
        - cpuHvUnsupported
        - cpuHwmmuUnsupported
        - cpuHvDisabled

    HostReplayUnsupportedReason_enum:
      type: string
      description: |2
        Deprecated as of vSphere API 6.0.
        
        Set of possible values for
        *HostCapability.replayUnsupportedReason* and
        *HostCapability.replayCompatibilityIssues*.
        
        Possible values:
        - `incompatibleProduct`
        - `incompatibleCpu`
        - `hvDisabled`
        - `cpuidLimitSet`
        - `oldBIOS`
        - `unknown`
      enum:
        - incompatibleProduct
        - incompatibleCpu
        - hvDisabled
        - cpuidLimitSet
        - oldBIOS
        - unknown

    HostCapabilityUnmapMethodSupported_enum:
      type: string
      description: |2
        Set of VMFS unmap API version.
        
        Possible values:
        - `priority`: only the unmap priority is supported
        - `fixed`: the unmap bandwidth can be set as a fixed value
        - `dynamic`: the unmap bandwidth can be set as a range, where the actual
          bandwidth will be dynamically throttled by the backened
      enum:
        - priority
        - fixed
        - dynamic

    HostCapabilityVmDirectPathGen2UnsupportedReason_enum:
      type: string
      description: |2
        Set of possible values for *HostCapability.vmDirectPathGen2UnsupportedReason*.
        
        Possible values:
        - `hostNptIncompatibleProduct`: The host software does not support VMDirectPath Gen 2.
        - `hostNptIncompatibleHardware`: The host hardware does not support VMDirectPath Gen 2.
          
          Note that
          this is a general capability for the host and is independent of
          support by a given physical NIC.
        - `hostNptDisabled`: The host is configured to disable VMDirectPath Gen 2.
      enum:
        - hostNptIncompatibleProduct
        - hostNptIncompatibleHardware
        - hostNptDisabled

    HostCertificateManagerCertificateInfoCertificateStatus_enum:
      type: string
      description: |2
        The status of a given certificate as computed per the soft and the hard
        thresholds in vCenter Server.
        
          
          
        There are two different thresholds for the host certificate
        expirations; a soft threshold (which constitutes of two phases) and a
        hard threshold.
          
          
        Soft Threshold:
          
        Phase One: vCenter Server will publish an event at
        this time to let the user know about the status, but, no alarms or
        warnings are raised.
          
        Phase Two: During this phase, vCenter Server will publish an event and
        indicate the certificate status as expiring in the UI.
          
          
        Hard Threshold:
          
        vCenter Server will publish an alarm and indicate via the UI that the
        certificate expiration is imminent.
        
        Possible values:
        - `unknown`: The certificate status is unknown.
        - `expired`: The certificate has expired.
        - `expiring`: The certificate is expiring shortly.
          
          (soft threshold - 1)
        - `expiringShortly`: The certificate is expiring shortly.
          
          (soft threshold - 2)
        - `expirationImminent`: The certificate expiration is imminent.
          
          (hard threshold)
        - `good`: The certificate is good.
      enum:
        - unknown
        - expired
        - expiring
        - expiringShortly
        - expirationImminent
        - good

    HostCertificateManagerCertificateKind_enum:
      type: string
      description: |2
        Certificate type supported by Host
        
        Possible values:
        - `Machine`: Machine certificate of the Host
        - `VASAClient`: VASA Client certificate used for communication with VASA Provider
          
        ***Since:*** vSphere API Release 8.0.1.0
      enum:
        - Machine
        - VASAClient

    HostConfigChangeMode_enum:
      type: string
      description: |2
        This is a global mode on a configuration specification indicating
        whether the structure represents the desired state or the set of
        operations to apply on the managed object.
        
        Possible values:
        - `modify`: Indicates that the structure represents the
          set of operations to apply on the managed object.
        - `replace`: Indicates that the structure represents the
          desired state of the managed object.
      enum:
        - modify
        - replace

    HostConfigChangeOperation_enum:
      type: string
      description: |2
        This list indicates the operation that should be performed for an
        entity.
        
        Possible values:
        - `add`: Indicates the addition of an entity to the configuration.
        - `remove`: Indicates the removal of an entity from the configuration.
        - `edit`: Indicates changes on the entity.
          
          The entity must exist or a
          *NotFound* error will be thrown.
        - `ignore`: Indicates that an entity will be ignored: it won't be added when it
          doesn't exist, or removed/changed when it exists.
      enum:
        - add
        - remove
        - edit
        - ignore

    HostCpuPackageVendor_enum:
      type: string
      description: |2
        Possible values:
        - `unknown`
        - `intel`
        - `amd`
        - `hygon`
      enum:
        - unknown
        - intel
        - amd
        - hygon

    HostCpuPowerManagementInfoPolicyType_enum:
      type: string
      description: |2
        Possible values for Current CPU power management policy
        
        Possible values:
        - `off`
        - `staticPolicy`
        - `dynamicPolicy`
      enum:
        - off
        - staticPolicy
        - dynamicPolicy

    HostCpuSchedulerInfoCpuSchedulerPolicyInfo_enum:
      type: string
      description: |2
        Possible values:
        - `systemDefault`: The CPU scheduler on this host is running without any modifications
          or mitigations.
        - `scav1`: The CPU scheduler on this host is using only one hyperthread per
          core to mitigate a security vulnerability.
        - `scav2`: The CPU scheduler on this host is using hyperthreads, with
          Side-Channel aware scheduling to mitigate a security vulnerability.
          
        ***Since:*** vSphere API Release 8.0.3.0
      enum:
        - systemDefault
        - scav1
        - scav2

    HostDateTimeInfoProtocol_enum:
      type: string
      description: |2
        Types of time synchronization protocols.
        
        Possible values:
        - `ntp`: Network Time Protocol (NTP).
        - `ptp`: Precision Time Protocol (PTP).
      enum:
        - ntp
        - ptp

    DiagnosticPartitionType_enum:
      type: string
      description: |2
        The type of diagnostic partition.
        
        Private diagnostic partition has one
        slot, so can only be used by one host. Shared diagnostic parititon
        needs multiple slots so to be usable by multiple hosts.
        
        Possible values:
        - `singleHost`
        - `multiHost`
      enum:
        - singleHost
        - multiHost

    DiagnosticPartitionStorageType_enum:
      type: string
      description: |2
        Type of partition indicating the type of storage on which the partition
        resides.
        
        If the diagnostic partition is local only, it will only need
        one slot. If the diagnostic partition is on shared storage, it could
        be used by multiple hosts. As a result, it will need multiple slots.
        
        Possible values:
        - `directAttached`
        - `networkAttached`
      enum:
        - directAttached
        - networkAttached

    HostDigestInfoDigestMethodType_enum:
      type: string
      description: |2
        The set of digest methods that can be used by TPM to calculate the PCR
        values.
        
        Possible values:
        - `SHA1`
        - `MD5`: 
          
          Deprecated as of vSphere API 6.7.
          
          MD5.
        - `SHA256`
        - `SHA384`
        - `SHA512`
        - `SM3_256`
      enum:
        - SHA1
        - MD5
        - SHA256
        - SHA384
        - SHA512
        - SM3_256

    HostDigestVerificationSetting_enum:
      type: string
      description: |2
        This enum specifies the supported digest verification settings.
        
        For NVMe over TCP connections, both header and data digests may be
        requested during the process of establishing the connection.
        For details, see:
        - NVM Express Technical Proposal 8000 - NVMe/TCP Transport,
          Section 7.4.6, "PDU Header and Data Digests"
          
        Possible values:
        - `digestDisabled`: Both header and data digest verification are disabled.
        - `headerOnly`: Only header digest verification is enabled.
        - `dataOnly`: Only data digest verification is enabled.
        - `headerAndData`: Both header and data digest verification are enabled.
          
        ***Since:*** vSphere API Release 7.0.3.0
      enum:
        - digestDisabled
        - headerOnly
        - dataOnly
        - headerAndData

    HostDiskPartitionInfoPartitionFormat_enum:
      type: string
      description: |2
        List of partition format types.
        
        This denotes the partition table layout.
        
        Possible values:
        - `gpt`
        - `mbr`
        - `unknown`
      enum:
        - gpt
        - mbr
        - unknown

    HostDiskPartitionInfoType_enum:
      type: string
      description: |2
        List of symbol partition types
        
        Possible values:
        - `none`
        - `vmfs`
        - `linuxNative`
        - `linuxSwap`
        - `extended`
        - `ntfs`
        - `vmkDiagnostic`
        - `vffs`
      enum:
        - none
        - vmfs
        - linuxNative
        - linuxSwap
        - extended
        - ntfs
        - vmkDiagnostic
        - vffs

    HostFeatureVersionKey_enum:
      type: string
      description: |2
        Set of possible values for
        *HostFeatureVersionInfo.key*, which
        is a unique key that identifies a feature.
        
        Possible values:
        - `faultTolerance`: VMware Fault Tolerance feature.
          
          For pre-4.1 hosts, the
          version value reported will be empty in which case
          *AboutInfo.build* should be used. For all
          other hosts, the version number reported will be a component-specific
          version identifier of the form X.Y.Z, where:
          X refers to host agent Fault Tolerance version number,
          Y refers to VMX Fault Tolerance version number,
          Z refers to VMkernal Fault Tolerance version
      enum:
        - faultTolerance

    FibreChannelPortType_enum:
      type: string
      description: |2
        The operating mode of the adapter.
        
        Possible values:
        - `fabric`
        - `loop`
        - `pointToPoint`
        - `unknown`
      enum:
        - fabric
        - loop
        - pointToPoint
        - unknown

    FibreChannelPortType:
      type: object
      description: |2
        A boxed *FibreChannelPortType_enum*. To be used in *Any* placeholders.
      properties:
        _value:
          $ref: '#/components/schemas/FibreChannelPortType_enum'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ArrayOfFibreChannelPortType:
      type: object
      description: |2
        A boxed array of *FibreChannelPortType_enum*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/FibreChannelPortType_enum'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    FileSystemMountInfoVStorageSupportStatus_enum:
      type: string
      description: |2
        Status of volume's support for vStorage hardware acceleration.
        
        The ESX Server determines the status based on the capabilities
        of the devices that support the file system volume.
        When a host boots, the support status is unknown.
        As the ESX host attempts hardware-accelerated operations,
        it determines whether the storage device supports hardware
        acceleration and sets the *HostFileSystemMountInfo.vStorageSupport*
        property accordingly.
        
        Possible values:
        - `vStorageSupported`: Storage device supports hardware acceleration.
          
          The ESX host will use the feature to offload certain
          storage-related operations to the device.
        - `vStorageUnsupported`: Storage device does not support hardware acceleration.
          
          The ESX host will handle all storage-related operations.
        - `vStorageUnknown`: Initial support status value.
      enum:
        - vStorageSupported
        - vStorageUnsupported
        - vStorageUnknown

    HostFileSystemVolumeFileSystemType_enum:
      type: string
      description: |2
        Type of file system volume.
        
        Possible values:
        - `VMFS`: VMware File System (ESX Server only).
          
          If this is set,
          the type of the file system volume is VMFS.
        - `NFS`: Network file system v3 linux &amp; esx servers only.
          
          If this is
          set, the type of the file system volume is NFS v3.
        - `NFS41`: Network file system v4.1 linux &amp; esx servers only.
          
          If this is
          set, the type of the file system volume is NFS v4.1 or later.
        - `CIFS`: Common Internet File System.
          
          If this is set, the type of the
          file system volume is Common Internet File System.
        - `vsan`: VSAN File System (ESX Server only).
        - `VFFS`: vFlash File System (ESX Server only).
          
          If this is set, the type of the file system volume is VFFS.
        - `VVOL`: vvol File System (ESX Server only).
        - `PMEM`: Persistent Memory File System (ESX Server only).
        - `vsanD`: VSAN direct file system.
          
          ***Since:*** vSphere API Release 7.0.1.0
        - `OTHER`: Used if the file system is not one of the specified file systems.
          
          Used mostly for reporting purposes. The other types are described
          by the otherType property.
      enum:
        - VMFS
        - NFS
        - NFS41
        - CIFS
        - vsan
        - VFFS
        - VVOL
        - PMEM
        - vsanD
        - OTHER

    HostFirewallSystemRuleSetId_enum:
      type: string
      description: |2
        List of available firewall ruleset ids
        
        Possible values:
        - `faultTolerance`
        - `fdm`
        - `updateManager`
        - `vpxHeartbeats`
        
        ***Since:*** vSphere API Release 8.0.2.0
      enum:
        - faultTolerance
        - fdm
        - updateManager
        - vpxHeartbeats

    HostFirewallSystemServiceName_enum:
      type: string
      description: |2
        List of available service names
        
        Possible values:
        - `vpxa`
        
        ***Since:*** vSphere API Release 8.0.2.0
      enum:
        - vpxa

    HostFruFruType_enum:
      type: string
      description: |2
        The vendor definition for type of Field Replaceable Unit (FRU).
        
        Possible values:
        - `undefined`
        - `board`
        - `product`
      enum:
        - undefined
        - board
        - product

    HostGraphicsConfigGraphicsType_enum:
      type: string
      description: |2
        Supported values for graphics type.
        
        Possible values:
        - `shared`: Shared graphics (ex.
          
          virtual shared graphics acceleration).
        - `sharedDirect`: Shared direct graphics (ex.
          
          vendor vGPU shared passthrough).
      enum:
        - shared
        - sharedDirect

    HostGraphicsConfigSharedPassthruAssignmentPolicy_enum:
      type: string
      description: |2
        Supported values for shared passthrough assignment policy
        
        Possible values:
        - `performance`: Performance policy: assign VM to GPU with fewest VMs.
        - `consolidation`: Consolidation policy: group like VMs on GPU until fully loaded.
      enum:
        - performance
        - consolidation

    HostGraphicsConfigVgpuMode_enum:
      type: string
      description: |2
        Supported values for vGPU mode.
        
        Possible values:
        - `sameSize`: vGPU time-sliced same size.
        - `mixedSize`: vGPU time-sliced mixed size.
          
        ***Since:*** vSphere API Release 8.0.3.0
      enum:
        - sameSize
        - mixedSize

    HostGraphicsInfoGraphicsType_enum:
      type: string
      description: |2
        Possible values for graphics type.
        
        Possible values:
        - `basic`: Basic graphics when no host driver is available.
        - `shared`: Shared graphics (ex.
          
          virtual shared graphics acceleration).
        - `direct`: Direct graphics (ex.
          
          passthrough).
        - `sharedDirect`: Shared direct graphics (ex.
          
          vGPU shared passthrough).
      enum:
        - basic
        - shared
        - direct
        - sharedDirect

    HostGraphicsInfoVgpuMode_enum:
      type: string
      description: |2
        Possible values for vGPU mode.
        
        Possible values:
        - `none`: vGPU mode not applicable.
        - `sameSize`: vGPU time-sliced same size.
        - `mixedSize`: vGPU time-sliced mixed size.
        - `multiInstanceGpu`: vGPU multi-instance GPU.
          
        ***Since:*** vSphere API Release 8.0.3.0
      enum:
        - none
        - sameSize
        - mixedSize
        - multiInstanceGpu

    HostHardwareElementStatus_enum:
      type: string
      description: |2
        The current status of the hardware
        
        Possible values:
        - `Unknown`: The implementation cannot report on the current status of the
          physical element
        - `Green`: The physical element is functioning as expected
        - `Yellow`: All functionality is available but some might be degraded.
        - `Red`: The physical element is failing.
          
          It is possible that some or all
          functionalities of this physical element is degraded or not working.
      enum:
        - Unknown
        - Green
        - Yellow
        - Red

    HostAccessMode_enum:
      type: string
      description: |2
        Defines different access modes that a user may have on the host for
        direct host connections.
        
        The assumption here is that when the host is managed by vCenter,
        we don't need fine-grained control on local user permissions like the
        interface provided by *AuthorizationManager*.
        
        Possible values:
        - `accessNone`: Indicates that the user has no explicitly defined permissions or roles.
          
          This is used when we want to remove all permissions for some user.
          
          Note that this is not the same as *accessNoAccess*.
        - `accessAdmin`: Describes a propagating Admin role on the root inventory object
          (root folder) on the host, and no other non-Admin role on any other
          object.
          
          The same permissions are needed to login to local or remote
          shell (ESXiShell or SSH).
        - `accessNoAccess`: Describes a propagating NoAccess role on the root inventory object
          (root folder) on the host, and no other roles.
          
          Even if the user has another (redundant) NoAccess role on some other
          inventory object, then the access mode for this user will be
          classified as *accessOther*.
          
          This mode may be used to restrict a specific user account without
          restricting the access mode for the group to which the user belongs.
        - `accessReadOnly`: Describes a propagating ReadOnly role on the root inventory object
          (root folder) on the host, and no other roles.
          
          Even if the user has another (redundant) ReadOnly role on some other
          inventory object, then the access mode for this user will be
          *accessOther*.
        - `accessOther`: Describes a combination of one or more roles/permissions which are
          none of the above.
      enum:
        - accessNone
        - accessAdmin
        - accessNoAccess
        - accessReadOnly
        - accessOther

    HostAccessMode:
      type: object
      description: |2
        A boxed *HostAccessMode_enum*. To be used in *Any* placeholders.
      properties:
        _value:
          $ref: '#/components/schemas/HostAccessMode_enum'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ArrayOfHostAccessMode:
      type: object
      description: |2
        A boxed array of *HostAccessMode_enum*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostAccessMode_enum'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostLockdownMode_enum:
      type: string
      description: |2
        Defines the possible states of lockdown mode.
        
        Possible values:
        - `lockdownDisabled`: Indicates that lockdown mode is disabled.
        - `lockdownNormal`: Indicates that lockdown mode is enabled with service DCUI
          (Direct Console User Interface) running.
        - `lockdownStrict`: Indicates that lockdown mode is enabled with service DCUI stopped.
          
          If the host is in "strict" lockdown mode then no one will be able
          to exit lockdown mode through DCUI in emergency situations,
          i.e. when the connection to vCenter server is permanently lost.
      enum:
        - lockdownDisabled
        - lockdownNormal
        - lockdownStrict

    HostLockdownMode:
      type: object
      description: |2
        A boxed *HostLockdownMode_enum*. To be used in *Any* placeholders.
      properties:
        _value:
          $ref: '#/components/schemas/HostLockdownMode_enum'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ArrayOfHostLockdownMode:
      type: object
      description: |2
        A boxed array of *HostLockdownMode_enum*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostLockdownMode_enum'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostImageAcceptanceLevel_enum:
      type: string
      description: |2
        Acceptance level definitions
        
        Possible values:
        - `vmware_certified`: "VMware-certified"
        - `vmware_accepted`: "VMware-accepted"
        - `partner`: "Partner-supported"
        - `community`: "Community-supported"
      enum:
        - vmware_certified
        - vmware_accepted
        - partner
        - community

    HostInternetScsiHbaChapAuthenticationType_enum:
      type: string
      description: |2
        The type of CHAP authentication setting to use.
        
        prohibited : do not use CHAP.
        preferred : use CHAP if successfully negotiated,
        but allow non-CHAP connections as fallback
        discouraged : use non-CHAP, but allow CHAP connectsion as fallback
        required : use CHAP for connection strictly, and fail if CHAP
        negotiation fails.
        Defaults to preferred on first configuration if unspecified.
        
        Possible values:
        - `chapProhibited`
        - `chapDiscouraged`
        - `chapPreferred`
        - `chapRequired`
      enum:
        - chapProhibited
        - chapDiscouraged
        - chapPreferred
        - chapRequired

    HostInternetScsiHbaDigestType_enum:
      type: string
      description: |2
        The type of integrity checks to use.
        
        The digest setting for header
        and data traffic can be separately configured.
        prohibited : do not use digest.
        preferred : use digest if successfully negotiated, but skip the use
        of digest otherwise.
        discouraged : do not use digest if target allows, otherwise use digest.
        required : use digest strictly, and fail if target does not support
        digest.
        Defaults to preferred on first configuration if unspecified.
        
        Possible values:
        - `digestProhibited`
        - `digestDiscouraged`
        - `digestPreferred`
        - `digestRequired`
      enum:
        - digestProhibited
        - digestDiscouraged
        - digestPreferred
        - digestRequired

    InternetScsiSnsDiscoveryMethod_enum:
      type: string
      description: |2
        The available iSNS discovery methods.
        
        Possible values:
        - `isnsStatic`
        - `isnsDhcp`
        - `isnsSlp`
      enum:
        - isnsStatic
        - isnsDhcp
        - isnsSlp

    SlpDiscoveryMethod_enum:
      type: string
      description: |2
        The available SLP discovery methods.
        
        Possible values:
        - `slpDhcp`: Use DHCP to find the SLP DAs.
        - `slpAutoUnicast`: Use broadcasting to find SLP DAs.
          
          Only DAs on the current subnet will be found.
        - `slpAutoMulticast`: Use the well known multicast address to find DAs.
        - `slpManual`: User specified address for a DA.
      enum:
        - slpDhcp
        - slpAutoUnicast
        - slpAutoMulticast
        - slpManual

    HostInternetScsiHbaIscsiIpv6AddressAddressConfigurationType_enum:
      type: string
      description: |2
        enum listing possible IPv6 address configuration methods.
        
        Possible values:
        - `DHCP`: DHCP
        - `AutoConfigured`: Auto configured.
          
          Auto configured Link local address and Router Advertisement addresses
          would be of this type.
        - `Static`: Static address.
          
          Typically user specified addresses will be static addresses.
          User can specify link local address. Only Static addresses can be added or removed.
        - `Other`: Other or unknown type.
      enum:
        - DHCP
        - AutoConfigured
        - Static
        - Other

    HostInternetScsiHbaIscsiIpv6AddressAddressConfigurationType:
      type: object
      description: |2
        A boxed *HostInternetScsiHbaIscsiIpv6AddressAddressConfigurationType_enum*. To be used in *Any* placeholders.
      properties:
        _value:
          $ref: '#/components/schemas/HostInternetScsiHbaIscsiIpv6AddressAddressConfigurationType_enum'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ArrayOfHostInternetScsiHbaIscsiIpv6AddressAddressConfigurationType:
      type: object
      description: |2
        A boxed array of *HostInternetScsiHbaIscsiIpv6AddressAddressConfigurationType_enum*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostInternetScsiHbaIscsiIpv6AddressAddressConfigurationType_enum'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostInternetScsiHbaIscsiIpv6AddressIPv6AddressOperation_enum:
      type: string
      description: |2
        enum listing IPv6 address operations.
        
        Possible values:
        - `add`
        - `remove`
      enum:
        - add
        - remove

    HostInternetScsiHbaIscsiIpv6AddressIPv6AddressOperation:
      type: object
      description: |2
        A boxed *HostInternetScsiHbaIscsiIpv6AddressIPv6AddressOperation_enum*. To be used in *Any* placeholders.
      properties:
        _value:
          $ref: '#/components/schemas/HostInternetScsiHbaIscsiIpv6AddressIPv6AddressOperation_enum'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ArrayOfHostInternetScsiHbaIscsiIpv6AddressIPv6AddressOperation:
      type: object
      description: |2
        A boxed array of *HostInternetScsiHbaIscsiIpv6AddressIPv6AddressOperation_enum*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostInternetScsiHbaIscsiIpv6AddressIPv6AddressOperation_enum'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostInternetScsiHbaNetworkBindingSupportType_enum:
      type: string
      description: |2
        The binding mode of the adapter.
        
        Possible values:
        - `notsupported`
        - `optional`
        - `required`
      enum:
        - notsupported
        - optional
        - required

    HostInternetScsiHbaNetworkBindingSupportType:
      type: object
      description: |2
        A boxed *HostInternetScsiHbaNetworkBindingSupportType_enum*. To be used in *Any* placeholders.
      properties:
        _value:
          $ref: '#/components/schemas/HostInternetScsiHbaNetworkBindingSupportType_enum'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ArrayOfHostInternetScsiHbaNetworkBindingSupportType:
      type: object
      description: |2
        A boxed array of *HostInternetScsiHbaNetworkBindingSupportType_enum*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostInternetScsiHbaNetworkBindingSupportType_enum'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostInternetScsiHbaStaticTargetTargetDiscoveryMethod_enum:
      type: string
      description: |2
        The method of discovery of an iScsi target.
        
        staticMethod: static discovery
        sendTargetsMethod: sendtarget discovery
        slpMethod: Service Location Protocol discovery
        isnsMethod: Internet Storage Name Service discovery
        unknownMethod: discovery method not identified by iscsi stack
        
        Possible values:
        - `staticMethod`
        - `sendTargetMethod`
        - `slpMethod`
        - `isnsMethod`
        - `unknownMethod`
      enum:
        - staticMethod
        - sendTargetMethod
        - slpMethod
        - isnsMethod
        - unknownMethod

    HostIpConfigIpV6AddressConfigType_enum:
      type: string
      description: |2
        This specifies how the ipv6 address is configured for the interface.
        
        We follow rfc4293 in defining the values for the configType.
        
        Possible values:
        - `other`: Any other type of address configuration other than the below
          mentioned ones will fall under this category.
          
          For e.g., automatic
          address configuration for the link local address falls under
          this type.
        - `manual`: The address is configured manually.
        - `dhcp`: The address is configured through dhcp.
        - `linklayer`: The address is obtained through stateless autoconfiguration.
        - `random`: The address is chosen by the system at random
          e.g., an IPv4 address within 169.254/16, or an RFC
          3041 privacy address.
      enum:
        - other
        - manual
        - dhcp
        - linklayer
        - random

    HostIpConfigIpV6AddressStatus_enum:
      type: string
      description: |2
        Possible values:
        - `preferred`: Indicates that this is a valid address.
        - `deprecated`: Indicates that this is a valid but deprecated address
          that should no longer be used as a source address.
        - `invalid`: Indicates that this isn't a valid.
        - `inaccessible`: Indicates that the address is not accessible because
          interface is not operational.
        - `unknown`: Indicates that the status cannot be determined.
        - `tentative`: Indicates that the uniqueness of the
          address on the link is presently being verified.
        - `duplicate`: Indicates the address has been determined to be non-unique
          on the link, this address will not be reachable.
      enum:
        - preferred
        - deprecated
        - invalid
        - inaccessible
        - unknown
        - tentative
        - duplicate

    IscsiPortInfoPathStatus_enum:
      type: string
      description: |2
        Possible values:
        - `notUsed`: There are no paths on this Virtual NIC
        - `active`: All paths on this Virtual NIC are standby paths from SCSI stack
          perspective.
        - `standBy`: One or more paths on the Virtual NIC are active paths to
          storage.
          
          Unbinding this Virtual NIC will cause storage path
          transitions.
        - `lastActive`: One or more paths on the Virtual NIC is the last active
          path to a particular storage device.
      enum:
        - notUsed
        - active
        - standBy
        - lastActive

    LinkDiscoveryProtocolConfigOperationType_enum:
      type: string
      description: |2
        The Discovery Protocol operation.
        
        Possible values:
        - `none`: Don't listen for incoming discovery packets and don't sent discover
          packets for the switch either.
        - `listen`: Listen for incoming discovery packets but don't sent discovery packet
          for the switch.
        - `advertise`: Sent discovery packets for the switch, but don't listen for incoming
          discovery packets.
        - `both`: Sent discovery packets for the switch and listen for incoming
          discovery packets.
      enum:
        - none
        - listen
        - advertise
        - both

    LinkDiscoveryProtocolConfigProtocolType_enum:
      type: string
      description: |2
        The Discovery Protocol types.
        
        Possible values:
        - `cdp`: Cisco Discovery Protocol
        - `lldp`: Link Layer Discovery Protocol
      enum:
        - cdp
        - lldp

    HostLowLevelProvisioningManagerFileType_enum:
      type: string
      description: |2
        This enum defines the possible types of file types that can be reserved
        or deleted
        
        Possible values:
        - `File`
        - `VirtualDisk`
        - `Directory`
      enum:
        - File
        - VirtualDisk
        - Directory

    HostLowLevelProvisioningManagerReloadTarget_enum:
      type: string
      description: |2
        The target of the disk reload.
        
        Possible values:
        - `currentConfig`: Specifies the reload of the current config of the virtual machine.
        - `snapshotConfig`: Specifies the reload of the snapshot config of the virtual machine.
          
          If the virtual machine has multiple snapshots, all of the snapshot's
          config will be reloaded.
      enum:
        - currentConfig
        - snapshotConfig

    HostMaintenanceSpecPurpose_enum:
      type: string
      description: |2
        Possible values:
        - `hostUpgrade`
      enum:
        - hostUpgrade

    VirtualMachineMemoryAllocationPolicy_enum:
      type: string
      description: |2
        Means for allocating additional memory for virtual machines.
        
        Possible values:
        - `swapNone`: Fit all virtual machine memory into reserved host memory.
        - `swapSome`: Allow some virtual machine memory to be swapped.
        - `swapMost`: Allow most virtual machine memory to be swapped.
      enum:
        - swapNone
        - swapSome
        - swapMost

    HostMemoryTierFlags_enum:
      type: string
      description: |2
        Enumeration of flags pertaining to a memory tier.
        
        Here are some examples of what the flags will look like for various memory
        configurations:
        - Traditional memory (*noTiering*): The host has a DRAM tier
          for the main memory and nothing else. The DRAM tier will have the
          *memoryTier* flag.
        - App Direct mode (*noTiering*): The host has a DRAM tier
          and a PMem tier, but the two are independent and unrelated. The PMem tier is
          non-volatile and is exposed as an NVDIMM device. Applications can decide whether to
          direct the reads and writes to DRAM or PMem by using the appropriate system call. The
          DRAM tier will have the *memoryTier* flag and the PMem tier will
          have the *persistentTier* flag.
        - Memory mode (*hardwareTiering*): The host has a DRAM tier
          and a PMem tier, but the DRAM is hidden from applications and is just a cache
          for the PMem main memory. The PMem tier is volatile, and is abstracted by the hardware
          layer to look like traditional memory. Applications can read from/write to memory
          using the traditional memory system calls. The memory controller in the hardware will
          internally direct those to the DRAM cache first, and on a cache miss redirect them to
          the PMem main memory. The DRAM tier will have the *cachingTier*
          flag and the PMem tier will have the *memoryTier* flag.
          
        Possible values:
        - `memoryTier`: Flag indicating that the tier is the primary memory tier visible from the
          host.
        - `persistentTier`: Flag indicating that the tier is used as non-volatile storage, e.g.
          
          PMem in
          App Direct mode.
        - `cachingTier`: Flag indicating that the tier is a cache for main memory.
        - `unmappableTier`: ***Since:*** vSphere API Release 8.0.3.0
        
        ***Since:*** vSphere API Release 7.0.3.0
      enum:
        - memoryTier
        - persistentTier
        - cachingTier
        - unmappableTier

    HostMemoryTierType_enum:
      type: string
      description: |2
        Enumeration of supported types of memory tiers.
        
        Possible values:
        - `DRAM`: Dynamic random-access memory.
        - `PMem`: Persistent memory.
        - `NVMe`: NVMe memory.
          
          ***Since:*** vSphere API Release 8.0.3.0
        
        ***Since:*** vSphere API Release 7.0.3.0
      enum:
        - DRAM
        - PMem
        - NVMe

    HostMemoryTieringType_enum:
      type: string
      description: |2
        Enumeration of the supported kinds of memory tiering configurations.
        
        Possible values:
        - `noTiering`: The traditional memory configuration without any tiers.
        - `hardwareTiering`: The memory configuration where a tier is hardware-controlled and invisible to
          applications, e.g.
          
          Intel's Memory Mode.
        - `softwareTiering`: The memory configuration where all memory tiers are managed by software (ESX).
          
          ***Since:*** vSphere API Release 8.0.3.0
        
        ***Since:*** vSphere API Release 7.0.3.0
      enum:
        - noTiering
        - hardwareTiering
        - softwareTiering

    HostMountMode_enum:
      type: string
      description: |2
        Defines the access mode of the datastore.
        
        Possible values:
        - `readWrite`: The host system has read/write access to the file system.
        - `readOnly`: The host system has read-only access to the file system.
      enum:
        - readWrite
        - readOnly

    HostMountInfoInaccessibleReason_enum:
      type: string
      description: |2
        A datastore can become inaccessible due to a number of reasons as
        defined in this enum *HostMountInfoInaccessibleReason_enum*.
        
        The reason for a datastore being inaccessible is reported in
        *HostMountInfo.inaccessibleReason*.
        APD ("All Paths Down") is a condition where a SAN or NFS storage has
        become inaccessible for unknown reasons. It only indicates loss of
        connectivity and does not indicate storage device failure or
        LUN removal (Permanent Device Loss or PDL)
        A difference between APD and PDL is that APD may recover
        in which case all use cases will start to work as before. In case of PDL
        the failed datastore/device is unlikely to recover and hence the device
        path information and data cache will be emptied. If the PDL condition
        recovers, the failed datastores have to be added back to the host. Once
        in PDL a datastore cannot be added back until there are no longer any
        open files on the datastore.
        PDL is not linked to the APD and can happen at any time with or without APD
        preceding. If APD and PDL occur at the same time, APD will be reported first.
        Once (and if) the APD condition clears, PermanentDataLoss will be reported if
        PDL condition still exists.
        
        Possible values:
        - `AllPathsDown_Start`: AllPathsDown\_Start value is reported when all paths down state is detected
        - `AllPathsDown_Timeout`: After a wait for a system default time (which is user modifiable)
          to ascertain the state is indeed an APD, AllPathsDown\_Timeout property
          is reported.
          
          The host advanced option used to set timeout period
          is "/Misc/APDTimeout"
          After the datastore property is set to AllPathsDown\_Timeout, all data i/o
          to the datastore will be fast-failed (failed immediately).
        - `PermanentDeviceLoss`: A PDL condition is reported as PermanentDeviceLoss.
      enum:
        - AllPathsDown_Start
        - AllPathsDown_Timeout
        - PermanentDeviceLoss

    HostMountInfoMountFailedReason_enum:
      type: string
      description: |2
        NFS mount request can be failed due to a number of reasons as
        defined in this enum *HostMountInfoMountFailedReason_enum*.
        
        The reason for the mount failure is reported in
        *HostMountInfo.mountFailedReason*. This is applicable only for those
        datastores to which mount retry is configured.
        
        Possible values:
        - `CONNECT_FAILURE`: Failed to get port or connect.
          
          Or MOUNT/FSINFO RPC failed.
        - `MOUNT_NOT_SUPPORTED`: Server doesn't support MOUNT\_PROGRAM/MOUNT\_PROGRAM\_VERSION.
        - `NFS_NOT_SUPPORTED`: Server doesn't support NFS\_PROGRAM/NFS\_PROGRAM\_VERSION.
        - `MOUNT_DENIED`: No permission to mount the remote volume or it doesn't exist.
        - `MOUNT_NOT_DIR`: Remote path not a directory.
        - `VOLUME_LIMIT_EXCEEDED`: Maximum NFS volumes have been mounted.
        - `CONN_LIMIT_EXCEEDED`: Maximum connections for NFS has been reached.
        - `MOUNT_EXISTS`: Volume already mounted or a different mount exists with same label.
        - `OTHERS`: Any other reason which is not present in above list.
          
        ***Since:*** vSphere API Release 8.0.0.1
      enum:
        - CONNECT_FAILURE
        - MOUNT_NOT_SUPPORTED
        - NFS_NOT_SUPPORTED
        - MOUNT_DENIED
        - MOUNT_NOT_DIR
        - VOLUME_LIMIT_EXCEEDED
        - CONN_LIMIT_EXCEEDED
        - MOUNT_EXISTS
        - OTHERS

    MultipathState_enum:
      type: string
      description: |2
        Set of constants defining the possible states of a multipath path.
        
        Possible values:
        - `standby`
        - `active`
        - `disabled`
        - `dead`
        - `unknown`
      enum:
        - standby
        - active
        - disabled
        - dead
        - unknown

    HostNasVolumeSecurityType_enum:
      type: string
      description: |2
        Security type supported.
        
        Possible values:
        - `AUTH_SYS`: Authentication based on traditional UNIX identifiers (UID and GID).
          
          Server trusts the IDs sent by the client for each request and uses them
          to perform access control. Current implementation only supports
          AUTH\_SYS with root user.
        - `SEC_KRB5`: Ensures RPC header authentication using Kerberos session keys.
          
          When
          this option is enabled, the client uses the information specified in
          *HostNasVolumeUserInfo* to establish shared keys with the server using
          Kerberos. These shared keys are used to generate and verify message
          authentication codes for RPC header of NFS requests and responses,
          respectively. This method does not secure NFS file data.
        - `SEC_KRB5I`: Extends SEC\_KRB5 to generate and verify message authentication codes
          for the payload of NFS requests and responses respectively.
          
          This
          ensures the integrity of the NFS file data.
      enum:
        - AUTH_SYS
        - SEC_KRB5
        - SEC_KRB5I

    HostNetStackInstanceCongestionControlAlgorithmType_enum:
      type: string
      description: |2
        Define TCP congestion control algorithm used by an instance
        
        Possible values:
        - `newreno`: New Reno Algorithm.
          
          See http://tools.ietf.org/html/rfc3782 for detail.
        - `cubic`: Cubic Algorithm.
          
          See http://tools.ietf.org/id/draft-rhee-tcp-cubic-00.txt for detail.
      enum:
        - newreno
        - cubic

    HostNetStackInstanceSystemStackKey_enum:
      type: string
      description: |2
        Define the instance identifier for different traffic type
        
        Possible values:
        - `defaultTcpipStack`: The default stack used by applications
        - `vmotion`: Stack key used for vMotion applications
        - `vSphereProvisioning`: Stack key used for vSphere provisioning NFC traffic
        - `mirror`: Stack key used for port mirroring
          
          ***Since:*** vSphere API Release 8.0.0.1
        - `ops`: Stack key used for ops applications
          
          ***Since:*** vSphere API Release 8.0.0.1
      enum:
        - defaultTcpipStack
        - vmotion
        - vSphereProvisioning
        - mirror
        - ops

    HostNumericSensorHealthState_enum:
      type: string
      description: |2
        Health state of the numeric sensor as reported by the sensor probes.
        
        Same data reported using command line: esxcli hardware ipmi sdr list
        
        Possible values:
        - `unknown`: The implementation cannot report on the current health state of the
          physical element
        - `green`: The sensor is operating under normal conditions
        - `yellow`: The sensor is operating under conditions that are non-critical.
        - `red`: The sensor is operating under critical or fatal conditions.
          
          This may
          directly affect the functioning of both the sensor and related
          components.
      enum:
        - unknown
        - green
        - yellow
        - red

    HostNumericSensorType_enum:
      type: string
      description: |2
        Sensor Types for specific hardware component are either based on
        class of sensor or what the sensor monitors to allow for grouping
        
        Possible values:
        - `fan`: Fan sensor
        - `power`: Power sensor
        - `temperature`: Temperature sensor
        - `voltage`: Voltage Sensor
        - `other`: Other sensor.
        - `processor`: Processor sensor.
        - `memory`: Memory sensor.
        - `storage`: disk/storage sensor.
        - `systemBoard`: system board sensor.
        - `battery`: Battery sensor.
        - `bios`: BIOS/firmware related sensor.
        - `cable`: cable related sensor.
        - `watchdog`: Watchdog related sensor.
      enum:
        - fan
        - power
        - temperature
        - voltage
        - other
        - processor
        - memory
        - storage
        - systemBoard
        - battery
        - bios
        - cable
        - watchdog

    NvdimmNvdimmHealthInfoState_enum:
      type: string
      description: |2
        Overall state of NVDIMM
        
        Possible values:
        - `normal`: NVDIMM state is normal
        - `error`: Error in NVDIMM state.
          
          Potential data loss.
      enum:
        - normal
        - error

    NvdimmInterleaveSetState_enum:
      type: string
      description: |2
        State of interleave set
        
        Possible values:
        - `invalid`: Interleave set is invalid
        - `active`: Interleave set is valid and active
      enum:
        - invalid
        - active

    NvdimmNamespaceDetailsHealthStatus_enum:
      type: string
      description: |2
        Overall health state for a namespace
        
        Possible values:
        - `normal`: Namespace health is normal
        - `missing`: Namespace health is missing
        - `labelMissing`: Namespace health label is missing
        - `interleaveBroken`: Namespace health interleave broken
        - `labelInconsistent`: Namespace health label is inconsistent
      enum:
        - normal
        - missing
        - labelMissing
        - interleaveBroken
        - labelInconsistent

    NvdimmNamespaceDetailsState_enum:
      type: string
      description: |2
        State of Namespace
        
        Possible values:
        - `invalid`: Namespace is invalid
        - `notInUse`: Namespace is valid but not in use
        - `inUse`: Namespace is valid and is in use
      enum:
        - invalid
        - notInUse
        - inUse

    NvdimmNamespaceHealthStatus_enum:
      type: string
      description: |2
        Overall health state for a namespace
        
        Possible values:
        - `normal`: Namespace health is normal
        - `missing`: Namespace health is missing
        - `labelMissing`: Namespace health label is missing
        - `interleaveBroken`: Namespace health interleave broken
        - `labelInconsistent`: Namespace health label is inconsistent
        - `bttCorrupt`: Namespace health BTT is corrupt
        - `badBlockSize`: Namespace health encountered bad block
      enum:
        - normal
        - missing
        - labelMissing
        - interleaveBroken
        - labelInconsistent
        - bttCorrupt
        - badBlockSize

    NvdimmNamespaceState_enum:
      type: string
      description: |2
        State of Namespace
        
        Possible values:
        - `invalid`: Namespace is invalid
        - `notInUse`: Namespace is valid but not in use
        - `inUse`: Namespace is valid and is in use
      enum:
        - invalid
        - notInUse
        - inUse

    NvdimmNamespaceType_enum:
      type: string
      description: |2
        Type of namespace.
        
        Possible values:
        - `blockNamespace`: Block mode namespace
        - `persistentNamespace`: Persistent mode namespace
      enum:
        - blockNamespace
        - persistentNamespace

    NvdimmRangeType_enum:
      type: string
      description: |2
        An indicator of how a memory range is being used
        
        Possible values:
        - `volatileRange`: Identifies the region to be volatile
        - `persistentRange`: Identifies the region to be persistent
        - `controlRange`: NVDIMM control region
        - `blockRange`: NVDIMM block data window region
        - `volatileVirtualDiskRange`: NVDIMM volatile virtual disk region
        - `volatileVirtualCDRange`: NVDIMM volatile virtual CD region
        - `persistentVirtualDiskRange`: NVDIMM persistent virtual disk region
        - `persistentVirtualCDRange`: NVDIMM persistent virtual CD region
      enum:
        - volatileRange
        - persistentRange
        - controlRange
        - blockRange
        - volatileVirtualDiskRange
        - volatileVirtualCDRange
        - persistentVirtualDiskRange
        - persistentVirtualCDRange

    HostNvmeDiscoveryLogSubsystemType_enum:
      type: string
      description: |2
        This enum represents the supported NVM subsystem types.
        
        Possible values:
        - `discovery`: A Discovery service, composed of Discovery controllers.
        - `nvm`: An NVM subsystem whose controllers may have attached namespaces.
      enum:
        - discovery
        - nvm

    HostNvmeDiscoveryLogTransportRequirements_enum:
      type: string
      description: |2
        This enum represents the supported types of transport requirements.
        
        Possible values:
        - `secureChannelRequired`: A fabric secure channel is required.
        - `secureChannelNotRequired`: A fabric secure channel is not required.
        - `requirementsNotSpecified`: Requirements are not specified
      enum:
        - secureChannelRequired
        - secureChannelNotRequired
        - requirementsNotSpecified

    HostNvmeTransportParametersNvmeAddressFamily_enum:
      type: string
      description: |2
        This enum specifies the supported address families for
        NVME over Fabrics.
        
        For details, see:
        - "NVM Express over Fabrics 1.0", Section 5.3, Figure 34,
          "Discovery Log Page Entry"
          
        Possible values:
        - `ipv4`: IPv4 address, format specified in IETF RFC 791.
        - `ipv6`: IPv6 address, format specified in IETF RFC 2373.
        - `infiniBand`: InfiniBand address family.
        - `fc`: Fibre Channel address family.
        - `loopback`: Intra-host transport.
        - `unknown`: Unrecognized address family.
      enum:
        - ipv4
        - ipv6
        - infiniBand
        - fc
        - loopback
        - unknown

    HostNvmeTransportType_enum:
      type: string
      description: |2
        The set of NVM Express over Fabrics transport types.
        
        For details, see:
        - "NVM Express over Fabrics 1.0", Section 1.5.1,
          "Fabrics and Transports".
          
        Possible values:
        - `pcie`: PCI Express transport type
        - `fibreChannel`: Fibre Channel transport type
        - `rdma`: Remote Direct Memory Access transport type
        - `tcp`: Transmission Control Protocol transport type
          
          ***Since:*** vSphere API Release 7.0.3.0
        - `loopback`: Intra-host transport.
        - `unsupported`: The transport type is not among the currently supported ones.
      enum:
        - pcie
        - fibreChannel
        - rdma
        - tcp
        - loopback
        - unsupported

    HostOpaqueSwitchOpaqueSwitchState_enum:
      type: string
      description: |2
        Possible values:
        - `up`: The opaque switch is up and running.
        - `warning`: The opaque switch requires attention.
        - `down`: The opaque switch is down.
        - `maintenance`: The opaque switch is under upgrade.
      enum:
        - up
        - warning
        - down
        - maintenance

    HostPartialMaintenanceModeId_enum:
      type: string
      description: |2
        The following enum describes some common kinds of partial maintenance modes,
        as well as their special semantics.
        
        Possible values:
        - `quickPatchPartialMM`: When the host is in the quick patch partial maintenance mode, it is safe to
          perform a quick patch.
          
          When the host is in this partial maintenance mode, any virtual machines
          and/or pods placed on it will continue to run but operations which may
          lead to new workloads starting on the host such as power on or incoming
          vmotions may be blocked.
          It is generally unsafe to reboot the host in this state.
          
          ***Since:*** vSphere API Release 8.0.3.0
        
        ***Since:*** vSphere API Release 8.0.3.0
      enum:
        - quickPatchPartialMM

    HostPartialMaintenanceModeStatus_enum:
      type: string
      description: |2
        The following enum contains the list of possible statuses associated
        with each partial maintenance mode.
        
        Possible values:
        - `notInPartialMM`: The host is not in the particular partial maintenance mode.
        - `enteringPartialMM`: The host is in the process of entering the particular partial maintenance
          mode.
        - `exitingPartialMM`: The host is in the process of exiting the particular partial maintenance
          mode.
        - `inPartialMM`: The host is in the particular partial maintenance mode.
          
        ***Since:*** vSphere API Release 8.0.3.0
      enum:
        - notInPartialMM
        - enteringPartialMM
        - exitingPartialMM
        - inPartialMM

    HostPatchManagerInstallState_enum:
      type: string
      description: |2
        The installation state if the update is installed on the server.
        
        Possible values:
        - `hostRestarted`: The server has been restarted since the update installation.
        - `imageActive`: Indicates if the newly installed image is active on the server
      enum:
        - hostRestarted
        - imageActive

    HostPatchManagerIntegrityStatus_enum:
      type: string
      description: |2
        The integrity validation status.
        
        Possible values:
        - `validated`: The update is successfully validated.
        - `keyNotFound`: The integrity can not be verified since a public key to
          verify the update cannot be found.
        - `keyRevoked`: A public key to verify the update has been revoked.
        - `keyExpired`: A public key to verify the update is expired.
        - `digestMismatch`: A digital signature of the update does not match.
        - `notEnoughSignatures`: Not enough signed signatures on the update.
        - `validationError`: The integrity validation failed.
      enum:
        - validated
        - keyNotFound
        - keyRevoked
        - keyExpired
        - digestMismatch
        - notEnoughSignatures
        - validationError

    HostPatchManagerReason_enum:
      type: string
      description: |2
        Reasons why an update is not applicable to the ESX host.
        
        Possible values:
        - `obsoleted`: The update is made obsolete by other patches installed on the host.
        - `missingPatch`: The update depends on another update that is neither installed
          nor in the scanned list of updates.
        - `missingLib`: The update depends on certain libraries or RPMs that are not
          available.
        - `hasDependentPatch`: The update depends on an update that is not installed but is
          in the scanned list of updates.
        - `conflictPatch`: The update conflicts with certain updates that are already
          installed on the host.
        - `conflictLib`: The update conflicts with RPMs or libraries installed on the
          host.
      enum:
        - obsoleted
        - missingPatch
        - missingLib
        - hasDependentPatch
        - conflictPatch
        - conflictLib

    PhysicalNicResourcePoolSchedulerDisallowedReason_enum:
      type: string
      description: |2
        Possible values:
        - `userOptOut`: Indicates that the user has opted out the Physical NIC from resource pool
          based scheduling.
        - `hardwareUnsupported`: Indicates that the NIC device does is not capable of resource pool
          based scheduling.
      enum:
        - userOptOut
        - hardwareUnsupported

    PhysicalNicVmDirectPathGen2SupportedMode_enum:
      type: string
      description: |2
        Set of possible values for *PhysicalNic.vmDirectPathGen2SupportedMode*.
        
        Possible values:
        - `upt`
      enum:
        - upt

    PortGroupConnecteeType_enum:
      type: string
      description: |2
        The type of component connected to a port group.
        
        Possible values:
        - `virtualMachine`: A virtual machine is connected to this port group.
        - `systemManagement`: A system management entity (service console)
          is connected to this port group.
        - `host`: The VMkernel is connected to this port group.
        - `unknown`: This port group serves an entity of unspecified kind.
      enum:
        - virtualMachine
        - systemManagement
        - host
        - unknown

    HostProtocolEndpointPEType_enum:
      type: string
      description: |2
        Deprecated from all vmodl version above @released("6.0").
        
        ProtocolEndpoint Type.
        
        Possible values:
        - `block`
        - `nas`
      enum:
        - block
        - nas

    HostProtocolEndpointProtocolEndpointType_enum:
      type: string
      description: |2
        ProtocolEndpoint type.
        
        Possible values:
        - `scsi`
        - `nfs`
        - `nfs4x`
      enum:
        - scsi
        - nfs
        - nfs4x

    HostPtpConfigDeviceType_enum:
      type: string
      description: |2
        PTP capable network device type.
        
        Possible values:
        - `none`: No device.
        - `virtualNic`: Virtual network adapter.
        - `pciPassthruNic`: A network PCI device capable of PTP hardware timestamping,
          enabled for passthru.
          
          See *HostPciPassthruSystem*
          for information on PCI devices enabled for passthru available
          on the host.
        
        ***Since:*** vSphere API Release 7.0.3.0
      enum:
        - none
        - virtualNic
        - pciPassthruNic

    HostQualifiedNameType_enum:
      type: string
      description: |2
        Possible values:
        - `nvmeQualifiedName`: The NVMe Qualified Name (NQN) of this host.
        - `vvolNvmeQualifiedName`: The NVMe Qualified Name (NQN) of this host used by Vvol.
          
          ***Since:*** vSphere API Release 8.0.0.0
        
        ***Since:*** vSphere API Release 7.0.3.0
      enum:
        - nvmeQualifiedName
        - vvolNvmeQualifiedName

    HostRdmaDeviceConnectionState_enum:
      type: string
      description: |2
        Possible RDMA device connection states.
        
        These correspond
        to possible link states as defined by the
        Infiniband (TM) specification.
        
        Further details can be found in:
        - "Infiniband (TM) Architecture Specification, Volume 1"
          section 7.2 "Link states"
          
        Possible values:
        - `unknown`: Connection state unknown.
          
          Indicates that the driver returned
          unexpected or no connection state information.
        - `down`: Device down.
          
          Indicates that both the logical link and
          underlying physical link are down. Packets
          are discarded.
        - `init`: Device initializing.
          
          Indicates that the physical link is up, but
          the logical link is still initializing.
          Only subnet management and flow control link
          packets can be received and transmitted.
        - `armed`: Device armed.
          
          Indicates that the physical link is up, but
          the logical link is not yet fully configured.
          Packets can be received, but non-SMPs
          (subnet management packets) to be sent are discarded.
        - `active`: Device active.
          
          Indicates that both the physical and logical
          link are up. Packets can be transmitted and received.
        - `activeDefer`: Device in active defer state.
          
          Indicates that the logical link was active, but the
          physical link has suffered a failure. If it recovers
          within a timeout, the connection state will return to active,
          otherwise it will move to down.
      enum:
        - unknown
        - down
        - init
        - armed
        - active
        - activeDefer

    HostFirewallRuleDirection_enum:
      type: string
      description: |2
        Enumeration of port directions.
        
        Possible values:
        - `inbound`
        - `outbound`
      enum:
        - inbound
        - outbound

    HostFirewallRuleDirection:
      type: object
      description: |2
        A boxed *HostFirewallRuleDirection_enum*. To be used in *Any* placeholders.
      properties:
        _value:
          $ref: '#/components/schemas/HostFirewallRuleDirection_enum'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ArrayOfHostFirewallRuleDirection:
      type: object
      description: |2
        A boxed array of *HostFirewallRuleDirection_enum*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostFirewallRuleDirection_enum'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostFirewallRulePortType_enum:
      type: string
      description: |2
        Enumeration of port types.
        
        Possible values:
        - `src`
        - `dst`
      enum:
        - src
        - dst

    HostFirewallRulePortType:
      type: object
      description: |2
        A boxed *HostFirewallRulePortType_enum*. To be used in *Any* placeholders.
      properties:
        _value:
          $ref: '#/components/schemas/HostFirewallRulePortType_enum'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ArrayOfHostFirewallRulePortType:
      type: object
      description: |2
        A boxed array of *HostFirewallRulePortType_enum*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostFirewallRulePortType_enum'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostFirewallRuleProtocol_enum:
      type: string
      description: |2
        Set of valid port protocols.
        
        Possible values:
        - `tcp`
        - `udp`
      enum:
        - tcp
        - udp

    HostRuntimeInfoNetStackInstanceRuntimeInfoState_enum:
      type: string
      description: |2
        Define the instance state type
        
        Possible values:
        - `inactive`: The instance is deleted or not running
        - `active`: The instance is running
        - `deactivating`: The instance is in the progress of asynchronous deletion
        - `activating`: Reserved state for future proofing asynchronous creation
      enum:
        - inactive
        - active
        - deactivating
        - activating

    HostRuntimeInfoStateEncryptionInfoProtectionMode_enum:
      type: string
      description: |2
        Valid protection modes for persistent state encryption.
        
        Possible values:
        - `none`: Encryption is not protected.
        - `tpm`: Encryption is TPM protected.
          
        ***Since:*** vSphere API Release 7.0.3.0
      enum:
        - none
        - tpm

    HostRuntimeInfoStatelessNvdsMigrationState_enum:
      type: string
      description: |2
        Defines if the host is ready for NVDS to VDS migration.
        
        Possible values:
        - `ready`: The host is ready for NVDS to VDS migration.
        - `notNeeded`: The host does not need NVDS to VDS migration
        - `unknown`: The host is disconnected from VC.
          
        ***Since:*** vSphere API Release 7.0.2.0
      enum:
        - ready
        - notNeeded
        - unknown

    ScsiDiskType_enum:
      type: string
      description: |2
        The types of disk drives.
        
        Possible values:
        - `native512`: 512 native sector size drive.
        - `emulated512`: 4K sector size drive in 512 emulation mode.
        - `native4k`: 4K native sector size drive.
        - `SoftwareEmulated4k`: Software emulated 4k.
        - `unknown`: Unknown type.
      enum:
        - native512
        - emulated512
        - native4k
        - SoftwareEmulated4k
        - unknown

    ScsiLunDescriptorQuality_enum:
      type: string
      description: |2
        An indicator of the utility of Descriptor in being used as an
        identifier that is stable, unique, and correlatable.
        
        Possible values:
        - `highQuality`: The Descriptor has an identifier that is useful for identification
          and correlation across hosts.
        - `mediumQuality`: The Descriptor has an identifier that may be used for identification
          and correlation across hosts.
        - `lowQuality`: The Descriptor has an identifier that should not be used for
          identification and correlation across hosts.
        - `unknownQuality`: The Descriptor has an identifier that may or may not be useful for
          identification and correlation across hosts.
      enum:
        - highQuality
        - mediumQuality
        - lowQuality
        - unknownQuality

    DeviceProtocol_enum:
      type: string
      description: |2
        The list of Device Protocols.
        
        Device protocol could be either NVMe or SCSI
        
        Possible values:
        - `NVMe`
        - `SCSI`
        
        ***Since:*** vSphere API Release 8.0.1.0
      enum:
        - NVMe
        - SCSI

    ScsiLunLunReservationStatus_enum:
      type: string
      description: |2
        Possible values:
        - `LUN_RESERVED_UNKNOWN`
        - `LUN_RESERVED_YES`
        - `LUN_RESERVED_NO`
        - `LUN_RESERVED_NOT_SUPPORTED`
        
        ***Since:*** vSphere API Release 8.0.3.0
      enum:
        - LUN_RESERVED_UNKNOWN
        - LUN_RESERVED_YES
        - LUN_RESERVED_NO
        - LUN_RESERVED_NOT_SUPPORTED

    ScsiLunType_enum:
      type: string
      description: |2
        The list of SCSI device types.
        
        These values correspond to values
        published in the SCSI specification.
        
        Possible values:
        - `disk`
        - `tape`
        - `printer`
        - `processor`
        - `worm`
        - `cdrom`
        - `scanner`
        - `opticalDevice`
        - `mediaChanger`
        - `communications`
        - `storageArrayController`
        - `enclosure`
        - `unknown`
      enum:
        - disk
        - tape
        - printer
        - processor
        - worm
        - cdrom
        - scanner
        - opticalDevice
        - mediaChanger
        - communications
        - storageArrayController
        - enclosure
        - unknown

    ScsiLunState_enum:
      type: string
      description: |2
        The Operational state of the LUN
        
        Possible values:
        - `unknownState`: The LUN state is unknown.
        - `ok`: The LUN is on and available.
        - `error`: The LUN is dead and/or not reachable.
        - `off`: The LUN is off.
        - `quiesced`: The LUN is inactive.
        - `degraded`: One or more paths to the LUN are down, but I/O
          is still possible.
          
          Further path failures may
          result in lost connectivity.
        - `lostCommunication`: No more paths are available to the LUN.
        - `timeout`: All Paths have been down for the timeout condition
          determined by a user-configurable host advanced option.
      enum:
        - unknownState
        - ok
        - error
        - off
        - quiesced
        - degraded
        - lostCommunication
        - timeout

    ScsiLunVStorageSupportStatus_enum:
      type: string
      description: |2
        Storage array hardware acceleration support status.
        
        When a host boots, the support status is unknown.
        As a host attempts hardware-accelerated operations,
        it determines whether the storage device supports hardware acceleration
        and sets the *ScsiLun.vStorageSupport* property accordingly.
        
        Possible values:
        - `vStorageSupported`: Storage device supports hardware acceleration.
          
          The ESX host will use the feature to offload certain
          storage-related operations to the device.
        - `vStorageUnsupported`: Storage device does not support hardware acceleration.
          
          The ESX host will handle all storage-related operations.
        - `vStorageUnknown`: Initial support status value.
      enum:
        - vStorageSupported
        - vStorageUnsupported
        - vStorageUnknown

    HostServicePolicy_enum:
      type: string
      description: |2
        Set of valid service policy strings.
        
        Possible values:
        - `on`: Service should be started when the host starts up.
        - `automatic`: Service should run if and only if it has open firewall ports.
        - `off`: Service should not be started when the host starts up.
      enum:
        - on
        - automatic
        - off

    HostSevInfoSevState_enum:
      type: string
      description: |2
        Possible values:
        - `uninitialized`
        - `initialized`
        - `working`
        
        ***Since:*** vSphere API Release 7.0.1.0
      enum:
        - uninitialized
        - initialized
        - working

    HostSgxInfoFlcModes_enum:
      type: string
      description: |2
        Flexible Launch Enclave (FLC) modes.
        
        Possible values:
        - `off`: Flexible Launch Enclave (FLC) is not available on the host.
          
          The
          "launch enclave MSRs" are initialized with Intel's public key hash.
        - `locked`: FLC is available and the "launch Enclave MSRs" are locked and
          initialized with the provided public key hash.
        - `unlocked`: FLC is available and the "launch enclave MSRs" are writeable and
          initialized with Intel's public key hash.
      enum:
        - off
        - locked
        - unlocked

    HostSgxInfoSgxStates_enum:
      type: string
      description: |2
        Host SGX states.
        
        Possible values:
        - `notPresent`: SGX is not present in the CPU.
        - `disabledBIOS`: SGX is disabled in the BIOS.
        - `disabledCFW101`: SGX is disabled because CPU erratum CFW101 is present.
        - `disabledCPUMismatch`: SGX is disabled due to a mismatch in the SGX capabilities
          exposed by different CPUs.
        - `disabledNoFLC`: SGX is disabled because the CPU does not support FLC.
        - `disabledNUMAUnsup`: SGX is disabled because the host uses NUMA, which is not
          supported with SGX.
        - `disabledMaxEPCRegs`: SGX is disabled because the host exceeds the maximum supported
          number of EPC regions.
        - `enabled`: SGX is enabled.
      enum:
        - notPresent
        - disabledBIOS
        - disabledCFW101
        - disabledCPUMismatch
        - disabledNoFLC
        - disabledNUMAUnsup
        - disabledMaxEPCRegs
        - enabled

    HostSgxRegistrationInfoRegistrationStatus_enum:
      type: string
      description: |2
        SGX registration status for ESX host.
        
        Possible values:
        - `notApplicable`: SGX is not available or the host is unisocket.
        - `incomplete`: SGX registration is incomplete.
        - `complete`: SGX registration is complete.
          
        ***Since:*** vSphere API Release 8.0.0.1
      enum:
        - notApplicable
        - incomplete
        - complete

    HostSgxRegistrationInfoRegistrationType_enum:
      type: string
      description: |2
        SGX host registration type.
        
        Possible values:
        - `manifest`: Indicates that an Initial Platform Establishment
          or TCB recovery registration is pending.
        - `addPackage`: Indicates that new CPU package was added.
          
        ***Since:*** vSphere API Release 8.0.0.1
      enum:
        - manifest
        - addPackage

    HostSnmpAgentCapability_enum:
      type: string
      description: |2
        SNMP Agent supported capabilities enum
        
        Possible values:
        - `COMPLETE`: Implements test notifications and allows agent configuration
        - `DIAGNOSTICS`: Implements only test notification capability only
        - `CONFIGURATION`: Allows for agent configuration only
      enum:
        - COMPLETE
        - DIAGNOSTICS
        - CONFIGURATION

    HostSnmpAgentCapability:
      type: object
      description: |2
        A boxed *HostSnmpAgentCapability_enum*. To be used in *Any* placeholders.
      properties:
        _value:
          $ref: '#/components/schemas/HostSnmpAgentCapability_enum'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ArrayOfHostSnmpAgentCapability:
      type: object
      description: |2
        A boxed array of *HostSnmpAgentCapability_enum*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostSnmpAgentCapability_enum'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    SoftwarePackageConstraint_enum:
      type: string
      description: |2
        These are the constraint relationships between software packages.
        
        Possible values:
        - `equals`
        - `lessThan`
        - `lessThanEqual`
        - `greaterThanEqual`
        - `greaterThan`
      enum:
        - equals
        - lessThan
        - lessThanEqual
        - greaterThanEqual
        - greaterThan

    SoftwarePackageVibType_enum:
      type: string
      description: |2
        Possible values:
        - `bootbank`: This package is installed into bootbank in storage.
        - `tools`: This package is installed into tools partition in storage.
        - `meta`: This package contains install related data without
          content to install.
      enum:
        - bootbank
        - tools
        - meta

    HostStorageProtocol_enum:
      type: string
      description: |2
        The set of supported host bus adapter protocols.
        
        Possible values:
        - `scsi`: The Small Computer System Interface (SCSI) protocol.
        - `nvme`: The Non-Volatile Memory Express (NVME) protocol.
      enum:
        - scsi
        - nvme

    HostSystemIdentificationInfoIdentifier_enum:
      type: string
      description: |2
        Possible values:
        - `AssetTag`: The Asset tag of the system
        - `ServiceTag`: The Service tag of the system
        - `OemSpecificString`: OEM specific string
        - `EnclosureSerialNumberTag`: The Enclosure Serial Number tag of the system
        - `SerialNumberTag`: The Serial Number tag of the system
      enum:
        - AssetTag
        - ServiceTag
        - OemSpecificString
        - EnclosureSerialNumberTag
        - SerialNumberTag

    HostTpmAttestationInfoAcceptanceStatus_enum:
      type: string
      description: |2
        Status constants of TPM attestation.
        
        Possible values:
        - `notAccepted`: TPM attestation failed.
        - `accepted`: TPM attestation succeeded.
      enum:
        - notAccepted
        - accepted

    HostTpmAttestationInfoAcceptanceStatus:
      type: object
      description: |2
        A boxed *HostTpmAttestationInfoAcceptanceStatus_enum*. To be used in *Any* placeholders.
      properties:
        _value:
          $ref: '#/components/schemas/HostTpmAttestationInfoAcceptanceStatus_enum'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ArrayOfHostTpmAttestationInfoAcceptanceStatus:
      type: object
      description: |2
        A boxed array of *HostTpmAttestationInfoAcceptanceStatus_enum*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/HostTpmAttestationInfoAcceptanceStatus_enum'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    HostTrustAuthorityAttestationInfoAttestationStatus_enum:
      type: string
      description: |2
        Possible values:
        - `attested`: Attestation succeeded.
        - `notAttested`: Attestation failed.
        - `unknown`: Attestation status is unknown.
          
        ***Since:*** vSphere API Release 7.0.1.0
      enum:
        - attested
        - notAttested
        - unknown

    HostUnresolvedVmfsExtentUnresolvedReason_enum:
      type: string
      description: |2
        Reasons for identifying the disk extent
        as copy of VMFS volume extent.
        
        Possible values:
        - `diskIdMismatch`: The VMFS detected 'diskid' does not match with
          LVM detected 'diskId'
        - `uuidConflict`: VMFS 'uuid' does not match
      enum:
        - diskIdMismatch
        - uuidConflict

    HostUnresolvedVmfsResolutionSpecVmfsUuidResolution_enum:
      type: string
      description: |2
        Possible values:
        - `resignature`: Resignature the Unresolved VMFS volume.
          
          In the event the volume to be resignatured contains multiple
          extents but only a single copy of each extent exists, only the
          head extent needs to be specified.
        - `forceMount`: Keep the original Uuid of the VMFS volume and mount it
          
          In the event the volume to be force mounted contains multiple
          extents but only a single copy of each extent exists, only the
          head extent needs to be specified.
      enum:
        - resignature
        - forceMount

    HostVirtualNicManagerNicType_enum:
      type: string
      description: |2
        Possible values:
        - `vmotion`: The VirtualNic is used for VMotion.
        - `faultToleranceLogging`: The VirtualNic is used for Fault Tolerance logging.
        - `vSphereReplication`: The VirtualNic is used for vSphere Replication LWD traffic
          (i.e From the primary host to the VR server).
        - `vSphereReplicationNFC`: The VirtualNic is used for vSphere Replication NFC traffic (i.e.
          
          From
          the VR server to the secondary host).
        - `management`: The VirtualNic is used for management network traffic .
          
          This nicType is available only when the system does not
          support service console adapters.
          
          See also *HostNetCapabilities.usesServiceConsoleNic*.
        - `vsan`: The VirtualNic is used for Virtual SAN data traffic.
          
          To enable or disable a VirtualNic for VSAN networking,
          use *HostVsanSystem.UpdateVsan_Task*.
          
          See also *HostVsanSystem*, *HostVsanSystem.UpdateVsan_Task*, *ComputeResource.ReconfigureComputeResource_Task*.
        - `vSphereProvisioning`: The VirtualNic is used for vSphere provisioning NFC traffic
          (i.e.
          
          the NFC traffic between ESX hosts as a part of a VC initiated
          provisioning operations like cold-migrations, clones, snapshot and
          cold data in hot migration).
        - `vsanWitness`: The VirtualNic is used for Virtual SAN witness traffic.
          
          Witness traffic vmknic is required for Virtual SAN stretched cluster,
          to help on communication between Virtual SAN data node and witness
          node.
          To enable or disable a VirtualNic for Virtual SAN networking,
          use *HostVsanSystem.UpdateVsan_Task*.
          
          See also *HostVsanSystem*, *HostVsanSystem.UpdateVsan_Task*.
        - `vSphereBackupNFC`: The VirtualNic is used for vSphere backup NFC traffic
          (i.e.
          
          the NFC traffic between backup appliance and ESX hosts).
        - `ptp`: The VirtualNic is used for Precision Time Protocol (PTP).
        - `nvmeTcp`: The VirtualNic is used for NVMe over TCP traffic.
          
          ***Since:*** vSphere API Release 7.0.3.0
        - `nvmeRdma`: The VirtualNic is used for NVMe over RDMA traffic.
          
          ***Since:*** vSphere API Release 7.0.3.0
      enum:
        - vmotion
        - faultToleranceLogging
        - vSphereReplication
        - vSphereReplicationNFC
        - management
        - vsan
        - vSphereProvisioning
        - vsanWitness
        - vSphereBackupNFC
        - ptp
        - nvmeTcp
        - nvmeRdma

    HostVmciAccessManagerMode_enum:
      type: string
      description: |2
        Set of possible values for mode field in AccessSpec.
        
        Possible values:
        - `grant`: Grant access to specified services in addition to existing services.
        - `replace`: Replace existing services with specified services.
        - `revoke`: Revoke the specified services.
      enum:
        - grant
        - replace
        - revoke

    HostVmfsVolumeUnmapBandwidthPolicy_enum:
      type: string
      description: |2
        VMFS unmap bandwidth policy.
        
        VMFS unmap reclaims unused storage space.
        This specifies the bandwidth policy option of unmaps.
        
        Possible values:
        - `fixed`: Unmap bandwidth is a fixed value.
        - `dynamic`: Unmaps bandwidth is a dynamic value with lower and upper limits
      enum:
        - fixed
        - dynamic

    HostVmfsVolumeUnmapPriority_enum:
      type: string
      description: |2
        VMFS unmap priority.
        
        VMFS unmap reclaims unused storage space.
        This specifies the processing rate of unmaps.
        
        Possible values:
        - `none`: Unmap is disabled.
        - `low`: Unmaps are processed at low rate.
      enum:
        - none
        - low

    NetIpConfigInfoIpAddressOrigin_enum:
      type: string
      description: |2
        This specifies how an IP address was obtained for a given interface.
        
        See RFC 4293 IpAddressOriginTC.
        
        Possible values:
        - `other`: Any other type of address configuration other than the below
          mentioned ones will fall under this category.
          
          For e.g., automatic
          address configuration for the link local address falls under
          this type.
        - `manual`: The address is configured manually.
          
          The term 'static' is a synonym.
        - `dhcp`: The address is configured through dhcp.
        - `linklayer`: The address is obtained through stateless autoconfiguration (autoconf).
          
          See RFC 4862, IPv6 Stateless Address Autoconfiguration.
        - `random`: The address is chosen by the system at random
          e.g., an IPv4 address within 169.254/16, or an RFC 3041 privacy address.
      enum:
        - other
        - manual
        - dhcp
        - linklayer
        - random

    NetIpConfigInfoIpAddressStatus_enum:
      type: string
      description: |2
        Possible values:
        - `preferred`: Indicates that this is a valid address.
        - `deprecated`: Indicates that this is a valid but deprecated address
          that should no longer be used as a source address.
        - `invalid`: Indicates that this isn't a valid.
        - `inaccessible`: Indicates that the address is not accessible because
          interface is not operational.
        - `unknown`: Indicates that the status cannot be determined.
        - `tentative`: Indicates that the uniqueness of the
          address on the link is presently being verified.
        - `duplicate`: Indicates the address has been determined to be non-unique
          on the link, this address will not be reachable.
      enum:
        - preferred
        - deprecated
        - invalid
        - inaccessible
        - unknown
        - tentative
        - duplicate

    NetIpStackInfoEntryType_enum:
      type: string
      description: |2
        IP Stack keeps state on entries in IpNetToMedia table to perform
        physical address lookups for IP addresses.
        
        Here are the standard
        states per @see RFC 4293 ipNetToMediaType.
        
        Possible values:
        - `other`: This implementation is reporting something other than
          what states are listed below.
        - `invalid`: The IP Stack has marked this entry as not useable.
        - `dynamic`: This entry has been learned using ARP or NDP.
        - `manual`: This entry was set manually.
      enum:
        - other
        - invalid
        - dynamic
        - manual

    NetIpStackInfoPreference_enum:
      type: string
      description: |2
        The set of values used to determine ordering of default routers.
        
        See RFC 4293 ipDefaultRouterPreference.
        
        Possible values:
        - `reserved`
        - `low`
        - `medium`
        - `high`
      enum:
        - reserved
        - low
        - medium
        - high

    NetBIOSConfigInfoMode_enum:
      type: string
      description: |2
        NetBIOS configuration mode.
        
        Possible values:
        - `unknown`: Mode of NetBIOS is unknown.
        - `enabled`: NetBIOS is enabled.
        - `disabled`: NetBIOS is disabled.
        - `enabledViaDHCP`: DHCP server decides whether or not to use NetBIOS.
      enum:
        - unknown
        - enabled
        - disabled
        - enabledViaDHCP

    ArrayUpdateOperation_enum:
      type: string
      description: |2
        This list specifies the type of operation being performed on the array.
        
        Possible values:
        - `add`: indicates an addition to the array.
        - `remove`: indicates the removal of an element in the
          array.
          
          In this case the key field must contain the key of the element
          to be removed.
        - `edit`: indicates changes to an element in the array.
      enum:
        - add
        - remove
        - edit

    ArrayUpdateOperation:
      type: object
      description: |2
        A boxed *ArrayUpdateOperation_enum*. To be used in *Any* placeholders.
      properties:
        _value:
          $ref: '#/components/schemas/ArrayUpdateOperation_enum'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ArrayOfArrayUpdateOperation:
      type: object
      description: |2
        A boxed array of *ArrayUpdateOperation_enum*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ArrayUpdateOperation_enum'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ComplianceResultStatus_enum:
      type: string
      description: |2
        Possible values:
        - `compliant`: Entity is in Compliance
        - `nonCompliant`: Entity is out of Compliance
        - `unknown`: Compliance status of the entity is not known
        - `running`: Compliance check on this host is running.
      enum:
        - compliant
        - nonCompliant
        - unknown
        - running

    ProfileNumericComparator_enum:
      type: string
      description: |2
        Enumerates different operations supported for comparing
        numerical values.
        
        Possible values:
        - `lessThan`
        - `lessThanEqual`
        - `equal`
        - `notEqual`
        - `greaterThanEqual`
        - `greaterThan`
      enum:
        - lessThan
        - lessThanEqual
        - equal
        - notEqual
        - greaterThanEqual
        - greaterThan

    ProfileNumericComparator:
      type: object
      description: |2
        A boxed *ProfileNumericComparator_enum*. To be used in *Any* placeholders.
      properties:
        _value:
          $ref: '#/components/schemas/ProfileNumericComparator_enum'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ArrayOfProfileNumericComparator:
      type: object
      description: |2
        A boxed array of *ProfileNumericComparator_enum*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ProfileNumericComparator_enum'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ProfileParameterMetadataRelationType_enum:
      type: string
      description: |2
        The relation type to be supported.
        
        Possible values:
        - `dynamic_relation`: The relation to a subprofile or a parameter.
        - `extensible_relation`: The values from sources other than the parameter/profile or the static
          value list are allowed.
        - `localizable_relation`: The value list contains localization keys instead of values.
        - `static_relation`: The relation is defined by static valid value list.
        - `validation_relation`: The relation is defined for validation purpose.
      enum:
        - dynamic_relation
        - extensible_relation
        - localizable_relation
        - static_relation
        - validation_relation

    ClusterProfileServiceType_enum:
      type: string
      description: |2
        Type of services for which Profile can be requested for
        
        Possible values:
        - `DRS`: Distributed Resource Scheduling
        - `HA`: High Availability
        - `DPM`: Distributed Power Management
        - `FT`: Fault tolerance
      enum:
        - DRS
        - HA
        - DPM
        - FT

    ProfileExecuteResultStatus_enum:
      type: string
      description: |2
        Defines the result status values for a
        *HostProfile*.*HostProfile.ExecuteHostProfile*
        operation.
        
        The result data is contained in the
        *ProfileExecuteResult* data object.
        
        Possible values:
        - `success`: Profile execution was successful.
          
          You can use the output configuration data
          to apply the profile to a host.
        - `needInput`: Additional data is required to complete the operation.
          
          The data requirements are defined in the list of policy options for the profile
          (*ApplyProfile*.*ApplyProfile.policy*\[\]).
        - `error`: Profile execution generated an error.
          
          See *ProfileExecuteResult*.*ProfileExecuteResult.error*.
      enum:
        - success
        - needInput
        - error

    HostProfileValidationFailureInfoUpdateType_enum:
      type: string
      description: |2
        Types of host profile update.
        
        Possible values:
        - `HostBased`: Update host profile from host.
        - `Import`: Import host profile.
        - `Edit`: Edit host profile.
        - `Compose`: Compose setting from host profile.
      enum:
        - HostBased
        - Import
        - Edit
        - Compose

    HostProfileValidationState_enum:
      type: string
      description: |2
        This defines validation state values for host profile.
        
        Possible values:
        - `Ready`
        - `Running`
        - `Failed`
      enum:
        - Ready
        - Running
        - Failed

    HostProfileManagerAnswerFileStatus_enum:
      type: string
      description: |2
        The *HostProfileManagerAnswerFileStatus_enum* enum
        defines possible values for answer file status.
        
        Possible values:
        - `valid`: Answer file is valid.
        - `invalid`: Answer file is not valid.
          
          The file is either missing or incomplete.
          - To produce an answer file, pass host-specific data (user input) to the
            *HostProfileManager*.*HostProfileManager.ApplyHostConfig_Task*
            method.
          - To produce a complete answer file, call the
            *HostProfile*.*HostProfile.ExecuteHostProfile*
            method and fill in any missing parameters in the returned
            *ProfileExecuteResult*.*ProfileExecuteResult.requireInput*
            list. After you execute the profile successfully, you can pass the complete required
            input list to the apply method.
        - `unknown`: Answer file status is not known.
      enum:
        - valid
        - invalid
        - unknown

    ApplyHostProfileConfigurationResultStatus_enum:
      type: string
      description: |2
        Possible values:
        - `success`: Remediation succeeded.
        - `failed`: Remediation failed.
        - `reboot_failed`: Remediation succeeded but reboot after remediation failed.
          
          May treat this as a warning.
        - `stateless_reboot_failed`: Stateless reboot for remediation failed.
        - `check_compliance_failed`: Remediation and reboot succeeded but check compliance after reboot
          failed.
          
          May treat this as a warning.
        - `state_not_satisfied`: The required state is not satisfied so host profiel apply cannot
          be done.
        - `exit_maintenancemode_failed`: Exit maintenance mode failed.
        - `canceled`: The remediation was canceled.
      enum:
        - success
        - failed
        - reboot_failed
        - stateless_reboot_failed
        - check_compliance_failed
        - state_not_satisfied
        - exit_maintenancemode_failed
        - canceled

    HostProfileManagerCompositionResultResultElementStatus_enum:
      type: string
      description: |2
        The composition status class.
        
        Possible values:
        - `success`
        - `error`
      enum:
        - success
        - error

    HostProfileManagerCompositionValidationResultResultElementStatus_enum:
      type: string
      description: |2
        The composition validation status class.
        
        Possible values:
        - `success`
        - `error`
      enum:
        - success
        - error

    HostProfileManagerTaskListRequirement_enum:
      type: string
      description: |2
        The *HostProfileManagerTaskListRequirement_enum* enum
        defines possible values for requirements when applying a *HostConfigSpec*
        object returned as part of a <code>generateConfigTaskList</code>
        operation.
        
        Possible values:
        - `maintenanceModeRequired`: The ESXi host must be in maintenance mode before the task list can be
          applied.
        - `rebootRequired`: The ESXi host must be rebooted after the task list is applied in order
          for the new settings in the *HostConfigSpec* to take
          effect on the host.
      enum:
        - maintenanceModeRequired
        - rebootRequired

    AnswerFileValidationInfoStatus_enum:
      type: string
      description: |2
        Defines the result status values for a validating answer file.
        
        Possible values:
        - `success`: Answer File validation was successful.
        - `failed`: Answer File validation failed.
        - `failed_defaults`: Answer File validation failed to generate default.
      enum:
        - success
        - failed
        - failed_defaults

    DayOfWeek_enum:
      type: string
      description: |2
        Possible values:
        - `sunday`
        - `monday`
        - `tuesday`
        - `wednesday`
        - `thursday`
        - `friday`
        - `saturday`
      enum:
        - sunday
        - monday
        - tuesday
        - wednesday
        - thursday
        - friday
        - saturday

    DayOfWeek:
      type: object
      description: |2
        A boxed *DayOfWeek_enum*. To be used in *Any* placeholders.
      properties:
        _value:
          $ref: '#/components/schemas/DayOfWeek_enum'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ArrayOfDayOfWeek:
      type: object
      description: |2
        A boxed array of *DayOfWeek_enum*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/DayOfWeek_enum'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    WeekOfMonth_enum:
      type: string
      description: |2
        Possible values:
        - `first`
        - `second`
        - `third`
        - `fourth`
        - `last`
      enum:
        - first
        - second
        - third
        - fourth
        - last

    WeekOfMonth:
      type: object
      description: |2
        A boxed *WeekOfMonth_enum*. To be used in *Any* placeholders.
      properties:
        _value:
          $ref: '#/components/schemas/WeekOfMonth_enum'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ArrayOfWeekOfMonth:
      type: object
      description: |2
        A boxed array of *WeekOfMonth_enum*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/WeekOfMonth_enum'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    PlacementAffinityRuleRuleScope_enum:
      type: string
      description: |2
        Rule scope determines conditions when an affinity rule is
        satisfied.
        
        The following uses affinity rule as example.
        cluster: All Vms in the rule list are placed in a single cluster.
        host: All Vms in the rule list are placed in a single host.
        storagePod: All Vms in the rule list are placed in a single storagePod.
        datastore: All Vms in the rule list are placed in a single datastore.
        
        Possible values:
        - `cluster`: clusters are the scope
        - `host`: individual hosts are the scope
        - `storagePod`: datastore cluster is teh scope
        - `datastore`: individual datastores are the scope
      enum:
        - cluster
        - host
        - storagePod
        - datastore

    PlacementAffinityRuleRuleType_enum:
      type: string
      description: |2
        Rule type determines how the affinity rule is to be enforced:
        affinity: Vms in the list are kept together within the rule
        scope.
        
        anti-affinity: Vms in the rule list are kept separate
        across the objects in the rule scope.
        soft rule: The enforcement is best effort.
        
        Possible values:
        - `affinity`: Affinity
        - `antiAffinity`: Anti-Affinity
        - `softAffinity`: Best-effort affinity
        - `softAntiAffinity`: Best-effort anti-affinity
      enum:
        - affinity
        - antiAffinity
        - softAffinity
        - softAntiAffinity

    StorageDrsPodConfigInfoBehavior_enum:
      type: string
      description: |2
        Storage DRS behavior.
        
        Possible values:
        - `manual`: Specifies that VirtualCenter should generate recommendations for
          virtual disk migration and for placement with a datastore,
          but should not execute the recommendations automatically.
        - `automated`: Specifies that VirtualCenter should generate recommendations
          for virtual disk migration and for placement with a
          datastore.
          
          The recommendations for virtual disk migrations
          will be executed automatically, but the placement
          recommendations will be done manually.
      enum:
        - manual
        - automated

    StorageDrsSpaceLoadBalanceConfigSpaceThresholdMode_enum:
      type: string
      description: |2
        Defines the two ways a space utilization threshold can be specified.
        
        Possible values:
        - `utilization`: Default mode: threshold as a percentage of datastore capacity
        - `freeSpace`: Threshold as an absolute value of free space in GBs
      enum:
        - utilization
        - freeSpace

    StoragePlacementSpecPlacementType_enum:
      type: string
      description: |2
        Defines the storage placement operation type.
        
        Possible values:
        - `create`: Create a VM.
        - `reconfigure`: Reconfigure a VM.
        - `relocate`: Relocate a VM.
        - `clone`: Clone a VM.
      enum:
        - create
        - reconfigure
        - relocate
        - clone

    VirtualDiskRuleSpecRuleType_enum:
      type: string
      description: |2
        Rule type determines how the virtual disks in a vm can be grouped
        together.
        
        Possible values:
        - `affinity`: Virtual disks in the list are grouped together and placed on
          the same data store.
        - `antiAffinity`: Virtual disks in the list are placed on different data stores.
        - `disabled`: SDRS will be disabled for the disks in the list.
      enum:
        - affinity
        - antiAffinity
        - disabled

    VAppCloneSpecProvisioningType_enum:
      type: string
      description: |2
        The cloned VMs can either be provisioned the same way as the VMs
        they are a clone of, thin provisioned or thick provisioned, or
        linked clones (i.e., using delta disks).
        
        Possible values:
        - `sameAsSource`: Each disk in the cloned virtual machines will have the same
          type of disk as the source vApp.
        - `thin`: Each disk in the cloned virtual machines is allocated in full
          size now and committed on demand.
          
          This is only supported on
          VMFS-3 and newer datastores. Other types of datastores may
          create thick disks.
        - `thick`: Each disk in the cloned virtual machines are allocated and
          committed in full size immediately.
      enum:
        - sameAsSource
        - thin
        - thick

    VAppAutoStartAction_enum:
      type: string
      description: |2
        Possible values:
        - `none`: No action is taken for this virtual machine.
          
          This virtual machine is
          not a part of the auto-start sequence. This can be used for both auto-start
          and auto-start settings.
        - `powerOn`: This virtual machine is powered on when it is next in the auto-start order.
        - `powerOff`: This virtual machine is powered off when it is next in the auto-stop order.
          
          This is the default stopAction.
        - `guestShutdown`: The guest operating system for a virtual machine is shut down when that
          virtual machine in next in the auto-stop order.
        - `suspend`: This virtual machine is suspended when it is next in the auto-stop order.
      enum:
        - none
        - powerOn
        - powerOff
        - guestShutdown
        - suspend

    VAppIPAssignmentInfoAllocationSchemes_enum:
      type: string
      description: |2
        IP allocation schemes supported by the guest.
        
        Possible values:
        - `dhcp`: The vApp supports DHCP to acquire IP configuration.
        - `ovfenv`: The vApp supports setting the IP configuration through the
          properties provided in the OVF environment.
      enum:
        - dhcp
        - ovfenv

    VAppIPAssignmentInfoIpAllocationPolicy_enum:
      type: string
      description: |2
        IP allocation policy for a deployment.
        
        Possible values:
        - `dhcpPolicy`: Specifies that DHCP must be used to allocate IP addresses to the vApp
        - `transientPolicy`: Specifies that IP allocation is done through the range managed by the
          vSphere platform.
          
          The IP addresses are allocated when needed, typically at
          power-on, and deallocated during power-off. There is no guarantee that a
          vApp will get the same IP address when restarted.
        - `fixedPolicy`: Specifies that IP addresses are configured manually when the vApp is deployed
          and will be kept until reconfigured or the vApp destroyed.
          
          This will ensure
          that a vApp gets a consistent IP for its life-time.
        - `fixedAllocatedPolicy`: Specifies that IP allocation is done through the range managed by the VI
          platform.
          
          The IP addresses are allocated at first power-on, and remain
          allocated at power-off. This will ensure that a vApp gets a consistent
          IP for its life-time.
      enum:
        - dhcpPolicy
        - transientPolicy
        - fixedPolicy
        - fixedAllocatedPolicy

    VAppIPAssignmentInfoProtocols_enum:
      type: string
      description: |2
        IP protocols supported by the guest.
        
        Possible values:
        - `IPv4`: The vApp supports IPv4 protocol.
        - `IPv6`: The vApp supports IPv6 protocol.
      enum:
        - IPv4
        - IPv6

    VchaState_enum:
      type: string
      description: |2
        Possible values:
        - `configured`: VCHA cluster is configured.
        - `notConfigured`: VCHA cluster is not configured.
        - `invalid`: VCHA cluster is in an invalid/dirty state.
        - `prepared`: VC appliance has been prepared for VCHA cluster configuration.
      enum:
        - configured
        - notConfigured
        - invalid
        - prepared

    VchaClusterMode_enum:
      type: string
      description: |2
        VchaClusterMode enum defines the possible modes for a VCHA Cluster.
        
        Possible values:
        - `enabled`: VCHA Cluster is enabled.
          
          State replication between the Active and
          Passive node is enabled and automatic failover is allowed.
        - `disabled`: VCHA Cluster is disabled.
          
          State replication between the Active and
          Passive node is disabled and automatic failover is not allowed.
        - `maintenance`: VCHA Cluster is in maintenance mode.
          
          State replication between the
          Active and Passive node is enabled but automatic failover
          is not allowed.
      enum:
        - enabled
        - disabled
        - maintenance

    VchaClusterState_enum:
      type: string
      description: |2
        VchaClusterState enum defines the possible states for a VCHA Cluster.
        
        Possible values:
        - `healthy`: All three nodes in a VCHA Cluster are healthy and connected.
          
          State
          replication between Active and Passive node is working and both
          nodes are in sync.
        - `degraded`: A VCHA Cluster is said to be in a degraded state for
          either or all of the following reasons:
          \- There is a node loss.
          
          \- State replication between the Active and Passive node fails.
        - `isolated`: All three nodes are isolated from each other.
      enum:
        - healthy
        - degraded
        - isolated

    VchaNodeRole_enum:
      type: string
      description: |2
        Possible values:
        - `active`: Node is having a role of Active.
          
          In this role, node runs a vCenter
          Server that serves client requests.
        - `passive`: Node is having a role of Passive.
          
          In this role node, runs as a standby
          for the Active vCenter Server and receives state updates. This node
          takes over the role of Active vCenter Server upon failover.
        - `witness`: Node is having a role of Witness.
          
          In this role, node acts as a quorom
          node for avoiding the classic split-brain problem.
      enum:
        - active
        - passive
        - witness

    VchaNodeState_enum:
      type: string
      description: |2
        VchaNodeState enum defines possible state a node can be in a
        VCHA Cluster.
        
        Possible values:
        - `up`: Node is up and has joined the VCHA Cluster.
        - `down`: Node is down and has left the VCHA Cluster.
      enum:
        - up
        - down

    VirtualMachineBootOptionsNetworkBootProtocolType_enum:
      type: string
      description: |2
        Possible values:
        - `ipv4`: PXE (or Apple NetBoot) over IPv4.
          
          The default.
        - `ipv6`: PXE over IPv6.
          
          Only meaningful for EFI virtual machines.
      enum:
        - ipv4
        - ipv6

    VirtualMachineCertThumbprintHashAlgorithm_enum:
      type: string
      description: |2
        Set of supported hash algorithms for thumbprints.
        
        Possible values:
        - `sha256`: SHA256
          
        ***Since:*** vSphere API Release 7.0.3.1
      enum:
        - sha256

    VirtualMachineCloneSpecTpmProvisionPolicy_enum:
      type: string
      description: |2
        TPM provisioning policies used when cloning a VM with a virtual TPM
        device.
        
        Possible values:
        - `copy`: The virtual TPM is copied.
          
          The virtual machine clone will have access
          to the original virtual machine's TPM secrets.
        - `replace`: The virtual TPM is replaced with a new one.
          
          The virtual machine clone
          will not have access to the original virtual machine's TPM secrets.
        
        ***Since:*** vSphere API Release 8.0.0.1
      enum:
        - copy
        - replace

    VirtualMachineCloneSpecTpmProvisionPolicy:
      type: object
      description: |2
        A boxed *VirtualMachineCloneSpecTpmProvisionPolicy_enum*. To be used in *Any* placeholders.
        
        ***Since:*** vSphere API Release 8.0.0.1
      properties:
        _value:
          $ref: '#/components/schemas/VirtualMachineCloneSpecTpmProvisionPolicy_enum'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ArrayOfVirtualMachineCloneSpecTpmProvisionPolicy:
      type: object
      description: |2
        A boxed array of *VirtualMachineCloneSpecTpmProvisionPolicy_enum*. To be used in *Any* placeholders.
        
        ***Since:*** vSphere API Release 8.0.0.1
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineCloneSpecTpmProvisionPolicy_enum'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualMachineConfigInfoNpivWwnType_enum:
      type: string
      description: |2
        The NPIV WWN source type.
        
        Possible values:
        - `vc`: This set of WWNs is generated by VC server.
        - `host`: This set of WWNs is generated by Host Agent.
        - `external`: This set of WWNs is provided by the client.
      enum:
        - vc
        - host
        - external

    VirtualMachineConfigInfoNpivWwnType:
      type: object
      description: |2
        A boxed *VirtualMachineConfigInfoNpivWwnType_enum*. To be used in *Any* placeholders.
      properties:
        _value:
          $ref: '#/components/schemas/VirtualMachineConfigInfoNpivWwnType_enum'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ArrayOfVirtualMachineConfigInfoNpivWwnType:
      type: object
      description: |2
        A boxed array of *VirtualMachineConfigInfoNpivWwnType_enum*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineConfigInfoNpivWwnType_enum'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualMachineConfigInfoSwapPlacementType_enum:
      type: string
      description: |2
        Available choices for virtual machine swapfile placement policy.
        
        This is
        the set of legal values for the virtual machine configuration's
        *swapPlacement* property. All
        values except for "inherit" and "vmConfigured" are also valid values for
        a compute resource configuration's
        *vmSwapPlacement*
        property.
        
        Possible values:
        - `inherit`: Honor the virtual machine swapfile placement policy of the compute
          resource that contains this virtual machine.
        - `vmDirectory`: Store the swapfile in the same directory as the virtual machine.
        - `hostLocal`: Store the swapfile in the datastore specified by the
          *localSwapDatastore*
          property of the virtual machine's host, if that property is set and
          indicates a datastore with sufficient free space.
          
          Otherwise store the
          swapfile in the same directory as the virtual machine.
          
          Note: This setting may degrade VMotion performance.
      enum:
        - inherit
        - vmDirectory
        - hostLocal

    VirtualMachineConfigSpecEncryptedFtModes_enum:
      type: string
      description: |2
        The set of valid encrypted Fault Tolerance modes for a VM.
        
        If the VM is encrypted, its encrypted Fault Tolerance mode
        will be required.
        
        Possible values:
        - `ftEncryptionDisabled`: Do not use encrypted Fault Tolerance, even if available.
        - `ftEncryptionOpportunistic`: Use encrypted Fault Tolerance if source and destination hosts
          support it, fall back to unencrypted Fault Tolerance otherwise.
          
          This is the default option.
        - `ftEncryptionRequired`: Allow only encrypted Fault Tolerance.
          
          If either the source or
          destination host does not support encrypted Fault Tolerance,
          do not allow the Fault Tolerance to occur.
        
        ***Since:*** vSphere API Release 7.0.2.0
      enum:
        - ftEncryptionDisabled
        - ftEncryptionOpportunistic
        - ftEncryptionRequired

    VirtualMachineConfigSpecEncryptedVMotionModes_enum:
      type: string
      description: |2
        The set of valid encrypted vMotion modes for a VM.
        
        If the VM is encrypted, its encrypted vMotion mode will be required.
        
        Possible values:
        - `disabled`: Do not use encrypted vMotion, even if available.
        - `opportunistic`: Use encrypted vMotion if source and destination hosts support it,
          fall back to unencrypted vMotion otherwise.
          
          This is the default option.
        - `required`: Allow only encrypted vMotion.
          
          If the source or destination host does
          not support vMotion encryption, do not allow the vMotion to occur.
      enum:
        - disabled
        - opportunistic
        - required

    VirtualMachineConfigSpecNpivWwnOp_enum:
      type: string
      description: |2
        The root WWN operation mode.
        
        Possible values:
        - `generate`: Generate a new set of WWNs and assign it to the virtual machine.
        - `set`: Take a client-specified set of WWNs (specified in "wwn" property) and
          assign them to the virtual machine.
          
          If the new WWN quntity are more
          than existing then we will append them to the existing list of WWNs.
        - `remove`: Remove the currently assigned WWNs from the virtual machine.
        - `extend`: Generate a new set of WWNs and append them to the existing list
      enum:
        - generate
        - set
        - remove
        - extend

    VirtualMachinePowerOpType_enum:
      type: string
      description: |2
        The list of possible default power operations available for the virtual machine
        
        Possible values:
        - `soft`
        - `hard`
        - `preset`
      enum:
        - soft
        - hard
        - preset

    VirtualMachineStandbyActionType_enum:
      type: string
      description: |2
        The list of possible standby actions that the virtual machine can take
        for S1 ACPI.
        
        Possible values:
        - `checkpoint`
        - `powerOnSuspend`
      enum:
        - checkpoint
        - powerOnSuspend

    VirtualMachineDeviceRuntimeInfoVirtualEthernetCardRuntimeStateVmDirectPathGen2InactiveReasonOther_enum:
      type: string
      description: |2
        Possible values:
        - `vmNptIncompatibleHost`: The virtual machine's host does not support VMDirectPath Gen 2.
          
          See also *HostCapability.vmDirectPathGen2Supported*.
        - `vmNptIncompatibleNetwork`: The configuration or state of the attached network prevents
          VMDirectPath Gen 2.
          
          Refer to
          *vmDirectPathGen2InactiveReasonNetwork*
          and/or
          *vmDirectPathGen2InactiveReasonExtended*
          in the RuntimeInfo of the DistributedVirtualPort connected to this
          device.
      enum:
        - vmNptIncompatibleHost
        - vmNptIncompatibleNetwork

    VirtualMachineDeviceRuntimeInfoVirtualEthernetCardRuntimeStateVmDirectPathGen2InactiveReasonVm_enum:
      type: string
      description: |2
        Possible values:
        - `vmNptIncompatibleGuest`: The virtual machine's guest OS does not support
          VMDirectPath Gen 2.
        - `vmNptIncompatibleGuestDriver`: The virtual machine's guest network driver does not support
          VMDirectPath Gen 2.
        - `vmNptIncompatibleAdapterType`: The device type does not support VMDirectPath Gen 2.
          
          See also *VirtualEthernetCardOption.vmDirectPathGen2Supported*.
        - `vmNptDisabledOrDisconnectedAdapter`: The virtual machine's network adapter is disabled or
          disconnected, and thus is not participating in VMDirectPath Gen 2.
        - `vmNptIncompatibleAdapterFeatures`: The virtual machine's network adapter has features enabled
          which preclude it participating in VMDirectPath Gen 2 such
          as INT-x or PXE booting.
        - `vmNptIncompatibleBackingType`: The device backing is not a DistributedVirtualPortBacking.
        - `vmNptInsufficientMemoryReservation`: The virtual machine does not have full memory reservation
          required to activate VMDirectPath Gen 2.
        - `vmNptFaultToleranceOrRecordReplayConfigured`: 
          
          Deprecated as of vSphere API 6.0.
          
          The virtual machine is configured for Fault Tolerance or
          Record &amp; Replay, which prevents VMDirectPath Gen 2.
        - `vmNptConflictingIOChainConfigured`: Some networking feature has placed a conflicting IOChain on
          the network adapter, which prevents VMDirectPath Gen 2.
          
          Examples
          include DVFilter.
        - `vmNptMonitorBlocks`: The virtual machine monitor is exercising functionality which
          which prevents VMDirectPath Gen 2.
        - `vmNptConflictingOperationInProgress`: VMDirectPath Gen 2 is temporarily suspended while the virtual
          machine executes an operation such as suspend.
        - `vmNptRuntimeError`: VMDirectPath Gen 2 is unavailable due to an unforeseen runtime error
          in the virtualization platform (typically resource constraints.)
        - `vmNptOutOfIntrVector`: VMDirectPath Gen 2 is unavailable due to host run out of intr
          vector in host.
          
          Guest can configure the vNIC to use less rx/tx
          queues or use MSI instead of MSIX.
        - `vmNptVMCIActive`: VMDirectPath Gen 2 is unavailable due to Incompatibe feature
          VMCI is active in the current VM.
          
          Kill the relevant VMCI
          application(s) and restart the VM will allow the vNIC(s) to enter
          passthrough mode.
      enum:
        - vmNptIncompatibleGuest
        - vmNptIncompatibleGuestDriver
        - vmNptIncompatibleAdapterType
        - vmNptDisabledOrDisconnectedAdapter
        - vmNptIncompatibleAdapterFeatures
        - vmNptIncompatibleBackingType
        - vmNptInsufficientMemoryReservation
        - vmNptFaultToleranceOrRecordReplayConfigured
        - vmNptConflictingIOChainConfigured
        - vmNptMonitorBlocks
        - vmNptConflictingOperationInProgress
        - vmNptRuntimeError
        - vmNptOutOfIntrVector
        - vmNptVMCIActive

    VirtualMachineFileLayoutExFileType_enum:
      type: string
      description: |2
        File-type constants.
        
        Possible values:
        - `config`: Config (vmx) file.
        - `extendedConfig`: Extended config (vmxf) file.
        - `diskDescriptor`: Disk descriptor (vmdk) file.
        - `diskExtent`: Disk extent (-flat/-delta/-s/-rdm/-rdmp.vmdk) file.
        - `digestDescriptor`: Disk digest descriptor file.
        - `digestExtent`: Disk digest extent file.
        - `diskReplicationState`: Host based replicated disk persistent state (psf) file.
        - `log`: Log (log) file.
        - `stat`: Virtual machine statistics (stat) file.
        - `namespaceData`: Namespace data file.
        - `dataSetsDiskModeStore`: DataSets disk mode store (dsd) file.
          
          ***Since:*** vSphere API Release 8.0.0.0
        - `dataSetsVmModeStore`: DataSets vm mode store (dsv) file.
          
          ***Since:*** vSphere API Release 8.0.0.0
        - `nvram`: Non-volatile RAM (nvram) file.
        - `snapshotData`: Snapshot data (vmsn) file.
        - `snapshotMemory`: Snapshot memory (vmem) file.
        - `snapshotList`: Snapshot metadata (vmsd) file.
        - `snapshotManifestList`: Snapshot manifest metadata (-aux.xml) file.
          
          This file is still being created but is no longer necessary since
          the manifest metadata is now available in the snapshot metadata
          (vmsd) file in vSphere 5.0. This type will be deprecated when
          vSphere 4.1 is no longer supported.
        - `suspend`: Suspend (vmss) file.
        - `suspendMemory`: Suspend (vmem) file.
        - `swap`: Swap (vswp) file.
        - `uwswap`: File generated by VMware ESX kernel for a running virtual
          machine.
        - `core`: Core (core) file.
        - `screenshot`: Screenshot file.
        - `ftMetadata`: Fault Tolerance metadata file.
        - `guestCustomization`: Guest image customization file.
      enum:
        - config
        - extendedConfig
        - diskDescriptor
        - diskExtent
        - digestDescriptor
        - digestExtent
        - diskReplicationState
        - log
        - stat
        - namespaceData
        - dataSetsDiskModeStore
        - dataSetsVmModeStore
        - nvram
        - snapshotData
        - snapshotMemory
        - snapshotList
        - snapshotManifestList
        - suspend
        - suspendMemory
        - swap
        - uwswap
        - core
        - screenshot
        - ftMetadata
        - guestCustomization

    VirtualMachineHtSharing_enum:
      type: string
      description: |2
        Deprecated as of vSphere API 6.7.
        
        Set of possible values for *VirtualMachineFlagInfo.htSharing*.
        
        Possible values:
        - `any`: VCPUs may freely share cores at any time with any other
          VCPUs (default for all virtual machines on a hyperthreaded
          system).
        - `none`: VCPUs should not share cores with each other or with VCPUs
          from other virtual machines.
          
          That is, each VCPU from this
          virtual machine should always get a whole core to itself,
          with the other logical CPU on that core being placed into
          the "halted" state.
        - `internal`: Similar to "none", in that VCPUs from this virtual machine
          will not be allowed to share cores with VCPUs from other
          virtual machines.
          
          However, other VCPUs from the same virtual
          machine will be allowed to share cores together. This
          configuration option is only permitted for SMP virtual
          machines. If applied to a uniprocessor virtual machine, it
          will be converted to the "none" sharing option.
      enum:
        - any
        - none
        - internal

    VirtualMachineFlagInfoMonitorType_enum:
      type: string
      description: |2
        Set of possible values for *VirtualMachineFlagInfo.monitorType*.
        
        Possible values:
        - `release`: Run vmx in default mode, matching the build type of vmkernel.
        - `debug`: Run vmx in debug mode.
        - `stats`: Run vmx in stats mode.
      enum:
        - release
        - debug
        - stats

    VirtualMachinePowerOffBehavior_enum:
      type: string
      description: |2
        Set of possible values for *VirtualMachineFlagInfo.snapshotPowerOffBehavior*.
        
        Possible values:
        - `powerOff`: Just power off the virtual machine.
        - `revert`: Revert to the snapshot.
        - `prompt`: Prompt the user for instructions at power-off time.
        - `take`: Take a new snapshot.
      enum:
        - powerOff
        - revert
        - prompt
        - take

    VirtualMachineFlagInfoVirtualExecUsage_enum:
      type: string
      description: |2
        Set of possible values for *VirtualMachineFlagInfo.virtualExecUsage*.
        
        Possible values:
        - `hvAuto`: Determine automatically whether to use hardware virtualization (HV) support.
        - `hvOn`: Use hardware virtualization (HV) support if the physical hardware supports it.
        - `hvOff`: Do not use hardware virtualization (HV) support.
      enum:
        - hvAuto
        - hvOn
        - hvOff

    VirtualMachineFlagInfoVirtualMmuUsage_enum:
      type: string
      description: |2
        Set of possible values for *VirtualMachineFlagInfo.virtualMmuUsage*.
        
        Possible values:
        - `automatic`: Determine automatically whether to use nested page table hardware support.
        - `on`: Use nested paging hardware support if the physical hardware supports it.
        - `off`: Do not use nested page table hardware support.
      enum:
        - automatic
        - on
        - off

    VirtualMachineForkConfigInfoChildType_enum:
      type: string
      description: |2
        Fork child type.
        
        A child could be type of none, persistent, or
        nonpersistent.
        
        Possible values:
        - `none`: The virtual machine is not a child.
        - `persistent`: The virtual machine is a persistent child.
        - `nonpersistent`: The virtual machine is a non-persistent child.
      enum:
        - none
        - persistent
        - nonpersistent

    GuestInfoAppStateType_enum:
      type: string
      description: |2
        Application state type.
        
        Possible values:
        - `none`: The application state wasn't set from the guest by the application agent.
          
          This is the default.
        - `appStateOk`: The guest's application agent declared its state as normal and doesn't
          require any action
        - `appStateNeedReset`: Guest's application agent asks for immediate reset
      enum:
        - none
        - appStateOk
        - appStateNeedReset

    GuestInfoCustomizationStatus_enum:
      type: string
      description: |2
        Guest customization status
        
        Possible values:
        - `TOOLSDEPLOYPKG_IDLE`: No guest customizationSpec has been applied for the VM
        - `TOOLSDEPLOYPKG_PENDING`: The guest customizationSpec has been applied for the VM,
          but the customization process has not yet started inside the guest OS
        - `TOOLSDEPLOYPKG_RUNNING`: The customization process is currently running inside the guest OS
        - `TOOLSDEPLOYPKG_SUCCEEDED`: The customization process has completed successfully inside the
          guest OS
        - `TOOLSDEPLOYPKG_FAILED`: The customizatio process has failed inside the guest OS
          
        ***Since:*** vSphere API Release 7.0.2.0
      enum:
        - TOOLSDEPLOYPKG_IDLE
        - TOOLSDEPLOYPKG_PENDING
        - TOOLSDEPLOYPKG_RUNNING
        - TOOLSDEPLOYPKG_SUCCEEDED
        - TOOLSDEPLOYPKG_FAILED

    VirtualMachineGuestState_enum:
      type: string
      description: |2
        The possible hints that the guest could display about current tasks
        inside the guest.
        
        Possible values:
        - `running`
        - `shuttingDown`
        - `resetting`
        - `standby`
        - `notRunning`
        - `unknown`
      enum:
        - running
        - shuttingDown
        - resetting
        - standby
        - notRunning
        - unknown

    VirtualMachineToolsInstallType_enum:
      type: string
      description: |2
        The installation type of tools in the VM.
        
        Possible values:
        - `guestToolsTypeUnknown`: Installation type is not known.
          
          Most likely tools have been
          installed by OSPs or open-vm-tools, but a version that does
          not report its install type or an install type that we do
          not recognize.
        - `guestToolsTypeMSI`: MSI is the installation type used for VMware Tools on Windows.
        - `guestToolsTypeTar`: Tools have been installed by the tar installer.
        - `guestToolsTypeOSP`: OSPs are RPM or Debian packages tailored for the OS in the VM.
          
          See http://packages.vmware.com
        - `guestToolsTypeOpenVMTools`: open-vm-tools are the open-source version of VMware Tools, may have
          been packaged by the OS vendor.
      enum:
        - guestToolsTypeUnknown
        - guestToolsTypeMSI
        - guestToolsTypeTar
        - guestToolsTypeOSP
        - guestToolsTypeOpenVMTools

    VirtualMachineToolsRunningStatus_enum:
      type: string
      description: |2
        Current running status of VMware Tools running in the guest
        operating system.
        
        Possible values:
        - `guestToolsNotRunning`: VMware Tools is not running.
        - `guestToolsRunning`: VMware Tools is running.
        - `guestToolsExecutingScripts`: VMware Tools is starting.
      enum:
        - guestToolsNotRunning
        - guestToolsRunning
        - guestToolsExecutingScripts

    VirtualMachineToolsStatus_enum:
      type: string
      description: |2
        Deprecated as of vSphere API 4.0 use *VirtualMachineToolsVersionStatus_enum*
        and *VirtualMachineToolsRunningStatus_enum*.
        
        Current status of VMware Tools running in the guest operating system.
        
        Possible values:
        - `toolsNotInstalled`: VMware Tools has never been installed
          or has not run in the virtual machine.
        - `toolsNotRunning`: VMware Tools is not running.
        - `toolsOld`: VMware Tools is running, but the version is not current.
        - `toolsOk`: VMware Tools is running and the version is current.
      enum:
        - toolsNotInstalled
        - toolsNotRunning
        - toolsOld
        - toolsOk

    VirtualMachineToolsStatus:
      type: object
      description: |2
        A boxed *VirtualMachineToolsStatus_enum*. To be used in *Any* placeholders.
      properties:
        _value:
          $ref: '#/components/schemas/VirtualMachineToolsStatus_enum'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ArrayOfVirtualMachineToolsStatus:
      type: object
      description: |2
        A boxed array of *VirtualMachineToolsStatus_enum*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineToolsStatus_enum'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualMachineToolsVersionStatus_enum:
      type: string
      description: |2
        Current version status of VMware Tools installed in the guest operating
        system.
        
        Possible values:
        - `guestToolsNotInstalled`: VMware Tools has never been installed.
        - `guestToolsNeedUpgrade`: 
          
          Deprecated as of vSphere API 5.1 value is not reported by
          toolsVersionStatus2, instead more detailed status is reported.
          
          VMware Tools is installed, but the version is not current.
        - `guestToolsCurrent`: VMware Tools is installed, and the version is current.
        - `guestToolsUnmanaged`: VMware Tools is installed, but it is not managed by VMWare.
        - `guestToolsTooOld`: VMware Tools is installed, but the version is too old.
        - `guestToolsSupportedOld`: VMware Tools is installed, supported, but a newer version is available.
        - `guestToolsSupportedNew`: VMware Tools is installed, supported, and newer
          than the version available on the host.
        - `guestToolsTooNew`: VMware Tools is installed, and the version is known to be
          too new to work correctly with this virtual machine.
        - `guestToolsBlacklisted`: VMware Tools is installed, but the installed version is
          known to have a grave bug and should be immediately upgraded.
      enum:
        - guestToolsNotInstalled
        - guestToolsNeedUpgrade
        - guestToolsCurrent
        - guestToolsUnmanaged
        - guestToolsTooOld
        - guestToolsSupportedOld
        - guestToolsSupportedNew
        - guestToolsTooNew
        - guestToolsBlacklisted

    GuestOsDescriptorFirmwareType_enum:
      type: string
      description: |2
        Firmware types
        
        Possible values:
        - `bios`: BIOS firmware
        - `efi`: Extensible Firmware Interface
      enum:
        - bios
        - efi

    VirtualMachineGuestOsFamily_enum:
      type: string
      description: |2
        Guest operating system family constants.
        
        Possible values:
        - `windowsGuest`: Windows operating system
        - `linuxGuest`: Linux operating system
        - `netwareGuest`: Novell Netware
        - `solarisGuest`: Solaris operating system
        - `darwinGuestFamily`: Mac OS operating system
        - `otherGuestFamily`: Other operating systems
      enum:
        - windowsGuest
        - linuxGuest
        - netwareGuest
        - solarisGuest
        - darwinGuestFamily
        - otherGuestFamily

    VirtualMachineGuestOsIdentifier_enum:
      type: string
      description: |2
        Guest operating system identifier.
        
        Possible values:
        - `dosGuest`: MS-DOS.
        - `win31Guest`: Windows 3.1
        - `win95Guest`: Windows 95
        - `win98Guest`: Windows 98
        - `winMeGuest`: Windows Millennium Edition
        - `winNTGuest`: Windows NT 4
        - `win2000ProGuest`: Windows 2000 Professional
        - `win2000ServGuest`: Windows 2000 Server
        - `win2000AdvServGuest`: Windows 2000 Advanced Server
        - `winXPHomeGuest`: Windows XP Home Edition
        - `winXPProGuest`: Windows XP Professional
        - `winXPPro64Guest`: Windows XP Professional Edition (64 bit)
        - `winNetWebGuest`: Windows Server 2003, Web Edition
        - `winNetStandardGuest`: Windows Server 2003, Standard Edition
        - `winNetEnterpriseGuest`: Windows Server 2003, Enterprise Edition
        - `winNetDatacenterGuest`: Windows Server 2003, Datacenter Edition
        - `winNetBusinessGuest`: Windows Small Business Server 2003
        - `winNetStandard64Guest`: Windows Server 2003, Standard Edition (64 bit)
        - `winNetEnterprise64Guest`: Windows Server 2003, Enterprise Edition (64 bit)
        - `winLonghornGuest`: Windows Longhorn
        - `winLonghorn64Guest`: Windows Longhorn (64 bit)
        - `winNetDatacenter64Guest`: Windows Server 2003, Datacenter Edition (64 bit)
        - `winVistaGuest`: Windows Vista
        - `winVista64Guest`: Windows Vista (64 bit)
        - `windows7Guest`: Windows 7
        - `windows7_64Guest`: Windows 7 (64 bit)
        - `windows7Server64Guest`: Windows Server 2008 R2 (64 bit)
        - `windows8Guest`: Windows 8
        - `windows8_64Guest`: Windows 8 (64 bit)
        - `windows8Server64Guest`: Windows 8 Server (64 bit)
        - `windows9Guest`: Windows 10
        - `windows9_64Guest`: Windows 10 (64 bit)
        - `windows9Server64Guest`: Windows 10 Server (64 bit)
        - `windows11_64Guest`: Windows 11
          
          ***Since:*** vSphere API Release 8.0.0.1
        - `windows12_64Guest`: Windows 12
          
          ***Since:*** vSphere API Release 8.0.0.1
        - `windowsHyperVGuest`: Windows Hyper-V
        - `windows2019srv_64Guest`: Windows Server 2019
        - `windows2019srvNext_64Guest`: Windows Server 2022
          
          ***Since:*** vSphere API Release 7.0.1.0
        - `windows2022srvNext_64Guest`: Windows Server 2025
          
          ***Since:*** vSphere API Release 8.0.0.1
        - `freebsdGuest`: FreeBSD
        - `freebsd64Guest`: FreeBSD x64
        - `freebsd11Guest`: FreeBSD 11
        - `freebsd11_64Guest`: FreeBSD 11 x64
        - `freebsd12Guest`: FreeBSD 12
        - `freebsd12_64Guest`: FreeBSD 12 x64
        - `freebsd13Guest`: FreeBSD 13
          
          ***Since:*** vSphere API Release 7.0.1.0
        - `freebsd13_64Guest`: FreeBSD 13 x64
          
          ***Since:*** vSphere API Release 7.0.1.0
        - `freebsd14Guest`: FreeBSD 14
          
          ***Since:*** vSphere API Release 8.0.0.1
        - `freebsd14_64Guest`: FreeBSD 14 x64
          
          ***Since:*** vSphere API Release 8.0.0.1
        - `redhatGuest`: Red Hat Linux 2.1
        - `rhel2Guest`: Red Hat Enterprise Linux 2
        - `rhel3Guest`: Red Hat Enterprise Linux 3
        - `rhel3_64Guest`: Red Hat Enterprise Linux 3 (64 bit)
        - `rhel4Guest`: Red Hat Enterprise Linux 4
        - `rhel4_64Guest`: Red Hat Enterprise Linux 4 (64 bit)
        - `rhel5Guest`: Red Hat Enterprise Linux 5
        - `rhel5_64Guest`: Red Hat Enterprise Linux 5 (64 bit)
        - `rhel6Guest`: Red Hat Enterprise Linux 6
        - `rhel6_64Guest`: Red Hat Enterprise Linux 6 (64 bit)
        - `rhel7Guest`: Red Hat Enterprise Linux 7
        - `rhel7_64Guest`: Red Hat Enterprise Linux 7 (64 bit)
        - `rhel8_64Guest`: Red Hat Enterprise Linux 8 (64 bit)
        - `rhel9_64Guest`: Red Hat Enterprise Linux 9 (64 bit)
          
          ***Since:*** vSphere API Release 7.0.1.0
        - `centosGuest`: CentOS 4/5
        - `centos64Guest`: CentOS 4/5 (64-bit)
        - `centos6Guest`: CentOS 6
        - `centos6_64Guest`: CentOS 6 (64-bit)
        - `centos7Guest`: CentOS 7
        - `centos7_64Guest`: CentOS 7 (64-bit)
        - `centos8_64Guest`: CentOS 8 (64-bit)
        - `centos9_64Guest`: CentOS 9 (64-bit)
          
          ***Since:*** vSphere API Release 7.0.1.0
        - `oracleLinuxGuest`: Oracle Linux 4/5
        - `oracleLinux64Guest`: Oracle Linux 4/5 (64-bit)
        - `oracleLinux6Guest`: Oracle 6
        - `oracleLinux6_64Guest`: Oracle 6 (64-bit)
        - `oracleLinux7Guest`: Oracle 7
        - `oracleLinux7_64Guest`: Oracle 7 (64-bit)
        - `oracleLinux8_64Guest`: Oracle 8 (64-bit)
        - `oracleLinux9_64Guest`: Oracle 9 (64-bit)
          
          ***Since:*** vSphere API Release 7.0.1.0
        - `suseGuest`: Suse Linux
        - `suse64Guest`: Suse Linux (64 bit)
        - `slesGuest`: Suse Linux Enterprise Server 9
        - `sles64Guest`: Suse Linux Enterprise Server 9 (64 bit)
        - `sles10Guest`: Suse linux Enterprise Server 10
        - `sles10_64Guest`: Suse Linux Enterprise Server 10 (64 bit)
        - `sles11Guest`: Suse linux Enterprise Server 11
        - `sles11_64Guest`: Suse Linux Enterprise Server 11 (64 bit)
        - `sles12Guest`: Suse linux Enterprise Server 12
        - `sles12_64Guest`: Suse Linux Enterprise Server 12 (64 bit)
        - `sles15_64Guest`: Suse Linux Enterprise Server 15 (64 bit)
        - `sles16_64Guest`: Suse Linux Enterprise Server 16 (64 bit)
          
          ***Since:*** vSphere API Release 7.0.1.0
        - `nld9Guest`: Novell Linux Desktop 9
        - `oesGuest`: Open Enterprise Server
        - `sjdsGuest`: Sun Java Desktop System
        - `mandrakeGuest`: Mandrake Linux
        - `mandrivaGuest`: Mandriva Linux
        - `mandriva64Guest`: Mandriva Linux (64 bit)
        - `turboLinuxGuest`: Turbolinux
        - `turboLinux64Guest`: Turbolinux (64 bit)
        - `ubuntuGuest`: Ubuntu Linux
        - `ubuntu64Guest`: Ubuntu Linux (64 bit)
        - `debian4Guest`: Debian GNU/Linux 4
        - `debian4_64Guest`: Debian GNU/Linux 4 (64 bit)
        - `debian5Guest`: Debian GNU/Linux 5
        - `debian5_64Guest`: Debian GNU/Linux 5 (64 bit)
        - `debian6Guest`: Debian GNU/Linux 6
        - `debian6_64Guest`: Debian GNU/Linux 6 (64 bit)
        - `debian7Guest`: Debian GNU/Linux 7
        - `debian7_64Guest`: Debian GNU/Linux 7 (64 bit)
        - `debian8Guest`: Debian GNU/Linux 8
        - `debian8_64Guest`: Debian GNU/Linux 8 (64 bit)
        - `debian9Guest`: Debian GNU/Linux 9
        - `debian9_64Guest`: Debian GNU/Linux 9 (64 bit)
        - `debian10Guest`: Debian GNU/Linux 10
        - `debian10_64Guest`: Debian GNU/Linux 10 (64 bit)
        - `debian11Guest`: Debian GNU/Linux 11
        - `debian11_64Guest`: Debian GNU/Linux 11 (64 bit)
        - `debian12Guest`: Debian GNU/Linux 12
          
          ***Since:*** vSphere API Release 8.0.0.1
        - `debian12_64Guest`: Debian GNU/Linux 12 (64 bit)
          
          ***Since:*** vSphere API Release 8.0.0.1
        - `asianux3Guest`: Asianux Server 3
        - `asianux3_64Guest`: Asianux Server 3 (64 bit)
        - `asianux4Guest`: Asianux Server 4
        - `asianux4_64Guest`: Asianux Server 4 (64 bit)
        - `asianux5_64Guest`: Asianux Server 5 (64 bit)
        - `asianux7_64Guest`: Asianux Server 7 (64 bit)
        - `asianux8_64Guest`: Asianux Server 8 (64 bit)
        - `asianux9_64Guest`: Asianux Server 9 (64 bit)
          
          ***Since:*** vSphere API Release 7.0.1.0
        - `opensuseGuest`: OpenSUSE Linux
        - `opensuse64Guest`: OpenSUSE Linux (64 bit)
        - `fedoraGuest`: Fedora Linux
        - `fedora64Guest`: Fedora Linux (64 bit)
        - `coreos64Guest`: CoreOS Linux (64 bit)
        - `vmwarePhoton64Guest`: VMware Photon (64 bit)
        - `other24xLinuxGuest`: Linux 2.4x Kernel
        - `other26xLinuxGuest`: Linux 2.6x Kernel
        - `otherLinuxGuest`: Linux 2.2x Kernel
        - `other3xLinuxGuest`: Linux 3.x Kernel
        - `other4xLinuxGuest`: Linux 4.x Kernel
        - `other5xLinuxGuest`: Linux 5.x Kernel
          
          ***Since:*** vSphere API Release 7.0.1.0
        - `other6xLinuxGuest`: Linux 6.x Kernel
          
          ***Since:*** vSphere API Release 8.0.0.1
        - `genericLinuxGuest`: Other Linux
        - `other24xLinux64Guest`: Linux 2.4.x Kernel (64 bit)
        - `other26xLinux64Guest`: Linux 2.6.x Kernel (64 bit)
        - `other3xLinux64Guest`: Linux 3.x Kernel (64 bit)
        - `other4xLinux64Guest`: Linux 4.x Kernel (64 bit)
        - `other5xLinux64Guest`: Linux 5.x Kernel (64 bit)
          
          ***Since:*** vSphere API Release 7.0.1.0
        - `other6xLinux64Guest`: Linux 6.x Kernel (64 bit)
          
          ***Since:*** vSphere API Release 8.0.0.1
        - `otherLinux64Guest`: Linux (64 bit)
        - `solaris6Guest`: Solaris 6
        - `solaris7Guest`: Solaris 7
        - `solaris8Guest`: Solaris 8
        - `solaris9Guest`: Solaris 9
        - `solaris10Guest`: Solaris 10 (32 bit)
        - `solaris10_64Guest`: Solaris 10 (64 bit)
        - `solaris11_64Guest`: Solaris 11 (64 bit)
        - `os2Guest`: OS/2
        - `eComStationGuest`: eComStation 1.x
        - `eComStation2Guest`: eComStation 2.0
        - `netware4Guest`: Novell NetWare 4
        - `netware5Guest`: Novell NetWare 5.1
        - `netware6Guest`: Novell NetWare 6.x
        - `openServer5Guest`: SCO OpenServer 5
        - `openServer6Guest`: SCO OpenServer 6
        - `unixWare7Guest`: SCO UnixWare 7
        - `darwinGuest`: Mac OS 10.5
        - `darwin64Guest`: Mac OS 10.5 (64 bit)
        - `darwin10Guest`: Mac OS 10.6
        - `darwin10_64Guest`: Mac OS 10.6 (64 bit)
        - `darwin11Guest`: Mac OS 10.7
        - `darwin11_64Guest`: Mac OS 10.7 (64 bit)
        - `darwin12_64Guest`: Mac OS 10.8 (64 bit)
        - `darwin13_64Guest`: Mac OS 10.9 (64 bit)
        - `darwin14_64Guest`: Mac OS 10.10 (64 bit)
        - `darwin15_64Guest`: Mac OS 10.11 (64 bit)
        - `darwin16_64Guest`: Mac OS 10.12 (64 bit)
        - `darwin17_64Guest`: macOS 10.13 (64 bit)
        - `darwin18_64Guest`: macOS 10.14 (64 bit)
        - `darwin19_64Guest`: macOS 10.15 (64 bit)
        - `darwin20_64Guest`: macOS 11 (64 bit)
          
          ***Since:*** vSphere API Release 7.0.1.0
        - `darwin21_64Guest`: macOS 12 (64 bit)
          
          ***Since:*** vSphere API Release 7.0.1.0
        - `darwin22_64Guest`: macOS 13 (64 bit)
          
          ***Since:*** vSphere API Release 8.0.0.1
        - `darwin23_64Guest`: macOS 14 (64 bit)
          
          ***Since:*** vSphere API Release 8.0.0.1
        - `vmkernelGuest`: VMware ESX 4
        - `vmkernel5Guest`: VMware ESX 5
        - `vmkernel6Guest`: VMware ESX 6
        - `vmkernel65Guest`: VMware ESXi 6.5 AND ESXi 6.7.
        - `vmkernel7Guest`: VMware ESX 7
        - `vmkernel8Guest`: VMware ESX 8
          
          ***Since:*** vSphere API Release 8.0.0.1
        - `amazonlinux2_64Guest`: Amazon Linux 2 (64 bit)
        - `amazonlinux3_64Guest`: Amazon Linux 3 (64 bit)
          
          ***Since:*** vSphere API Release 7.0.1.0
        - `crxPod1Guest`: CRX Pod 1
        - `crxSys1Guest`: CRX Sys 1
          
          ***Since:*** vSphere API Release 8.0.3.0
        - `rockylinux_64Guest`: Rocky Linux (64-bit)
          
          ***Since:*** vSphere API Release 8.0.0.1
        - `almalinux_64Guest`: AlmaLinux (64-bit)
          
          ***Since:*** vSphere API Release 8.0.0.1
        - `otherGuest`: Other Operating System
        - `otherGuest64`: Other Operating System (64 bit)
      enum:
        - dosGuest
        - win31Guest
        - win95Guest
        - win98Guest
        - winMeGuest
        - winNTGuest
        - win2000ProGuest
        - win2000ServGuest
        - win2000AdvServGuest
        - winXPHomeGuest
        - winXPProGuest
        - winXPPro64Guest
        - winNetWebGuest
        - winNetStandardGuest
        - winNetEnterpriseGuest
        - winNetDatacenterGuest
        - winNetBusinessGuest
        - winNetStandard64Guest
        - winNetEnterprise64Guest
        - winLonghornGuest
        - winLonghorn64Guest
        - winNetDatacenter64Guest
        - winVistaGuest
        - winVista64Guest
        - windows7Guest
        - windows7_64Guest
        - windows7Server64Guest
        - windows8Guest
        - windows8_64Guest
        - windows8Server64Guest
        - windows9Guest
        - windows9_64Guest
        - windows9Server64Guest
        - windows11_64Guest
        - windows12_64Guest
        - windowsHyperVGuest
        - windows2019srv_64Guest
        - windows2019srvNext_64Guest
        - windows2022srvNext_64Guest
        - freebsdGuest
        - freebsd64Guest
        - freebsd11Guest
        - freebsd11_64Guest
        - freebsd12Guest
        - freebsd12_64Guest
        - freebsd13Guest
        - freebsd13_64Guest
        - freebsd14Guest
        - freebsd14_64Guest
        - redhatGuest
        - rhel2Guest
        - rhel3Guest
        - rhel3_64Guest
        - rhel4Guest
        - rhel4_64Guest
        - rhel5Guest
        - rhel5_64Guest
        - rhel6Guest
        - rhel6_64Guest
        - rhel7Guest
        - rhel7_64Guest
        - rhel8_64Guest
        - rhel9_64Guest
        - centosGuest
        - centos64Guest
        - centos6Guest
        - centos6_64Guest
        - centos7Guest
        - centos7_64Guest
        - centos8_64Guest
        - centos9_64Guest
        - oracleLinuxGuest
        - oracleLinux64Guest
        - oracleLinux6Guest
        - oracleLinux6_64Guest
        - oracleLinux7Guest
        - oracleLinux7_64Guest
        - oracleLinux8_64Guest
        - oracleLinux9_64Guest
        - suseGuest
        - suse64Guest
        - slesGuest
        - sles64Guest
        - sles10Guest
        - sles10_64Guest
        - sles11Guest
        - sles11_64Guest
        - sles12Guest
        - sles12_64Guest
        - sles15_64Guest
        - sles16_64Guest
        - nld9Guest
        - oesGuest
        - sjdsGuest
        - mandrakeGuest
        - mandrivaGuest
        - mandriva64Guest
        - turboLinuxGuest
        - turboLinux64Guest
        - ubuntuGuest
        - ubuntu64Guest
        - debian4Guest
        - debian4_64Guest
        - debian5Guest
        - debian5_64Guest
        - debian6Guest
        - debian6_64Guest
        - debian7Guest
        - debian7_64Guest
        - debian8Guest
        - debian8_64Guest
        - debian9Guest
        - debian9_64Guest
        - debian10Guest
        - debian10_64Guest
        - debian11Guest
        - debian11_64Guest
        - debian12Guest
        - debian12_64Guest
        - asianux3Guest
        - asianux3_64Guest
        - asianux4Guest
        - asianux4_64Guest
        - asianux5_64Guest
        - asianux7_64Guest
        - asianux8_64Guest
        - asianux9_64Guest
        - opensuseGuest
        - opensuse64Guest
        - fedoraGuest
        - fedora64Guest
        - coreos64Guest
        - vmwarePhoton64Guest
        - other24xLinuxGuest
        - other26xLinuxGuest
        - otherLinuxGuest
        - other3xLinuxGuest
        - other4xLinuxGuest
        - other5xLinuxGuest
        - other6xLinuxGuest
        - genericLinuxGuest
        - other24xLinux64Guest
        - other26xLinux64Guest
        - other3xLinux64Guest
        - other4xLinux64Guest
        - other5xLinux64Guest
        - other6xLinux64Guest
        - otherLinux64Guest
        - solaris6Guest
        - solaris7Guest
        - solaris8Guest
        - solaris9Guest
        - solaris10Guest
        - solaris10_64Guest
        - solaris11_64Guest
        - os2Guest
        - eComStationGuest
        - eComStation2Guest
        - netware4Guest
        - netware5Guest
        - netware6Guest
        - openServer5Guest
        - openServer6Guest
        - unixWare7Guest
        - darwinGuest
        - darwin64Guest
        - darwin10Guest
        - darwin10_64Guest
        - darwin11Guest
        - darwin11_64Guest
        - darwin12_64Guest
        - darwin13_64Guest
        - darwin14_64Guest
        - darwin15_64Guest
        - darwin16_64Guest
        - darwin17_64Guest
        - darwin18_64Guest
        - darwin19_64Guest
        - darwin20_64Guest
        - darwin21_64Guest
        - darwin22_64Guest
        - darwin23_64Guest
        - vmkernelGuest
        - vmkernel5Guest
        - vmkernel6Guest
        - vmkernel65Guest
        - vmkernel7Guest
        - vmkernel8Guest
        - amazonlinux2_64Guest
        - amazonlinux3_64Guest
        - crxPod1Guest
        - crxSys1Guest
        - rockylinux_64Guest
        - almalinux_64Guest
        - otherGuest
        - otherGuest64

    GuestOsDescriptorSupportLevel_enum:
      type: string
      description: |2
        Guest OS support level
        
        Possible values:
        - `experimental`: This operating system is not supported,
          but may be supported in the future.
        - `legacy`: This operating system is not fully supported,
          but may have been supported in the past.
        - `terminated`: No longer supported.
        - `supported`: Fully supported.
        - `unsupported`: This operating system is not supported.
        - `deprecated`: Support for this operating system will be terminated in the future.
          
          Please migrate to using a different operating system.
        - `techPreview`: This operating system may not be supported yet,
          please check VMware compatibility guide.
      enum:
        - experimental
        - legacy
        - terminated
        - supported
        - unsupported
        - deprecated
        - techPreview

    GuestQuiesceEndGuestQuiesceError_enum:
      type: string
      description: |2
        End guest quiesce phase error types.
        
        Possible values:
        - `failure`: Fail the end phase of guest quiesce creation.
      enum:
        - failure

    GuestQuiesceEndGuestQuiesceError:
      type: object
      description: |2
        A boxed *GuestQuiesceEndGuestQuiesceError_enum*. To be used in *Any* placeholders.
      properties:
        _value:
          $ref: '#/components/schemas/GuestQuiesceEndGuestQuiesceError_enum'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ArrayOfGuestQuiesceEndGuestQuiesceError:
      type: object
      description: |2
        A boxed array of *GuestQuiesceEndGuestQuiesceError_enum*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/GuestQuiesceEndGuestQuiesceError_enum'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualMachineMetadataManagerVmMetadataOp_enum:
      type: string
      description: |2
        This enum represents the set of legal operations
        
        Possible values:
        - `Update`: Create or update the Metadata for the specified VM
        - `Remove`: Remove the Metadata for the specified VM
      enum:
        - Update
        - Remove

    VirtualMachineMetadataManagerVmMetadataOp:
      type: object
      description: |2
        A boxed *VirtualMachineMetadataManagerVmMetadataOp_enum*. To be used in *Any* placeholders.
      properties:
        _value:
          $ref: '#/components/schemas/VirtualMachineMetadataManagerVmMetadataOp_enum'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ArrayOfVirtualMachineMetadataManagerVmMetadataOp:
      type: object
      description: |2
        A boxed array of *VirtualMachineMetadataManagerVmMetadataOp_enum*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineMetadataManagerVmMetadataOp_enum'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualMachineMetadataManagerVmMetadataOwnerOwner_enum:
      type: string
      description: |2
        This enum contains a list of valid owner values for
        the name field
        
        Possible values:
        - `ComVmwareVsphereHA`
      enum:
        - ComVmwareVsphereHA

    VirtualMachineRelocateDiskMoveOptions_enum:
      type: string
      description: |2
        Specifies how a virtual disk is moved or copied to a
        datastore.
        
        In all cases after the move or copy the virtual machine's current running point
        will be placed on the target datastore. The current running point is defined
        as the disk backing which the virtual machine is currently
        writing to. This end state can be achieved in multiple
        ways, and the supported options are described in this
        enumeration.
        
        These options are only relevant when the backing of the
        specified disk is a *file backing*.
        
        Since disk backings may become shared as the result of
        either a *clone operation* or
        a *relocate operation*,
        *VirtualMachine.PromoteDisks_Task* has been provided as
        a way to unshare such disk backings.
        
        See also *VirtualDiskSparseVer1BackingInfo.parent*, *VirtualDiskSparseVer2BackingInfo.parent*, *VirtualDiskFlatVer1BackingInfo.parent*, *VirtualDiskFlatVer2BackingInfo.parent*, *VirtualDiskRawDiskMappingVer1BackingInfo.parent*, *VirtualMachineRelocateSpec.diskMoveType*, *VirtualMachineRelocateSpecDiskLocator.diskMoveType*.
        
        Possible values:
        - `moveAllDiskBackingsAndAllowSharing`: All of the virtual disk's backings should be moved to the new datastore.
          
          If a disk backing is not the child-most backing of this virtual machine,
          and there exists a read-only disk backing with the same content ID
          on the target datastore, then this disk backing may not be copied. Instead
          it is acceptable to attach to the read-only disk backing at the target
          datastore. A read-only disk backing is defined as a virtual disk
          backing which no virtual machine is currently writing to.
          
          See also *VirtualDiskSparseVer1BackingInfo.contentId*, *VirtualDiskSparseVer2BackingInfo.contentId*, *VirtualDiskFlatVer1BackingInfo.contentId*, *VirtualDiskFlatVer2BackingInfo.contentId*, *VirtualDiskRawDiskMappingVer1BackingInfo.contentId*.
        - `moveAllDiskBackingsAndDisallowSharing`: All of the virtual disk's backings should be moved to the new datastore.
          
          It is not acceptable to attach to a disk backing with the same content ID
          on the destination datastore. During a *clone operation* any delta disk backings will be consolidated.
        - `moveChildMostDiskBacking`: Move only the child-most disk backing.
          
          Any parent disk backings should
          be left in their current locations.
          
          This option only differs from *moveAllDiskBackingsAndAllowSharing* and
          *moveAllDiskBackingsAndDisallowSharing* when the virtual
          disk has a parent backing.
          
          Note that in the case of a *clone operation*,
          this means that the parent disks will now be shared. This is safe as any
          parent disks are always read-only.
          Note that in the case of a *VirtualMachine.RelocateVM_Task* operation,
          only the virtual disks in the current virtual machine configuration are moved.
        - `createNewChildDiskBacking`: Create a new child disk backing on the destination datastore.
          
          None of the
          virtual disk's existing files should be moved from their current locations.
          
          Note that in the case of a *clone operation*,
          this means that the original virtual machine's disks are now all being shared.
          This is only safe if the clone was taken from a snapshot point, because
          snapshot points are always read-only. Thus for a clone this
          option is only valid *when cloning from a snapshot*.
          createNewChildDiskBacking is not a supported operation for
          *VirtualMachine.RelocateVM_Task* operations unless all disks are moving.
        - `moveAllDiskBackingsAndConsolidate`: All of the virtual disk's backings should be moved to the new datastore.
          
          During a *clone operation* or a
          *VirtualMachine.MigrateVM_Task*, any delta disk backings will be
          consolidated.
      enum:
        - moveAllDiskBackingsAndAllowSharing
        - moveAllDiskBackingsAndDisallowSharing
        - moveChildMostDiskBacking
        - createNewChildDiskBacking
        - moveAllDiskBackingsAndConsolidate

    VirtualMachineRelocateTransformation_enum:
      type: string
      description: |2
        Deprecated as of vSphere API 5.0.
        
        The set of tranformations that can be performed on the virtual disks
        as part of the copy.
        
        Possible values:
        - `flat`
        - `sparse`
      enum:
        - flat
        - sparse

    VirtualMachineRelocateTransformation:
      type: object
      description: |2
        A boxed *VirtualMachineRelocateTransformation_enum*. To be used in *Any* placeholders.
      properties:
        _value:
          $ref: '#/components/schemas/VirtualMachineRelocateTransformation_enum'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ArrayOfVirtualMachineRelocateTransformation:
      type: object
      description: |2
        A boxed array of *VirtualMachineRelocateTransformation_enum*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualMachineRelocateTransformation_enum'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ScheduledHardwareUpgradeInfoHardwareUpgradePolicy_enum:
      type: string
      description: |2
        The policy setting used to determine when to perform scheduled
        upgrades for a virtual machine.
        
        Possible values:
        - `never`: No scheduled upgrades.
        - `onSoftPowerOff`: Run scheduled upgrades only on normal guest OS shutdown.
        - `always`: Always run scheduled upgrades.
      enum:
        - never
        - onSoftPowerOff
        - always

    ScheduledHardwareUpgradeInfoHardwareUpgradeStatus_enum:
      type: string
      description: |2
        Status for last attempt to run scheduled hardware upgrade.
        
        Possible values:
        - `none`: No scheduled upgrade ever happened.
        - `pending`: Upgrade is scheduled, but was not run yet.
        - `success`: Upgrade succeeded.
        - `failed`: Upgrade failed.
          
          For more information about the failure
          
          See also *ScheduledHardwareUpgradeInfo.fault*.
      enum:
        - none
        - pending
        - success
        - failed

    VirtualMachineScsiPassthroughType_enum:
      type: string
      description: |2
        Possible SCSI classes.
        
        Possible values:
        - `disk`
        - `tape`
        - `printer`
        - `processor`
        - `worm`
        - `cdrom`
        - `scanner`
        - `optical`
        - `media`
        - `com`
        - `raid`
        - `unknown`
      enum:
        - disk
        - tape
        - printer
        - processor
        - worm
        - cdrom
        - scanner
        - optical
        - media
        - com
        - raid
        - unknown

    VirtualMachineSgxInfoFlcModes_enum:
      type: string
      description: |2
        Flexible Launch Enclave (FLC) modes.
        
        Possible values:
        - `locked`: FLC is available in the guest.
          
          The "launch Enclave MSRs" are locked and
          initialized with the provided public key hash.
        - `unlocked`: FLC is available in the guest.
          
          The "launch enclave MSRs" are writeable
          and initialized with Intel's public key hash.
      enum:
        - locked
        - unlocked

    VirtualMachineTargetInfoConfigurationTag_enum:
      type: string
      description: |2
        Describes how widely the endpoint is available in a cluster.
        
        Note that these fields are not necessarily mutual-exclusive.
        
        Possible values:
        - `compliant`: Indicates that this device is part of the cluster compliant
          specification.
        - `clusterWide`: Indicates that this is available for all hosts in the cluster.
      enum:
        - compliant
        - clusterWide

    UpgradePolicy_enum:
      type: string
      description: |2
        The policy setting used to determine when tools are auto-upgraded for
        a virtual machine
        
        Possible values:
        - `manual`: No auto-upgrades for tools will be performed for this
          virtual machine.
          
          Users must manually invoke the UpgradeTools
          operation to update the tools.
        - `upgradeAtPowerCycle`: When the virtual machine is power-cycled, the system checks
          for a newer version of tools when the VM comes back up.
          
          If it
          is available, a tools upgrade is automatically performed on the
          virtual machine and it is rebooted if necessary.
      enum:
        - manual
        - upgradeAtPowerCycle

    VirtualMachineUsbInfoFamily_enum:
      type: string
      description: |2
        Device class family.
        
        Possible values:
        - `audio`: Audio capable device.
        - `hid`: Human interface device.
        - `hid_bootable`: Bootable human interface device, this is a subset of HID devices.
        - `physical`: Physical interface device.
        - `communication`: Communication device.
        - `imaging`: Still imaging device.
        - `printer`: Printer device.
        - `storage`: Mass storage device.
        - `hub`: USB hubs.
        - `smart_card`: Smart card device.
        - `security`: Content security device.
        - `video`: Video device.
        - `wireless`: Wireless controller.
        - `bluetooth`: Standard bluetooth adapter that uses HCI protocol,
          this is a subset of wireless controllers.
        - `wusb`: Wireless device related to the Wireless USB standard,
          this is a subset of wireless controllers,
        - `pda`: Palm PDA, and Micorsoft ActiveSync PDA.
        - `vendor_specific`: Device that has an interface using a vendor-specific protocol.
        - `other`: Other miscellaneous device.
        - `unknownFamily`: There was an error in determining this device's classes
          accurately.
      enum:
        - audio
        - hid
        - hid_bootable
        - physical
        - communication
        - imaging
        - printer
        - storage
        - hub
        - smart_card
        - security
        - video
        - wireless
        - bluetooth
        - wusb
        - pda
        - vendor_specific
        - other
        - unknownFamily

    VirtualMachineUsbInfoSpeed_enum:
      type: string
      description: |2
        Device speed.
        
        Possible values:
        - `low`: This device operates at low speed (1.5Mb/s).
        - `full`: This device operates at full speed (12Mb/s).
        - `high`: This device can operate at high speed (480Mb/s)
        - `superSpeed`: This device can operate at super speed (4.8Gb/s)
        - `superSpeedPlus`: This device can operate at super speed plus (10Gb/s)
        - `superSpeed20Gbps`: This device can operate at super speed gen 2x2 (20Gb/s)
          
          ***Since:*** vSphere API Release 7.0.3.2
        - `unknownSpeed`: This device's speed is unknown.
      enum:
        - low
        - full
        - high
        - superSpeed
        - superSpeedPlus
        - superSpeed20Gbps
        - unknownSpeed

    VirtualMachineVendorDeviceGroupInfoComponentDeviceInfoComponentType_enum:
      type: string
      description: |2
        Type of component device.
        
        Possible values:
        - `pciPassthru`
        - `nvidiaVgpu`
        - `sriovNic`
        - `dvx`
        
        ***Since:*** vSphere API Release 8.0.0.1
      enum:
        - pciPassthru
        - nvidiaVgpu
        - sriovNic
        - dvx

    VirtualMachineVgpuProfileInfoProfileClass_enum:
      type: string
      description: |2
        Possible values for profile class.
        
        Possible values:
        - `compute`
        - `quadro`
        
        ***Since:*** vSphere API Release 7.0.3.0
      enum:
        - compute
        - quadro

    VirtualMachineVgpuProfileInfoProfileSharing_enum:
      type: string
      description: |2
        Possible values for profile sharing.
        
        Possible values:
        - `timeSliced`: Time-sliced
        - `mig`: Multi-instance GPU partitioning
          
        ***Since:*** vSphere API Release 7.0.3.0
      enum:
        - timeSliced
        - mig

    VirtualMachineVirtualDeviceSwapDeviceSwapStatus_enum:
      type: string
      description: |2
        Possible values:
        - `none`: No operation active.
        - `scheduled`: Device swap will be performed on next restart.
        - `inprogress`: Device swap is in progress.
        - `failed`: Device swap failed.
        - `completed`: Device swap successfully completed.
          
        ***Since:*** vSphere API Release 8.0.0.1
      enum:
        - none
        - scheduled
        - inprogress
        - failed
        - completed

    VirtualHardwareMotherboardLayout_enum:
      type: string
      description: |2
        Motherboard layout of the VM.
        
        Possible values:
        - `i440bxHostBridge`: Single i440BX host bridge.
        - `acpiHostBridges`: Multiple ACPI host bridges.
          
        ***Since:*** vSphere API Release 8.0.0.1
      enum:
        - i440bxHostBridge
        - acpiHostBridges

    VirtualMachineVirtualPMemSnapshotMode_enum:
      type: string
      description: |2
        The set of supported snapshot modes for VMs configured with NVDIMMs.
        
        Possible values:
        - `independent_persistent`: The data on virtual NVDIMMs are not affected by snapshot reverts.
          
          Writes to virtual NVDIMMs after a snapshot is taken cannot be
          reverted to the snapshotted state.
        - `independent_eraseonrevert`: Virtual NVDIMMs are erased and recreated upon snapshot reverts.
          
        ***Since:*** vSphere API Release 7.0.3.0
      enum:
        - independent_persistent
        - independent_eraseonrevert

    VirtualMachineWindowsQuiesceSpecVssBackupContext_enum:
      type: string
      description: |2
        The VSS Snapshot Context
        VSS\_SNAPSHOT\_CONTEXT values not listed below are not implemented.
        
        Possible values:
        - `ctx_auto`: The context value indicates auto selection of VSS snapshot context.
          
          The ctx\_backup may make Windows VSS-aware applications quiescing during
          backup. The ctx\_auto makes VMTools select ctx\_file\_share\_backup context
          if ctx\_backup is not available.
        - `ctx_backup`: Indicate VSS\_CTX\_BACKUP.
        - `ctx_file_share_backup`: Indicate VSS\_CTX\_FILE\_SHARE\_BACKUP.
      enum:
        - ctx_auto
        - ctx_backup
        - ctx_file_share_backup

    CheckTestType_enum:
      type: string
      description: |2
        The types of tests which can requested by any of the methods in either
        *VirtualMachineCompatibilityChecker* or *VirtualMachineProvisioningChecker*.
        
        Possible values:
        - `sourceTests`: Tests that examine only the configuration
          of the virtual machine and its current host; the destination
          resource pool and host or cluster are irrelevant.
        - `hostTests`: Tests that examine both the virtual
          machine and the destination host or cluster; the destination
          resource pool is irrelevant.
          
          This set excludes tests that fall
          into the datastoreTests group.
        - `resourcePoolTests`: Tests that check that the destination resource
          pool can support the virtual machine if it is powered on.
          
          The
          destination host or cluster is relevant because it will affect the
          amount of overhead memory required to run the virtual machine.
        - `datastoreTests`: Tests that check that the
          destination host or cluster can see the datastores where the virtual
          machine's virtual disks are going to be located.
          
          The destination
          resource pool is irrelevant.
        - `networkTests`: Tests that check that the
          destination host or cluster can see the networks that the virtual
          machine's virtual nic devices are going to be connected.
      enum:
        - sourceTests
        - hostTests
        - resourcePoolTests
        - datastoreTests
        - networkTests

    CustomizationNetBIOSMode_enum:
      type: string
      description: |2
        NetBIOS setting for Windows.
        
        Possible values:
        - `enableNetBIOSViaDhcp`: DHCP server decides whether or not to use NetBIOS.
        - `enableNetBIOS`: Always use NetBIOS.
        - `disableNetBIOS`: Never use NetBIOS.
      enum:
        - enableNetBIOSViaDhcp
        - enableNetBIOS
        - disableNetBIOS

    CustomizationNetBIOSMode:
      type: object
      description: |2
        A boxed *CustomizationNetBIOSMode_enum*. To be used in *Any* placeholders.
      properties:
        _value:
          $ref: '#/components/schemas/CustomizationNetBIOSMode_enum'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ArrayOfCustomizationNetBIOSMode:
      type: object
      description: |2
        A boxed array of *CustomizationNetBIOSMode_enum*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/CustomizationNetBIOSMode_enum'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    CustomizationLicenseDataMode_enum:
      type: string
      description: |2
        Enumeration of AutoMode values.
        
        Possible values:
        - `perServer`: Indicates that client access licenses have been purchased for the server,
          allowing a certain number of concurrent connections to the VirtualCenter
          server.
        - `perSeat`: Indicates that a client access license has been purchased for each computer
          that accesses the VirtualCenter server.
      enum:
        - perServer
        - perSeat

    CustomizationLicenseDataMode:
      type: object
      description: |2
        A boxed *CustomizationLicenseDataMode_enum*. To be used in *Any* placeholders.
      properties:
        _value:
          $ref: '#/components/schemas/CustomizationLicenseDataMode_enum'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ArrayOfCustomizationLicenseDataMode:
      type: object
      description: |2
        A boxed array of *CustomizationLicenseDataMode_enum*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/CustomizationLicenseDataMode_enum'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    CustomizationSysprepRebootOption_enum:
      type: string
      description: |2
        A enum constant specifying what should be done to the guest vm after running
        sysprep.
        
        Possible values:
        - `reboot`: Reboot the machine after running sysprep.
          
          This will cause values
          specified in the sysprep.xml to be applied immediately.
        - `noreboot`: Take no action.
          
          Leave the guest os running after running sysprep. This
          option can be used to look at values for debugging purposes after
          running sysprep.
        - `shutdown`: Shutdown the machine after running sysprep.
          
          This puts the vm in a
          sealed state.
      enum:
        - reboot
        - noreboot
        - shutdown

    CustomizationSysprepRebootOption:
      type: object
      description: |2
        A boxed *CustomizationSysprepRebootOption_enum*. To be used in *Any* placeholders.
      properties:
        _value:
          $ref: '#/components/schemas/CustomizationSysprepRebootOption_enum'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ArrayOfCustomizationSysprepRebootOption:
      type: object
      description: |2
        A boxed array of *CustomizationSysprepRebootOption_enum*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/CustomizationSysprepRebootOption_enum'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualDeviceConnectInfoMigrateConnectOp_enum:
      type: string
      description: |2
        Contains information about connectable virtual devices when
        the virtual machine restores from a migration.
        
        Possible values:
        - `connect`: Attempt to connect the virtual device when the virtual machine
          restores from a migration.
          
          This property has no effect if it
          is set on a device that is already connected.
        - `disconnect`: Attempt to disconnect the virtual device when the virtual machine
          restores from a migration.
          
          This property has no effect if it
          is set on a device that is already disconnected.
        - `unset`: Unset the property, which resets the device to its default state.
          
          Under most circumstances, a device will return to the same
          connection state before the migration was initiated.
      enum:
        - connect
        - disconnect
        - unset

    VirtualDeviceConnectInfoStatus_enum:
      type: string
      description: |2
        Specifies the connectable virtual device status.
        
        Possible values:
        - `ok`: The device is working correctly.
        - `recoverableError`: The device has reported a recoverable error.
          
          For example,
          attempting to connect to floppy device that is being used by
          another virtual machine or some other program would result in
          this status.
        - `unrecoverableError`: The device cannot be used.
          
          For example, attempting to connect to
          a floppy device that does not exist would result in this status.
        - `untried`: The device status is unknown, or it has not been requested to
          connect when the VM is powered on.
      enum:
        - ok
        - recoverableError
        - unrecoverableError
        - untried

    VirtualDeviceFileExtension_enum:
      type: string
      description: |2
        All known file extensions.
        
        Valid ones are:
        
        Possible values:
        - `iso`: CD ISO Image backings
        - `flp`: Floppy File Backings
        - `vmdk`: virtual disks
        - `dsk`: legacy virtual disks
        - `rdm`: pre 3.0 virtual disks using Raw Disk Maps
      enum:
        - iso
        - flp
        - vmdk
        - dsk
        - rdm

    VirtualDeviceURIBackingOptionDirection_enum:
      type: string
      description: |2
        The <code>VirtualDeviceURIBackingOptionDirection</code> enum type
        provides values for the direction of a network connection.
        
        Possible values:
        - `server`: Indicates that the virtual machine can listen for a connection
          on the specified *VirtualDeviceURIBackingInfo.serviceURI*.
        - `client`: Indicates that the virtual machine can initiate a connection
          with a system on the network using the specified
          *VirtualDeviceURIBackingInfo.serviceURI*.
      enum:
        - server
        - client

    VirtualDeviceConfigSpecChangeMode_enum:
      type: string
      description: |2
        Describes the change mode of the device.
        
        Applies only to virtual disks during VirtualDeviceSpec.Operation "add"
        that have no VirtualDeviceSpec.FileOperation set.
        
        Possible values:
        - `fail`
        - `skip`
        
        ***Since:*** vSphere API Release 8.0.0.1
      enum:
        - fail
        - skip

    VirtualDeviceConfigSpecFileOperation_enum:
      type: string
      description: |2
        The type of operation being performed on the backing of a virtual device.
        
        Valid values are:
        
        Possible values:
        - `create`: Specifies the creation of the device backing; for example,
          the creation of a virtual disk or floppy image file.
        - `destroy`: Specifies the destruction of a device backing.
        - `replace`: Specifies the deletion of the existing backing for a virtual device
          and the creation of a new backing.
      enum:
        - create
        - destroy
        - replace

    VirtualDeviceConfigSpecFileOperation:
      type: object
      description: |2
        A boxed *VirtualDeviceConfigSpecFileOperation_enum*. To be used in *Any* placeholders.
      properties:
        _value:
          $ref: '#/components/schemas/VirtualDeviceConfigSpecFileOperation_enum'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ArrayOfVirtualDeviceConfigSpecFileOperation:
      type: object
      description: |2
        A boxed array of *VirtualDeviceConfigSpecFileOperation_enum*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualDeviceConfigSpecFileOperation_enum'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualDeviceConfigSpecOperation_enum:
      type: string
      description: |2
        The type of operation being performed on the specified virtual device.
        
        Valid values are:
        
        Possible values:
        - `add`: Specifies the addition of a virtual device to the configuration.
        - `remove`: Specifies the removal of a virtual device.
        - `edit`: Specifies changes to the virtual device specification.
      enum:
        - add
        - remove
        - edit

    VirtualDeviceConfigSpecOperation:
      type: object
      description: |2
        A boxed *VirtualDeviceConfigSpecOperation_enum*. To be used in *Any* placeholders.
      properties:
        _value:
          $ref: '#/components/schemas/VirtualDeviceConfigSpecOperation_enum'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ArrayOfVirtualDeviceConfigSpecOperation:
      type: object
      description: |2
        A boxed array of *VirtualDeviceConfigSpecOperation_enum*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualDeviceConfigSpecOperation_enum'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualDiskDeltaDiskFormat_enum:
      type: string
      description: |2
        The delta disk format constants
        
        Possible values:
        - `redoLogFormat`: redo-log based format
        - `nativeFormat`: native snapshot format
        - `seSparseFormat`: Flex-SE redo-log based format
      enum:
        - redoLogFormat
        - nativeFormat
        - seSparseFormat

    VirtualDiskDeltaDiskFormatVariant_enum:
      type: string
      description: |2
        The delta disk format variant constants
        
        Possible values:
        - `vmfsSparseVariant`: vmfsSparse based redo-log format
        - `vsanSparseVariant`: vsanSparse based redo-log format
      enum:
        - vmfsSparseVariant
        - vsanSparseVariant

    VirtualDiskSharing_enum:
      type: string
      description: |2
        The sharing mode of the virtual disk.
        
        Setting the value to sharingMultiWriter means that multiple virtual
        machines can write to the virtual disk. This sharing mode is allowed
        only for eagerly zeroed thick virtual disks.
        
        Possible values:
        - `sharingNone`: The virtual disk is not shared.
        - `sharingMultiWriter`: The virtual disk is shared between multiple virtual machines.
      enum:
        - sharingNone
        - sharingMultiWriter

    VirtualDiskVFlashCacheConfigInfoCacheConsistencyType_enum:
      type: string
      description: |2
        Pre-defined constants for cache consistency types
        
        Possible values:
        - `strong`: With strong consistency, it ensures that
          a crash will leave the cache data consistent.
        - `weak`: Cache data consistency is not guaranteed after a crash.
      enum:
        - strong
        - weak

    VirtualDiskVFlashCacheConfigInfoCacheMode_enum:
      type: string
      description: |2
        Pre-defined constants for cache modes.
        
        Possible values:
        - `write_thru`: In write-through cache mode, writes to the cache cause writes
          to the underlying storage.
          
          The cache acts as a facade to the underlying
          storage.
        - `write_back`: In write-back mode, writes to the cache do not go to the underlying storage
          right away.
          
          Cache holds data temporarily till it can be permanently saved or
          otherwise modified.
      enum:
        - write_thru
        - write_back

    VirtualDiskCompatibilityMode_enum:
      type: string
      description: |2
        All known compatibility modes for raw disk mappings.
        
        Valid compatibility
        modes are:
        - virtualMode
        - physicalMode
          
        Possible values:
        - `virtualMode`: A disk device backed by a virtual compatibility mode raw disk mapping can
          use disk modes.
          
          See also *VirtualDiskMode_enum*.
        - `physicalMode`: A disk device backed by a physical compatibility mode raw disk mapping cannot
          use disk modes, and commands are passed straight through to the LUN
          indicated by the raw disk mapping.
      enum:
        - virtualMode
        - physicalMode

    VirtualDiskMode_enum:
      type: string
      description: |2
        The list of known disk modes.
        
        The list of supported disk modes varies by the backing type. The "persistent"
        mode is supported by every backing type.
        
        Possible values:
        - `persistent`: Changes are immediately and permanently written to the virtual disk.
        - `nonpersistent`: Changes to virtual disk are made to a redo log and discarded at power off.
        - `undoable`: Changes are made to a redo log, but you are given the option to commit or undo.
        - `independent_persistent`: Same as persistent, but not affected by snapshots.
        - `independent_nonpersistent`: Same as nonpersistent, but not affected by snapshots.
        - `append`: Changes are appended to the redo log; you revoke changes by removing the undo log.
      enum:
        - persistent
        - nonpersistent
        - undoable
        - independent_persistent
        - independent_nonpersistent
        - append

    VirtualEthernetCardLegacyNetworkDeviceName_enum:
      type: string
      description: |2
        Possible device names for legacy network backing option are listed below.
        
        Note: This is not an exhaustive list. It is possible to specify
        a specific device as well.
        For example, on ESX hosts, the device name could be specified as "vmnic\[0-9\]"
        or vmnet\_\[0-9\].
        For VMware Server Windows hosts, the device name could be specified as "vmnet\[0-9\]"
        and for VMware Server Linux hosts, the device name could be specified as "/dev/vmnet\[0-9\]"
        depending on what devices are available on that particular host.
        
        Possible values:
        - `bridged`
        - `nat`
        - `hostonly`
      enum:
        - bridged
        - nat
        - hostonly

    VirtualEthernetCardMacType_enum:
      type: string
      description: |2
        The enumeration of all known valid MAC address types.
        
        Possible values:
        - `manual`: A statistically assigned MAC address.
        - `generated`: An automatically generated MAC address.
        - `assigned`: A MAC address assigned by VirtualCenter.
      enum:
        - manual
        - generated
        - assigned

    VirtualNVMEControllerSharing_enum:
      type: string
      description: |2
        Possible values:
        - `noSharing`
        - `physicalSharing`
        
        ***Since:*** vSphere API Release 8.0.2.0
      enum:
        - noSharing
        - physicalSharing

    VirtualPointingDeviceHostChoice_enum:
      type: string
      description: |2
        The valid choices for host pointing devices are:
        
        Possible values:
        - `autodetect`: Automatically detects the host mouse type.
        - `intellimouseExplorer`: The Microsoft IntelliMouse Explorer.
        - `intellimousePs2`: The Microsoft Intellimouse with a PS2 connection.
        - `logitechMouseman`: The Logitech MouseMan.
        - `microsoft_serial`: The Microsoft Serial Mouse.
        - `mouseSystems`: The Mouse Systems Mouse.
        - `mousemanSerial`: The Logitech MouseMan Serial Bus Mouse.
        - `ps2`: A generic mouse with a PS2 connection.
      enum:
        - autodetect
        - intellimouseExplorer
        - intellimousePs2
        - logitechMouseman
        - microsoft_serial
        - mouseSystems
        - mousemanSerial
        - ps2

    VirtualSCSISharing_enum:
      type: string
      description: |2
        Sharing describes three possible ways of sharing the SCSI bus:
        One of these values is assigned to the sharedBus object to determine
        if or how the SCSI bus is shared.
        
        Possible values:
        - `noSharing`: The virtual SCSI bus is not shared.
        - `virtualSharing`: The virtual SCSI bus is shared between two or more virtual machines.
          
          In this case, no physical machine is involved.
        - `physicalSharing`: The virtual SCSI bus is shared between two or more virtual machines
          residing on different physical hosts.
      enum:
        - noSharing
        - virtualSharing
        - physicalSharing

    VirtualSCSISharing:
      type: object
      description: |2
        A boxed *VirtualSCSISharing_enum*. To be used in *Any* placeholders.
      properties:
        _value:
          $ref: '#/components/schemas/VirtualSCSISharing_enum'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ArrayOfVirtualSCSISharing:
      type: object
      description: |2
        A boxed array of *VirtualSCSISharing_enum*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VirtualSCSISharing_enum'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VirtualSerialPortEndPoint_enum:
      type: string
      description: |2
        The <code>*VirtualSerialPortEndPoint_enum* enum defines
        endpoint values for virtual serial port pipe backing.
        
        When you use serial port pipe backing to connect a virtual machine
        to another process, you must define the endpoints.
        See the <code>*VirtualSerialPortPipeBackingInfo.endpoint*</code>
        property for the virtual serial port pipe backing information data object.
        
        The possible endpoint values are:
        - client
        - server
          
        For the supported choices, see the
        <code>*VirtualSerialPortPipeBackingOption.endpoint*</code>
        property for the virtual serial port pipe backing option data object.
        
        Possible values:
        - `client`
        - `server`
      enum:
        - client
        - server

    VirtualMachineVMCIDeviceAction_enum:
      type: string
      description: |2
        Set of possible values for action field in FilterSpec.
        
        Determines whether traffic is allowed or denied.
        
        Possible values:
        - `allow`: Allow communication.
        - `deny`: Deny communication.
      enum:
        - allow
        - deny

    VirtualMachineVMCIDeviceDirection_enum:
      type: string
      description: |2
        Set of possible values for direction field in FilterSpec.
        
        Possible values:
        - `guest`: from host to guest
        - `host`: from guest to host
        - `anyDirection`: all of the above
      enum:
        - guest
        - host
        - anyDirection

    VirtualMachineVMCIDeviceProtocol_enum:
      type: string
      description: |2
        Set of possible values for protocol field in FilterSpec.
        
        Possible values:
        - `hypervisor`: VMCI hypervisor datagram send op.
          
          Direction code is not applicable to this one.
        - `doorbell`: VMCI doorbell notification
        - `queuepair`: VMCI queue pair alloc operation.
          
          Direction code not applicable to this one.
        - `datagram`: VMCI and VMCI Socket datagram send op.
          
          Since VMCI Socket datagrams map ports directly to resources,
          there is no need to distinguish between the two.
        - `stream`: VMCI Stream Socket connect op.
        - `anyProtocol`: All of the above.
      enum:
        - hypervisor
        - doorbell
        - queuepair
        - datagram
        - stream
        - anyProtocol

    VirtualMachineVideoCardUse3dRenderer_enum:
      type: string
      description: |2
        Set of possible values for *VirtualMachineVideoCard.use3dRenderer*.
        
        Possible values:
        - `automatic`: Determine automatically whether to render 3D with software or hardware.
        - `software`: Render 3D with software.
        - `hardware`: Render 3D with graphics hardware.
      enum:
        - automatic
        - software
        - hardware

    VirtualVmxnet3VrdmaOptionDeviceProtocols_enum:
      type: string
      description: |2
        The enumeration of all known valid VRDMA device protocols.
        
        Possible values:
        - `rocev1`: A RoCEv1 device.
        - `rocev2`: A RoCEv2 device.
      enum:
        - rocev1
        - rocev2

    GuestFileType_enum:
      type: string
      description: |2
        Possible values:
        - `file`: Regular files, and on Posix filesystems, unix domain sockets
          and devices.
        - `directory`: directory
        - `symlink`: symbolic link
      enum:
        - file
        - directory
        - symlink

    GuestRegKeyWowSpec_enum:
      type: string
      description: |2
        This describes the bitness (32-bit or 64-bit) of a registry view in a
        Windows OS that supports WOW64.
        
        WOW64 (short for Windows 32-bit on Windows 64-bit) is the x86 emulator
        that allows 32-bit Windows-based applications to run seamlessly on
        64-bit Windows. Please refer to these MSDN sites for more details:
        http://msdn.microsoft.com/en-us/library/aa384249(v=vs.85).aspx and
        http://msdn.microsoft.com/en-us/library/aa384253(v=vs.85).aspx
        
        Possible values:
        - `WOWNative`: Access the key from the native view of the
          Registry (32-bit on 32-bit versions of Windows,
          64-bit on 64-bit versions of Windows).
        - `WOW32`: Access the key from the 32-bit view of the Registry.
        - `WOW64`: Access the key from the 64-bit view of the Registry.
      enum:
        - WOWNative
        - WOW32
        - WOW64

    VsanHostDecommissionModeObjectAction_enum:
      type: string
      description: |2
        The action to take with regard to storage objects upon decommissioning
        a host from use with the VSAN service.
        
        Possible values:
        - `noAction`: No special action should take place regarding VSAN data.
        - `ensureObjectAccessibility`: VSAN data reconfiguration should be performed to ensure storage
          object accessibility.
        - `evacuateAllData`: VSAN data evacuation should be performed such that all storage
          object data is removed from the host.
      enum:
        - noAction
        - ensureObjectAccessibility
        - evacuateAllData

    VsanHostDiskResultState_enum:
      type: string
      description: |2
        Values used for indicating a disk's status for use by the VSAN service.
        
        See also *VsanHostDiskResult.state*.
        
        Possible values:
        - `inUse`: Disk is currently in use by the VSAN service.
          
          A disk may be considered in use by the VSAN service regardless of
          whether the VSAN service is enabled. As long as a disk is in use
          by VSAN, it is reserved exclusively for VSAN and may not be used
          for other purposes.
          
          See also *VsanHostDiskResult.error*.
        - `eligible`: Disk is considered eligible for use by the VSAN service,
          but is not currently in use.
        - `ineligible`: Disk is considered ineligible for use by the VSAN service,
          and is not currently in use.
          
          See also *VsanHostDiskResult.error*.
      enum:
        - inUse
        - eligible
        - ineligible

    VsanHostDiskResultState:
      type: object
      description: |2
        A boxed *VsanHostDiskResultState_enum*. To be used in *Any* placeholders.
      properties:
        _value:
          $ref: '#/components/schemas/VsanHostDiskResultState_enum'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ArrayOfVsanHostDiskResultState:
      type: object
      description: |2
        A boxed array of *VsanHostDiskResultState_enum*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VsanHostDiskResultState_enum'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VsanHostHealthState_enum:
      type: string
      description: |2
        A *VsanHostHealthState_enum* represents the state of a participating
        host in the VSAN service.
        
        See also *VsanHostClusterStatus*.
        
        Possible values:
        - `unknown`: Node health is unknown.
        - `healthy`: Node is considered healthy.
        - `unhealthy`: Node is considered unhealthy.
      enum:
        - unknown
        - healthy
        - unhealthy

    VsanHostHealthState:
      type: object
      description: |2
        A boxed *VsanHostHealthState_enum*. To be used in *Any* placeholders.
      properties:
        _value:
          $ref: '#/components/schemas/VsanHostHealthState_enum'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ArrayOfVsanHostHealthState:
      type: object
      description: |2
        A boxed array of *VsanHostHealthState_enum*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VsanHostHealthState_enum'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VsanHostNodeState_enum:
      type: string
      description: |2
        A *VsanHostNodeState_enum* represents the state of participation of a host
        in the VSAN service.
        
        See also *VsanHostClusterStatus*, *VsanHostClusterStatusState*.
        
        Possible values:
        - `error`: The node is enabled for the VSAN service but has some configuration
          error which prevents participation.
        - `disabled`: The node is disabled for the VSAN service.
        - `agent`: The node is enabled for the VSAN service and is serving as an agent.
        - `master`: The node is enabled for the VSAN service and is serving as the master.
        - `backup`: The node is enabled for the VSAN service and is serving as the backup.
        - `starting`: The node is starting the VSAN service; this state is considered
          transitory.
        - `stopping`: The node is stopping the VSAN service; this state is considered
          transitory.
        - `enteringMaintenanceMode`: The node is entering maintenance mode; this state is considered
          transitory.
          
          See also *HostSystem.EnterMaintenanceMode_Task*.
        - `exitingMaintenanceMode`: The node is exiting maintenance mode; this state is considered
          transitory.
          
          See also *HostSystem.ExitMaintenanceMode_Task*.
        - `decommissioning`: The node is being decommissioned from the VSAN service; this state is
          considered transitory.
      enum:
        - error
        - disabled
        - agent
        - master
        - backup
        - starting
        - stopping
        - enteringMaintenanceMode
        - exitingMaintenanceMode
        - decommissioning

    VsanHostNodeState:
      type: object
      description: |2
        A boxed *VsanHostNodeState_enum*. To be used in *Any* placeholders.
      properties:
        _value:
          $ref: '#/components/schemas/VsanHostNodeState_enum'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ArrayOfVsanHostNodeState:
      type: object
      description: |2
        A boxed array of *VsanHostNodeState_enum*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VsanHostNodeState_enum'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VsanDiskIssueType_enum:
      type: string
      description: |2
        The list of disk issues.
        
        Possible values:
        - `nonExist`
        - `stampMismatch`
        - `unknown`
      enum:
        - nonExist
        - stampMismatch
        - unknown

    BaseConfigInfoDiskFileBackingInfoProvisioningType_enum:
      type: string
      description: |2
        Provisioning type constants.
        
        Possible values:
        - `thin`: Space required for thin-provisioned virtual disk is allocated
          and zeroed on demand as the space is used.
        - `eagerZeroedThick`: An eager zeroed thick virtual disk has all space allocated and
          wiped clean of any previous contents on the physical media at
          creation time.
          
          Such virtual disk may take longer time
          during creation compared to other provisioning formats.
        - `lazyZeroedThick`: A thick virtual disk has all space allocated at creation time.
          
          This space may contain stale data on the physical media.
      enum:
        - thin
        - eagerZeroedThick
        - lazyZeroedThick

    vslmDiskInfoFlag_enum:
      type: string
      description: |2
        Flags representing the different information of a disk.
        
        Possible values:
        - `id`: ID of virtual storage object.
        - `descriptorVersion`: The disk descriptor version of the virtual storage object.
          
          ***Since:*** vSphere API Release 8.0.1.0
        - `backingObjectId`: ID of object backing the virtual storage object.
        - `path`: File path of virtual storage object.
        - `parentPath`: Parent file path of virtual storage object file.
        - `name`: Name of virtual storage object.
        - `deviceName`: Canonical name of the LUN used for virtual storage object.
        - `capacity`: Logical size of virtual storage object.
        - `allocated`: Size allocated by the file system for the virtual storage object
          file/chain/link/extent only.
        - `type`: Provisioning type of virtual storage object.
        - `consumers`: IDs of the consumers of virtual storage object.
        - `tentativeState`: If virtual storage object is in tentative state.
        - `createTime`: Date and time of creation of virtual storage object.
        - `ioFilter`: IOFilter associated with virtual storage object.
        - `controlFlags`: Control flags of virtual storage object.
        - `keepAfterVmDelete`: Deletion behaviour of virtual storage object after VM deletion.
        - `relocationDisabled`: If relocation is disabled for virtual storage object.
        - `keyId`: Key ID used to encrypt the virtual storage object.
        - `keyProviderId`: Crypto key provider ID used to encrypt the virtual storage object.
        - `nativeSnapshotSupported`: If virtual storage object supports native snapshot.
        - `cbtEnabled`: If virtual storage object has changed block tracking enabled.
          
        ***Since:*** vSphere API Release 8.0.0.1
      enum:
        - id
        - descriptorVersion
        - backingObjectId
        - path
        - parentPath
        - name
        - deviceName
        - capacity
        - allocated
        - type
        - consumers
        - tentativeState
        - createTime
        - ioFilter
        - controlFlags
        - keepAfterVmDelete
        - relocationDisabled
        - keyId
        - keyProviderId
        - nativeSnapshotSupported
        - cbtEnabled

    VStorageObjectConsumptionType_enum:
      type: string
      description: |2
        Consumption type constants.
        
        Consumption type describes how the virtual storage object is connected and
        consumed for data by the clients.
        
        Possible values:
        - `disk`: Disk type.
      enum:
        - disk

    vslmVStorageObjectControlFlag_enum:
      type: string
      description: |2
        Possible values:
        - `keepAfterDeleteVm`: Choice of the deletion behavior of this virtual storage object.
          
          If not set, the default value is false.
        - `disableRelocation`: Is virtual storage object relocation disabled.
          
          If not set, the default value is false.
        - `enableChangedBlockTracking`: Is Virtual storage object has changed blocked tracking enabled.
          
          If not set, default value is false.
      enum:
        - keepAfterDeleteVm
        - disableRelocation
        - enableChangedBlockTracking

    PropertyChangeOp_enum:
      type: string
      description: |2
        Enumeration of possible changes to a property.
        
        Possible values:
        - `add`
        - `remove`
        - `assign`
        - `indirectRemove`
      enum:
        - add
        - remove
        - assign
        - indirectRemove

    PropertyChangeOp:
      type: object
      description: |2
        A boxed *PropertyChangeOp_enum*. To be used in *Any* placeholders.
      properties:
        _value:
          $ref: '#/components/schemas/PropertyChangeOp_enum'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ArrayOfPropertyChangeOp:
      type: object
      description: |2
        A boxed array of *PropertyChangeOp_enum*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/PropertyChangeOp_enum'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ObjectUpdateKind_enum:
      type: string
      description: |2
        Enumeration of different kinds of updates.
        
        Possible values:
        - `modify`: A property of the managed object changed its value.
        - `enter`: A managed object became visible to a filter for the first time.
          
          For instance, this can happen if a virtual machine is added to a
          folder.
        - `leave`: A managed object left the set of objects visible to a filter.
          
          For
          instance, this can happen when a virtual machine is destroyed.
      enum:
        - modify
        - enter
        - leave

    ObjectUpdateKind:
      type: object
      description: |2
        A boxed *ObjectUpdateKind_enum*. To be used in *Any* placeholders.
      properties:
        _value:
          $ref: '#/components/schemas/ObjectUpdateKind_enum'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ArrayOfObjectUpdateKind:
      type: object
      description: |2
        A boxed array of *ObjectUpdateKind_enum*. To be used in *Any* placeholders.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/ObjectUpdateKind_enum'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VslmTaskInfoState_enum:
      type: string
      description: |2
        List of possible states of a task.
        
        Possible values:
        - `queued`: When there are too many tasks for threads to handle.
        - `running`: When the busy thread is freed from its current task by
          finishing the task, it picks a queued task to run.
          
          Then the queued tasks are marked as running.
        - `success`: When a running task has completed.
        - `error`: When a running task has encountered an error.
      enum:
        - queued
        - running
        - success
        - error

    VslmTaskInfoState:
      type: object
      description: |2
        A boxed *VslmTaskInfoState_enum*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/vslm`.
      properties:
        _value:
          $ref: '#/components/schemas/VslmTaskInfoState_enum'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ArrayOfVslmTaskInfoState:
      type: object
      description: |2
        A boxed array of *VslmTaskInfoState_enum*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/vslm`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VslmTaskInfoState_enum'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VslmEventType_enum:
      type: string
      description: |2
        Possible values:
        - `preFcdMigrateEvent`: Event type used to notify that FCD is going to be relocated.
        - `postFcdMigrateEvent`: Event type used to notify FCD has been relocated.
      enum:
        - preFcdMigrateEvent
        - postFcdMigrateEvent

    VslmEventVslmEventInfoState_enum:
      type: string
      description: |2
        The possible states of the vlsm event processing.
        
        Possible values:
        - `success`: When the event has been successfully processed.
        - `error`: When there is error while processing the event.
      enum:
        - success
        - error

    VslmEventVslmEventInfoState:
      type: object
      description: |2
        A boxed *VslmEventVslmEventInfoState_enum*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/vslm`.
      properties:
        _value:
          $ref: '#/components/schemas/VslmEventVslmEventInfoState_enum'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    ArrayOfVslmEventVslmEventInfoState:
      type: object
      description: |2
        A boxed array of *VslmEventVslmEventInfoState_enum*. To be used in *Any* placeholders.
        
        This structure may be used only with operations rendered under `/vslm`.
      properties:
        _value:
          type: array
          items:
            $ref: '#/components/schemas/VslmEventVslmEventInfoState_enum'
      required:
        - _value
      allOf:
        - $ref: '#/components/schemas/Any'

    VslmVsoVStorageObjectQuerySpecQueryFieldEnum_enum:
      type: string
      description: |2
        The *VslmVsoVStorageObjectQuerySpecQueryFieldEnum_enum* enumerated
        type defines the searchable fields.
        
        Possible values:
        - `id`: Indicates *BaseConfigInfo.id* as the searchable field.
        - `name`: Indicates *BaseConfigInfo.name* as the searchable
          field.
        - `capacity`: Indicates *VStorageObjectConfigInfo.capacityInMB* as the
          searchable field.
        - `createTime`: Indicates *BaseConfigInfo.createTime* as the searchable
          field.
        - `backingObjectId`: Indicates
          *BaseConfigInfoFileBackingInfo.backingObjectId* as the
          searchable field.
        - `datastoreMoId`: Indicates *BaseConfigInfoBackingInfo.datastore* as the
          searchable field.
        - `metadataKey`: Indicates it as the searchable field.
        - `metadataValue`: Indicates it as the searchable field.
      enum:
        - id
        - name
        - capacity
        - createTime
        - backingObjectId
        - datastoreMoId
        - metadataKey
        - metadataValue

    VslmVsoVStorageObjectQuerySpecQueryOperatorEnum_enum:
      type: string
      description: |2
        The *VslmVsoVStorageObjectQuerySpecQueryOperatorEnum_enum* enumerated
        type defines the operators to use for constructing the query criteria.
        
        Possible values:
        - `equals`
        - `notEquals`
        - `lessThan`
        - `greaterThan`
        - `lessThanOrEqual`
        - `greaterThanOrEqual`
        - `contains`
        - `startsWith`
        - `endsWith`
      enum:
        - equals
        - notEquals
        - lessThan
        - greaterThan
        - lessThanOrEqual
        - greaterThanOrEqual
        - contains
        - startsWith
        - endsWith

  parameters:
    moId:
      name: moId
      in: path
      required: true
      description: A unique identifier (within this vCenter Server instance) for a specific managed object such as `group-d1` or `vm-015` or `ServiceInstance`.
      schema:
        type: string

